티스토리 뷰

카테고리 없음

함수(Function)

nickas 2019. 7. 3. 15:00
문/표현식 예제
호출 표현식 myfunc('spam', meat = ham)
def

def printer(message):

    print('hello' + message)

return

def adder(a, b = 1, *c):

    return a + b + c[0]

global

x = 'old'

def changer():

    global x; x = 'new

nonlocal(3.x)

def outer():

    x = 'old'

    def changer():

        nonlocal x; x = 'new'

yield

def squares(x):

    for i in range(x):

        yield i ** 2

lambda funcs = [lambda x: x**2, lambda x: x**3]
  • def는 실행 가능한 코드
  • def는 객체를 생성하고 이름에 그 객체를 할당
    함수 이름은 객체의 참조
  • lambda는 객체를 생성하지만 이를 결과로 반환
  • return은 결과 객체를 호출자에게 되돌려 준다
  • yield는 결과 객체를 호출자에게 돌려주지만, 함수가 어디에서 중단되었는지를 기억
  • global은 모듈 단위의 변수를 선언할 때 사용
  • nonlocal은 할당될 외함 변수를 선언
  • 인수는 할당(객체 참조)에 의해 전달된다. 파이썬에서 인수는 할당에 의해 함수에 전달된다.
  • 인수들은 따로 정의하지 않는 한 위치에 따라 전달된다.
  • 인수, 반환값, 변수는 선언되지 않는다.
def name(arg1, arg2, argN):
    statements

def는 런타임에 실행됨

if test:
    def func():
        statements
else:
    def func():
        statements
func()

othername = func # 함수 객체 할당

othername() 다시 함수를 호출

def func():

    statements

func()

func.attr = value  # 속성 추가

다형성
한 동작(operation)의 의미가 그 동작이 수행되는 객체에 따라 달라지는 것을 의미

파이썬에서 작성하는 코드는 특정 데이터 타입을 가정하지 않아야 한다. 대체롤 우리는 파이썬에서 객체 인터페이스를 코딩하지 데이터 타입을 코딩하진 않는다.

덕 타이핑(duck typing)
기본 개념은 '당신의 코드는 객체가 꽥꽥하고 우는 한, 그 객체가 오리인지 아닌지에 대해서는 상관하지 않는다'는 것.
꽥꽥 우는 것이 가능하다면 그것이 오리든, 아니든 동작 가능하고 꽥괙의 구현은 객체에 다라 달라진다.

함수는 return문 없이 제어 흐름이 함수 본문 끝에 도달하게 되면 자동적으로 None 객체를 반환.

최근에 올라온 글
글 보관함