python 变量作用域

1. 作用域的产生

就作用域而言,Python与C有着很大的区别,在Python中并不是所有的语句块中都会产生作用域。只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。看下面的代码:

def func():
    variable = 100
    print(variable)
print(variable)

代码的输出为:

NameError: name 'variable' is not defined

在作用域中定义的变量,一般只在作用域中有效。 需要注意的是:在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域看下面的代码:

if True:
    variable = 100
    print(variable)
print(/******/)
print(variable)

代码的输出为:

100
******
100

所以,可以看到,虽然是在if语句中定义的variable变量,但是在if语句外部仍然能够使用。

 

Python 的名称空间包括:

内置名称空间,例如,内置名称空间包含 Python 的内置函数,如,abs()
模块名称空间,全局名称空间,在模块内定义的名称
局部名称空间,例如,在函数(function)或者类(class)被调用时,其内部包含的名称


不同的名称空间内的名称不会相互冲突,即是它们采用相同的名称。这也正是名称空间的作用。

内置名称空间在 Python 解释器启动时就创建了,直到 Python 解释器退出时内置名称空间才失效。这使得我们可以在程序的任何位置使用内置名称空间内的名称,例如,id(),print()等函数。 
模块名称空间当模块被引用时创建,直到 Python 解释器退出时模块名称空间才失效。 
函数名称空间在函数被调用时创建,函数返回后失效。
 

t = 1
b = 0
def func():
    variable = 300
    t = variable


def func1():
    variable = 400
    b = variable

print(t, b)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值