Python 名字作用域
因为经常为遗忘,这里记录一下:
* 基本规则-LGB(Local-Global-Builtin),这个很容易理解
x=9
def px1():
print x #会输出9
def px2():
x=8
print x #会输出8, 并且全局的x不会改变
* "编译"时判断域 - 这个比较容易理解错
x=9
def px():
print x #x未定义(因为执行时x还未赋值)
x=8 #编译时决定了x为局部
* from X import Y/*
会将模块x的名字引入当前模块(类似于y=x.y),尽量避免这种用法,大部分情况下应该用import X
* 基本规则-LGB(Local-Global-Builtin),这个很容易理解
x=9
def px1():
print x #会输出9
def px2():
x=8
print x #会输出8, 并且全局的x不会改变
* "编译"时判断域 - 这个比较容易理解错
x=9
def px():
print x #x未定义(因为执行时x还未赋值)
x=8 #编译时决定了x为局部
* from X import Y/*
会将模块x的名字引入当前模块(类似于y=x.y),尽量避免这种用法,大部分情况下应该用import X

0 Comments:
发表评论
<< Home