4.Function.
#Function declaration.
def로 시작해 콜론[:]으로 끝낸다.
Cf(파이썬에서는 함수도 객체로 취급).
함수의 시작,끝은 Begin,End와 같은 문법 X.
globals() ==> 파이썬 내장 함수로, 생성된 함수 객체들을 볼 수 O.
Ex)
return num1 + num2 ==> 두 개의 인자를 받아 합을 구하는 함수 생성.
f_Plus(10,20) ==> 함수 실행.
globals() ==> globals 내장 함수를 사용하면 생성된 함수들이 출력.
#return.
리턴 형은 어떠한 객체든 돌려줄 수 있고, 여러 개의 값을 튜플 단위로 묶어서 보내기 가능.
Ex)
def f_SetValue(val): x = val ==> 리턴 형이 없는 경우 None을 반환.
def f_RcvTuple(): return 10,20 ==> 튜플로 리턴해준다.
#Passing arguments.
함수 내부에서 전달하는 변수에는 변경 가능한 변수와 불가능한 변수 O.
변경 가능한 변수는 리스트, 변경 불가능한 변수는 정수형.
Ex)
val = 10 => val 값을 바꾼다.
f_ChangeNum(val) => 함수 호출.
val => 전역 변수 val 값은 변함 X.
lst[0] = 'A' => 리스트의 0번째 인덱스의 Value를 바꾼다.
lst => 함수 호출 후 리스트 value는 바꾼다.
lst = lst[:] => 입력받은 인자를 모두 복사.
f_ChangeList(lst) => 새롭게 재정의된 함수 호출.
마지막 lst => 함수 실행했을 때 리턴에만 영향이 있을 뿐 실제 lst에는 영향 X.
#Function argument.
파이썬에는 기본적으로 제공하는 인자 모드.
기본 인자값 설정 => 키워드 인자 => 가변 인자 => 정의되지 않는 키워드 인자.
Ex) 기본 인자값 설정 => 함수를 호출할 때 기본적으로 들어가는 인자.
def myFunc => 기본값 설정.
myFunc() => 인자값을 넣지 않으면 기본값으로 설정된 값을 사용.
myFunc(50) => 매개변수는 2개지만, 하나만 추가를 한다면 가장 처음 설정된 값만 변경.
Cf) 주의할 것은 기본값을 사용하는 인자 뒤에 기본값이 없는 인자가 올 수 X.
SyntaxError => num1 변수에 기본 인자를 설정 했다면, num2에도 기본 인자를 넣어야 한다.
Ex) 키워드 인자 => 파이썬은 키워드를 지정하여 순서 없이 호출 가능.
다른 언어는 반드시 매개변수의 전달 순서 맞춰야 한다.
Ex) 가변 인자 리스트 => 함수 호출할 때 인자의 개수가 정해지지 않은 가변적인 인자를 받을 수 O.
def f_Valiable(*args): => 가변인자 리스트는 튜플 형태로 처리.
Ex) 정의되지 않은 키워드 인자 => 인자를 사전 형식으로 전달 O.
def f_GoURL(server, port, **querystring): **를 붙으면 사전 형식으로 전달받음.
#Scoping rule.
namespace => 이름 공간[프로그램에서 쓰이는 이름이 저장되는 공간]
지역 변수, 전역 변수.
파이썬에서는 변수 이름을 검색하는 규칙이 있는데, 지역 변수 > 전역 변수 > 내장 영역 <= 이 순서대로 검색.
"LGB 규칙"으로 정의.
Ex)
def f_LGBtest(num): => 함수 내에 변수 number가 없으므로 전역에서 이름을 찾아 사용.
def f_LGBtest2(num): number = 2 => 함수 내 지역 영역에 number라는 이름이 등록.
Ex) 함수 내 지역 영역에서 전역 변수를 사용하려면 global 사용.
global number => 전역 영역의 number 값을 가지고 온다.
number = 5 => 전역 영역의 number 값 change.
number => 변수 값이 바뀐다.
'#Programming Language > Python' 카테고리의 다른 글
6.Numerical calculation. (0) | 2018.05.08 |
---|---|
5.Function part2. (0) | 2018.05.08 |
3.List,set,tuple,dictionary. (0) | 2018.05.08 |
2.output,character,operators. (0) | 2018.05.08 |
1.Introduction. (0) | 2018.05.08 |