python变量作用域包含全局作用域和局部作用_Python作用域_全局作用域_局部作用域...

在Python中,每个函数都会创建一个作用域。Pythonistas也可能称函数拥有它们自己的命名空间(namespace)。这意味着当在函数体里遇到变量名

时,Python首先在该函数的命名空间中查找,Python包含了一些让我们查看命名空间的函数。让我们写一个简单的函数来探查一下local和global作用域

的区别。

Python

# -*- coding: utf-8 -*-

"""

@Time: 2018/1/25

@Author: songhao

@微信公众号: zeropython

@File: namspace.py

"""

a = "This is a global variable"

def fool():

print(locals(),"局部变量")

fool()

print(globals(), "全局变量")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# -*- coding: utf-8 -*-

"""

@Time: 2018/1/25

@Author: songhao

@微信公众号: zeropython

@File: namspace.py

"""

a="This is a global variable"

deffool():

print(locals(),"局部变量")

fool()

print(globals(),"全局变量")

输出结果是:

2018012515565528.jpg

读取 全局作用域:

"""

如果要修改 必须 global a

如果只是简单的读取可以 直接读取

"""

"""

# 修改全局变量

def fool():

print(a)

a = "new a"

print(locals(),"局部变量")

fool()

print(globals(), "全局变量")

# output

Traceback (most recent call last):

File "/Users/songhao/py/TouTiaoShare/装饰器/namspace.py", line 32, in fool()

File "/Users/songhao/py/TouTiaoShare/装饰器/namspace.py", line 28, in fool

print(a)

UnboundLocalError: local variable 'a' referenced before assignment

"""

"""

# 添加global,就可以修改了

def fool():

global a

a = "new_a"

print(a)

print(locals(),"局部变量")

fool()

print(globals(), "全局变量")

"""

# {} 局部变量 因为a不属于 局部变量

# {'__name__': '__main__', '__doc__': '\n@Time: 2018/1/25\n@Author: songhao\n@微信公众号: zeropython\n@File: namspace.py\n', '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/songhao/py/TouTiaoShare/装饰器/namspace.py', '__cached__': None, 'a': 'new_a', 'fool': } 全局变量

"""

变量的生命周期啊

def fool():

x = 1

global x

fool()

print(x)

File "/Users/songhao/py/TouTiaoShare/装饰器/namspace.py", line 62

global x

^

SyntaxError: name 'x' is assigned to before global declaration

"""

2018-05-29-012523.png

2020012309512985.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值