一入python情似海,从此妹纸是路人
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一入python情似海,从此妹纸是路人相关的知识,希望对你有一定的参考价值。
一、作用域
变量的查找顺序: 局部 ---- 全局 ---- 内置
a = 1
局部变量---- 函数的内部去使用的
全局变量----整个py文件里都能使用的
1.局部变量(在函数内):只能在局部使用(在函数内部使用)
def funa():
a = 1
print(第一次的值:%s % a)
a = 2
print(第二次的值:%s % a)
funa()
print(a)
2.全局变量: 在函数外
a = 100 # 全局变量
print(id(a))
def funa():
a = 200 # 只是和全局变量同名的局部变量 ----系统默认
print(a)
print(id(a))
funa()
print(a)
3. global : 声明这个变量为全局变量;
应用场景:在函数内部,想去修改全局变量的值时
a = 100 # 全局变量
def funa():
global a # 声明a为全局变量
a = 200
print(a)
funa()
print(a)
拓展
可变对象:内容可以改变,但是地址不变 ----- 可以不声明
lst = [1, 2, 3, 4, 5] # 全局变量
def func():
lst[0] = 188
print(lst)
func()
4.nonlocal:用来声明外层的局部变量----修改局部变量
在函数嵌套里
a = 10
def funa():
a = 1 # 局部变量
def funb():
nonlocal a # 声明a是外层的局部变量a
print(a) # -- 全局变量
a = 2 # ----局部变量
funb()
funa()
print(a)
二、闭包
num = 1
def fun(step):
global num
num += step
print(num)
fun(3) # 4
fun(3) # 7
fun(3) # 10
结论:每一次调用,num保存了上一次调用的结果
def fun(step):
num = 1
num += step
print(num)
fun(3)
fun(3)
fun(3)
局部变量被销毁了
--- 要保存局部变量,怎么办?----
闭包:能保存局部变量的值
闭包的三个条件,缺一不可
- 1) 函数中嵌套一个函数;
- 2) 内层嵌套函数,对外部作用域有一个非全局变量的引用;
- 3) 外层函数返回值是内层函数的函数名
函数的嵌套
def outer():
n = 10
def inner():
n = 20
print(inner:,n)
print(outer:,n)
inner()
outer()
闭包
def outer(m):
n = 10
def inner():
print(n+m)
return inner
t = outer(2) # 相当于 t = outer(2) = inner
t() # inner()
outer(3)()
def outer(a):
def inner():
nonlocal a
a += 1
print(a)
return inner
outer(2)()
三、拆包
1.元组的拆包
t1 = (1, 2, 3)
i, j, k = t1
print(i)
print(j)
print(k)
print(*t1) # ---直接去掉外壳
t1 = (1, 2, 3)
i,*j = t1
print(i)
print(j) # [2, 3]
列表拆包
lst = [1,2,3]
print(*lst)
以上是关于一入python情似海,从此妹纸是路人的主要内容,如果未能解决你的问题,请参考以下文章