-
Python 문법 기초 14 - 중첩 함수, 함수의 주소 호출Python 2022. 10. 22. 16:01
# 함수 만들기 # def 함수명(매개변수,...): ~ 매개변수가 있을 수도있고 없을 수도 있다. print('뭔가를 하다가...') def DoFunc1(): # 함수의 생성 print('DoFunc1 수행') #return None # 생략한다. 생략해도 반드시 리턴된다. print('뭔가를 하다가 2...') DoFunc1() # 함수 호출 print('뭔가를 하다가 2...') DoFunc1() # 함수 호출 print(DoFunc1) // 주소 호출 DoFunc2 = DoFunc1 # 주소 치환 DoFunc2() print(DoFunc1()) # 리턴을 생략했으므로 None 이 반환 됨 <console> 뭔가를 하다가... 뭔가를 하다가 2... DoFunc1 수행 뭔가를 하다가 2... DoFunc1 수행 <function DoFunc1 at 0x0000029BA2A3A160> DoFunc1 수행 DoFunc1 수행 None
함수를 만들고 필요할 때마다 호출할 수 있다.
함수를 호출할 때, () 를 빼고 호출하게 되면 함수의 주소를 호출하는 것이다.
함수를 치환하여 똑같은 함수를 만들 수도 있다.
return 은 보통 생략하며, 생략해도 반드시 리턴된다.
print() 로 함수를 호출하게 되면 None 이 리턴된다.
def doFunc3(para1, para2): # pass pass 를 사용하면 함수를 호출해도 내용이 pass 되므로 없다는 소리와 같음 result = para1 + para2 # print(result) return result print(doFunc3(10, 20)) aa = doFunc3(10, 20) print(aa) print(id(doFunc3), doFunc3, doFunc3(1, 2)) print('현재 파일(모듈)이 사용 중인 객체(함수) 목록 : ', globals()) print(doFunc3('대한','민국')) # print(doFunc3('대한',1)) err 타입이 맞지 않기때문에 # print(doFunc3(1)) missing 1 required positional argument 매개변수를 1개밖에 주지 않음 <console> 30 30 2867471819248 <function doFunc3 at 0x0000029BA2A3A1F0> 3 현재 파일(모듈)이 사용 중인 객체(함수) 목록 : {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000029BA2586CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\Users\\JEONGYEON\\Desktop\\Python\\에어컨 빵빵한 에이콘 Python\\pro1\\pack2\\func2.py', '__cached__': None, 'DoFunc1': <function DoFunc1 at 0x0000029BA2A3A160>, 'DoFunc2': <function DoFunc1 at 0x0000029BA2A3A160>, 'doFunc3': <function doFunc3 at 0x0000029BA2A3A1F0>, 'aa': 30} 대한민국
매개변수를 사용할 경우 함수에 필요한 값을 넣어줌으로써 값을 받는다.
함수에서 () 가 없으면 주소를 이야기하며, ()가 있으면 호출하는 의미이다.
현재 사용하고 있는 객체 목록 확인한다. 자신이 만든 함수도 포함되어있다.
함수 호출 시 매개변수의 갯수대로 주어야 하며 타입은 맞게 주어야 한다.
def doFunc4(arg1, arg2): if (arg1 + arg2) % 2 == 1: return // 실행하지 않고 넘긴다. else: aa = doFunc5(arg1, arg2) # 함수 내에서 다른 함수 호출 print(aa) def doFunc5(arg1, arg2): return arg1 + arg2 doFunc4(5, 6) // 값이 없음 doFunc4(5, 5) // 10 <console> 10
함수 내에서 다른 함수를 호출할 수 있다.(중첩함수)
함수 내에서 if 문 사용하였다. return 을 사용하면 함수에서 탈출하는 의미이다.
def swapfunc(a, b): return b, a # return 은 한가지밖에 리턴하지 못하는데 # return (b, a) tuple type 으로 묶여 하나의 값으로 리턴한다. # return [b, a] 그러므로 왼쪽의 리턴 값은 하나로 봐야한다. a = 10; b = 20 print(swapfunc(a, b)) <console> (20, 10)
return 은 한가지의 값밖에 리턴하지 못하는데 위의 경우에는 tuple type 으로 묶여 하나의 값으로 리턴한다. 그러므로 위쪽의 리턴 값은 하나로 봐야한다.(파이썬에서만 유효)
list, set 타입으로도 반환 가능하다.
def func1(): print('func1 함수 멤버') def func2(): print('func1의 내부 함수 인 func2 멤버') func2() func1() <console> func1 함수 멤버 func1의 내부 함수 인 func2 멤버
내부함수로서 위처럼 정리할 수 있다. 하지만 계속 내부함수로서 들어가면 안 되는데 이는 콜백지옥으로 이어질 수 있다. 그러므로 1,2 가지만의 내부함수를 설정하는 것이 좋다.
# if 조건식 안에 함수 사용 def isOdd(para): return para % 2 == 1 print(isOdd(5)) print(isOdd(6)) mydict = {x:x*x for x in range(11) if isOdd(x)} print(mydict) <console> True False {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for 문과 if 문을 사용하여 0~9을 반복문을 돌려서 조건문을 통해 dict 타입으로 출력했다.
인자로 짝수를 넣으면 0이되므로 False가 나오고 홀수를 넣으면 값이 나온다.
'Python' 카테고리의 다른 글
Python 문법 기초 15 - random 함수 (0) 2022.10.22 function(함수) 예제 (0) 2022.10.22 Python 문법 기초 13 - function(함수) 내장함수 (0) 2022.10.22 Python 문법 기초 12 - function(함수) 특징 (0) 2022.10.22 for 문 예제 (0) 2022.10.22