Python: 显式使用默认参数
Python: explicitly use default arguments
在正常情况下,通过省略这些参数来调用带有默认参数的函数。但是,如果我正在即时生成参数,省略一个参数并不总是那么容易或优雅。有没有办法显式使用函数的默认参数?也就是说,传递一个指向默认参数的参数。
所以类似这样的东西,除了 ~use default~
被一些智能的东西所取代。
def function(arg='default'):
print(arg)
arg_list= ['not_default', ~use default~ ]
for arg in arg_list:
function(arg=arg)
# output:
# not_default
# default
我不知道这是否可能,考虑到术语 "default argument" 我所有的搜索都是编码员第一教程。如果不支持这个功能也没关系,我只是想知道。
没有通用的方法来省略参数;您可以通过显式传递适当的默认值来专注于特定函数,否则,您唯一的选择就是不传递参数。
最接近的方法是用省略相关参数的 tuple
s 或 dict
s 替换您的个人值,然后在调用时解压缩它们。因此,对于您的示例,您将 arglist
的定义更改为:
arg_list = [{'arg': 'not_default'}, {}]
然后像这样使用它:
for arg in arg_list:
function(**arg)
一个稍微丑陋的方法是当你不想传递参数时使用一个哨兵,在你的 arg_list
中使用它并测试它,例如:
USEDEFAULT = object()
arg_list = ['not_default', USEDEFAULT]
for arg in arg_list:
if arg is USEDEFAULT:
function()
else:
function(arg=arg)
显然不太干净,但可能更适合特定用例。
遗憾的是Python中没有这样的功能。有 hackarounds,但它们不是很讨人喜欢。
简单而流行的模式是将默认值移动到函数体中:
def function(arg=None):
if arg is None:
arg = 'default'
...
现在您可以省略参数或显式传递 arg=None
以采用默认值。
在正常情况下,通过省略这些参数来调用带有默认参数的函数。但是,如果我正在即时生成参数,省略一个参数并不总是那么容易或优雅。有没有办法显式使用函数的默认参数?也就是说,传递一个指向默认参数的参数。
所以类似这样的东西,除了 ~use default~
被一些智能的东西所取代。
def function(arg='default'):
print(arg)
arg_list= ['not_default', ~use default~ ]
for arg in arg_list:
function(arg=arg)
# output:
# not_default
# default
我不知道这是否可能,考虑到术语 "default argument" 我所有的搜索都是编码员第一教程。如果不支持这个功能也没关系,我只是想知道。
没有通用的方法来省略参数;您可以通过显式传递适当的默认值来专注于特定函数,否则,您唯一的选择就是不传递参数。
最接近的方法是用省略相关参数的 tuple
s 或 dict
s 替换您的个人值,然后在调用时解压缩它们。因此,对于您的示例,您将 arglist
的定义更改为:
arg_list = [{'arg': 'not_default'}, {}]
然后像这样使用它:
for arg in arg_list:
function(**arg)
一个稍微丑陋的方法是当你不想传递参数时使用一个哨兵,在你的 arg_list
中使用它并测试它,例如:
USEDEFAULT = object()
arg_list = ['not_default', USEDEFAULT]
for arg in arg_list:
if arg is USEDEFAULT:
function()
else:
function(arg=arg)
显然不太干净,但可能更适合特定用例。
遗憾的是Python中没有这样的功能。有 hackarounds,但它们不是很讨人喜欢。
简单而流行的模式是将默认值移动到函数体中:
def function(arg=None):
if arg is None:
arg = 'default'
...
现在您可以省略参数或显式传递 arg=None
以采用默认值。