【python基础学习08课_函数的嵌套、内置函数等】

一、函数

1、函数的注释

1)如何写注释
"""
函数的注释 -- 说明这个函数的作用,以及参数的诠释

"""

三个引号之间可以注释

例如:

'''这是一段注释'''

"""这是一段注释"""

 

2)如何获取注释信息

2、函数的嵌套

函数的嵌套是指在编程中一个函数内部定义或调用另一个函数。这种结构在处理复杂任务时非常有用,因为它允许将大的问题分解成小的、可管理的部分,并保持代码的模块化和可读性。

以下是两种常见的函数嵌套形式:

1. **函数内部定义另一个函数**:
   在一个函数内部定义另一个函数是合法的,但内部函数通常只能在外部函数的作用域内被访问。

  

2. **函数内部调用另一个函数**:
   一个函数可以在其内部调用另一个已经定义的函数。

  

嵌套函数的一些注意事项:

- **作用域**:内部函数可以访问外部函数的作用域内的变量,但外部函数不能访问内部函数的局部变量(除非内部函数将其返回或作为参数传递)。


- **闭包**:当内部函数访问外部函数的变量时,这种结构称为闭包。闭包在处理异步操作、事件处理、数据封装等方面非常有用。


- **递归**:一个函数调用自身也是一种特殊的嵌套,称为递归。递归在处理递归数据结构(如树、图形)或执行分而治之的算法时非常有用。

使用嵌套函数可以增加代码的可读性和维护性,但也可能导致性能开销,因为每次调用外部函数时,内部函数都需要重新创建。因此,在设计函数时,需要权衡其带来的好处和潜在的缺点。
1)函数内部调用另一个函数

两个同等级别的函数的调用

2)函数内部定义另一个函数

在函数内部定义函数

内部不调用内部的函数,内部函数就不能执行

在外面调用内部函数,内部函数也不能执行,在外面调用是没有定义的

3、作用域

作用域:我们定义的变量和函数在哪个范围内可以使用

{比如:中国的警察只能在中国维护治安,不能在国际上维护治安}

变量的作用域:
1.全局变量:在当前文件内定义的变量,可以在文件内的任何地方使用
2.局部变量:在有效的范围内可以使用,一旦出了范围就无法使用

注:局部变量可以升级为全局变量 -- 常见的场景:上一个接口的信息如何给下一个接口使用
1)局部变量

局部变量,在作用域之外被调用,会报未被定义

{比如:中国的警察只能在中国维护治安,不能在国际上维护治安,有警察局出警(函数执行),局里的警察(局部变量)才能是上班状态的,才是有意义的}

局部变量,在作用域之内被调用,正常

2)全局变量

要顶着最左边代码行的变量

自己犯的一个错误

使用占位符的时候{}里面没有引用参数,导致报错

3)把局部变量升级为全局变量
3.1)通过global关键字,将局部变量升级为全局变量。

但是这个变量是定义在函数里面的,即使升级为全局变量,也得先调用这个函数才能执行。因为只有在这个函数里,这个变量才存在,执行了这个函数,这个变量才能存在。不执行这个函数,这个变量就不存在。

3.1.1)局部变量所在的那部分代码不执行,这个变量就不存在

在非函数里面也是一样的

不执行,不存在

不执行这个函数,就好报错未被定义这个局部变量

这样先用参数,再调用函数也不行

后用global声明也不行

4)循环里面,会对全局变量进行重定义

如果循环不执行,就不会重定义

4、数学函数

数学函数,了解会用就行
abs()  绝对值
divmod()  返回商和余数
round()  四舍五入[注:银行家算法的问题]
pow()  次方
sum()  求和
min()  最小值
max()  最大值
1)绝对值函数--adb()

2)返回商和余数--divmod()

3)四舍五入--round()
四舍五入[注:银行家算法的问题],规则:奇数-正常的结果;偶数-直接舍弃后面[0~0.5这个范围]的小数

偶数只有小数在0~0.5这个范围的小数会被舍弃,大于0.5的不会被舍弃

 4)次方--pow()

5)sum() 求和

只能对数字类型求和

不能对字符串类型进行加和

6)min()最小值

7)max()最大值

5、匿名函数

了解能看懂即可,用的不多

匿名函数:没有名字的函数
lambda 关键字完成
1)派--pi

2)圆的面积

3)普通函数

print(函数名)=打印函数的内存地址

如果是print(函数名)会打印函数内存地址

如果是print(函数)会报错

自己优化一下

4)匿名函数的写法

报错的情况,调用函数时,没传函数必要的位置参数

只调用,不获取返回值是没有结果的

将位置参数,写上

将位置参数及它的值,写上

6、函数的传递(或叫引用)

函数的调用与引用:
小口诀:有小括号,是调用。没有小括号,是引用。


引用函数:直接写函数的名称,不加(),就是引用,就是传递函数的本体(所在的内存地址),例如:fun3(fun2)
---------理解成:只要这个人的所在住址

调用函数:函数的名称加上(),就是通过函数的本体,然后调用函数,就会去执行函数内部的代码块,,例如:fun3(fun2())
---------理解成:通过这个人的所在住址,叫这个人去做他的工作



什么时候需要引用,什么时候需要调用?

1.引用是获取封装好的函数的内存地址
2.当我写用例的时候,如果需要用到这个函数里面的操作,就可以通过这个地址,去执行这个函数
3.主动权都在我手上

1)函数的调用

2)函数的内存地址--本体

函数本体+() =调用这个函数

3)函数的引用--传递函数的本体
3.1) 调用函数B时,直接调用传递的函数A

只有调用函数,函数才会执行。只引用函数,而没有调用该函数,引用的函数是不执行的。

3.2) 调用函数B时,通过参数的形式,调用传递的函数A


因为执行fun(aa=fun2)时,是将fun2的本体传递给aa,  本体+()就等于调用这个函数,所以aa()就相当于fun2()。所以相当于,函数2 是函数3的内部代码块的一部分(2被3引用了--aa())

 

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值