본문 바로가기

프로그래밍언어/Python

파이썬 - 함수.스코핑 룰


파이썬(python) 함수- 여러 개의 문장을 하나로 묶어 주는 역할

파이썬(python) 함수는 프로그램 실행 중 한 번 혹은 여러번 호출 될 수 있으며 매개변수를 이용해 다른 값으로 호출할 수 있다.
함수 내부에서 다른 함수를 호출할 수도 있다.

함수가 종료되면 함수를 호출한 곳으로 결과값을 전달하고, 함수를 호출한 다음 문장을 수행한다.

  • 함수의 정의
    - 함수 선언은 def로 시작해서 콜론(:)로 끝내고, 함수의 시작과 끝은 코드의 들여쓰리고 구분합니다.
    - 시작과 끝을 명시해 주지 않는다.
    - 함수 선언을 헤더 파일에 미리 선언하거나 인터페이스/구현같은 부분으로 나누지 않고 함수가 필요한 때 바로 선언하고 사용할 수 있다.
    def <함수명>(인수1, 인수2, ...인수N): //함수객체를 만들겠다는 키워드,
    (:)을 사용해서 함수 선언을 마침

    <구문>
    // 함수가 하는 일에 대한 구문들을 적는 부분, 반드시 들여쓰기를 해야함

    return<반환값> // 함수를 종료시키고 값을 전달하는데 사용함.

    >>> def times(a,b):
    ... return a*b
    ...
    >>> times
    <function times at 0x03E49858> // 메모리 공간 어딘가에 함수 객체가 생성됨.
    >>> times(10,10)
    100
  • return
    - 함수를 종료시키고, 해당 함수를 호출한 곳으로 되돌아가게 한다.
    - 오직한개의 값을 리턴 할 수 있다.

    -여러 값을 튜플로 묶어서 처리할 수도 있다.
    >>> def swap(x,y):
    ... return y,x
    ...
    >>> swap(1,2)
    (2, 1)
    >>> a, b = swap(1,2)
    >>> a
    2
    >>> b
    1
    >>> x = swap(1,2)
    >>> type(x)
    <class 'tuple'>

  • 인수 전달
    - 인수는 레퍼런스를 이용해 전달하다.
    (함수의 인수는 호출자 내부갯체의 래퍼런스이다)
  • 스코핑 룰
    - 변수를 사용하려면 꼭 알아야 할 법칙.
    - LGB 규칙 : 이름을 검색하는 규칙이 있다.
    지역, 전역,내장 인 순서로 이름을 검색함.
    (지역영역 - 함수 내부의 공간, 전역영역 - 함수 밖의 영역, 내장영역 -파이썬 자체에 정의한 내용 )
    >>> x=1
    >>> def func(a):
    ... return a+x
    >>> func(1)
    2
    >>> def func2(a):
    ... x=2
    ... return a+x
    >>> func2(1)
    3


  • 함수 인수

- 특별한 인수 모드를 제공한다.
기본 인수 값, 키워드 인수, 가변 인수 리스트, 정의되지 않은 키워드 인수 처리가 있다.

1. 기본 인수 값
- 함수를 호출할 때 인수를 지정해 주지 않아도 기본 값을 할당 되도록 하는 방법

2. 키워드 인수
-인수 이름으로 값을 전달하는 방식

>>> def connectURL(server, port):
... str = "http://" + server + ":" + port
... return str
...
>>> connectURL("test.com","8080")
'http://test.com:8080'
>>> connectURL(port="8080", server="test.com")
'http://test.com:8080'
>>>

  • Lambda 함수

- 한 줄을 실행한 결과 값이 바로 기턴 값이 됩니다.
- 이름 없고, 함수 객체만 존재하는 익명함수를 만들수 있다.
- 필요한 곳 어디에서나 쓰일 수 있는 함수 이고 return 구문을 적을 수가 없다.

>>> g= lambda x,y: x*y
>>> g(2,3)
6
>>> (lambda x: x*x)(3)
9


  • 재귀적 함수 호출

    -함수 내부에서 자기 자신을 호출하는 것

  • pass

-pass 구문은 함수 및 클래스의 메서드에서 아무런 동장도 수행하지 않는다.

※아무것도 하지 않는 함수, 모듈, 클래스를 만들어야 할 경우 쓰인다.
즉 while true만 있는 경우나 class temp만 있는 경우 구문에 에러가 발생하기 때문에 사용

출처 : http://ygang.tistory.com/12