Python函数

在Python中,不可变的数据类型有三种,分别是整型、字符串和元组

函数的概念

函数的基本使用

函数的参数

单个参数  

多个参数

方式一

方式二

不定长参数

方式一

方式二

 拆包

缺省参数

参数注意

在Python中,只有引用传递(地址传递),没有值传递

如果数据类型是可变类型,则可以改变原件

如果数据类型是不可变类型,则不可以改变原件

 

函数的返回值

函数的使用描述

偏函数

高阶函数 

函数本身,也可以作为数据,传递给另外一个变量

高阶函数使用场景

返回函数

一个函数内部,返回的数据是另外一个函数;把这样的操作称为返回函数

匿名函数

lambda函数,指没有名字的函数

lambda 参数1,参数2... :表达式

闭包

在函数嵌套的前提下,内层函数引用了外层函数的变量(包括参数),外层函数又把内层函数当作返回值进行返回,这个内层函数+所引用的外层变量,称为“闭包”

案例:根据配置信息,生成不同的分割线函数

 注意事项

1.闭包中,如果要修改引用的外层变量,需要使用nonlocal变量声明,否则当作是闭包内,新定义的变量

 

 2. 当函数被调用的时候,才会真正确定对应的值到底是什么,之前都是以普通的变量标识名称而存在

 

装饰器

在函数名以及函数体不改变的前提下,给一个函数附加一些额外代码

在写代码时应将功能函数部分和业务逻辑代码分开

只要写了@符号,装饰器的执行时间是立即执行

 语法糖写法

 

 装饰器叠加

 对有参函数进行装饰

有一个参数

有两个参数

对有返回值的函数进行装饰

无论什么场景,保证函数返回值一致

带有参数的装饰器

通过@装饰器(参数)的方式调用这个函数并传递参数;并把返回值再次当作装饰器进行使用

先计算@后面的内容,把这个内容当作是装饰器

生成器

是一个特殊的迭代器(迭代器的抽象层级更高)

所以拥有迭代器的特性:惰性计算数据,节省内存;能够记录状态,并通过next()函数,访问下一个状态;具备可迭代特性

但是,如果打造一个自己的迭代器,比较复杂,需要实现很多方法,所以就有一个更加优雅的方式“生成器”

创建方式

生成器表达式:把列表推导式的[ ]修改成( )

 生成器函数:函数中包含yield语句,这个函数的执行结果就是“生成器”

 

send()方法

send方法有一个参数,指定的是上一次被挂起的yield语句的返回值

相比于.__next__(),可以额外的给yield语句传值

注意第一次调用,t.send(None)

 

关闭生成器 

g.close()

后续如果继续调用,会抛出StopIteration异常提示

注意 

如果碰到return,会直接终止,抛出StopIteration异常提示

生成器只会遍历一次

递归函数

体现

函数A内部,继续调用函数A

传递:从后往前问就是传递的过程

回归:从前往后传递结果的过程称为回归

递归函数一定是有传递有回归

函数作用域 

基本概念

Python中没有块级作用域

基于命名空间的常见变量类型

 

 查看局部变量

 查看全局变量

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值