温馨提示: 豌豆仅提供国内节点,不提供境外节点,不能用于任何非法用途,不能访问境外网站及跨境联网。

批量获取IP

python作用域

发布时间:

块级作用域??

if 1 == 1:
    name = "lzl"
 
print(name)
 
 
for i in range(10):
    age = i
 
print(age)
lzl
9

java中是不可以执行成功的但是在python中可以执行成功,,这是因为在Python中是没有块级作用域的,代码块里的变量,外部可以调用,所以可运行成功;

函数局部作用域

def  func():
    name = "zxt"
 
print(name)

name 'name' is not defined

name变量只在func()函数内部中生效,所以在全局中是没法调用的;

作用域误区

name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    f1()
 
f2()
lzl

我们都知道,Python中有作用域链,变量会由内到外找,先去自己作用域去找,自己没有再去上级去找,直到找不到报错
类似于下面的规则

#作用域链
 
name = "lzl"
def f1():
    name = "Eric"
    def f2():
        name = "Snor"
        print(name)
    f2()
f1()

我们再看一个代码

 
name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    return f1
 
ret = f2()
ret()
lzl

f2()执行结果为函数f1的内存地址,即ret=f1;执行ret()等同于执行f1(),执行f1()时与f2()没有任何关系.

静态作用域

i = 1

def g():
    a = i
    a = a + 3
    print(i,a)
    
g()
1

发现i可以找到全局变量
但是

i = 1

def g():
    i = i + 1
    a = a + 3
    print(i,a)
    
g()
local variable 'i' referenced before assignment

无法找到全局的i,原因是Python是静态作用域(词法作用域),因此在编译阶段,就决定了变量的读取方式。

相关文章


【10月11日Python公开课】python图形界面(GUI)编程--门脸tkinter 大数据实时查询-Presto集群部署搭建 微信自动发消息只需25行python代码,那些说Python弱小的给个理由 给Python初学者的文件读写指南(含基础与进阶,建议收藏) 免费爬虫软件:后羿采集器如何免费采集淘宝商品信息数据 【Python爬虫】表弟用Python爬下今日头条上万美女照片,玩的不亦乐乎! 一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜! 日常用Python来监控女神的QQ空间!就算她把我屏蔽了,也无法阻止我!

上一篇:奇葩思路获取各大平台Vip资源,思维决定python爬虫的应用高度!
下一篇:免费网页爬虫:如何使用后羿采集器免费采集企查查企业信息

咨询·合作