Python基础
hanlray@gmail.comRevision: 0.03 Date: 2006/05/04
- 对于data attribute,local variable,当它们第一次被赋值时才存在
class MSVCCompiler : def __init__(self): self.initialized = False def initialize(self): self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX', '/DNDEBUG'] self.initialized = True如果这样调用:compiler = MSVCCompiler() compiler.compile_options.extend()
你会得到AttributeError: MSVCCompiler instance has no attribute 'compile_options' 因为此时compile_options还未被赋值,故还不存在,而当调用了initialize后就不会有这样的问题了。 - import用法
有package如下:Sound/ __init__.py Formats/ __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... Effects/ __init__.py echo.py surround.py reverse.py ... Filters/ __init__.py equalizer.py vocoder.py karaoke.py ...- import Sound.Effects.echo
假如echo中有函数echofilter,则通过Sound.Effects.echo.echofilter来引用 - from Sound.Effects import echo
此时要引用echofilter函数,通过echo.echofilter即可。 - from Sound.Effects.echo import echofilter
此时可直接引用echofilter,可用import *来一次引入echo中的所有定义 - import Sound.Effects
引入Effects package,如果在该package中定义了foo函数(通过Sound/Effects/__init__.py),则可通过Sound.Effects.foo来引用,但是不能引用该package的下层元素(包括module和subpackage),比如Sound.Effects.echo,python不支持从package到下层的引用 - from Sound import Effects
同上,要引用Effects里的名字不用加Sound的限定 - 不能直接引入module、pakcage中定义的名字
如在Sound/__init__.py中定义了foo函数,则import Sound.foo是不合法的;同理import Sound.Effects.echo.echofilter也是不对的;应该通过from来引入这些定义
由此可见,import的语法是相当灵活的,它可以引入package、module、module中的定义、以及package中的定义,无论在哪种情况下都是把import后跟的名字引入到当前符号表中,如引入的是module/package则必须通过该名字来引用其中定义的名字(函数、类或变量),不管该名字是module/package的限定名(名字中包含其所在的package名)还是非限定名(通过from语句可以写非限定名)。
- import Sound.Effects.echo
- Python's Search Path
python变量sys.path的值是一系列目录,python在这些目录下搜索from...import语句里的package和module;运行时可以很容易改变该变量的值,但是其初始值是由什么决定的呢?interpreter本身有个缺省值,这是在安装后就确定的了,在Linux下一般是:>>> sys.path ['', '/usr/local/lib/python2.3', '/usr/local/lib/python2.3/plat-linux2', '/usr/local/lib/python2.3/lib-tk', '/usr/local/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages'] >>>
然后python还会在这些目录下搜索.pth文件,把这些文件里指定的目录也加进sys.path。
4119

被折叠的 条评论
为什么被折叠?



