星期一, 八月 27, 2007

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

0 Comments:

发表评论

<< Home