-
Python VariableComputer Science/Basic Programming with Python 2021. 11. 18. 05:08
Parameters
parameter이란, 아래같은 예제에서 num1, num2와 같은 inputs을 의미한다.
def add(num1, num2) return num1 + num2
여기서, default값을 지정해줄수도 있다.
def add(num1 = 1, num2 = 2) return num1 + num2
물론, 위의 코드는 의미없는 코드이지만, 값을 입력하지 않을때, default값을 정해줄수 있다.
add(4, 5)
이것은 9를 리턴하고,
add(7)
위는 a의 값만 준것으로 인식되어 default값인 b = 2를 사용, 9가 리턴된다.
add(b = 1)
위와같이 b의값을 주면, a는 default인 1을 이용, 2를 리턴한다.
*
parameter 갯수가 몇개인지 모를때에는 *를 사용할 수 있다. 형식은 아래와 같다.
def function(*args): code
예를 들어서, 모든 값들을 프린트하는 함수를 만들어보자.
def print_all(*args) for i in args: print(i)
숫자만 넣으면 당연히 숫자를 차례로 프린트하고,
print_all(1, 2, 3, 4, 5)
1 2 3 4 5
아래와 같이 다양한 타입도 순서에 맞게, paramter 사이즈만큼 모두 프린트해준다.
print_all("hello", "world", "1", 2, 3, 0.1231, [1,2,3,4], {1,3,2,1,1})
hello world 1 2 3 0.1231 [1, 2, 3, 4] {1, 2, 3}
이렇게 * 를 사용하면, args에 들어간 값들이, tuple 형태로 변환되어서 args라는 parameter로 들어가게 된다.
**
또 제공하는 다른 한가지 방법은 keyword arguments인데, kwargs라고 줄어셔 사용한다. 아래와 같은 포맷으로 사용할 수 있다.
def function(**kwargs): code
예시를 보자.
def func(**kwargs): for i in args: print(i)
kwargs는 dictionary 형태로 변환이 되어서 parameter에 들어가는데, 반드시 아래와 같은 형태로 parameter값을 주어야한다.
func(k1=v1, k2=v2)
다음과 같은 함수를 작성할 수 있다.
def print_all(**kwargs): for i in kwargs: print(i) print(kwargs)
print_all(a = 1, b = 2, c = 3)
각 keyword argument를 돌면서 값을 프린트하고, loop이 빠져나왔을때는 dictionary형태의 input을 전체 프린트하는 함수이다.
a b c {'a': 1, 'b': 2, 'c': 3}
잘 출력되는것을 볼 수 있다.
Parameter and Memory
그렇다면 parameter에 전달된 값은 메모리에 어떻게 전달되는것일까? 아래 function을 보자.
a = 3 def print_arg(): a = 2 print(a) print(a)
이런 코드가 있다면 어떤것이 출력될까?
3
바로 3이 출력된다. print_args() function이 호출되지 않았기때문이다. 하지만 호출을 한다면,
print_arg()
2
위와같이 2가 출력 되고, 다시 print(a)를 해보면?
print(a)
3
다시 3이 출력된다. 왜 이런일이 일어날까?
print_arg() function 안에서 만든 variable을 local variable이라고 부른다. 이 값은 함수가 실행되면 생성되고, 종료되면 함께 사라진다. 반대로 3이 저장된 a는 global variable이라고 부르는데, 이 값은 프로그램이 실행되어있는 동안 내내 살아있다.
그렇다면, 함수 내에서 global로 지정된 값을 사용하고 그 값을 변경하려면?
a = 3 print(a) def update_global(): global a a = a + 1 add_global_and_local() print(a)
위와같이 global을 이용해주면 된다. 값을 확인해주면,
3 4 4
Function Name
보통 Python코드를 작성할 때, 가독성을 높이는 방법으로 다른 사람이 보았을때도 이해할 수 있도록 아래와같이 글자는 모두 소문자로, 그리고 여러 단어일 경우 _ 를 사용해서 나누어준다. 그리고 적당한 띄어쓰기로 가독성을 높여주어서 좋은코드를 만들 수 있다.
def additional_function(a, b): return a + b
'Computer Science > Basic Programming with Python' 카테고리의 다른 글
Nested Function (0) 2021.11.19 Recursive Function (0) 2021.11.19 Python Function (0) 2021.11.14 Python While (0) 2021.11.13 Python for loop (0) 2021.11.13