// 函数使用期间:变量的作用域一定要注意,主要体现在 1. 变量作用域内是否被定义 2. 可变对象传参是否会被修改
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都成都广告推广小微创业公司专业提供企业网站建设营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。概念:内存中变量名和对象的对应关系 // 字典
// 每个命名空间都是独立的存在,可以存在相同名字的变量
分类:
1. 局部命名空间:函数所拥有的命名空间,记录了函数中定义的变量、入参等
2. 全局命名空间:模块级的命名空间 // 模块加载时创建
3. 内置命名空间:放置内置函数和异常 // 任何地方都可以使用
生命周期:
1. 函数调用时创建、执行结束或抛异常删除
2. 模块加载时创建,一直在python解释器退出
3. python解释器创建时创建
*注意*
python解释器加载期间,会加载出内置命名空间和全局命名空间,局部命名是在调用时创建,函数调用结束自动退出。
作用域:针对变量,指的是变量的可用范围 // 其实作用域就是指的命名空间内变量的作用范围
分类:
只有函数、类、模块有作用域,代码块没有作用域
// 变量查找范围 LEGB
1. 局部作用域
2. 嵌套作用域
3. 全局作用域
4. 内置作用域
两个特殊参数:
1. global // 使得内部作用域内的变量可以修改全局变量
2. nolocal // 使用内部作用域内的变量可以修改嵌套作用域内的变量
工厂函数和嵌套作用域 // 内层函数都是可以记住顶层函数的状态
"""
def func():
x = 1
def action():
x = 1
pass
return action // 此处的action函数会记住外层函数func的变量
"""
可变对象传参和不可变对象传参
1. 不可变对象:值传递,内部不可修改
2. 可变对象:指针传递,内部可以修改
避免可变对象传参的修改
1. 调用时拷贝,避免在函数内部修改外部可变对象
func(a,b[:])
2. 函数内部进行拷贝
func(a,b):
b = b [:]
可变参数类型
# 函数头部:收集任意数量的参数
*args ==> args会是一个元祖
**args ==> args会是一个字典
1. map函数
list(map(lambda x:x + 2,[1,2,3,4])) => [3,4,5,6] // map对序列中每个元素执行相同的操作
2. filter函数
list(map(lambda x:x > 3,[1,2,3,4,5])) => [4,5] // 返回结果为True的元素
3. reduce函数
from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4]) => 10 // python3 reduce已经移到内置命名空间里面
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。