python中的函数定义 python中的函数定义通过define关键字完成对吗

python中的函数定义 python中的函数定义通过define关键字完成对吗

编码文章call10242024-12-26 12:05:2827A+A-

## 函数定义及传参

函数定义基本语法如下:

def func(param1, param2, ...):
    """ doc string for func """
    body

函数体第一行为可选的文档字符串,可通过:func.__doc__,读取,文档字符串可对函数的功能,参数和返回进行详细说明。

函数传参最简单的方式为按顺序传参,如对函数:func(x, y)进行调用时,可使用:func(1, 2)的方式进行调用,此时x和y依次被赋值为1和2。此时要求调用代码传递参数的数量必须和参数定义的数量完全匹配,否则将引发:TypeError。当然,也可以在参数定义时指定默认值,如

func(x, y=2),此时可以:func(1, 3)进行调用,第二个参数y的值将使用3覆盖默认值2;也可以:func(1)进行调用,参数y将使用默认值2。注意,带默认值的参数必须位于参数列表的末尾。函数参数的传递还可通过参数名传递,此时和参数位置无关,如对前面函数的调用可通过:func(y=3, x=2),指定每个参数的值。

当函数参数数量不确定时,可用:func(*args),进行定义,在函数内部使用args列表进行访问。当使用关键字传递的参数个数不确定时,可用:func(x, y, **others),方式定义,函数内部可通过字典的方式访问。

上面介绍的三种传参方式可混合使用,为了避免混乱,混合使用多种传参方式的一般规则为,首先是按照位置,然后是命名参数,接着为带单个'*'的数量不确定的位置传参,最后为带'**'的数量不确定的关键字传参。详细见下面示例:

## 局部变量和全局变量

函数的参数和函数执行的过程中定义的变量均为局部变量,对它们的操作不会影响到函数外部的任何变量。但如果在操作变量之前,将其声明为:global,则可访问和修改全局变量。nonlocal和global类似,它会让标识符引用最近的闭合作用域中已经绑定的变量。后面会对作用域和命名空间进行详细介绍,敬请期待。global是对顶级,也就是最外层变量使用的,而nonlocal则是最近的闭合作用域。如果想对函数外部的变量进行赋值,则必须通过global或nonlocal,而如果仅仅是访问,则不用,python如果在函数作用域中找不到某变量,则会自动尝试在全局作用域中查找该变量。如下:

## 匿名函数、生成器函数和装饰器

生成器函数可用于定义迭代器,使用:yield,返回每一个迭代值,当没有迭代值,或者有return语句或函数结束时,生成器函数停止返回。与普通函数不同,生成器函数中的局部变量会保存至下一次调用。生成器函数可用于循环语句,也可用于in等判断语句。如下:

可以将一个函数作为参数传递给另外一个函数,并将其包入另一个执行相关操作的新函数中,然后返回新函数用于替换原来的函数,起到对原函数的装饰的效果。具体有两部分组成,先定义装饰器函数,然后在被装饰函数前面加上"@"和装饰器函数名,如下:


"橙汁数据"(微信公众号),长期关注大数据的收集处理与分析,深度学习与人工智能应用,如有大数据或智能应用相关业务,欢迎关注"橙汁数据"(微信公众号)洽谈咨询;

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4