Movatterモバイル変換
[0]ホーム
Nested Scopes in Idle/PythonWin
Tim Peterstim.one at home.com
Sun Apr 22 16:19:27 EDT 2001
[Greg Chapman]> No, I'm talking about the interactive interpreter:>> Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit (Intel)] on win32> Type "copyright", "credits" or "license" for more information.> IDLE 0.8 -- press F1 for help> >>> def make_adder(x):> return lambda y: x+y> SyntaxError: local name 'x' in 'make_adder' shadows use of 'x' as> global in nested scope 'lambda' (<pyshell#1>, line 1)[Jeremy Hylton]> You didn't tell the interpreter that you wanted to use nested scopes.>> >>> from __future__ import nested_scopes> >>> def make_adder(x):> ...return lambda y: x + y> ...> >>>Greg is using IDLE, not a cmdline Python, and it doesn't work in IDLE. Thishas been listed as an unresolved issue in PEP 236 all along:Unresolved Problem: Simulated Interactive Shells Interactive shells "built by hand" (by tools such as IDLE and Emacs Python-mode) should behave like native interactive shells (see above). However, the machinery used internally by native interactive shells has not been exposed, and there isn't a clear way for tools building their own interactive shells to achieve the desired behavior.That's still the case (else I would have updated the PEP to say somethingelse there <wink>).
More information about the Python-listmailing list
[8]ページ先頭