Python中的“无”

问题描述 投票:0回答:3

所以,我有这个非常简单的功能(我还是新手)。

它就像:

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))

所以我的问题是,当我注意到如果没有第三个变量,那么它就被接受了。那么“无”意味着基本上意味着如果“变量=无”,没有附加到变量的值是可以的。刚确认!谢谢!

python function
3个回答
5
投票

那么“无”意味着基本上意味着如果“变量=无”,没有附加到变量的值是可以的。刚确认!谢谢!

不。当您定义这样的函数时:

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')

1
投票

试试这个:

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在这里很常用,但它不是默认参数的固有内容。


1
投票

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

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

接下来是关键字参数:也可以使用kwarg = value形式的关键字参数调用函数。

有两种说法:

keyword参数:一个参数,在函数调用中以标识符(例如name =)开头,或者作为前面带有**的字典中的值传递。例如,3和5都是以下对complex()的调用中的关键字参数:

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

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

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

参数分配给函数体中的命名局部变量。

© www.soinside.com 2019 - 2024. All rights reserved.