![Python核心编程从入门到开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/118/30638118/b_30638118.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.2.1 理解形式参数和实际参数
在使用函数时,经常会用到形式参数(以下简称“形参”)和实际参数(以下简称“实参”)。虽然两者都叫作参数,但它们还是有很大区别的。比如,形参是在定义函数时,函数名后面括号里的参数;而实参是在调用函数时,函数名后面括号里的参数,也就是将函数的调用者提供给函数的参数称为实际参数。可以通过图4-1更好地理解形式参数和实际参数。
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/85_1.jpg?sign=1739301275-TFJgHHa9snBvQ1r6D3FOZAptXN3Nc6Al-0-814814c5e4e2ffe0f1f0aa3df52e832b)
图4-1 形式参数与实际参数
根据实参的类型不同,可以分为将实参的值传递给形参和将实参的引用传递给形参两种情况。其中,当实参为不可变对象时,进行值传递;当实参为可变对象时,进行引用传递。实际上,值传递和引用传递的基本区别就是,在进行值传递后,改变形参的值,实参的值不变;而在进行引用传递后,改变形参的值,实参的值也一同改变。
【范例4-3】定义一个名为parameter_test的函数。
先为该函数传递一个字符串类型的变量作为参数(值传递),再为该函数传递一个列表类型的变量作为参数(引用传递),对比两者的区别。代码如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/85_2.jpg?sign=1739301275-XrhI4q5mMiMpw1IWYhwfEfMkE6P9kfhF-0-a133290bfa781f51e3dcc5320ee25acd)
运行程序,输出结果如下:
![](https://epubservercos.yuewen.com/78C615/16699149905738406/epubprivate/OEBPS/Images/86_2.jpg?sign=1739301275-C0ZujgZoWX6s1NO6QKJqwf7p2l06grol-0-6dd2be10cf5f69a368ccbb26729f2bd1)
从上面的运行结果中可以发现,在进行值传递时,在改变形参的值后,实参的值不改变;在进行引用传递时,在改变形参的值后,实参的值也相应发生改变。