Python中的“无”

Python中的“无”,python,function,Python,Function,所以,我有一个非常简单的函数,我还是个新手 它是这样的: 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,则变量没有附加值是可以的。只是确认一下!谢谢

所以,我有一个非常简单的函数,我还是个新手

它是这样的:

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,则变量没有附加值是可以的。只是确认一下!谢谢

试试这个:

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

尝试以下方法:

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基本上意味着,如果variable=None,则变量没有附加值是可以的。只是确认一下!谢谢

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
x和y是位置参数,它们是必需的,而z是关键字参数。关键字参数具有默认值,如果在调用函数时未提供默认值,则将使用默认值。你可以很容易地写下:

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

在这两种情况下,如果函数调用中未提供z,则为z设置默认值

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
您可以为它们提供值作为位置参数,在这种情况下,参数需要符合匹配顺序:

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
如果您对默认值满意,则无需提供值:

do_something(1, 2, name='alice')
所以,None基本上意味着,如果variable=None,则变量没有附加值是可以的。只是确认一下!谢谢

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
x和y是位置参数,它们是必需的,而z是关键字参数。关键字参数具有默认值,如果在调用函数时未提供默认值,则将使用默认值。你可以很容易地写下:

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

在这两种情况下,如果函数调用中未提供z,则为z设置默认值

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
您可以为它们提供值作为位置参数,在这种情况下,参数需要符合匹配顺序:

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

def add_num(x,y,z=None):
def do_something(x, y, size='medium', name=None):
do_something(1, 2, name='alice', size='large)
如果您对默认值满意,则无需提供值:

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

我应该看看python教程。特别是

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

接下来是关于关键字参数:也可以使用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))

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

我应该看看python教程。特别是

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

接下来是关于关键字参数:也可以使用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))

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

您所说的没有值附加到变量是什么意思?None是None类型的对象。看到有人回答了关于使用is None而不是==None的问题。这是常见的,但不是必须的。只是is将检查对象标识,而equals将在相同标识的情况下为True,但对于对象副本也是如此。但是,由于None是一个单独的对象,所以您不能拥有一个副本,如果为True,它将始终是同一个对象。您的意思是没有值附加到变量上可以吗?None是None类型的对象。看到有人回答了关于使用is None而不是==None的问题。这是常见的,但不是必须的。这只是is将检查对象标识,而equals将在相同i的情况下为True
齿数,但也适用于对象副本。但是因为没有一个是单独的,所以你不能有一个副本,如果是真的,它将始终是同一个对象。你的意思是说他需要看Python tuturial吗?你的意思是说他需要看Python tuturial吗?@user2357112谢谢你的编辑,但是如果你要广泛地编辑它,也许只是发布一个新的答案。或者只是在评论中打我…好吧,评论。默认参数值和关键字参数是完全不同的东西,只是碰巧有非常相似的语法。默认参数值不会阻止按位置提供参数,缺少默认值也不会阻止关键字参数提供参数。关键字必须提供的参数的实际语法看起来完全不同。您还可以在和的语言参考文档中看到,它们从不混淆默认值和关键字参数-=始终在定义中表示默认值,在调用中表示关键字参数。@user2357112感谢您的编辑,但是如果您要广泛地编辑,可能只需发布一个新的答案。或者只是在评论中打我…好吧,评论。默认参数值和关键字参数是完全不同的东西,只是碰巧有非常相似的语法。默认参数值不会阻止按位置提供参数,缺少默认值也不会阻止关键字参数提供参数。关键字必须提供的参数的实际语法看起来完全不同。您还可以在和的语言参考文档中看到,它们从不混淆默认值和关键字参数-=始终在定义中表示默认值,在调用中表示关键字参数。