728x90
반응형
1. 함수란?
- 코드를 어떤 행위에 따라 분리함
- 반복적으로 불러와서 수행해야 하는, 코드들을 함수로 묶음
1.1. 기본형
#함수 호출하기
Func_name(param_value)
# Func_name: 함수 이름
# param_value: 함수에 넘겨줄 값을 정의 (생략가능)
# 함수 선언하기
def Func_name (Parameter, ...):
Statement
return return_value
# Func_name: 함수 이름
# Parameter: 넘겨 받은 값을 저장할 공간 설정 (생략가능)
# Statement: 함수 안에서 실행할 코드
# return_value: 함수를 호출한 곳으로 넘겨주는 코드
1.2. 예시
#함수 호출하기
result = plus(10,20)
# 함수 선언하기
def plus(a,b):
num = a + b
return num
1.3. 함수 호출 방식
Call by Value
- 함수에 넘기는 인자를, 값으로 넘김
- 인자값은 값이 변경되지 않음.
Call by Reference
- 함수에 넘기는 인자를, 주소로 넘김
- 인자값은 값이 변경됨
1.4. 변수의 범위
지역변수: Indent 안에서만 존재하는 변수
b = 0 def a(): b = 1 # 지역변수 print(b) a() print(b)
전역변수: 프로그램 전체에 존재하는 변수
- Indent 안에서도 사용가능함
- 같은 이름의 변수가 Indent 안에서 선언시, 그 변수는 지역변수가 됨
- Indent 안에서 "global"키워드 사용시 전역변수로 선언됨
- 함수안에 같은 변수가 여러 개 있을 때라도, 전역 변수를 따르게 된다.
b = 0
def a():
global b
b = 1 # 전역변수
print(b)
a()
print(b)
1.5. 디폴트 파라미터
- 파라미터를 주고,
- 인자를 파라미터에 맞게 주거나
- 인자를 주지 않는 방법
# 인자를 파라미터에 맞게 주는 방법
def sample(x):
print(x)
sample(10)
# 인자를 주지 않는 방법
def sample(x = 10):
print(x)
sample()
1.6. 키워드 인자
- 인자에서 데이터를 넘길때, 각 데이터를 파라미터를 지정할 수 있음
# 인자를 주지 않는 방법
def sample(x,y):
print(x*y)
sample(x = 10, y = 20) # 키워드 인자
1.7. 가변 인자
- 가변인자는 여러개의 데이터를 받을 수 있다.
# 가변인자의 예시
def sample(x, *args):
print(args)
sample(10, [1,2,3,4])
# 키워드 가변인자의 예시
def sample(x, **args):
print(args)
sample(x = 10, args = [1,2,3,4])
2. 람다 표현식
2.1. 기본형
Nameoflambda = lambda Variable: Statement
# Nameoflambda: 람다식의 이름을 지정 (함수의 이름과 유사)
# Variable: 값을 전달 받는 매개 변수
# Statement: 코드 수행하며, 결과를 반환함. (함수 안 실행코드와 유사)
2.2. 예시
name = lambda x: x*10
print(name(10))
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
list(map(lambda x,y : x,y, a,b))
3. 클로저 사용하기
3.1. 기본형
- 함수가 중첩되어 있는 상태
- 리턴값을 중첩되어 있는 함수에서 가져올 수 있음
- 중첩되어 있는 함수를 호출하여, 두개의 함수를 같이 사용 가능
3.2. 예시
- 첫번째 예시: 리턴값이 없는 형태
def x():
x = 100
def y():
y = 100
print(x)
print(y)
y() # 함수 X를 끝내기 전에, 함수 y를 호출함
x() # 함수 X를 호출함
- 두번째 예시: 리턴값이 있는 형태
# 변수는 모두 상위 함수에 선언 되어 있어야 한다.
def func1():
x = 100
y = 100
result = 0
def func2(i):
result = x+y+i
return result
return func2
# 클로저가 적용된 함수에는 변수를 선언해서 넘겨야 한다.
f = func1()
print(f(10), f(20))
- 세번째 예시: lambda를 이용한 형태
# 변수는 모두 상위 함수에 선언 되어 있어야 한다.
# 반환하는 값으로써 람다를 선언할 수 있다.
def func1():
x = 100
y = 100
return lambda i : x + y + i
# 클로저가 적용된 함수에는 변수를 선언해서 넘겨야 한다.
f = func1()
print(f(10), f(20))
반응형
'컴퓨터 관련 > 파이썬' 카테고리의 다른 글
[파이썬] 10. 고급기능 (2) | 2024.01.07 |
---|---|
[파이썬] 9. 객체지향 (0) | 2024.01.07 |
[파이썬] 7. 파일 입출력 (1) | 2024.01.06 |
[파이썬] 6. 조건문과 반복문 (0) | 2024.01.06 |
[파이썬] 5. 딕셔너리 (0) | 2024.01.06 |