python之方法与函数的区别,及其传参
1、方法与函数的区别,看下图:
下面从几点来阐述函数和方法之间的区别。
区别一:看上面有没有“人”。函数是“光杆司令”,上面没“人”。如果上面有“人”,则是方法。
区别二:上面没“人”的函数,可以直接使用。上面有“人”的方法,要先把类实例化,然后在实例化名称下使用该方法。
区别三:参数、函数参数是“实打实”的,需要几个就是几个。方法的参数比较“虚”,总多要一个self,但又不用。
2、方法、函数的传参
(1)默认参数。
所谓默认参数,就是在定义函数(方法)时预先设置一个参数的值。这个参数在调用函数(方法)时传不传值都无所谓,不传就用默认值,传了就用传入的值。这样的好处是,简化了一些不经常变动的参数及其值,简化了调用方传参的数量。表6-3-5是对参数的解释和举例。
设置默认参数时,有几点要注意:
· 默认参数在参数顺序中排在最后,必选参数排在前面。
· 当函数有多个参数时,把变化大的参数放在前面,变化小的参数放在后面。变化小的参数就可以作为默认参数。
默认函数的调用方法如下。
比如定义的函数是function(param1,param2=2,param3=3),则有两种调用方法:
· 按照顺序提供默认参数。调用上面函数的方法是function(1,2)。
· 不按照顺序提供默认参数。但是这样需要把参数名写上。调用上面函数的方法是是function(1,param3=4)。
(2)可变参数。
可变参数,即该参数是可变的。“可变”是指能接受任意多个参数。函数(方法)内部都会将这些参数组装成一个元组来处理,所以一般都使用可变参数的函数(方法),其内部是对该可变参数的组合进行循环操作。
如要将一个列表或元组中的数据作为参数传递给可变参数,难道需要按序取出数据吗?在传递该列表(元组)时,只需在前面加一个*号,则可变参数就知道如何处理了。
表6-3-5中有可变参数的解释和举例。请读者运行表6-3-5中的例子,检查和理解其返回结果。
(3)关键字参数。
可变参数允许传入0个或任意个参数。这些可变参数,在函数调用时会自动被组装为一个tuple。关键字参数也允许传入0个或任意个含参数名的参数,但这些关键字参数在函数内部会自动被组装为一个dict。这就是关键字参数和可变参数的区别。从参数名称上也能看出端倪,关键字参数肯定是对字典来说的。
同样,关键字参数也支持参数是字典,但是需要在字典前加**。
3、方法、函数的参数组合
在Python的传参中,有必选参数、默认参数、可变参数、关键字参数。当然,这4种参数也可以组合在一起使用。但这4类参数是有顺序要求的,即:必选参数→默认参数→可变参数→关键字参数。在这几种参数同时存在的情况下,建议按以下实例的顺序传参。