def 함수명(parameter1, ...):
"""
Docstring(함수의 설명)
"""
함수 바디
return 반환값
a = 함수명(arg1, ...)
pass: 전체 구조에서 함수를 만들었지만, 상세부는 만들지 않았을 때 이렇게 표시한다. 그럼 에러가 뜨지 않는다. 조건문, 반복문, 예외 처리, 클래스 등에서도 마찬가지.(param1, /, param2): / 이전의 parameter들은 위치 전용으로 설정되어 키워드 파라미터가 안된다(param1). (param1, *, param2): * 이후의 parameter들은 키워드 전용으로 설정되어 위치 파라미터가 안된다(param2).(*param1). 여러 개의 입력값을 받아서 튜플로 묶어서 전달.def add_many(*args):
result = 0
for i in args: result = result + i
return result
(**kwargs). 키워드=값 형태로 여러 개를 입력해서 보내면 그게 dictionary형태로 전달되서 함수로 들어온다. func(name, age = 29)처럼 미리 정함. 위치는 non-default 뒤 가장 마지막에 와야 한다. num = 10
def printnum():
num = 20
print(num)
def print num2():
print(num+5)
printnum()
printnum2()
print(num)
의 출력값은 아래와 같다.
20
15
10
즉, printnum() 함수 내에 num이 되지만, 이는 기존에 선언된 전역변수 num=10을 들고오는 것이 아닌, 지역변수를 새로이 할당한 것이다.
printnum2()의 경우 전역변수 num을 들고와서 +5를 더한 15가 출력되지만, 함수가 끝나고 밖으로 빠져나왔을 때 전역변수에 영향을 미칠 수는 없다.
a = 1
def vartest():
return a + 1
a = 1
def vartest():
global a
a = a + 1
위의 방법이 가장 단순한데, return으로 밖으로 값을 반환하는 거다.
다른 방법은 global 명령어다. global a를 지정하면, a 변수를 함수 밖의 a를 직접 사용하겠다는 뜻이다. => 프로그래밍에서 좋은 방법은 아니다.
def outer_function(x):
def inner_function(y):
return y*2
return inner_function(x)
lambda <매개변수>: <표현식>(<인수>)(lambda x: x+10)(10)twice = lambda x:x*2, print(twice(10))<True일 때 값> if <조건식> else <False일 때 값>'A' if 90<score<=100 else 'B' if 80<score else'c'list(map(lambda <parameter1>, <parameter2>: <표현식>, <iterable1>, <iterable2>)) list1 = list(map(len, list2)), list3 = list(map(int,list4))list(filter(lambda <parameter1>: <조건식>, <iterable>))array.sort(key = lambda x: (표현식, 표현식))sorted(array, key = lambda x: (표현식, 표현식))