Python的默认参数和关键参数有何区别?

在简明Python教程中,对于默认参数值:

def say(message, times = 1):
    print message * times

say('Hello')
say('World', 5)

这里如果1行改为 message = 3,也能通过编译,但这样更改之后的程序变成什么意思了?

关键参数值:

def func(a = 3, b=5):
    print 'a is', a, 'and b is', b
func()
func(3, 7) 

这和上面那段代码有什么区别吗?为什么第一段代码的 message = 3不会输出3次hello,而第二段代码的a可以输出a = 3呢?

阅读 2.5k
2 个回答

这里如果1行改为 message = 3,也能通过编译,但这样更改之后的程序变成什么意思了?

  • 意思是默认打印三次。在你不指定times的值时。

这和上面那段代码有什么区别吗?为什么第一段代码的 message = 3不会输出3次hello,而第二段代码的a可以输出a = 3呢?

  • 没啥区别。message根据变量名就可以得知是一个消息,当然你改成a也可以,在这里我们看见你调用了say('Hello'),那么Hello对应的就是第一个参数。say('World', 5)其中的5对应了第二个参数。

关键字参数 **kwargs 传入后可以通过 kwargs['xxx'] 获取参数值;
可变长参数 *args 传入后是一下 list;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题