파이썬 코딩 도장
def 함수이름():
코드
>>> def hello():
... print('Hello, world!')
...
>>> hello()
Hello, world!
def hello():
print('Hello, world!')
hello()
- 파이썬 스크립트 최초 실행
- hello 함수 호출
- hello 함수 실행
- print 함수 실행 및 'Hello, world!' 출력
- hello 함수 종료
- 파이썬 스크립트 종료
hello() # hello 함수를 만들기 전에 함수를 먼저 호출
def hello(): # hello 함수를 만듦
print('Hello, world!')
Traceback (most recent call last):
File "C:\project\function.py", line 1, in <module>
hello() # hello 함수를 만들기 전에 함수를 먼저 호출
NameError: name 'hello' is not defined
def 함수이름(매개변수1, 매개변수2):
코드
>>> def add(a, b):
... print(a + b)
...
>>> add(10, 20)
30
def 함수이름(매개변수):
return 반환값
>>> def add(a, b):
... return a + b
...
>>> print(add(10, 20))
30
def 함수이름(매개변수):
return 반환값1, 반환값2
>>> def add_sub(a, b):
... return a + b, a - b
...
>>> x, y = add_sub(10, 20)
>>> x
30
>>> y
-10
>>> x = add_sub(10, 20)
>>> x
(30, -10)
>>> x, y = (30, -10)
>>> x
30
>>> y
-10
stack diagram
으로 알아보기def mul(a, b):
c = a * b
return c
def add(a, b):
c = a + b
print(c)
d = mul(a, b)
print(d)
x = 10
y = 20
add(x, y)
30
200
전역 프레임
함수 add의 스택 프레임
mul 함수의 스택 프레임
mul 함수가 끝남
add 함수가 끝남
def get_quotient_remainder(a, b):
return a // b, a % b
def 함수이름(매개변수1, 매개변수2): # 위치 인수를 사용하는 함수
코드
함수(*리스트) # 리스트 언패킹
함수(*튜플) # 튜플 언패킹
def 함수이름(*매개변수): # 위치 인수를 사용하는 가변 인수 함수
코드
함수(인수1, 인수2) # 인수 여러 개를 직접 넣기
함수(*리스트) # 리스트 언패킹
함수(*튜플) # 튜플 언패킹
함수(키워드1=값1, 키워드2=값2) # 함수를 키워드 인수 방식으로 호출
함수(**딕셔너리) # 딕셔너리 언패킹
def 함수이름(**매개변수): # 키워드 인수를 사용하는 가변 인수 함수
코드
함수(키워드1=값1, 키워드2=값2) # 키워드 인수를 직접 넣기
함수(**딕셔너리) # 딕셔너리 언패킹
def 함수이름(매개변수=값): # 매개변수에 초깃값 지정
코드
함수() # 매개변수에 초깃값이 있으므로 인수를 비워두고 호출
def get_max_score(*args):
return max(args)
def factorial(n): # 재귀호출로 팩토리얼을 구하는 함수
if n == 1: # n이 1일 때
return 1 # 1을 반환하고 재귀호출을 끝냄
return n * factorial(n - 1) # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
def factorial(n):
if n == 1: # n이 1일 때
return 1 # 1을 반환하고 재귀호출을 끝냄
return n * factorial(n - 1) # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
print(factorial(5))
120
함수 호출
함수 반환
if len(word) < 2:
return True
if word[0] != word[-1]:
return False
return is_palindrome(word[1:-1])
lambda 매개변수1, 매개변수2: 반환값 # 람다 표현식으로 함수를 만듦
(lambda 매개변수1, 매개변수2: 반환값)(인수1, 인수2) # 람다 표현식 자체를 호출
lambda 매개변수1, 매개변수2: 식1 if 조건식 else 식2 # 람다 표현식에서 조건부 표현식 사용
lambda x: str(x) if x % 3 == 0 else x
lambda 매개변수1, 매개변수2: 식1 if 조건식1 else 식2 if 조건식2 else 식3 # if를 여러 개 사용
lambda x: str(x) if x == 1 else float(x) if x == 2 else x + 10
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(map(lambda x: str(x) if x % 3 == 0 else x, a))
[1, 2, '3', 4, 5, '6', 7, 8, '9', 10]
>>> a = [1, 2, 3, 4, 5]
>>> b = [2, 4, 6, 8, 10]
>>> list(map(lambda x, y: x * y, a, b))
[2, 8, 18, 32, 50]
>>> def f(x):
... return x > 5 and x < 10
...
>>> a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
>>> list(filter(f, a))
[8, 7, 9]
>>> def f(x, y):
... return x + y
...
>>> a = [1, 2, 3, 4, 5]
>>> from functools import reduce
>>> reduce(f, a)
15
x = 10 # 전역 변수
def foo():
global x # 전역 변수 x를 사용하겠다고 설정
y = 10 # foo의 지역 변수
list(filter(lambda x: x.find('.jpg') != -1 or x.find('.png') != -1, files))