python基础教程(六)函数

相关知识---函数

1.函数参数的传递本质是从实参到新参的赋值操作。python中一切皆对象。所有赋值操作都是“引用的赋值”所以参数传递本质上是引用传递。

2.具体操作

(1)对“可变对象”的“写操作”直接作用于原对象本身

(2)对“不可变对象”的“写操作”会产生一个新的“对象空间”,并用新的值填充这些空间

(3)可变对象 :字典 列表  集合 自定义对象等

      不可变对象:数字 字符串 元组 function

3.传递可变对象的引用:对同一对象的操作,没有改变原对象

4.传递不可变对象  产生新的对象  对新的对象的操作

5.浅拷贝与深拷贝

(1)浅拷贝 ::不拷贝子对象的内容,只是拷贝子对象的引用

(2)深拷贝 :连子对象的内存一起拷贝,对子对象的修改不影响源对象

6传递不可变对象包含的子对象是可变的,则方法内修改了这个可变对象,原对象也发生了变化。

(二)参数类型

1. 位置参数:函数调用时,实参按默认值位置顺序传递,需要个数和形参匹配,按位置进行的参数称为“位置参数”

2. 默认值参数:我们可以为某些参数设置默认值,这样这些参数在传递时是可选的,称为默认值参数,默认值参数放到位置参数后面

3. 命名参数(关键字参数)按形参名称传递的参数

4. 可变参数:可变数量的参数

(1)带一个星号,将多个参数收集到一个元组里边

(2)带两个星号,将多个参数收集到一个字典里边

(3)将带星号的参数尽量写在后面

(4)在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”

四、lambda表达式和匿名函数

1.lambda表达式声明匿名函数,lambda函数是一种简单,在同一行中定义函数的方法。Lambda函数实际生成一个函数对象

2.lambda只允许包含一个表达式,不能包含复合语句。该表达式计算结果就是函数返回值。

3.语法规则 lambda 参数 :表达式

五、eval函数

1.功能:将字符串当成有效的表达式来求值并返回计算结果

2.语法:eval(source[,globals,[,locals]])->value

  (1)source:一个pytohn表达式或函数compile()返回代码对象

(2)globals:可选必须是dicitionary

(3)locals:可选任意映射对象

六、递归函数

1.递归基本思想:自己调用自己

2.递归函数:自己调用自己的函数,在函数体内内部直接调用自己,每个递归必须包含两部分

(1)终止条件:递归什么时候结束,一般用于返回值不在调用自己

(2)递归步骤 把第n步值和第n-1步相关联

3.递归函数会创建大量的函数对象,谨慎使用

 

二、关键字

1. nonlocal用来在内部函数,声明外层的局部变量

2. Global函数内声明全局变量,然后才使用全局变量

三、LEGB规则

Python查找名称是按照LEGB原则查找的

Local     Enclosed   Global   Built in

 

Local指的是函数或者类的方法内部

Enclosed:嵌套函数(一个函数包裹另一个函数)

Global  :模块中的全局变量

Built in :指的是python为自己保留的特殊名称

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据小金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值