谁能帮忙解释一下以下Python代码的意思么?
高洛峰
高洛峰 2017-04-17 12:08:04
[Python讨论组]

以下是教程原文

利用函数名,函数参数可以被显式传递,这意味着在函数调用中指定的参数顺序可以不同于函数定义时的参数顺序:

>>> 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 ?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
伊谢尔伦
>>> def f(a, b=2):
        return a + b, a - b
>>> x, y = f(b=5, a=2)
# 在 f 函数体内,a=2, b=5
# 所以它执行 return 2 + 5, 2 - 5
# 即返回 7, -3
# 所以
>>> print x
7
>>> print 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

不知道我的回答是不是有帮助

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号