带可选参数的Python函数

带可选参数的Python函数,python,python-3.x,Python,Python 3.x,我正在尝试编写一个函数multiples(n,upperLimit),它返回一个列表,其中给定数字的倍数n小于或等于upperLimit。我要做的是,如果用户未指定任何其他值,则将upperLimit设为一个可选参数,默认值为10n。我该怎么做?当我写倍数(n,上限=10*n)时,我得到一个未定义n的错误。我正在运行SageMath 9.1,我相信它是基于Python3.x的。提前感谢:)默认值是在定义函数时计算的,而不是在调用函数时计算的。因此,它们不能引用其他参数,因为在调用函数之前,这些参

我正在尝试编写一个函数
multiples(n,upperLimit)
,它返回一个列表,其中给定数字的倍数
n
小于或等于
upperLimit
。我要做的是,如果用户未指定任何其他值,则将
upperLimit
设为一个可选参数,默认值为
10n
。我该怎么做?当我写
倍数(n,上限=10*n)
时,我得到一个未定义
n
的错误。我正在运行SageMath 9.1,我相信它是基于Python3.x的。提前感谢:)

默认值是在定义函数时计算的,而不是在调用函数时计算的。因此,它们不能引用其他参数,因为在调用函数之前,这些参数没有值

使用
None
作为默认值,然后在函数中对此进行检查

def multiples(n, upperLimit = None):
    if upperLimit is None:
        upperLimit = 10 * n
    # rest of code

到目前为止你试过什么?@RussJ我试过写
upperLimit=10*n
,但没用。通常是这样做的吗?不能在参数定义中引用其他参数。您只能在函数内部执行此操作。将
upperLimit
的默认值设置为
None
,然后检查函数
是否为None
,如果是,则改为
10*n