python函数进阶

本文深入讲解Python中的函数参数类型、命名空间、作用域、全局与局部变量、global和nonlocal关键字,以及内置函数、匿名函数lambda的使用。探讨了命名空间与作用域的关系,并详细分析了lambda函数的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,函数的参数类型
不可变类型参数:整数、字符串、元组。
fun(a)内部修改 a的值,只是修改另一个复制的对象,不会影响 a 本身。

可变类型:列表,字典。如 fun(la), 则是将 la 真正的传过去,修改后fun外部的la也会受影响
二,命名空间
命名空间指的是保存程序中的变量名和值的地方。

命名空间的本质是一个字典, 用来记录变量名称和值。字典的key是变量的名称,字典的value对于的是变量的 值。

例如 {‘name’:’zs’,’age’:10} 命名空间一共分为三种:
局部命名空间、全局命名空间、内置命名空间

局部空间: 每个函数都有自己的命名空间,叫做局部空间,它记录了函数的变量,包括函数 的参数 和局部定义的变量

全局空间: 每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包 括函数、 类、其它导入的模块。

内置名称空间: 任何模块均可访问它,它存放着内置的函数和异常。 input,print,str,list,tuple…

三、作用域
作用域指的是变量在程序中的可应用范围。 作用域按照变量的定义位置可以划分为4类即LEGB: Local(函数内部)局部作用域。 Enclosing(嵌套函数的外层函数内部)嵌套作用域(闭包)。 Global(模块全局)全局作用域。
Built­in(内建)内建作用域。(指的是builtins.py模块)

Python内层作用域访问外层作用域时的顺序: Python搜索4个作用域[本地作用域(L)之后是上一层结构中def或者lambda的本 地作用域(E),之后是全局作用域(G)最后是内置作用域(B)(即python的内置类和 函数等)] 并且在第一处能够找到这个变量名的地方停下来。如果变量名在整个的搜索过程 中都没有找到,Python就会报错。

四、全局变量和局部变量
在函数中定义的变量称为局部变量,只在函数内部生效, 在程序一开始定义的变量称为全局变量,全局变量的作用域是整个程序。

五、global和nonlocal关键字
1、global关键字可以将局部变量变成一个全局变量。 格式: global 变量名称。
2. nonlocal关键字可以修改外层(非全局)变量。

六、命名空间和作用域的关系
命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,命名空间是键 值对的集合,变量名与值是一一对应关系。 作用域定义了命名空间中的变量能够在多大范围内起作用。

七、内置函数
由于时间问题,重点讲解如下的内置函数。其他内置函数课下验证。 Abs() 函数 max() 函数、map() 函数、filter() 函数,zip() 函数

八、匿名函数 在定义函数的时候,不想给函数起一个名字。这个时候就可以用lambda来定义 一个匿名函数

语法: 变量名= lambda 参数:表达式(block) 参数:可选,通常以逗号分隔的变量表达式形式,也就是位置参数
表达式:不能包含循环、return,可以包含if…else…

注意:
1.表达式中不能包含 循环,return
2.可以包含 if…else…语句.
3.表达式计算的结果直接返回

九、嵌套作用域和lambda lambda表达式也会产生一个新的局部作用域。在def定义的函数中嵌套labmbda 表达式,lambda表达式 能够看到所有def定义的函数中可用的变量。

lambda表达式总结:
优点:代码简洁,不增加额外变量。
缺点:难于理解,降低了可读性。 建议:不提倡使用lambda, 除非你知道自己在干什么。在团队开发中, 一个良 好易读的代码是非常重要的,有助于提升团队协同开发效率,减少沟通和维护成 本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值