2012-06-11 2 views
1

안녕하세요 저는 파이썬을 배우는 초보자입니다. 책에서이 예제를 우연히 발견했습니다. 동일한 코드를 직접 시도 할 때 동일한 결과를 얻지 못했습니다. 도와주세요 ...파이썬 함수 문제

def tester(start): 
    state = start 
    def nested(label): 
     nonlocal state 
     print(label, state) 
     state += 1 
    return nested 

>>> F = tester(0) 
>>> F('spam') 
spam 0 
>>> F('ham') 
ham 1 
>>> F('eggs') 
eggs 2 

기능을 실행할 때마다 내 결과가 +1 증가하지 않습니다. 책에 문제가 있습니까?

+2

출력은 얼마나됩니까? – Eric

+1

Python 2.x에서 실행하고 있지 않습니까? – Keith

+0

@Keith Python 2.x에서는 전혀 작동하지 않습니다 ('nonlocal state'에서 오류가 발생합니다). 어쨌든 나는 그것을 터미널에서 시험해 보았다. 그것은 나에게 잘 작동한다. –

답변

1

Works for me. 파이썬 3을 사용하고 있습니까? nonlocal은 python 3 기능이며 이 아니며은 python 2.x에서 작동합니다.

+0

파이썬 3을 사용하고 있는지 어떻게 알 수 있습니까? 난 그냥 '파이썬'입력하여 터미널에서 대화 형으로 파이썬을 실행합니까? 또는 파이썬 3에서 다르게 실행해야합니까? 나는 파이썬 3.2를 설치했다. – thechrishaddad

+0

@ user1265535 : 파이썬 터미널을 열면 첫 번째 줄에 예를 들어 나열된 버전이 있습니다. '파이썬 2.7.3 (기본, 2012 년 4 월 10 일 23시 31 분 26 초) [MSC v.1500 32 비트 (인텔)] win32에 –

+0

그래, 이제는 이상한 터미널에서 작동 내 나쁜 감사합니다 :) – thechrishaddad

0

https://stackoverflow.com/a/1261961/778858은이를 요약합니다. 기본적으로 파이썬은 2에서 ~ 3.0> =로 바뀌었고 결국 이런 문제가 생깁니다. 책의 시작 부분에 표시된 내용과 사용중인 버전을 비교하여 자신의 버전과 비교하십시오.