![Python核心编程从入门到开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/118/30638118/b_30638118.jpg)
4.2.2 位置实参
在调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参上。因此,最简单的关联方式就是基于实参的顺序,这种关联方式被称为位置实参。
【范例 4-4】为了明白其中的工作原理,下面定义一个显示宠物信息的函数。该函数指出一只宠物属于哪种动物和它叫什么名字。代码如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/86_3.jpg?sign=1738777738-hNLRNUfubWhbL5cuVUdK5o2alsPNeyCx-0-abf7a261680c9e234cf04ca282cedddc)
以上这个函数的定义表明,第二行的函数形参说明它需要按顺序提供一种动物类型和一个名字的实参传入函数。例如,在前面的函数调用中,实参'pig'存储在形参animal_type中,而实参'marry'存储在形参pet_name中。
运行程序,输出结果如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/87_1.jpg?sign=1738777738-xl8d4MfNGMaj4GPzFALThLj6drDXFX3C-0-d3c9c8a0e9224a2639991571f639d814)
1.调用函数多次
【范例 4-5】可以根据需要调用函数任意次。如果需要再描述另一只宠物,则只需再次调用pet_information()函数即可。代码如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/87_2.jpg?sign=1738777738-M2TnvvGGoPOlk8tXqljxAXbfhiIA3zs5-0-02e1d8a145ad1ab2bf4056072d68ee4e)
当第二次调用该函数时,向它传递了实参'cat'和'jackson'。与第一次调用时一样,Python将按照顺序将实参关联到相应的形参上。
运行程序,输出结果如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/87_3.jpg?sign=1738777738-FZETprGo4TztucR5u6bgyEZzMBEJBvfl-0-d99a08a9023a0a1681660e2df3213e5f)
调用函数多次是一种效率极高的工作方式。只需将需要实现的功能在函数中用代码实现一次,以后只要实现该功能时调用一次代码即可,方便、简捷。在函数中,可根据需要使用任意数量的位置实参,Python将按顺序将函数调用中的实参关联到函数定义中相应的形参上。
2.位置实参的顺序
【范例 4-6】在使用位置实参来调用函数时,如果位置实参的顺序不正确,那么结果可能会出乎意料。代码如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/87_4.jpg?sign=1738777738-luoowbpE6c1goSUtGIq40lQd6pPeF6rc-0-f4785e153b809ec25b293d5d685b0b90)
在这个函数调用中,定义的函数的形参顺序是先动物类型后动物名字,而在传入实参时先指定动物名字,再指定动物类型,位置实参的顺序颠倒了,运行结果会是一个名为Pig的marry,结果出乎意料。
运行程序,输出结果如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/88_2.jpg?sign=1738777738-Sm7iYbEWELZuje1lx5m2GxHicQqd8Qwl-0-03a4feb0c2615d95886b87a80a10629d)
通过以上的运行结果来看,在调用函数时,要确保函数调用中实参的顺序与函数定义中形参的顺序一致。