반응형
사용자 정의 함수
함수 기본 구조
- 선언과 호출(define&call)
- 입력(Input)
- 범위(Scope)
- 결과값(Output)
선언과 호출
def 키워드 활용
함수는 호출되면 코드를 실행하고 return 값을 반환하며 종료된다.
num1 = 0 num2 = 1 def func1(a, b): return a + b def func2(a, b): return a - b def func3(a, b): return func1(a, 5) + func2(5, b) result = fuc3(num1, num2) print(result) # 9
결과값
return
함수는 반드시 값을 하나만 return한다.
return문을 한번만 사용하면서 두 개 이상의 값을 반환하는 방법 => 튜플
def minus_and_product(x, y): return x - y, x * y minus_and_product(4, 5) # (-1, 20)
입력
Parameter: 함수를 실행할 때, 함수 내부에서 사용되는 식별자
Argument: 함수를 호출할 때, 넣어주는 값
def function(n): # parameter: n return 1 function(0) # argument: 0
Argument
positional arguments
- 위치에 따라 함수 내에 전달됨
def add(x, y): return x + y add(2, 3)
- 위치에 따라 함수 내에 전달됨
keywords arguments
- 직접 변수의 이름으로 특정 Argument를 전달할 수 있음
- 이후 Positional Argument를 활용할 수 없음
def add(x, y): return x + y add(x=2, y=5) add(2, y=5)
Default Arguments Values
- 기본값을 지정하여 함수 호출 시 argument 값을 설정하지 않도록 함
def add(x, y=0): return x + y add(2)
- 기본값을 지정하여 함수 호출 시 argument 값을 설정하지 않도록 함
정해지지 않은 개수의 arguments
- 여러 개의 Positional Argument를 하나의 필수 parameter로 받아서 사용
- Argument들은 튜플로 묶여 처리되며, parameter에 *을 붙여 표현
def add(*args): for arg in args: print(arg) add(2) add(2, 3, 4, 5)
정해지지 않은 개수의 keywords arguments
- 함수가 임의의 개수 Argument를 Keyword Argument로 호출될 수 있도록 지정
- Argument들은 딕셔너리로 묶여 처리되며, parameter에 **를 붙여 표현
def family(**kwargs): for ket, value in kwargs: print(key, ":", value) family(father='John', mother='Jane', me='John Jr.')
범위(Scope)
함수는 코드 내부에 local scope를 생성하며, 그 외의 공간인 global scope로 구분
scope
- global scope: 코드 어디에서든 참조할 수 있는 공간
- local scope: 함수가 만든 scope. 함수 내부에서만 참조 가능
variable
- global variable: global scope에 정의된 변수
- local variable: local scope에 정의된 변수
객체 수명주기(lifecycle)
built-in scope
- 파이썬이 실행된 이후부터 영원히 유지
global scope
- 모듈이 호출된 시점 이후 혹은 인터프리터가 끝날 때까지 유지
local scope
- 함수가 호출될 때 생성되고, 함수가 종료될 때까지 유지
def func(): a = 20 print('local', a) func() print('global', a) # local 20 => a는 local scope에서만 존재
함수 내에서는 바깥 Scope의 변수에 접근 가능하나 수정은 할 수 없음
global 문
현재 코드 블록 전체에 적용되며, 나열된 식별자(이름)이 global variable 임을 나타냄
global에 나열된 이름은 같은 코드 블록에서 global 앞에 등장할 수 없음
a= 10 def funcl(): global a a = 3 print(a) funcl() print(a) # 10 # 3
Local scope에서 global 변수 값의 변경 ⇒ global 키워드를 사용하지 않으면, Local scope에 a변수가 생성됨
반응형
'개발 공부' 카테고리의 다른 글
Python_7-2 (0) | 2023.02.19 |
---|---|
Python_7-1 (0) | 2023.02.19 |
Python_5 (0) | 2023.02.12 |
Python_4 (0) | 2023.02.06 |
Python_3 (0) | 2023.02.06 |
댓글