반응형
1. 파이썬에서 함수의 기본 사용법
def print_hello_world():
print("hello world")
def plus(a, b):
return a + b
print_hello_world()
>>> hello world
a = plus(5, 4)
a
>>> 9
2. 파이썬에서 합수는 객체이다. (일급객체란?)
따하서 함수를 호출 할 때 함수를 넘길 수 있다.
>>> def add(a,b):
... return a + b
...
>>> def calculate(func, arg1, arg2):
... print('calulation: ', func.__name__)
... print('result: ', func(arg1,arg2))
...
>>> calculate(add, 4, 6) #add 함수를 calculate 함수에 인자값으로 전달하였다
calulation: add
result: 10
3. unpacking을 통해 여러 객체를 튜플로 return이 가능하다.(와우.. 자바를 해오던 나에게는 거의 혁신이다.)
>>> def func():
... return 1, 'lalala', {1, 2, 3}, (1, 2, 3)
...
>>>
>>> r1, r2, r3, r4 = func()
>>> print(r1, r2, r3, r4)
1 lalala {1, 2, 3} (1, 2, 3)
4. call by object reference
파이썬은 인자를 전달 할 때 immutable 객체인지, mutable 객체인지에 따라 값의 참조와 복사가 변하게 됩니다
이에 대해서 자세히 알고 싶다면 (Call by value와 Call by reference 그리고 Call by object reference)
5. Scope Rule
Symbol table의 범위에는 Local scope, Global scope, Built-in 순으로 탐색을 한다.
Local scope에서 Global scope 변수를 사용하고 싶으면, global 키워드를 붙이면 된다.(자바에서 static과 유사한 느낌 물론 같지는 않지만)
그러나 global 변수를 Local scope에서 사용하는 것은 바람직하지 않다.
x = 1
def func1():
x = 2
print(x) # 2 - local scope
print(x) # 1 - global scope
func1()
# global 키워드
x = 1
def func2():
global x
x = 3
func2()
print(x) # 3
6. 함수의 인자
기본인자
매개변수가 인자로 전달 되지 않았을 때 default값으로 인자값 설정 가능
def func(a, b = 2):
return a + b
print(func(1))
#출력값
3
가변인자(리스트, 딕셔너리)
def func1(a, *args):
# args[0] = 10 => *args는 튜플로 전달되므로 값 변경 불가
print(a, args)
func1(1,2,3,4,5) # 1 (2, 3, 4, 5)
def func2(a, **args):
args['b'] = 50 # => **args는 딕셔너리 형으로 전달 되므로 값 변경 가능
print(a, args)
func2(10, b=20, c=30) # 10 {'b': 50, 'c': 30}
7. 람다(lambda) 함수
람다 함수는 익명 함수를 의미한다.
즉 함수의 이름을 작성할 필요가 없이 사용이 가능하다.
람다 함수는 한 번 사용하고 마는 함수를 사용 할 때 효과적이며, 네임 스페이스가 더렵혀지지 않는다는 장점이 있다.
형식 : ( lambda [매개변수]: 리턴값을 포함한 알고리즘 )( [매개변수 값] )
a = (lambda foo: foo * 2)(10)
print(a) # 20
# 매개변수가 없는 경우
b = (lambda : 10)()
print(b) # 10
반응형
'개발 > Python' 카테고리의 다른 글
[Python] 리스트(list)와 튜플(tuple) 활용 (0) | 2020.04.01 |
---|