函数的参数传递
要点:函数可以定义可选参数,使用参数的位置或名称传递参数的值,根据函数中变量的不同作用域有不同的函数返回值方式
可选参数和可变数量参数
部分参数不一定需要调用程序输入,可以在定义函数时直接为这些参数指定默认值。当函数被调用是,如果没有传入对应的参数值,则使用函数定义时的默认值代替
在函数定义时,也可以设计可变数量参数,通过在参数前增加星号(*)实现。带有星号的可变参数只能出现在参数列表的最后。
def vfunc(a,*b):
参数的位置和名称传递
函数调用时,实参默认采用按照位置顺序的方式传递给函数。
为了解决上述问题,python提供了按照参数名输入实参的方式,格式如下:
result = func(x2=4, y2=5, z2=6, x1=1, y1=2, z1=3)
函数返回值
return语句用来推出函数并将程序返回到含糊被调用的位置继续执行。return语句可以同时将0个、1个或多个函数运算后的结果返回给函数被调用处的变量
函数对变量的作用
一个程序中的变量包括两类:全局变量和局部变量
- 全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
- 局部变量:指在函数的内部使用的变量,仅在函数内部有效,当函数推出时变量将不存在
在想对函数的实参进行值得改变时,可以通过使用全局变量,用global作为数据类型,也可以通过列表来实现函数可以实现全局列表,而用采用global进行声明
python函数对变量的作用遵循如下原则:
- 简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名,其值不变
- 简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变
- 对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值
- 如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变
拓展:指针和引用
- 指针:是保存内存地址的变量,一般出现在比较底层的程序设计语言中,如C语言。
- 引用:是某一变量的别名,用这个名字可以对变量进行操作,如Python列表类型的引用
两者的主要区别:指针直接指向内存,说明对象已经生成,而引用只是别名,需要真实创建对象才能操作对象。