728x90
반응형
함수 안에 함수 만들기
- 자신이 소속된 함수의 매개변수에 접근할 수 있음
- def 로 함수를 만든 후 그 안에서 def로 다시 함수를 만듦
def 함수이름1():
코드
def 함수이름2():
코드
예제
#!/usr/bin/python3
def add(a,b): # 첫번째 함수 정의
sum = a + b # 매개변수 a, b를 더함
def print_sum(): #두번째 함수 정의
print("%d + %d = %d" % (a,b,sum) ) # 함수 add에서 더한 값을 출력
print_sum() # 두번째 함수 호출
add(1,2) # 함수 실행 순서 : add 함수 실행 -> print_sum 함수 실행
=========================================
# 실행 결과
1 + 2 = 3
지역 변수의 범위
def print_hello(): # 바깥 함수의 지역 변수는 내부에 속한 함수에서 접근 가능함
hello = 'Hello, world!'
def print_message():
print(hello) # 바깥쪽 함수의 지역 변수를 사용
지역 변수 값 변경
#!/usr/bin/python3
def parent():
a = 10
print ( "parent a = %d" %a)
def child():
a = 20 # parent 함수에서 이름만 같은 변수를 새로 생성한 것으로 parent 함수의 변수를 변경한 것이 아님. "parent 함수 a 변수 ≠ child 함수 a 변수". 함수에서 변수 선언 시 현재 함수의 지역 변수로 생성됨
print("child a = %d" %a )
child()
print(a)
parent()
=========================================
# 실행 결과
parent a = 10
child a = 20
10
#!/usr/bin/python3
def parent():
a = 10
print ( "parent a = %d" %a)
def child():
nonlocal a # 변수 앞에 nonlocal 선언 시 현재 함수에서 지역 변수를 생성하는 것이 아닌 제일 가까운 바깥쪽 함수의 지역 변수를 사용하는 것을 뜻함
a = 20
print("child a = %d" %a )
print(a)
parent()
=========================================
# 실행 결과
parent a = 10
child a = 20
20
#!/usr/bin/python3
def A():
x = 10
y = 100
def B():
x = 20
def C():
nonlocal x
nonlocal y
x = x + 30
y = y + 300
print(x)
print(y)
C()
B()
A()
=========================================
# 실행 결과
50 # 가장 가까운 바깥쪽 함수의 지역 변수를 사용하는 것으로 C 함수에서 가장 가까운 B 함수의 x 변수 사용
400 # 가장 가까운 바깥쪽 함수의 지역 변수를 사용하는 것으로 C 함수에서 가장 가까운 B 함수에서는 y 변수가 없어 A 함수의 y 변수 사용
전역 변수 사용
#!/usr/bin/python3
x = 1
y = 1
def A():
x = 10
y = 100
def B():
x = 20
def C():
global x # 변수 앞에 global 선언 시 전역 변수 사용
global y
x = x + 30
y = y + 300
print(x)
print(y)
C()
B()
A()
=========================================
# 실행 결과
31
301
728x90
반응형
'IT 이것저것' 카테고리의 다른 글
[Python/기초] bool 자료형 (0) | 2022.10.20 |
---|---|
[Python/기초] 함수 안에 함수 만들기 (0) | 2022.10.20 |
[GIT/명령어] Git Push 명령어 (0) | 2022.10.19 |
[Ubuntu/설정]인터페이스에 IPv6 IP 설정, 라우팅 설정 (2) | 2022.08.22 |
[CISCO/명령어]CISCO 스위치 OSPF MD5 인증 설정하기 (0) | 2022.07.27 |