일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- java
- dictionary
- 코드업
- 이진탐색트리
- 미분 방정식
- auto-encoder
- 델
- 함수
- 최단 경로
- 딕셔너리
- 계단 오르기
- 벡터해석
- 회로이론
- Asteroid RL
- 2P1L
- 벡터 해석
- 선적분
- 자바
- 파이썬
- cURL
- 신경망
- 백트래킹
- 딥러닝
- BST
- 소행성
- 강화학습
- Class
- Python
- 자료형
- 피보나치 수열
- Today
- Total
Zeta Oph's Study
[Python 기초 문법] 함수 (Function) 본문
함수의 선언과 호출
def function_name(parameter):
code1
code2
...
return result
def : 함수 선언 시 사용되는 예약어
parameter : 매개변수 - 여러 개일 경우 ,로 구분한다.
result라는 결과 값을 반환한다.
매개변수와 리턴값이 없는 함수도 가능 : 리턴값이 없을 경우, 리턴값을 출력하면 None이 된다.
함수 이름을 통해서 호출할 수 있다.
def div_func(n1, n2):
return n1/n2
res = div_func(1, 2)
print(res)
TERMINAL
0.5
매개변수는 순서대로 전달된다. 그러나 직접 매개변수를 지정하여 함수를 호출할 수도 있다.
def div_func(n1, n2):
return n1/n2
res = div_func(n2 = 1, n1 = 2)
print(res)
TERMINAL
2.0
매개변수 초깃값 지정
def f1(p1, p2=init1, ...):
code
...
매개변수를 받는 칸에 초깃값 지정 가능 : 초깃값이 지정된 매개변수는 값을 지정하지 않고 호출하여도 초깃값으로 지정되어 함수가 실행된다.
매개변수를 지정하여 호출하는 것이 아니라면, 매개변수 대입 순서가 헷갈려 오류가 생기므로, 초깃값을 지정해주는 매개변수는 맨 뒤에 몰아넣어준다.
여러개의 매개변수를 받는 함수
매개변수의 개수가 정해져 있지 않은 경우, 즉 몇 개가 입력될 지 모르는 경우는 *매개변수 로 사용할 수 있다.
(관용적으로 *args 로 사용)
def func(*args):
code
...
이렇게 된 경우, 여러개로 전달된 매개변수들은 args라는 이름의 튜플로 묶여서 함수 내에서 사용되게 된다.
ex) 총합
def plus(*args):
res = 0
for i in args:
res = res + i
return res
print(plus(1, 2, 3, 4, 5, 6, 7, 8, 9))
TERMINAL
45
키워드 매개변수
**매개변수 형태는 key=value 형태로 입력된 것들을 딕셔너리로 바꾸어 주어 함수 내에서 사용하게 해준다.
(관용적으로 **kwarg 사용)
def func(**kwarg):
print(kwarg)
func(a=1, b=2)
TERMINAL
{'a': 1, 'b': 2}
<주의 사항>
일반 매개변수와 *args, **kwargs 의 순서
입력 순서가 일반 매개변수 - *args - **kwarg 순서로 전달하여 함수를 호출해주어야 한다.
(그렇지 않으면 오류 발생 : 어디까지 *인지, **인지 구분을 할 수 없기 때문)
함수 내 변수의 효력 범위
함수 안에서 선언한 변수의 효력 범위 : 함수 내
- 함수 밖에 같은 이름의 변수가 있어도 함수 안의 변수에 대해서만 작동한다.
- 함수 안의 변수를 return 없이 함수 밖에서 호출할 수 없다.
매개변수 전달 없이 함수 밖의 변수에 접근/수정하고 싶다면 global을 사용해주어야 한다.
a = 1
def func():
global a
a = a + 1
func()
print(a)
TERMINAL
2
위 코드와 같이 global 변수명 을 통해 전역 변수를 함수 안에서 사용하겠다는 선언 이후 작업을 해주어야 전역변수에 접근할 수 있다.
lambda 예약어
def와 같은 역할로, 함수 선언에 사용된다. 다만 한줄로 간결하게 선언할 때 사용한다는 차이점이 있다.
funct_name = lambda par1, par2, ... : code_with_par
lambda 함수는 표현식에 return이 없어도 표현식의 결과값을 return한다.
선언한 함수의 사용 또한 함수명(파라미터) 로 사용할 수 있다.
add = lambda a, b : a + b
c = add(1, 2)
print(c)
TERMINAL
3
'프로그래밍 > Python' 카테고리의 다른 글
[Python 기초 문법] 클래스 (Class) (1) (2) | 2024.03.03 |
---|---|
[Python 기초 문법] 사전 (Dictionary) (1) | 2024.03.03 |
[Python 기초 문법] 집합 (Set) (1) | 2024.03.02 |
[Python 기초 문법] 문자열(String) (1) | 2024.03.02 |
[Python 기초 문법] 리스트(List) (2) | 2024.02.19 |