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

时间:2018-01-01 07:21:47

标签: python python-2.7

我听说这个参数意味着方法参数,(例如在下面的代码中)

def abc(a, b):
    pass

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

a和b是参数,c和d是参数。如果我错了,请纠正我?

然后在下面的代码中

def abc(c=1,d):
    pass

错误消息是:

  

SyntaxError:非默认参数遵循默认参数

以及下面的代码

def abc(a,b):
    pass

abc(a=1,2)

错误消息是:

  

SyntaxError:关键字arg之后的非关键字arg

在两个错误消息中,' no-default 参数遵循默认参数'关键字 arg '之后的'非关键字 arg ,为什么没有提及参数?

这两个错误消息让我多次困惑,因此提出了这个问题。错误消息是否有任何特定原因是这样的。你也可以告诉我如何记住与该​​错误相对应的正确错误消息。谢谢。

2 个答案:

答案 0 :(得分:2)

每当你调用函数时,假设

def f1(a, b):
    pass

x = 10
y = 20

f1(x, y)

上述值'x','y'是参数,'a','b'是参数。在函数/方法调用期间,这些变量被称为参数,因为你可以传递任何类似'x','y'或者'p','q'等等。但是在函数定义中,这些变量被称为参数,因为它们只是对于该函数而言,这只是对该函数的限制。

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

def f2(a, b=10):
    pass

x = 10
y = 20

f2(x)
f2(x, y)

在上面的函数中,'b'是一个默认参数,默认情况下它的值是10,如果调用函数f2时只有{a'的1个值会出现f2(x)和变量'b'为10,'a'为10.而f2(x, y) f2函数的参数'a','b'分别为10,20。

永远记住,在函数调用位置参数首先是关键字/命名参数必须稍后,因为位置很重要。在函数定义中,首先是非默认参数,然后是默认参数。非默认值对应于位置1,其余值对应于剩余值,具体取决于您的函数调用。

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

在函数调用f2(x, y)的情况2中,'x'和'y'都是位置参数,在函数定义'a'和'b'现在都是位置参数,因为'y'将通过值20到参数'b'。

只有在任何函数调用(例如案例1 f1(x)f1(p))没有为该参数传递参数时,才会使用任何函数定义的默认值,然后默认值为'b' = 10而'a'将是'x'或'p'。

接下来假设,

def f3(a, b):
    pass

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

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

这里在函数调用期间确保名称/键必须与函数定义相同,否则我们会收到错误。还要确保在函数调用或函数定义中不重复相同的参数/参数也会给我们带来错误。

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

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中,'a'和'b'都作为名称/键值50,75传递,它们对应于函数定义中的'a'和'b','a'和'b'将是75和50分别。

请记住,名称/键参数仅适用于f4(a=3, b=4)等函数调用期间。在函数定义def f5(a, b=20)期间,'a'是非默认参数或位置参数,'b'是默认参数,如果在函数调用f5期间没有传递'b'的值,则将采用默认值

答案 1 :(得分:0)

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

def foo(arg):
    return arg

foo('Python')

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

维基百科有一个很好的描述:Parameters and arguments