声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的​​教学网站​​。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

在调用函数时,如果你没有使用过任何特殊的匹配语法,Python默认会通过位置从左至右匹配参数变量名。例如,如果定义了一个需要三个参数的函数,必须使用三个参数对它进行调用。

>>>def f(a,b,c): print(a,b,c)

...

这里,我们依照位置传递值:a匹配到1,b匹配到2,依次类推:

>>>f(1,2,3)

1 2 3

另外,在Python中,调用函数的时候,关键字参数允许通过变量名进行匹配,而不是通过位置。

>>>f(c=3,b=2,a=1)

1 2 3

这个调用中c=3,意味着将3传递给参数c。更准确地讲,Python将调用中的变量名c匹配给在函数定义头部的名为c的参数,并将值3传递给了那个参数。实际的效果就是这个调用与上一个调用的效果一样,但是注意到,当关键字参数使用时参数从左至右的关系不再重要了,因为参数是通过变量名进行传递的,而不是根据其位置。甚至在一个调用中混合使用基于位置的参数和基于关键字的参数都可以。在这种情况下,所有基于位置的参数首先按照从左至右的顺序匹配头部的参数,之后再进行基于变量名进行关键字的匹配。

>>>f(1,c=3,b=2)

1 2 3

当人们第一次看到这种形式的时候,他们都想知道为什么使用这样的方式。关键字在Python中扮演了两个典型的角色。首先,他们使调用显得更文档化一些(假设使用了比a、b和c更好的参数名)。例如,下面这种形式的调用:

func(name='Bob',age=40,job='dev')

这种形式的调用要比直接进行一个由逗号分隔的三个值的调用明了得多:关键字参数在调用中起到了数据标签的作用。第二个主要的角色就是与使用的默认参数进行配对,我们将在后面的内容介绍它。