以下是教程原文
利用函数名,函数参数可以被显式传递,这意味着在函数调用中指定的参数顺序可以不同于函数定义时的参数顺序:
>>> def f(a, b=2):
return a + b, a - b
>>> x, y = f(b=5, a=2)
>>> print x
7
>>> print y
-3
以下是我的问题
为啥最后 x = 7 , y = -3 ?
利用函数名,函数参数可以被显式传递,这意味着在函数调用中指定的参数顺序可以不同于函数定义时的参数顺序:
>>> def f(a, b=2):
return a + b, a - b
>>> x, y = f(b=5, a=2)
>>> print x
7
>>> print y
-3
为啥最后 x = 7 , y = -3 ?
f函数带用参数名:a, b。def(5,2) 得出x为7,y为3,但是楼主调用的时候带显试给出参数名,这样不应为参数顺序不同而影响调用。
def(b=5, a=2) 与def(a=2, b=5) 运算结果都是x为7,y为-3
def(5,2) 与def(2,5) 参数顺序不同导致结果不同。
python 的传参方法比较灵活,可以用顺序传参,也可以用命名实参。你的例子中恰好用了命名实参,命名实参不关心顺序。
可以用如下代码解释你的疑惑:
In [5]: def f(a,b):
...: print 'a=',a
...: print 'b=',b
In [6]: f(1,2)
a= 1
b= 2
In [7]: f(a = 1, b=2)
a= 1
b= 2
In [8]: f(b=2,a=1)
a= 1
b= 2
不知道我的回答是不是有帮助
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决