Python 기초 - 6.지역변수, 전역변수, 파라미터

1 분 소요

지역변수 & 전역변수

  • 지역변수:
    • 함수 안에서 선언
    • 함수 안에서만 사용가능
    • 함수 밖으로 나오면 없는 변수
  • 전역변수:
    • 함수 밖에서 선언
    • 모든 함수가 다 사용가능. 단, 전역변수가 그 함수 정의문 위에 선언되어야 보임.
    • 함수 안과 밖에서 모두 사용가능
  • 전역변수와 지역변수가 저장되는 메모리 스택이 서로 다르다. 함수 안에서 지정된 변수는 그 밖에서 불러올 수 없다.
  • 실무에서는 전역변수를 사용할 경우 어디에서 어떻게 바뀔지 알기 어려워지기 때문에 전역변수 사용이 편할 수는 있으나 권장하지 않는다.

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.

  • 재귀함수:

    • 자신을 호출하는 함수

    • 반복동작을 짧게 구현할 수 있는 장점이 있지만 스택 사용량이 확 늘어나서 스택 오버플로우 문제 발생가능

      ⇒ 대부분 재귀는 루프로 대체 가능하기 때문에 루프로 대체하는 것이 좋다. (그래도 재귀함수에 대해서 알고는 있어야 한다!)

  • 함수객체:

    • 함수를 변수에 담음
      1. 핸들러로 활용: 함수를 다이렉트로 호출하지 않고 이벤트 핸들러로 등록해서 사용하고자 할 때 사용할 수 있다.
      2. 룩업테이블(리스트): 함수를 리스트에 담고 제어문 대신 인덱스를 활용해서 함수를 호출하면 성능향상을 볼 수 있음

댓글남기기