在R中,有一个missing()测试函数,引用:"是否将值指定为函数的参数":
my_function <- function(argn1){
if(missing(argn1)){
print("argn1 has not been supplied")
} else {
print("argn1 has been supplied")
}
}
Run Code Online (Sandbox Code Playgroud)
然后在打电话时:
my_function("hello")
Run Code Online (Sandbox Code Playgroud)
[1]"argn1已被提供"
my_function()
Run Code Online (Sandbox Code Playgroud)
[1]"argn1尚未提供"
Python中有这样的东西吗?
通常没有默认值的参数是强制性的.因此,您可以提供一个默认对象 missing,以检查该属性是否已显式指定.喜欢:
missing = object()
def foo(arg1 = missing):
if arg1 is missing:
print('Arg1 is missing')
else:
print('Arg1 is not missing')
Run Code Online (Sandbox Code Playgroud)
使用isover ==可能至关重要,因为is检查引用相等.
有时使用None,如:
def foo(arg1 = None):
if arg1 is None:
# ...
Run Code Online (Sandbox Code Playgroud)
但需要注意的是,这里的Python不能让一个隐含参数,像之间的差异foo()或显式调用None,喜欢foo(None).
此外,还可以选择使用*args:
def foo(*args):
# ...
Run Code Online (Sandbox Code Playgroud)
如果你调用foo(None,1)那么所有的参数将被放入一个元组中,一个元组被命名args(这里args将是args = (None,1)).那么我们可以检查元组是否包含至少一个元素:
def foo(*args):
if args:
print('At least one element provided')
else:
print('No element provided')
Run Code Online (Sandbox Code Playgroud)
不,因为Python不支持使用错误数量的参数调用函数.如果定义一个函数来获取一个参数(没有默认值):
def my_func(arg1):
pass
Run Code Online (Sandbox Code Playgroud)
然后通过它调用它my_func(),Python会引发一个TypeError.
不,没有missing功能。
但是,您可以通过使用带有默认值的函数参数来做同样的事情:
def foo(arg=None):
if arg is None:
print('arg is missing.')
else:
print('arg is present.')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1954 次 |
| 最近记录: |