You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python函数未识别String变量更新?默认参数问题问询

Python函数默认参数为何不随变量更新?

你的代码及输出如下:

my_string = "hello"
def I_dont_understant (my_string_in_fonction=my_string):
    print((my_string_in_fonction))
my_string= "bye"
I_dont_understant()
I_dont_understant(my_string)

输出:

hello
bye

核心原因

Python里函数的默认参数是在函数定义的那一刻就计算并绑定值的,不是每次调用函数时才去读取变量的当前值。

当你定义I_dont_understant函数时,全局变量my_string的值是"hello",所以默认参数my_string_in_fonction就被固定成了"hello"。之后你把my_string改成"bye",已经绑定好的默认参数不会跟着变,所以无参调用时还是输出"hello"。而显式传参时,函数直接用你传入的当前变量值"bye",自然输出"bye"。

想要动态获取变量值的处理方式

如果希望默认参数能跟着变量的最新值走,可以把默认参数设为None,在函数内部做判断:

my_string = "hello"
def I_dont_understant(my_string_in_fonction=None):
    if my_string_in_fonction is None:
        # 每次调用时才读取my_string的当前值
        my_string_in_fonction = my_string
    print(my_string_in_fonction)

my_string = "bye"
I_dont_understant()  # 输出bye
I_dont_understant(my_string)  # 输出bye

内容的提问来源于stack exchange,提问作者fatsifat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:26:02