def xuexiao():
name='laoda'
print(name)
def xueyuan():
name='laoer'
print(name)
def banji():
name='laosan'
print(name)
xuexiao()
输出:laoda
def xuexiao():
name='laoda'
print(name)
def xueyuan():
name='laoer'
print(name)
def banji():
name='laosan'
print(name)
banji()
xueyuan()
xuexiao()
输出:
laoda
laoer
laosan
就像一层一层的调用,每一层都需要加一个调用的,一一对应的,顺序是反过来的,不能总的只调用外面一层
# name='laoji'
# def xuexiao():
# name='laoda'
# def xueyuan():
# global name#它接受的是全局变量
# name='laoer'
# xueyuan()
# print(name)
# xuexiao()
# print(name)
# # 输出:
# # laoda
# # laoer
-------------------------------------------------------------------------------
name='laoji'
def xuexiao():
name='laoda'
def xueyuan():
# name='you'#加这个会报错SyntaxError: name 'name' is assigned to before nonlocal declaration
nonlocal name#它接受的是上一大级变量
name='laoer'
xueyuan()
print(name)
xuexiao()
print(name)
输出:
laoer
laoji
前向引用
注意br()函数的位置:
# def foo():
# print('you')
# br()#NameError: name 'bar' is not defined
# def br():
# print('me')
# foo()
def br():
print('me')
def foo():
print('you')
br()#NameError: name 'bar' is not defined
foo()