大家好我是程序员_蓝天, 本文是为了方便初学者能够快速学习python,写的可能不是很好,希望大家多多包涵。 每个赞都是我前进的动力
初识函数对象
函数非常非常重要,但是也不要过于的害怕它.搞清楚它的本质就好了
函数,就是一个高级点的数据容器.一个数据/容器能干啥,函数也能甘薯
1.函数可以被引用 -- 可以用函数来赋值
2.函数可以作为元素,放到字典/列表/元组/集合
3.函数可以作为参数,传给别的函数
4.函数可以作为返回值
函数对象 -- 把函数当成一个普通的数据对待.可以用它赋值,可以把它放到散列,序列里.也可以用它来作为返回值或者作为参数传到一个函数去
名称空间
名称空间 = 用来存储名字的地方
变量名,函数名
程序中有专门的一些内存区域.来存储对应的数据
1.名称空间 -- 栈(变量名,函数名)
2.内存数据 -- 堆(变量值,函数代码)
有一个东西叫'名称空间',专门用来存放名字.为了避免重名的情况.名称空间一共有3层
1.内建名称空间(存内置函数)
生命周期: 随着python的程序启动而生成,在程序关闭时回收.清除里面的数据
加载顺序: 最先被加载出来的数据
存放对象: 内置函数print input type float len
2.全局名称空间(存在python外层定义的名字)
生命周期: 随着python的程序启动而生成,在程序关闭时回收.清除里面的数据
加载顺序: 第二个被加载出来的
存放对象: 在python外层写的代码,定义的变量名,函数名
3.局部名称空间(存在函数内定义的名字)
生命周期: 随着函数的调用而生成,在结束调用时销毁
加载顺序: 在调用时才会被加载
存放对象: 在函数里定义的变量名/函数名,形参
总结:
一个程序里的数据.是有专门的地方存储的
存储名字的叫名称空间,也叫栈.名字会因为类型的不同,分开放在3个名称空间中
存储内存数据叫堆 -- 变量值,函数内容
作用域
作用域 = 一个数据能够使用的范围
全局作用域 = 整个程序都可以使用
(内建名称空间,全局名称空间)
内置函数,在外层定义的变量,函数名
局部作用域 = 只有在局部位置才能使用(函数内)
局部名称空间
函数里面定义的变量和函数
如果要提权 -- 让一个数据,从局部变成全局 -- global
global = 全局 ,所有人都可以使用
def 函数名():
gloabl 变量名
操作变量
函数名()
print(变量)
def fun():
global a
a = 666
fun()
print(a)
要使用函数里的变量.除了要给它global提权外,还得调用函数.才能生成对应的名字空间.运行
如果要局部化 -- 让一个代码,变成你专属的 -- nonlocal
nonlocal = 局部 = 原本大家都能用,但是现在归我管
def fun1():
b = 520 # 公有的东西.大家都能用
def fun2():
nonlocal b # 让变量b局部化
b = 60
fun2()
print(b)
fun1()
匿名函数 lambda函数
如果你要用一个函数.但是不想给它想名字再.那就可以用lambda
原来的写法:
def add(x, y):
return x+ y
print(add(3,4))
现在的写法:
add = lambda x,y:x+y
print(add(3,4))
语法格式:
lambda 变量:操作
lambda a:print(a)
talk = lambda a:print(a)
talk('你好')