Python 기초 - 6.지역변수, 전역변수, 파라미터
지역변수 & 전역변수
- 지역변수:
- 함수 안에서 선언
- 함수 안에서만 사용가능
- 함수 밖으로 나오면 없는 변수
- 전역변수:
- 함수 밖에서 선언
- 모든 함수가 다 사용가능. 단, 전역변수가 그 함수 정의문 위에 선언되어야 보임.
- 함수 안과 밖에서 모두 사용가능
- 전역변수와 지역변수가 저장되는 메모리 스택이 서로 다르다. 함수 안에서 지정된 변수는 그 밖에서 불러올 수 없다.
- 실무에서는 전역변수를 사용할 경우 어디에서 어떻게 바뀔지 알기 어려워지기 때문에 전역변수 사용이 편할 수는 있으나 권장하지 않는다.
Parameter와 Arguement
-
parameter(=매개변수), argument(=인자)
-
함수에 파라미터가 정의되어 있는 경우 반드시 함수에 정의된 순서대로 인자값을 입력을 해야한다.
def f1(name, tel, age): print('name:', name) print('tel:', tel) print('10년 후 age:', age+10) def main(): n = 'aaa' t = '1234' a = 12 f1(n, t, a) #f1(a, n, t) ---> 순서대로 안할시 에러 main()
-
키워드인자 (keyword argument)
키워드 인자는 함수를 호출할 때 인자의 값 뿐만 아니라 그 이름까지 명시적으로 지정해서 전달하는 방법이다.
def f1(name, tel, age=5): #age=5: 아규먼트 기본값 print('name:', name) print('tel:', tel) print('10년 후 age:', age+10) def main(): n = 'aaa' t = '1234' a = 12 #키워드 인자 f1(tel=t, age=a, name=n) f1(n, t) main()
-
가변인자
값이 여러개로 바뀌는 인자. 인자값을 튜플로 가져와서 사용한다.
def f1(*x): #가변인자. 튜플로 받아온다 print('함수시작') for i in x: print(i) print('함수끝') def add(*nums): s = 0 for i in nums: s+=i return s def main(): f1() f1('aaa', 'bbb') f1('ccc', 'ddd', 'eee', 'fff') s = add(1,2,3) print('add(1,2,3):', s) s = add(1, 2, 3, 4, 5) print('add(1,2,3, 4, 5):', s) main()
Etc.
-
재귀함수:
-
자신을 호출하는 함수
-
반복동작을 짧게 구현할 수 있는 장점이 있지만 스택 사용량이 확 늘어나서 스택 오버플로우 문제 발생가능
⇒ 대부분 재귀는 루프로 대체 가능하기 때문에 루프로 대체하는 것이 좋다. (그래도 재귀함수에 대해서 알고는 있어야 한다!)
-
-
함수객체:
- 함수를 변수에 담음
- 핸들러로 활용: 함수를 다이렉트로 호출하지 않고 이벤트 핸들러로 등록해서 사용하고자 할 때 사용할 수 있다.
- 룩업테이블(리스트): 함수를 리스트에 담고 제어문 대신 인덱스를 활용해서 함수를 호출하면 성능향상을 볼 수 있음
- 함수를 변수에 담음
댓글남기기