[英]Is there a “missing” function in Python?
在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]“argn1已被提供”
my_function()
[1]“argn1尚未提供”
Python中有这样的东西吗?
通常没有默认值的参数是强制性的 。 因此,您可以提供 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)
如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')
不,因为Python不支持使用错误数量的参数调用函数。 如果定义一个函数来获取一个参数(没有默认值):
def my_func(arg1):
pass
然后通过my_func()
调用它,Python会引发一个TypeError。
不,没有missing
功能。
但是,您可以通过使用具有默认值的函数参数来执行相同的操作:
def foo(arg=None):
if arg is None:
print('arg is missing.')
else:
print('arg is present.')
在python中,您经常会发现这种函数声明:
def my_function(arg1=None):
if arg1:
# Do something
else:
# Do something else
实现你想要的
没有明显的等价物。 但您可以使用默认参数 。
def my_function(str=None):
if str is None:
print("argn1 has not been supplied")
else:
print("argn1 has been supplied")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.