[2011 04 30]python-3장

14
3 장 장장 Python 3 장장장장장 2011. 04. 30 장장장

Upload: jong-pil-won

Post on 30-Jan-2015

1.211 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: [2011 04 30]python-3장

3 장 함수Python 3 프로그래밍

2011. 04. 30원종필

Page 2: [2011 04 30]python-3장

함수 선언

• def 키워드로 시작해서 : 로 끝낸다• 함수시작과 끝은 들여 쓰기로 구분한다

def 함수명 ( 인수 1, 인수2…):

함수 구문return 반환값

• 함수 선언 예

Page 3: [2011 04 30]python-3장

def 키워드

• 함수객체 (function object) 를 만드는 키워드

• Test 는 생성된 함수 객체의 레퍼런스이다

함수 객체(Function Object)

Test

함수 객체(Function Object)

Test

TestB

Page 4: [2011 04 30]python-3장

return 키워드

• 하나의 객체만 반환할 수 있다 .

2

(1,2)

<type 'int'>

<type 'tuple'>

• 여러 값을 반환할 경우 튜플 (tuple) 로 만들어서 반환된다

Page 5: [2011 04 30]python-3장

인수 전달

• 인수를 레퍼런스로 전달된다• 변경 가능 / 불가능 변수에 따라 함수 내부에서 처리가 다르다

2

['T', 'Y', 'T', 'H', 'O', 'N']

• 변경 불가능 인수일 경우 호출자 내부의 객체를 가리키는 것이 아니라 함수 내부에 새로 생성된 객체를 가리키게 된다

Page 6: [2011 04 30]python-3장

스코핑 규칙

• 지역 (Local) 영역 , 전역 (Global) 영역 , 내장 영역(Built-in)

지역영역전역 영역

내장 영역• 함수 내부 ( 지역 ) 에서 변수를 찾지 못하면 상위영역 ( 전역 )에서 찾고 없으면 내장영역에서 찾는다

• 지역영역에서 전역영역 변수를 사용하려면 global 선언문을 사용한다

TestD() 내부에서 y 를 1 로 바꾸지만지역영역에서 변수를 선언 하는것과동일하게 동작하지만 x 는 global 로전역영역의 값을 참조한다고 했기에전역영역의 x 값을 10 으로 바꿀 수 있다 .

Page 7: [2011 04 30]python-3장

함수 인수 – 기본 인수값

• 인수를 지정하지 않아도 초기값을 사용하게 만들 수 있다

인수에 원하는 값으로 넘길 수 도 있고 ,기본 인자만을 사용해서 함수를호출할 수도 있다 .

기본 인수 값을 사용하는 인수 뒤에 기본 인수 값이 없는 인수가 올 수 없다컴파일 에러가 발생

Page 8: [2011 04 30]python-3장

함수 인수 – 키워드 인수

• 인수 이름으로 값을 전달하는 방식• 인수의 순서를 맞추지 않아도 된다

인수 이름으로 값을 전달하기 때문에인수의 전달 순서와 관계없이 사용가능

키워드 인수는 일반 인수 뒤에 위치해야만 한다키워드 인수 이후 순서에 의한인수 매칭은 할 수 없다

Page 9: [2011 04 30]python-3장

함수 인수 – 가변 인수 리스트

• 인수의 개수가 정해지지 않은 가변인수를 처리할 수 있다• 인수 앞에 * 를 붙이면 된다

가변 인수를 받도록 했기 때문에인수의 개수를 마음껏 넣을 수 있다

가변 인수를 선언하고리스트에 대한 처리를 한다

가변 인수선언 뒤에 일반 인수 선언을 할 수 없다

Page 10: [2011 04 30]python-3장

함수 인수 – 정의되지 않은 인수 처리

• ** 를 사용하여 정의되지 않은 인수를 사전형식으로 처리한다

사전형식에 맞게 key, value 형식으로 넘겨준다결과 : http://test.com:8080/?passwd=1234&id=user&

• 내부적으로 사전형식으로 처리되게 인수는 사전형식에 맞게 넘겨줘야 한다

Page 11: [2011 04 30]python-3장

람다 함수

람다함수를 만들어서 (3,4) 의결과를 반환한 후 바로 사라진다

• 함수는 이름이 없이 객체만 있을 뿐이고 기본 레퍼런스를 이름이라 지칭 한 것인데 람다함수는 이름없는 함수 자체를 사용하는 것이다• lambda 인수 : 구문 형식으로 정의한다

람다함수를 만들지만 g 가 레퍼런스를 가지고 있기 때문에 사용 후 사라지지 않는다

Page 12: [2011 04 30]python-3장

pass 키워드

• 함수 , 클래스 메소드에서 아무런 동작도 수행하지 않는다

특별히 하는 일은 없지만컴파일에러 없이 구문을 완성할 수 있다

다 .. 쓰일 때가 있는 것~

Page 13: [2011 04 30]python-3장

Q / A

Page 14: [2011 04 30]python-3장

END