1. ¶
~cpp def 명(들..): 문들(statements) return <값>
~cpp def add(a,b): return a+b
return 된 값 를 곳로 돌려다. def는 객를 고 그 객를
add란 당다. , add는 객 reference를 갖고 다.
add란 당다. , add는 객 reference를 갖고 다.
add는 객를 는 과므로 다른 를 다.
~cpp >>> f = add >>> f(4,5) 9
pass는 무 는 과문(statement)다. 는 개 문 가 기 때문 다.
~cpp def add(a,b): pass
2. 달 방법 ¶
~cpp >>> def f(t): t = 10 >>> a = 20 # a는 객 20 다. >>> f(a) # a를 t를 겼므로 t는 a 동 를 갖는다. 그리고 t = 10 t가 객 10 다. 때 a 는 변다. >>> print a 20
3. return문 ¶
~cpp >>> def f(): return >>> f() >>> a = f() >>> print a None
return문 만 면 무 값 달 는다.
return 만, 로는 None 객가 달된다.
None 객란 내 객로, 무 값 나내기 객다.
return 만, 로는 None 객가 달된다.
None 객란 내 객로, 무 값 나내기 객다.
값 달되 다면 a가 될 것다.
return문 None라는 리 값 다.
, 리 값 때 나 None 객를 긴다.
, 리 값 때 나 None 객를 긴다.
4. Scoping Rule ¶
* 공
LGB는 Local, Global, Built-in 로 , , 내 로 공 된다.
- (local scope) -
- (global scope) - 모()
- 내 (built-in scope) - 내
LGB는 Local, Global, Built-in 로 , , 내 로 공 된다.
~cpp # g, h는 g = 10 h = 5 def f(a): # a는 h = a + 10 # h는 (로 므로) b = a + g # b , g는 return b
g, h는 부 되므로 , a,b는 내부만 되는 변다.
h는 만 내부 므로 내부는 변 h를,
부는 변 h를 다.
f 들 f가 료되면 라다( 공 가 라다).
h는 만 내부 므로 내부는 변 h를,
부는 변 h를 다.
f 들 f가 료되면 라다( 공 가 라다).
f내부 h를 변로 려면(, 변h 값 바꾸고다면)
global문 h가 변 다.
global문 h가 변 다.
~cpp def f(a): # a는 global h h = a + 10 # h는
~cpp g = 10 def f(): a = g g = 20 return a f()
- (Nested scopes) (2.1)
~cpp x = 2 # global def F(): x = 1 # G 기는 local global 다 def G(): print x G() F()G 는 x는 ( G), (모), 내 만 게 되므로 F 된 x가 되 는다.(x = 2)
그러나 2.1는 F x를 므로 바른 결과가 나다.
5.1. 기본 ¶
~cpp >>> def incr(a, step=1): return a + step >>> b = 1 >>> b = incr(b) # 1 가 >>> b 2 >>> b = incr(b, 10) # 10 가 >>> b 12
5.2. 드 ¶
~cpp >>> def area(height, width): print height, width # 가 닌 로 값 달된다 >>> a = area(width=20, height=10) 10 20
5.3. 가변 리 ¶
고되 를 달 - 나머는 모두 로 는다
~cpp >>> def varg(a, *arg): print a, arg >>> varg(1) 1 () >>> varg(2,3) 2 (3,) >>> varg(2,3,4,5,6) 2 (3, 4, 5, 6)
5.4. 되 드 리기 ¶
미리 되 드 를 려면 때 막 **kw로 기다.
달 는 다. 는 드(변명), 값 드 로 달된 값 된다.
달 는 다. 는 드(변명), 값 드 로 달된 값 된다.
~cpp >>> def f(width, height, **kw): print width, height print kw >>> f(width = 10, height=5, depth=10, dimension=3) 10 5 {'depth': 10, 'dimension': 3}
5.5. 로 기(2.0 ) ¶
~cpp >>> def h(a,b,c): print a,b,c >>> args = (1,2,3) >>> h(*args) 1 2 3
~cpp >>> dargs = {'a':1, 'b':2, 'c':3} >>> h(**dargs) 1 2 3
~cpp >>> args = (1,2) >>> dargs ={'c':3} >>> h(*args, **dargs) 1 2 3
6. 람다 ¶
람다 는 는 리 다.
~cpp lambda 로 구된 들:
~cpp >>> f = lambda:1 >>> f() 1
~cpp >>> g = lambda x, y: x+y >>> g(1,2) 3
~cpp >>> incr = lambda x, inc=1: x+inc >>> incr(10) 11 >>> incr(10,5) 15
~cpp >>> vargs = lambda x, *args: args >>> vargs(1,2,3,4,5) (2, 3, 4, 5)
~cpp >>> kwords = lambda x, *args, **kw: kw >>> kwords(1,2,3, a=4, b=6) {'a': 4, 'b': 6}
구 | def로 되는 | lambda |
문/ | 문(statement) | (expression) |
def 다 된 로 객를 다 | 객만 다 | |
몸 | 개 문 | 나 |
리 | return문 명로 리 값 된다 | 결과가 리된다 |
내부 변 | 변를 고 는 것 가능 | 변를 는 것 가능 |