Python的函数

Python的函数基本概念

  • 使用def定义基本函数,函数本身是对象,即可以返回函数对象本身。类似于c里面的函数指针。
  • 函数被调用的时候才检查def语句,所以def语句可以写在函数调用之后。

函数变量的作用域

  • 变量名的查找遵循LEGB原则,即先在本地(一般是函数内部,如果是嵌套函数则是嵌套函数内部)寻找对应的变量,再在函数中寻找对应的变量,再去模块中查找,最后去内置模块查找。
  • 函数中对变量名有两种修饰声明,一个是global另一个是nonlocal。global声明的变量,从模块中查找,nonlocal声明的变量针对于嵌套函数里的变量,从函数外层查找,虽然不声明nonlocal也可以使用嵌套函数的外层函数的本地变量,但是不能对其进行修改。
  • 函数本身是对象,可通过类定义一个函数对象,实现其__call__方法。函数对象里面的属性变量不遵循LEGB原则。

函数的参数

  • 参数类型分为位置参数,关键字参数,默认参数,任意参数,任意参数用*或**标记。*在函数定义里表示收集任意的参数组成元组,**在函数定义里收集任意的关键字参数组成字典。*在函数调用里表示将参数集合解包为多个参数,**参数在函数调用里表示将字典解包为多个参数。
  • 指定keyword-only参数可以与任意参数混用而不会被看做任意参数的一部分。指定keyword-only即是调用时使用关键字参数。
  • 参数的编写顺序,调用时位置参数在关键字参数之前,关键字参数在**参数之前,定义时普通参数必须在**参数之前。

函数编程工具

  • map将序列中每一个元素进行指定的函数操作。返回一个结果集。map使用内置函数作为指定函数一般是最快的。
  • filter对序列中每一个元素进行判断真值的函数操作,返回为真元素的结果集。
  • reduce接受迭代器计算序列总和。

列表解析和生成器函数,生成器表达式

  • 列表解析通常比for循环快,比使用内置函数的map要慢一点。列表解析可在[]添加多重循环遍历和条件判断。
  • 生成器函数在函数里使用yield返回对象。表示不一次生成结果集。省内存,但比列表解析和for循环慢,适用于具有很大数量的集合。生成表达式也具有上述特点,不过它是用类似(x+3 for x in y)的形式和列表解析很像。
  • 字典解析和集合解析某种意义上是生成器表达式传递给类型名
  • 生成器是单迭代对象,即使用iter()内置函数只能迭代一回。需要重新生成生成器才能继续迭代。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值