函数
名称空间
-
内置空间
存放一些Python写好的代码
-
全局空间
在Py文件中顶头写的都是全局空间
-
局部空间
函数体中写的内容就是局部空间
加载顺序:
内置>全局>局部
取值顺序
:局部>全局>内置
作用域
全局作用域:全局空间 + 内置空间
局部作用域:局部空间
可变数据类型添加不需要申请成为全局对象 lst.append()
查看当前作用域的内容:
locals()
查看全局作用域的内容:
globals()
局部空间中可以使用全局的变量,但是不能进行修改,如果要进行修改,可以在局部空间中使用的变量前面加global
a = 5
def func(): <!--当没有写调用语句的时候,下边的函数体就是一个代码块,不会产生任何效果-->
a = 10 <!--这样是不行的,不能修改-->
global a = 10 <!--这样才是正确的-->
func() <!--当他调用的时候,函数里面的函数体才会执行-->
每个局部空间都是独立的
global
只修改全局空间中的变量,如果全局空间中,没有这个变量就创建
nonlocal
在局部空间内,修改离它最近的上一层,如果上一层没有就往上继续找,如果局部空间中找不到就报错
a = 10
def func():
a = 3
def abc1():
def foo():
nonlocal a
a = a + 1
print(a) # 4
print(locals()) # 查看foo空间中有没有开辟a的空间
foo()
abc1()
print(locals()) # 查看func空间中a的值有没有改变
func()
函数嵌套
-
交叉嵌套
def func(): pass def foo(): func() pass
-
嵌套
匿名函数
一句话函数
lambda 形参:返回值
匿名函数的名字就叫做:lambda
lambda 和 def 是一样的都是关键字
冒号前边的是形参
冒号后边的是返回值
匿名函数的返回值,只能返回一个数据类型,如果想要返回多个就用元组包起来
内置函数
lst = [1,2,3,4,5,0]
print(all(lst)) #只要有一个为假就为假
lst = [1,2,0,3,4,5,0]
print(any(lst)) #只要有一个为真就为真
s = "女儿你看的懂吗?"
print(bytes(s,encoding="utf-8")) #要编码的对象,以什么类型编码
def func():
pass
print(callable(func)) #切忌里面输入的值是函数的地址,不能是函数的调用
print(divmod(9,2)) <!--结果是(商,余数)-->
print(repr("123"))
print(repr(123))
round(16.6666666,2) <!--保留后两位-->。