[2021年2月18日14:42:54]python定义默认参数的时候将标识符放在默认参数的值的位置会发生什么

这篇博客探讨了Python中函数默认参数的特性,指出默认参数在定义时被计算一次,之后被视为常量,不会随全局变量的变化而更新。示例展示了如何在函数内部和外部修改全局变量,并解释了其对函数调用的影响。此外,还讨论了函数重新定义时默认参数的作用域变化。
摘要由CSDN通过智能技术生成

会被当成常量,不会随着同名标识符内容改变而改变。

'''我定义参数的时候用已经存在的变量去作为默认参数的默认值

'''

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值