python透视图中参数和参数有什么区别[不重复:)]?

What is the difference between argument and parameter in python perspective [not duplicate :) ]?

本问题已经有最佳答案,请猛点这里访问。

我听说这个参数是指方法参数(例如下面的代码中)。

1
2
3
4
5
6
def abc(a, b):
    pass

c = 2
d = 3
abc(c,d)

A和B是参数,C和D是参数。如果我错了就纠正我?

然后在下面的代码中

1
2
def abc(c=1,d):
    pass

错误消息为:

SyntaxError: non-default argument follows default argument

也在下面的代码中

1
2
3
4
def abc(a,b):
    pass

abc(a=1,2)

错误消息为:

SyntaxError: non-keyword arg after keyword arg

在两个错误消息中,"默认参数后面没有默认参数"和"关键字参数后面没有非关键字参数",为什么没有提到参数?

这两条错误消息多次让我感到困惑,所以我提出了这个问题。是否有任何特定的原因导致错误消息如此。你能告诉我如何记住与那个错误对应的正确的错误信息吗?谢谢您。


每当调用函数时,假设

1
2
3
4
5
6
7
def f1(a, b):
    pass

x = 10
y = 20

f1(x, y)

上面的值"x"、"y"是参数,"a"、"b"是参数。在函数/方法调用期间,这些变量被称为参数,因为您可以传递类似"x"、"y"或"p"、"q"等的任何内容。但是在函数定义中,这些变量被称为参数,因为它们只适用于该函数,就像对该函数的限制一样。

在Python中,有位置参数、默认参数、非默认参数、关键字参数和命名参数的概念。

1
2
3
4
5
6
7
8
def f2(a, b=10):
    pass

x = 10
y = 20

f2(x)
f2(x, y)

在上面的函数"b"是一个默认参数,如果每次调用函数f2时,只有1个值"a"会像f2(x)一样出现,那么它的默认值为10,变量"b"为10,而"a"为10。在f2(x, y)中,f2函数的参数"a"、"b"分别为10和20。

始终记住,在函数调用时,位置参数首先出现,然后关键字/命名参数必须稍后出现,因为位置很重要。在函数定义中相同,首先是非默认参数,然后是默认参数。非默认的一个将对应于位置的一个,其余的一个将对应于剩余的一个,这取决于您的函数调用。

在函数调用f2(x)的情况1中,"x"是函数调用期间的位置参数,"a"在函数定义中是位置参数,"y"是默认参数。

在函数调用f2(x, y)的情况2中,"x"和"y"都是位置参数,"a"和"b"都是位置参数,因为"y"将值20传递给参数"b"。

只有在任何函数调用(如case 1 f1(x)f1(p))中没有为该参数传递参数时,才会采用任何函数定义的默认值,那么默认值为"b"=10,"a"为"x"或"p"。

接下来假设,

1
2
3
4
5
def f3(a, b):
    pass

f3(a=5, b=15)
f3(b=100, a=200)

上述调用f3的参数"a"为5,"b"为15是关键字/命名参数,因为它们的名称/键与其值相关联。"a"链接为值5的名称/键,"b"链接为值"15"的名称/键。你也可以把它想象成一本字典。

在函数调用期间,请确保名称/键必须与函数定义相同,否则会出错。另外,确保在函数调用或函数定义时,相同参数/参数的重复不会给我们带来错误。

您可以按任意顺序指定这些基于关键字/命名的参数。就像在案例2中一样,我们有f3(b=100, a=200)。在函数定义中,名称/键"a"对应于值200,名称/键"b"对应于值100。

1
2
3
4
5
6
7
8
def f4(a=1, b=2):
    pass

f4()
f4(b=20)
f4(a=10)
f4(a=100, b=200)
f4(b=50, a=75)

在f4中,函数定义"a"和"b"具有默认值1和2。

在案例1中,将采用默认值。

在第2种情况下,只传递"b"作为名称/键值20,这与函数定义中的"b"对应,"a"和"b"分别为1和20。

在情况3中,只传递"a"作为名称/键值10,这将对应于"a"的函数定义,"a"和"b"分别为10和2。

在情况4中,作为名称/键值50传递的"a"和"b",75与函数定义中的"a"和"b"对应,"a"和"b"分别为75和50。

记住,name/key参数只适用于像f4(a=3, b=4)这样的函数调用。在函数定义过程中,def f5(a, b=20)这里‘a’是非默认参数或位置参数,而‘b’是默认参数,因为如果函数调用f5期间没有传递‘b’的值,则会取默认值。


从技术上讲,参数是函数定义中的变量,参数是在调用点为变量给定的实际值。例如:

1
2
3
4
def foo(arg):
    return arg

foo('Python')

函数定义中的变量arg是参数,函数调用中的值Python是该参数的参数。

维基百科有一个很好的描述:参数和参数