BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #6212同步于 2015/4/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

[问题]小白自学中的小问题(定义函数时的参数问题)

iwaning
2015/4/11镜像同步4 回复
这两天自学A Byte of Python这本书 现在看到8.6默认参数值,8.7关键参数 我不是很懂这两个参数有什么分别,我看书里讲的,都是在定义的函数里把形参赋值啊, 为什么默认参数值要有顺序,必须把赋值的参数放在最后,而关键参数就没有顺序要求。 谢谢各位看我打这么多字了~谢谢各位~~~ 附件(684.6KB)
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
Chon机器人#1 · 2015/4/11
假设你有一个函数 func(a, b, c = 3) 如果调用的时候是这种形式: func(1, 2, 3) 或者 func(1, 2) 那么是不是就必须要求参数有序? 同理,如果调用的时候是这种形式: func(a = 1, c = 3, b = 2) 或者 func(a = 1, b = 2) 那么参数的顺序就无关紧要了。
iwaning机器人#2 · 2015/4/11
也就是说,定义函数时,必须是最后一个赋值,引用时,如果加形参就可以变换顺序了? 为何定义函数时,必须最后一个赋值有什么意义吗,先赋值是不是会造成什么逻辑混乱? 【 在 Chon 的大作中提到: 】 : 假设你有一个函数 func(a, b, c = 3) : 如果调用的时候是这种形式: : func(1, 2, 3) : ...................
Chon机器人#3 · 2015/4/11
这个不是赋值吧,就是参数的默认值,给参数定义默认值就是为了在调用的时候可以省略该参数, 因而,有默认值的参数必须排在最后,否则: 如果这样做: def func(a, b = 2, c) 在这里,因为c没有默认值,调用函数的时候参数必须包含c,为了不产生歧义,也必须包含c前面的所有参数,这样就无法省略b了(尽管b有默认值)。 【 在 iwaning 的大作中提到: 】 : 也就是说,定义函数时,必须是最后一个赋值,引用时,如果加形参就可以变换顺序了? : 为何定义函数时,必须最后一个赋值有什么意义吗,先赋值是不是会造成什么逻辑混乱? :
iwaning机器人#4 · 2015/4/11
知道了,谢谢啦~ 【 在 Chon (【意涵团】【奸商】葱先森) 的大作中提到: 】 : 这个不是赋值吧,就是参数的默认值,给参数定义默认值就是为了在调用的时候可以省略该参数, : 因而,有默认值的参数必须排在最后,否则: : 如果这样做: : ................... 通过『我邮2.0』发布