在R中,有一个missing()
函数要测试,引用:"是否将值指定为函数的参数" :
my_function <- function(argn1){
if(missing(argn1)){
print("argn1 has not been supplied")
} else {
print("argn1 has been supplied")
}
}
然后致电:
my_function("hello")
[1]&#34;已经提供了argn1&#34;
my_function()
[1]&#34; argn1尚未提供&#34;
Python中有这样的东西吗?
答案 0 :(得分:8)
通常没有默认值的参数强制。因此,您可以提供默认对象 missing
,以检查属性是否已明确指定。像:
missing = object()
def foo(arg1 = missing):
if arg1 is missing:
print('Arg1 is missing')
else:
print('Arg1 is not missing')
使用is
超过==
可能至关重要重要性,因为is
会检查引用相等性。
有时会使用None
,例如:
def foo(arg1 = None):
if arg1 is None:
# ...
但请注意,Python在隐式参数(如foo()
)或显式调用None
(如foo(None)
)之间无法区分。
此外,还可以选择使用*args
:
def foo(*args):
# ...
如果你调用foo(None,1)
,那么所有的参数都将被放入一个元组中,该元组被命名为args
(这里args
将是args = (None,1)
)。那么我们就可以检查元组是否包含至少一个元素:
def foo(*args):
if args:
print('At least one element provided')
else:
print('No element provided')
答案 1 :(得分:5)
不,因为Python不支持使用错误数量的参数调用函数。如果定义一个函数来获取一个参数(没有默认值):
def my_func(arg1):
pass
然后只通过my_func()
调用它,Python会引发一个TypeError。
答案 2 :(得分:4)
不,没有missing
功能。
但是,您可以通过使用具有默认值的函数参数来执行相同的操作:
def foo(arg=None):
if arg is None:
print('arg is missing.')
else:
print('arg is present.')
答案 3 :(得分:2)
在python中,你经常会发现这种函数声明:
def my_function(arg1=None):
if arg1:
# Do something
else:
# Do something else
实现您的目标
答案 4 :(得分:2)
没有明显的等价物。但您可以使用默认参数。
def my_function(str=None):
if str is None:
print("argn1 has not been supplied")
else:
print("argn1 has been supplied")