会被当成常量,不会随着同名标识符内容改变而改变。
'''我定义参数的时候用已经存在的变量去作为默认参数的默认值
'''
a = '全局变量a'
def f(arg1 = a):
print(a)
f()
a= '全局变量a已被修改(1)'
f()
a=a+'已被修改(2)'
f()
def fJY():
print('# 此时进入函数内部,再次调用<f>的输出:')
a = '局域变量a'
f()
a = '局域变量a已修改(1)'
f()
a = a+'已修改(2)'
f()
fJY()
# 重定义了<f>
print('# 重定义了<f>,变成了内部函数,arg1的默认值变成了一个局域变量')
def fJY():
a = '局域变量a'
def f(arg1 = a):
print(a)
f()
a = '局域变量a已修改(1)'
f()
a = a + '已修改(2)'
f()
print('# 此时<del a>')
del a
f()
fJY()
最终输出是:
全局变量a
全局变量a
全局变量a
# 此时进入函数内部,再次调用<f>的输出:
全局变量a
全局变量a
全局变量a
# 重定义了<f>,变成了内部函数,arg1的默认值变成了一个局域变量
局域变量a
局域变量a
局域变量a
# 此时<del a>
局域变量a