【python函数】函数
// 函数使用期间:变量的作用域一定要注意,主要体现在 1. 变量作用域内是否被定义 2. 可变对象传参是否会被修改
创新互联是专业的石城网站建设公司,石城接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行石城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
1. 函数命名空间
概念:内存中变量名和对象的对应关系 // 字典
// 每个命名空间都是独立的存在,可以存在相同名字的变量
分类:
1. 局部命名空间:函数所拥有的命名空间,记录了函数中定义的变量、入参等
2. 全局命名空间:模块级的命名空间 // 模块加载时创建
3. 内置命名空间:放置内置函数和异常 // 任何地方都可以使用
生命周期:
1. 函数调用时创建、执行结束或抛异常删除
2. 模块加载时创建,一直在python解释器退出
3. python解释器创建时创建
*注意*
python解释器加载期间,会加载出内置命名空间和全局命名空间,局部命名是在调用时创建,函数调用结束自动退出。
2. 函数作用域
作用域:针对变量,指的是变量的可用范围 // 其实作用域就是指的命名空间内变量的作用范围
分类:
只有函数、类、模块有作用域,代码块没有作用域
// 变量查找范围 LEGB
1. 局部作用域
2. 嵌套作用域
3. 全局作用域
4. 内置作用域
两个特殊参数:
1. global // 使得内部作用域内的变量可以修改全局变量
2. nolocal // 使用内部作用域内的变量可以修改嵌套作用域内的变量
工厂函数和嵌套作用域 // 内层函数都是可以记住顶层函数的状态
"""
def func():
x = 1
def action():
x = 1
pass
return action // 此处的action函数会记住外层函数func的变量
"""
3. 函数参数
可变对象传参和不可变对象传参
1. 不可变对象:值传递,内部不可修改
2. 可变对象:指针传递,内部可以修改
避免可变对象传参的修改
1. 调用时拷贝,避免在函数内部修改外部可变对象
func(a,b[:])
2. 函数内部进行拷贝
func(a,b):
b = b [:]
可变参数类型
# 函数头部:收集任意数量的参数
*args ==> args会是一个元祖
**args ==> args会是一个字典
4. lambda表达式
5. 内置函数
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已经移到内置命名空间里面
名称栏目:【python函数】函数
文章地址:http://scyanting.com/article/gejdse.html