공백 4칸 들여쓰기 원칙으로 파라미터가 시작되는 부분을 보기 좋게 하거나 여러 줄 나눠쓸 경우에도 사용한다.
각 단어를 밑줄( _ ) 로 구분하여 표기하는 스네이크 케이스 따른다. 소문자로 문자를 작성한다.
#파라미터 시작 부분
def long_function_name(
var_one, var_two, var_ three,
var_fo ur ) :
print(var_one )
# 여러 줄 나눠쓰기
foo=long_function_name(
var_one, var_two,
var_ three, var_ four)
타입을 지정할 수 있는 타입 힌트가 있다
리스트 컴프리헨션은 기존 리스트를 기반으로 새로운 리스트를 만들어내는 구문으로 map,filter와 같은 함수형 기능을 지원하고 람다 표현식도 지원한다.게다가 딕셔너리 등도 가능하도록 추가했다.
# 리스트 컴프리헨션
l i.st (map(lambda x: x + 10, (1, 2, 3] )) #[11,12,13]
[ n * 2 for n in range( 1, 10 + 1 ) i.f n % 2 == 1 ] #[2,6,10,14,18]
a = {key: value for key, value in original.items( )}
루프의 반복 동작을 제어할 수 있는 루틴형태이다. yield는 제너레이터가 실행 중이던 값을 내보낸다는 것으로 중간값을 리턴한 후에 다음 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행하므로 구문을 사용하면 제너레이터를 리턴할 수 있다.
여러 타입의 값의 하나의 함수에서 생성이 가능하다
# yield 와 제너레이터
def get _natural_number( ):
n = O
whi.le True:
n += 1
yield n
get _nat ural_number( )
<generat or obj ect get _nat ural_number at 0x10d3139d0>
g = get _natural_number( )
for _ in range( 0 , 100 ) :
print( next( g ) ) # 1~100까지 출력
# 여러 타입의 값을 하나의 함수로 생성
def generator( ):
yield 1
yield 'string'
yield True
g = generator( )
g
<generat or obj ect generat or at 0x10a47c678>
next(g)
1
next(g)
'string'
next(g)
True