파이썬 문법의 모든 내용을 담은 게시글이 아닌 헷갈리거나 자주 까먹는 부분의 문법들만 다룬 내용입니다.
함수
- 함수의 재사용성 (reuse)
파이썬 함수 내장함수(상당히 많다.)
- 군집자료형에 유용한 함수들
len(), max(), min(), sum(), sorted(), reversed() 함수
1) sorted() 함수: 정렬해주는 함수
- 집합이거나 튜플이거나 리스트인 값들을 sorted()에 적용시키면 전부 다 리스트로 정렬되어 출력되어진다.
2) reversed 함수 : 데이터를 역순으로 바꾸는 함수
- 순서가 있는 list, tuple, str에만 적용가능
L= [1,3,5,7,9]
M= reversed(L)
print(M)
>> <list_reverseiterator object at 0x03DC92B0>
#리스트를 출력해주는 것이 아니라 역순으로 된 object가 만들어졌다고 출력됨.
#역순으로 출력된 결과를 보고싶으면
M= list(reversed(L))
print(M)
>>[9,7,5,3,1]
#리스트, 튜플 , 문자열 모두 list(reversed()) 이런식으로 사용
함수 정의하기
#반환 값이 여러 개인 경우
#함수 반환값이 2개 이상인 경우 튜플로 묶어서 반환한다.
def add_multiply(x,y):
sum= x+y
mult= x*y
return sum, mult
#main
a= int(input('Enter a:'))
b= int(input('Enter b:'))
m,n= add_multiply(a,b)
print(m,n)
- 함수는 호출 전에 정의되어 있어야 한다.
print('start of the program')
hello()
print('middle of the program')
hello()
def hello():
print('hello world')
>> hello()를 호출할 때 hello 함수를 만들기 전에 이미 호출했기 때문에 hello 함수가 무엇인지 몰라서 오류
def hello():
print('hello world')
print('start of the program')
hello()
print('middle of the program')
hello()
>>start of the program
hello world
middle of the program
전역 변수와 지역 변수
- 전역변수 : 프로그램 전체에서 사용 가능
- 지역변수: 함수 내에서만 사용 가능
- scoping rule: 변수를 찾을 때 지역변수 -> 전역변수 순서로 찾는다.
def test():
b= 20
print(a,b)
#main
a= 100
print(a)
test()
print(a)
print(b)
>> 100 #전역변수의 a로 출력
>> 200 #지역변수에 a가 정의되어 있지 않으므로 전역변수의 a로 출력
>> 100 #전역변수의 a로 출력
>> 에러 #전역변수 b가 없음
- gloabal 선언: 전역변수를 함수 내에서 바꾸고자 할 때, global 선언하여 사용
지역변수를 전역변수로 사용하고자 할 때, global 선언 필요
가변 인수 사용하기
- 정해지지 않은 수의 인수를 함수에 전달
- 함수에 정의할 때 인수 목록에 반드시 넘겨야 하는 고정 인수를 우선 나열하고, 나머지를 마지막에 튜플 형식으로 한꺼번에 받는다.
def friends(*name): #인수가 몇개들어오는지 정해지지 않음 *name
for n in name:
print(n.title())
friends('alice','paul')
friends('cindy','sally','david','tom')
>> Alice Paul
>> Cindy Sally david tom
람다함수의 정의
- 이름없는 한 줄짜리 함수
- return문을 사용하지 않음
- 함수를 함수 인자로 넘길 때 유용
def add(x,y):
return x+y
#람다 함수
lambda x,y: x+y
map 내장 함수 (람다 함수를 사용)
#map 내장함수의 예
def f(x):
return x*x
X=[1,2,3,4,5]
list(map(f,x))
>>[1,4,9,16,25]
#람다 예
X=[1,2,3,4,5]
Y=map(lambda a:a*a, X) #잠시 이번에만 사용하려고 함수 굳이 만들지 않을 때 유용
list(Y)
>>[1,4,9,16,25]
filter 내장함수
X=[1,3,5,7,9]
result = filter(lambda x:x>5, X)
list(result)
>>[7,9]