python文件作用域是什么_python作用域

作用域

从空间角度研究函数

全局名称空间: py文件运行时开辟的,存放的是执行的py文件(除去函数内部)的所有的变量与值(地址)的对应关系,整个py文件结束之后,才会消失。

临时(局部)名称空间: 函数执行时,在内存中临时开辟的一个空间,存放的函数中的变量与值的对应关系,随着函数的结束而消失。

内置名称空间:input,print,内置函数等。

取值顺序加载顺序

加载顺序:上面这三个空间,谁先加载到内存。

内置名称空间 ----》 全局名称空间 ----》 (函数执行时)临时名称空间

取值顺序:(就近原则)

作用域

全局作用域:全局名称空间,内置名称空间。

局部作用域:局部名称空间。

关键字:global,nonlocal

# count = 0

#

# def func():

# count += 1

# func()

#报错

# UnboundLocalError: local variable 'count' referenced before assignment

# 解释器认为:如果你在局部作用域对一个变量进行修改了,

# 你在局部作用域已经定义好这个变量了。

global

可以在局部作用域声明一个全局变量。

# 这是剪切

# def func():

#在全局定义一个变量name

# global name

# name = 1

#

# print(globals())

# # print(locals())

# name += 1

# print(globals())

#

#

# func()

# # print(name)

# print(globals())

可以修改全局变量。

# count = 0

#

# def func():

# global count

# count += 1

#

# print(count)

# func()

# print(count)

nonlocal

不能操作全局变量。

可以对父级作用域的变量进行修改,并且在当前作用域创建(复制)一份此变量。

# 这是复制

# def func():

# count = 0

# def inner():

# nonlocal count

# count += 1

# print(count)

# print(locals())

# inner()

# print(locals())

# func()

# UnboundLocalError: local variable 'count' referenced before assignment

# 解释器认为:如果你在局部作用域对一个变量进行修改了,

# 你在局部作用域已经定义好这个变量了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值