Python中的“无”

2024-04-26 02:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个非常简单的函数(我还是个新手)。你知道吗

就像这样:

def add_num(x,y,z=None):
    if z == None:
        return x+y
    else:
        return x+y+z

print(add_num(1,2))
print(add_num(1,2,3))

所以我的问题是,当我注意到,如果没有第三个变量,那么它是被接受的。所以“None”基本上是指如果“variable=None”,没有值附加到变量是可以的。只是确认一下!谢谢!你知道吗


Tags: 函数noneaddreturnifdefvariableelse
3条回答

So does "None" mean basically mean that it is ok to have no value attached to a variable if "variable=None." Just confirming! Thanks!

不,当你定义这样一个函数时:

def add_num(x,y,z=None):

xy是“位置”参数,它们是必需的,而z关键字参数。关键字参数具有默认值,如果在调用函数时未提供默认值,则将使用这些默认值。而不是没有,你可以很容易地写:

def add_num(x,y,z=0):

或:

def add_num(x,y,z=5):

在这两种情况下,如果函数调用中没有提供z的默认值,那么您就是在为它设置默认值。你知道吗

请注意,如果有多个关键字参数,如下所示:

def do_something(x, y, size='medium', name=None):

您可以为它们提供值作为位置参数,在这种情况下,参数的顺序必须匹配:

do_something(1,2, 'large', 'alice')

但您也可以通过在函数调用中提供关键字参数的名称,按任意顺序指定关键字参数,如下所示:

do_something(1, 2, name='alice', size='large)

如果您对默认值满意,则不需要提供值:

do_something(1, 2, name='alice')

试试这个:

def add_num(x,y,z='spatula'):
    if z == 'spatula':
        return x+y
    else:
        return x+y+z

print(add_num(1,2))
print(add_num(1,2,3))

None在这里很常见,但它不是默认参数的固有属性。你知道吗

我应该看看python教程。尤其是Default Argument Values

本章介绍如何使用默认参数定义函数。你知道吗

下一个是关于关键字参数的:也可以使用形式为kwarg=value的关键字参数来调用函数。你知道吗

有两种论点:

关键字参数:在函数调用中以标识符(如name=)开头的参数,或在字典中以值的形式传递,前面加**。例如,在以下对complex()的调用中,3和5都是关键字参数:

complex(real=3, imag=5)
complex(**{'real': 3, 'imag': 5})

位置参数:不是关键字参数的参数。位置参数可以出现在参数列表的开头和/或作为前面带有*的iterable的元素传递。例如,3和5都是以下调用中的位置参数:

complex(3, 5)
complex(*(3, 5))

参数被分配给函数体中的命名局部变量。你知道吗

相关问题 更多 >