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

为何Python方法默认参数每次调用值相同?如何返回新UUID?

Python函数每次返回相同UUID的原因及解决方法

先看你写的代码:

import uuid
def get_sample(sample_value=str(uuid.uuid4())):
    return sample_value

print(get_sample())
2ca4a40c-62c4-4efa-add4-8f13067349d5
print(get_sample())
2ca4a40c-62c4-4efa-add4-8f13067349d5

每次调用get_sample()都会返回同一个UUID,原因和解决方法如下:

原因

Python函数的默认参数是在函数定义阶段就计算并绑定的,而非每次调用时重新计算。你写的sample_value=str(uuid.uuid4())会在def get_sample执行时(也就是函数定义的瞬间)生成一个固定的UUID字符串,之后每次调用函数若不传入自定义的sample_value,都会复用这个预先生成好的值,所以返回结果完全一致。

修改方法

将默认参数设为None,在函数内部判断参数状态,若为None则生成新的UUID,确保每次调用时都会重新计算:

import uuid
def get_sample(sample_value=None):
    if sample_value is None:
        sample_value = str(uuid.uuid4())
    return sample_value

测试后每次调用get_sample()都会得到不同的UUID:

print(get_sample())  # 生成新UUID
print(get_sample())  # 生成另一个新UUID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:24:55