11-函数作用域与名称空间

初识函数对象

函数 --> 更高级的数据容器,里面存的不仅仅是数据,而是代码

函数对象 --> 把函数当成一个普通数据容器使用

1.函数可以被引用 --> 可以用函数来赋值

​ 数据名 = 函数名 # 把函数复制了一份

def fun():
    print(666)

a = fun  # a的数据类型是函数 把函数fun复制给了a 相当于a 等价于fun
a()
print(type(a))
# 666
# <class 'function'>

​ 变量名 = 函数名() # 把函数返回值赋值给了变量

def fun():
    print(666)

b = fun() # 运行函数,并把函数的返回值赋值给了变量b
b
print(b)
print(type(b))
# 666
# None
# <class 'NoneType'>

2.函数可以作为元素,放到数据容器里面 --> 函数可以放在列表,集合元祖,字典中

def fun1():
    print(666)
li = [123,True,fun1]
tup = (123,True,fun1)
dic = {
    1:666,
    2:fun1
}
set1 = {1,22,fun1}
# 在需要使用函数的时候 ,再取出来加括号

3.函数可以作为一个参数,传给别的函数

def fun2(a):
    print(a)

def add(a,b):
    return a+b

fun2(sum([12,334,45]))
fun2(add(234,32))
# 391
# 266

4.函数可以作为返回值使用

def get_sum(a, b):
    def add(c, d):
        return c + d # 计算,把得到的结果返回出去
    return add(a, b) # 把add的结果返回出去

print(get_sum(324, 25))
# 349

名称空间

名称空间 --> 用来存名字的地方

​ 变量名,函数名,模块名

程序中有专门的内存区域来存储对应的数据(堆栈):

​ 名称空间:存储变量名,函数名,模块名

​ 内存数据:变量值,函数代码,模块里的代码

名称空间,一共分为三层:

​ 1.内建名称空间(存内置函数)

​ 生命周期:随着python程序启动而产生,在程序关闭时回收,清除所有数据

​ 加载顺序:最先被加载出来的

​ 存放对象:print,input,type等内置函数、

​ 2.全局名称空间(自己定义在python外层的所有名字)

​ 生命周期:随着python程序启动而产生,在程序关闭时回收,清除所有数据

​ 加载顺序:第二个加载的

​ 存放对象:用户自己定义的变量名,函数名

​ 3.局部名称空间(在函数里定义的名字)

​ 生命周期:随着函数的调用而生成,结束调用后关闭

​ 加载顺序:在调用时才会被加载

​ 存放对象:在函数里定义的变量名,函数名,形参

作用域

作用域:一个数据能够被使用的范围

全局作用域:整个程序里都可以使用

局部作用域:只有局部位置才能使用

提权操作 --> 让一个数据从局部变为全局

​ gloabl = 全局

def 函数名():
	global 变量名
	变量名 = 值
函数名()  # 需要先调用函数,才能使用里面的变量
变量

降权操作 --> 让一个数据变得私有化‘

​ nonlocal = 私有化

匿名函数 lambda函数

def add(a,b):

​ return(a+b)

匿名写法:

​ add = lambda a,b:a+b

语法:

lambda 变量:操作

总结

函数对象:把函数当成一个普通数据来使用

​ 1.可以用函数来赋值

​ 2.可以把函数放在数据容器里(列表,集合,字典)

​ 3.可以用函数作为参数

​ 4.可以用函数作为返回值

名称空间:存放python程序里名字的地方

​ 1.内建名称空间 – > 内置函数

​ 2.全局名称空间 – > 定义在外部的名字

​ 3.局部名称空间 – > 函数里的名字

作用域:

​ 全局 – > 整个程序都可以使用

​ 局部 – > 只有程序的部分区域才可以使用

​ 对数据提权 – > 局部升为全局 --> global

​ 对数据降权 – > 全局降为局部 – > nonlocal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_bbbfamous

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

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

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

打赏作者

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

抵扣说明:

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

余额充值