함수의 매개변수 전달 방법
Python에서는 함수에 다양한 방식으로 매개변수를 전달할 수 있다.
print('\ndict 타입의 자료형')
def Func3(w, h, **other):
print('몸무게 {}, 키 {}'.format(w, h))
print(other) # 딕셔너리 형태로 출력
# 키워드 인수로 매개변수 전달
Func3(65, 175, irum='홍길동', nai=23, sex='남', addr='대전')
Func3(75, 185, irum='김길수')
# 출력:
# 몸무게 65, 키 175
# {'irum': '홍길동', 'nai': 23, 'sex': '남', 'addr': '대전'}
# 몸무게 75, 키 185
# {'irum': '김길수'}
가변 인수, 키워드 인수
가변 인수와 키워드 인수를 사용하여 함수에 여러 인수를 전달할 수 있다.
def Func4(a, b, *v1, **v2):
print(a)
print(b)
print(v1) # 튜플 형태로 출력
print(v2) # 딕셔너리 형태로 출력
Func4(1, 2)
Func4(1, 2, 3, 4, 5)
Func4(1, 2, 3, 4, 5, m=6, n=7)
# 출력:
# 1
# 2
# ()
# {}
# 1
# 2
# (3, 4, 5)
# {'m': 6, 'n': 7}
디폴트 매개변수
함수의 매개변수에 기본값을 설정할 수 있다.
def ShowGugudan(start, end=5):
for dan in range(start, end + 1):
print(str(dan) + '단 출력')
for i in range(1, 10):
print(f"{dan}*{i}={dan*i}", end=' ')
print()
ShowGugudan(2, 3) # 2단과 3단 출력
ShowGugudan(3) # 3단부터 5단까지 출력
클로저
내부 함수가 외부 함수의 변수를 참조할 수 있는 함수
def outer():
count = 0
def inner():
nonlocal count
count += 1
return count
return inner
add1 = outer()
print(add1()) # 출력: 1
print(add1()) # 출력: 2
add2 = outer()
print(add2()) # 출력: 1
변수의 생존 범위
Python에서는 전역 변수와 지역 변수를 사용할 수 있다.
x = 1 # 전역 변수
def func():
x = 2 # 지역 변수
print(x) # 출력: 2
func()
print(x) # 전역 변수 출력: 1
익명 함수(람다 함수)
이름이 없는 한 줄짜리 함수로, 간단한 연산을 한 줄로 표현할 수 있다.
# 람다 함수 정의와 사용
print((lambda x, y: x + y)(3, 4)) # 출력: 7
# 가변 인수와 람다 함수
kbs = lambda a, su=10: a + su
print(kbs(5)) # 출력: 15
print(kbs(5, 6)) # 출력: 11
sbs = lambda a, *tu, **di: print(a, tu, di)
sbs(1, 2, 3, m=4, n=5) # 출력: 1 (2, 3) {'m': 4, 'n': 5}
filter 함수
filter 함수는 주어진 조건에 맞는 요소만 선택한다.
print(list(filter(lambda a: a < 5, range(10)))) # 출력: [0, 1, 2, 3, 4]
print(list(filter(lambda a: a % 2, range(10)))) # 출력: [1, 3, 5, 7, 9]
재귀 함수
자기 자신을 호출하는 함수
def fsum(n):
if n == 1: return 1
return n + fsum(n - 1)
print(fsum(10)) # 출력: 55
def CountDown(n):
if n == 0:
print('완료')
else:
print(n, end=' ')
CountDown(n - 1)
CountDown(5) # 출력: 5 4 3 2 1 완료
데코레이터
데코레이터는 다른 함수를 감싸는 함수
def Deco1(f):
return lambda: f() + 5
def Deco2(f):
def Print_f():
print(f())
return Print_f
def Func():
return 3
f = Deco2(Deco1(Func))
f() # 출력: 8
모듈
모듈은 코드의 재사용성을 높이고, 코드를 깔끔하게 관리할 수 있다.
import sys
print('현재 작업 영역의 경로 확인:', sys.path)
import math
print(math.pi) # 출력: 3.141592653589793
import os
print(os.getcwd()) # 현재 작업 경로 확인
print(os.listdir('/')) # 루트 경로의 내용 출력
import random
print(random.random()) # 0과 1 사이의 난수 발생
print(random.randrange(1, 10)) # 1과 10 사이의 난수 발생