64 lines
875 B
Python
64 lines
875 B
Python
"""
|
|
>>> f1(3)
|
|
>>> b = 8
|
|
>>> f1(3)
|
|
a = 3
|
|
b = 8
|
|
>>> f2(3)
|
|
Traceback (most recent call last):
|
|
...
|
|
UnboundLocalError: local variable 'b' referenced before assignment
|
|
>>> f3(3)
|
|
a = 3
|
|
b = 7
|
|
b = 6
|
|
>>> b = -5
|
|
>>> ff = f4()
|
|
>>> ff(3)
|
|
a = 3
|
|
b = 11
|
|
b = 6
|
|
>>> print('b =', b)
|
|
b = -5
|
|
"""
|
|
|
|
def f1(a):
|
|
print('a =', a)
|
|
print('b =', b)
|
|
|
|
def f2(a):
|
|
print('a =', a)
|
|
print('b =', b)
|
|
b = a * 10
|
|
print('b =', b)
|
|
|
|
def f3(a):
|
|
global b
|
|
print('a =', a)
|
|
print('b =', b)
|
|
b = a * 10
|
|
print('b =', b)
|
|
|
|
def f3b(a):
|
|
nonlocal b
|
|
print('a =', a)
|
|
print('b =', b)
|
|
b = a * 10
|
|
print('b =', b)
|
|
|
|
def f4():
|
|
b = 11
|
|
def f5(a):
|
|
nonlocal b
|
|
print('a =', a)
|
|
print('b =', b)
|
|
b = a * 2
|
|
print('b =', b)
|
|
return f5
|
|
|
|
import doctest
|
|
doctest.testmod(optionflags=doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE)
|
|
|
|
|
|
|