繁体   English   中英

Python中是否存在“缺失”功能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM