Post on 30-Jan-2015
description
3 장 함수Python 3 프로그래밍
2011. 04. 30원종필
함수 선언
• def 키워드로 시작해서 : 로 끝낸다• 함수시작과 끝은 들여 쓰기로 구분한다
def 함수명 ( 인수 1, 인수2…):
함수 구문return 반환값
• 함수 선언 예
def 키워드
• 함수객체 (function object) 를 만드는 키워드
• Test 는 생성된 함수 객체의 레퍼런스이다
함수 객체(Function Object)
Test
함수 객체(Function Object)
Test
TestB
return 키워드
• 하나의 객체만 반환할 수 있다 .
2
(1,2)
<type 'int'>
<type 'tuple'>
• 여러 값을 반환할 경우 튜플 (tuple) 로 만들어서 반환된다
인수 전달
• 인수를 레퍼런스로 전달된다• 변경 가능 / 불가능 변수에 따라 함수 내부에서 처리가 다르다
2
['T', 'Y', 'T', 'H', 'O', 'N']
• 변경 불가능 인수일 경우 호출자 내부의 객체를 가리키는 것이 아니라 함수 내부에 새로 생성된 객체를 가리키게 된다
스코핑 규칙
• 지역 (Local) 영역 , 전역 (Global) 영역 , 내장 영역(Built-in)
지역영역전역 영역
내장 영역• 함수 내부 ( 지역 ) 에서 변수를 찾지 못하면 상위영역 ( 전역 )에서 찾고 없으면 내장영역에서 찾는다
• 지역영역에서 전역영역 변수를 사용하려면 global 선언문을 사용한다
TestD() 내부에서 y 를 1 로 바꾸지만지역영역에서 변수를 선언 하는것과동일하게 동작하지만 x 는 global 로전역영역의 값을 참조한다고 했기에전역영역의 x 값을 10 으로 바꿀 수 있다 .
함수 인수 – 기본 인수값
• 인수를 지정하지 않아도 초기값을 사용하게 만들 수 있다
인수에 원하는 값으로 넘길 수 도 있고 ,기본 인자만을 사용해서 함수를호출할 수도 있다 .
기본 인수 값을 사용하는 인수 뒤에 기본 인수 값이 없는 인수가 올 수 없다컴파일 에러가 발생
함수 인수 – 키워드 인수
• 인수 이름으로 값을 전달하는 방식• 인수의 순서를 맞추지 않아도 된다
인수 이름으로 값을 전달하기 때문에인수의 전달 순서와 관계없이 사용가능
키워드 인수는 일반 인수 뒤에 위치해야만 한다키워드 인수 이후 순서에 의한인수 매칭은 할 수 없다
함수 인수 – 가변 인수 리스트
• 인수의 개수가 정해지지 않은 가변인수를 처리할 수 있다• 인수 앞에 * 를 붙이면 된다
가변 인수를 받도록 했기 때문에인수의 개수를 마음껏 넣을 수 있다
가변 인수를 선언하고리스트에 대한 처리를 한다
가변 인수선언 뒤에 일반 인수 선언을 할 수 없다
함수 인수 – 정의되지 않은 인수 처리
• ** 를 사용하여 정의되지 않은 인수를 사전형식으로 처리한다
사전형식에 맞게 key, value 형식으로 넘겨준다결과 : http://test.com:8080/?passwd=1234&id=user&
• 내부적으로 사전형식으로 처리되게 인수는 사전형식에 맞게 넘겨줘야 한다
람다 함수
람다함수를 만들어서 (3,4) 의결과를 반환한 후 바로 사라진다
• 함수는 이름이 없이 객체만 있을 뿐이고 기본 레퍼런스를 이름이라 지칭 한 것인데 람다함수는 이름없는 함수 자체를 사용하는 것이다• lambda 인수 : 구문 형식으로 정의한다
람다함수를 만들지만 g 가 레퍼런스를 가지고 있기 때문에 사용 후 사라지지 않는다
pass 키워드
• 함수 , 클래스 메소드에서 아무런 동작도 수행하지 않는다
특별히 하는 일은 없지만컴파일에러 없이 구문을 완성할 수 있다
다 .. 쓰일 때가 있는 것~
Q / A
END