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"会像
始终记住,在函数调用时,位置参数首先出现,然后关键字/命名参数必须稍后出现,因为位置很重要。在函数定义中相同,首先是非默认参数,然后是默认参数。非默认的一个将对应于位置的一个,其余的一个将对应于剩余的一个,这取决于您的函数调用。
在函数调用
在函数调用
只有在任何函数调用(如case 1
接下来假设,
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中一样,我们有
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参数只适用于像
从技术上讲,参数是函数定义中的变量,参数是在调用点为变量给定的实际值。例如:
1 2 3 4 | def foo(arg): return arg foo('Python') |
函数定义中的变量
维基百科有一个很好的描述:参数和参数