
05-1 함수 만들기
TypeError: 매개변수 개수 오류
▶가변 매개변수
def 함수 이름(매개변수, 매개변수, ..., *가변 매개변수)
1. 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다,(어디까지가 매개변수인지 구분하기 위함)
2. 가변 매개변수는 하나만 사용할 수 있다.
def print_n_times(n,*values):
for i in range(n):
for value in values:
print(value)
print()
print_n_times(3,"안녕","하세요","^^")
▶기본 매개변수
매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값.
1. 기본 매개변수 뒤에는 일반 매개변수가 올 수 없다.
print(value,..., sep=' ', end='\n', file=sys.stdout, flush=False)
value가 가변 매개변수이고, 그 뒤에 =를 사용해 '매개변수=값' 형태를 띠는 것들이 기본 매개변수
※가변 매개변수가 기본 매개변수보다 앞에 올 수 있고 반대는 안된다.
def print_n_times(*values,n=2):
for i in range(n):
for value in values:
print(value)
print()
print_n_times("안녕","하세요","^^",3)
#'안녕하세요^^3'이 두번 출력된다.
가변 매개변수가 기본 매개변수보다 우선시 되기 때문에 가변 매개변수 values가 3까지 인식하고,
n은 함수 호출 시 전달되지 않은 걸로 되어 기본 매개변수로 인해 n=2가 된다.
▶키워드 매개변수
매개변수 이름을 지정해서 입력하는 매개변수
def print_n_times(*values,n=2):
for i in range(n):
for value in values:
print(value)
print()
print_n_times("안녕","하세요","^^",n=3)
#'안녕하세요^^'가 세번 출력된다.
3대신 n=3으로 명시적인 키워드 매개변수를 사용할 수 있다.
def test(a,b=10,c=100):
print(a,b,c)
test(10,20,30) #10 20 30
test(10,c=200) #10 10 200
#test(10,b=20,200)
test(10,b=20,200)은 기본 매개변수 뒤에 일반 매개변수가 위치하므로 불가능하다.
05-2 함수의 활용
UnboundLocalError: 지역변수를 참조하려했지만 해당 변수가 할당되지 않았을 때 발생
파이썬은 함수 내부에서 함수 외부에 있는 변수를 참조하지 못함.
전역변수 사용시 global 키워드 사용하여 전역변수에 접근
▶메모화
재귀함수 등에서 같은 값을 반복해서 참조해야 할 때 매번 계산을 새로 하지 않고 딕셔너리에 저장 후
필요시에 메모된 값을 반환하면서 코드의 성능을 향상시킴
05-3 함수 고급
▶튜플: 함수와 함께 많이 사용되는 자료형, 리스트와 달리 한번 결정된 요소는 바뀌지 않음
(데이터, 데이터, 데이터, ...)
(데이터,) : 요소를 하나만 가지는 튜플도 ,를 넣어주어 튜플임을 표시해야 함.
tuple_test = 10, 20 ,30 a, b, c = 10 ,20 ,30 처럼 괄호 없이 선언 가능
def test():
return (10,20)
a,b = test()
print("a:",a) #10
print("b:",b) #20
위와 같이 여러 개의 값을 리턴할 수 있기 때문에 튜플을 함수에 자주 사용한다.
a=1 b=2 -> a,b = b,a -> a=2 b=1로 튜플의 해체할당기능을 사용 가능하다.
▶람다: 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거로울 때 함수를 간단하게 선언
map(함수,리스트): 리스트의 요소를 함수에 넣은 후 리턴된 값으로 새로운 리스트를 반환
filter(함수,리스트): 리스트의 요소를 함수에 넣은 후 리턴된 값이 True인 것만 리스트를 구성해 반환
lambda 매개변수: 리턴값 // 이렇게 한 줄로 간단하게 함수를 정의할 수 있다.
power = lambda x: x*x
new_list = map(power,origin_list) 이렇게 하면 요소들의 값을 제곱된 값으로 바꾼 리스트가 new_list에 할당된다.
new_list = map(lambda x: x*x, origin_list)와 같이 매개변수에 곧바로 넣어서 사용할 수 있다.
add = lambda x,y: x+y
print(add(2,3))
와 같이 매개변수가 여러 개인 람다도 만들 수 있다.
▶파일 처리
파일 객체 = open(문자열: 파일경로, 문자열: 모드) 모드는 w(write), a(append), r(read)
파일 객체.close()
with open(문자열: 파일경로, 문자열: 모드) as 파일 객체:
with 키워드를 사용하면 with구문이 종료될 때 자동으로 파일이 닫혀서 별도의 close가 필요 없음.
▶확인 문제
numbers = [1,2,3,4,5,6]
print("::".join(map(str,numbers)))
.join(numbers)를 하면 문자열을 join할 때 객체는 string이어야 하기 때문에
int들을 str로 바꿔야 하는데 각 int를 str으로 바꿔야 하므로 map() 함수를 사용한다.
'Lauguage > Python' 카테고리의 다른 글
[Python] GIL (Global Interpreter Lock) (0) | 2024.06.11 |
---|---|
[Python] [혼자 공부하는 파이썬] Chapter 8. 클래스 (0) | 2024.06.10 |
[Python] [혼자 공부하는 파이썬] Chapter 6-7 예외처리, 모듈 (1) | 2024.06.08 |
[Python] 객체, Iterator, Generator (1) | 2024.06.05 |
[Python] [혼자 공부하는 파이썬] Chapter 1~4 (1) | 2024.06.03 |

05-1 함수 만들기
TypeError: 매개변수 개수 오류
▶가변 매개변수
def 함수 이름(매개변수, 매개변수, ..., *가변 매개변수)
1. 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다,(어디까지가 매개변수인지 구분하기 위함)
2. 가변 매개변수는 하나만 사용할 수 있다.
def print_n_times(n,*values):
for i in range(n):
for value in values:
print(value)
print()
print_n_times(3,"안녕","하세요","^^")
▶기본 매개변수
매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값.
1. 기본 매개변수 뒤에는 일반 매개변수가 올 수 없다.
print(value,..., sep=' ', end='\n', file=sys.stdout, flush=False)
value가 가변 매개변수이고, 그 뒤에 =를 사용해 '매개변수=값' 형태를 띠는 것들이 기본 매개변수
※가변 매개변수가 기본 매개변수보다 앞에 올 수 있고 반대는 안된다.
def print_n_times(*values,n=2):
for i in range(n):
for value in values:
print(value)
print()
print_n_times("안녕","하세요","^^",3)
#'안녕하세요^^3'이 두번 출력된다.
가변 매개변수가 기본 매개변수보다 우선시 되기 때문에 가변 매개변수 values가 3까지 인식하고,
n은 함수 호출 시 전달되지 않은 걸로 되어 기본 매개변수로 인해 n=2가 된다.
▶키워드 매개변수
매개변수 이름을 지정해서 입력하는 매개변수
def print_n_times(*values,n=2):
for i in range(n):
for value in values:
print(value)
print()
print_n_times("안녕","하세요","^^",n=3)
#'안녕하세요^^'가 세번 출력된다.
3대신 n=3으로 명시적인 키워드 매개변수를 사용할 수 있다.
def test(a,b=10,c=100):
print(a,b,c)
test(10,20,30) #10 20 30
test(10,c=200) #10 10 200
#test(10,b=20,200)
test(10,b=20,200)은 기본 매개변수 뒤에 일반 매개변수가 위치하므로 불가능하다.
05-2 함수의 활용
UnboundLocalError: 지역변수를 참조하려했지만 해당 변수가 할당되지 않았을 때 발생
파이썬은 함수 내부에서 함수 외부에 있는 변수를 참조하지 못함.
전역변수 사용시 global 키워드 사용하여 전역변수에 접근
▶메모화
재귀함수 등에서 같은 값을 반복해서 참조해야 할 때 매번 계산을 새로 하지 않고 딕셔너리에 저장 후
필요시에 메모된 값을 반환하면서 코드의 성능을 향상시킴
05-3 함수 고급
▶튜플: 함수와 함께 많이 사용되는 자료형, 리스트와 달리 한번 결정된 요소는 바뀌지 않음
(데이터, 데이터, 데이터, ...)
(데이터,) : 요소를 하나만 가지는 튜플도 ,를 넣어주어 튜플임을 표시해야 함.
tuple_test = 10, 20 ,30 a, b, c = 10 ,20 ,30 처럼 괄호 없이 선언 가능
def test():
return (10,20)
a,b = test()
print("a:",a) #10
print("b:",b) #20
위와 같이 여러 개의 값을 리턴할 수 있기 때문에 튜플을 함수에 자주 사용한다.
a=1 b=2 -> a,b = b,a -> a=2 b=1로 튜플의 해체할당기능을 사용 가능하다.
▶람다: 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거로울 때 함수를 간단하게 선언
map(함수,리스트): 리스트의 요소를 함수에 넣은 후 리턴된 값으로 새로운 리스트를 반환
filter(함수,리스트): 리스트의 요소를 함수에 넣은 후 리턴된 값이 True인 것만 리스트를 구성해 반환
lambda 매개변수: 리턴값 // 이렇게 한 줄로 간단하게 함수를 정의할 수 있다.
power = lambda x: x*x
new_list = map(power,origin_list) 이렇게 하면 요소들의 값을 제곱된 값으로 바꾼 리스트가 new_list에 할당된다.
new_list = map(lambda x: x*x, origin_list)와 같이 매개변수에 곧바로 넣어서 사용할 수 있다.
add = lambda x,y: x+y
print(add(2,3))
와 같이 매개변수가 여러 개인 람다도 만들 수 있다.
▶파일 처리
파일 객체 = open(문자열: 파일경로, 문자열: 모드) 모드는 w(write), a(append), r(read)
파일 객체.close()
with open(문자열: 파일경로, 문자열: 모드) as 파일 객체:
with 키워드를 사용하면 with구문이 종료될 때 자동으로 파일이 닫혀서 별도의 close가 필요 없음.
▶확인 문제
numbers = [1,2,3,4,5,6]
print("::".join(map(str,numbers)))
.join(numbers)를 하면 문자열을 join할 때 객체는 string이어야 하기 때문에
int들을 str로 바꿔야 하는데 각 int를 str으로 바꿔야 하므로 map() 함수를 사용한다.
'Lauguage > Python' 카테고리의 다른 글
[Python] GIL (Global Interpreter Lock) (0) | 2024.06.11 |
---|---|
[Python] [혼자 공부하는 파이썬] Chapter 8. 클래스 (0) | 2024.06.10 |
[Python] [혼자 공부하는 파이썬] Chapter 6-7 예외처리, 모듈 (1) | 2024.06.08 |
[Python] 객체, Iterator, Generator (1) | 2024.06.05 |
[Python] [혼자 공부하는 파이썬] Chapter 1~4 (1) | 2024.06.03 |