python-3.x 如何避免从另一个函数调用的函数重复默认参数值?

nqwrtyyt  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(138)

考虑一些接受默认值的函数:

def print_number(number=42):
    print(number)

现在,您可能碰巧希望从另一个函数中使用此参数,但参数仍然由用户提供:

def print_number_twice(number=42):
    print_number(number)
    print_number(number)

在这里你碰巧重复了默认值,这对以后的重构来说是很烦人的。有人可能只在一个地方改变了默认值,阅读到奇怪的行为。
我试过这个:

def print_number_twice(number=None):

但是在Python中,None仍然是一个有效的参数,所以它将打印"None"。有没有一种方便的方法可以使用嵌套函数的默认参数而不重复它?我仍然希望允许print_number_twice的调用者省略参数。

2w2cym1i

2w2cym1i1#

您可以检查None,如下所示:

def print_number_twice(number=None):
    if number is None:
        print_number()
        print_number()
    else:
        print_number(number)
        print_number(number)

然而,我个人认为最好只定义两个函数的默认参数。如果你担心改变一个默认值而忘记改变另一个会发生什么,也许可以使用一个全局常量,类似于:

DEFAULT_NUM = 42

def print_number(number=DEFAULT_NUM):
    print(number)

def print_number_twice(number=DEFAULT_NUM):
    print_number(number)
    print_number(number)

相关问题