⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000005.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
><I>&gt;&gt;&nbsp;dir(fibo)&nbsp;</I><BR>['__name__',&nbsp;'fib',&nbsp;'fib2']&nbsp;<BR>><I>&gt;&gt;&nbsp;dir(sys)&nbsp;</I><BR>['__name__',&nbsp;'argv',&nbsp;'builtin_module_names',&nbsp;'copyright',&nbsp;'exit',&nbsp;<BR>'maxint',&nbsp;'modules',&nbsp;'path',&nbsp;'ps1',&nbsp;'ps2',&nbsp;'setprofile',&nbsp;'settrace',&nbsp;<BR>'stderr',&nbsp;'stdin',&nbsp;'stdout',&nbsp;'version']&nbsp;<BR>没有自变量时,dir()列出当前定义的名字。&nbsp;<BR>><I>&gt;&gt;&nbsp;a&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5]&nbsp;</I><BR>><I>&gt;&gt;&nbsp;import&nbsp;fibo,&nbsp;sys&nbsp;</I><BR>><I>&gt;&gt;&nbsp;fib&nbsp;=&nbsp;fibo.fib&nbsp;</I><BR>><I>&gt;&gt;&nbsp;dir()&nbsp;</I><BR>['__name__',&nbsp;'a',&nbsp;'fib',&nbsp;'fibo',&nbsp;'sys']&nbsp;<BR>注意dir()列出了所有各类名字:变量名、模块名、函数名,等等。dir()不会列出内置&nbsp;<BR>函数、变量的名字。要想列出内置名字的话需要使用标准模块__builtin__:&nbsp;<BR>><I>&gt;&gt;&nbsp;import&nbsp;__builtin__&nbsp;</I><BR>><I>&gt;&gt;&nbsp;dir(__builtin__)&nbsp;</I><BR>['AccessError',&nbsp;'AttributeError',&nbsp;'ConflictError',&nbsp;'EOFError',&nbsp;'IOError',&nbsp;<BR>'ImportError',&nbsp;'IndexError',&nbsp;'KeyError',&nbsp;'KeyboardInterrupt',&nbsp;<BR>'MemoryError',&nbsp;'NameError',&nbsp;'None',&nbsp;'OverflowError',&nbsp;'RuntimeError',&nbsp;<BR>'SyntaxError',&nbsp;'SystemError',&nbsp;'SystemExit',&nbsp;'TypeError',&nbsp;'ValueError',&nbsp;<BR>'ZeroDivisionError',&nbsp;'__name__',&nbsp;'abs',&nbsp;'apply',&nbsp;'chr',&nbsp;'cmp',&nbsp;'coerce',&nbsp;<BR>'compile',&nbsp;'dir',&nbsp;'divmod',&nbsp;'eval',&nbsp;'execfile',&nbsp;'filter',&nbsp;'float',&nbsp;<BR>'getattr',&nbsp;'hasattr',&nbsp;'hash',&nbsp;'hex',&nbsp;'id',&nbsp;'input',&nbsp;'int',&nbsp;'len',&nbsp;'long',&nbsp;<BR>'map',&nbsp;'max',&nbsp;'min',&nbsp;'oct',&nbsp;'open',&nbsp;'ord',&nbsp;'pow',&nbsp;'range',&nbsp;'raw_input',&nbsp;<BR>'reduce',&nbsp;'reload',&nbsp;'repr',&nbsp;'round',&nbsp;'setattr',&nbsp;'str',&nbsp;'type',&nbsp;'xrange']&nbsp;<BR>6.4&nbsp;包&nbsp;<BR>Python中可以用“包”来组织Python的模块名字空间,名字引用时可以用“带点的模块&nbsp;<BR>名。例如,模块名A.B代表包“A”内名为“B”的子模块。正如使用模块可以使不同模块&nbsp;<BR>的作者不用顾虑彼此的全局变量名会冲突,使用带点的模块名可以使多模块包如NumPy和&nbsp;<BR>PIL的作者不需要担心彼此的模块名会冲突。&nbsp;<BR>假设你有一系列处理声音文件和声音数据的模块(称为一个“包”)。有许多种不同的&nbsp;<BR>声音文件格式(通常用扩展名来识别,如“wav”,“.aiff”,“.au”),所以你可能&nbsp;<BR>需要制作并维护一组不断增加的模块来处理不同文件格式的转换。你还可能需要对声音&nbsp;<BR>数据进行许多不同的操作(如混音、回响、均衡、产生模拟立体声效果),所以你还需&nbsp;<BR>要不断增加模块来执行这些操作。一下是你的程序包的可能的结构(用一个分层文件系&nbsp;<BR>统表示):&nbsp;<BR> &nbsp;<BR>Sound/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顶层包&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__init__.py&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;初始化音响包&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Formats/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用于文件格式转换的子程序包&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__init__.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wavread.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wavwrite.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aiffread.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aiffwrite.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auread.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auwrite.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Effects/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用于音响效果的子程序包&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__init__.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surround.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reverse.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Filters/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用于滤波的子程序包&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__init__.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equalizer.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vocoder.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;karaoke.py&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR> &nbsp;<BR>包目录中的“__init__.py”文件是必须得,用来指示Python把这个目录看成包,这可以&nbsp;<BR>防止有相同名字如“string”的子目录掩盖住在搜索路径后面一些出现的模块定义。在&nbsp;<BR>最简单的情况下,“__init__.py”可以是一个空文件,它也可以包含初始化包所需的代&nbsp;<BR>码,和设置“__all__”变量,这些后面会加以讨论。&nbsp;<BR>包的用户可以从包中导入单独的模块,如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;Sound.Effects.echo&nbsp;<BR>这可以把子模块Sound.Effects.echo导入。要引用它也必须用全名,例如:&nbsp;<BR>Sound.Effects.echo.echofilter(input,&nbsp;output,&nbsp;delay=0.7,&nbsp;atten=4)&nbsp;<BR>导入子模块的另一种办法是:&nbsp;<BR>from&nbsp;Sound.Effects&nbsp;import&nbsp;echo&nbsp;<BR>这同样也导入子模块echo,但调用时不需写包前缀,所以可以用如:&nbsp;<BR>echo.echofilter(input,&nbsp;output,&nbsp;delay=0.7,&nbsp;atten=4)&nbsp;<BR>另外一种写法是直接导入所需的函数或变量:&nbsp;<BR>from&nbsp;Sound.Effects.echo&nbsp;import&nbsp;echofilter&nbsp;<BR>这一次同样是调入了子模块echo,但是使其函数echofilter直接可用:&nbsp;<BR>echofilter(input,&nbsp;output,&nbsp;delay=0.7,&nbsp;atten=4)&nbsp;<BR>注意使用“from&nbsp;包&nbsp;import&nbsp;项”这样的格式时,导入的项可以是包的一个子模块(或子&nbsp;<BR>包),也可以是包内定义的其它名字如函数、类、变量。导入语句首先查找包内是否定&nbsp;<BR>义了所需的项,如果没有则假设它是一个模块然后调入。如果找不到,结果引起Import&nbsp;<BR>Error。&nbsp;<BR>相反的,当使用“import&nbsp;item.subitem.subsubitem”这样的格式时,除最后一个外其&nbsp;<BR>它各项都应该是包,最后一项可以是包也可以是模块,不允许是前面一项内部定义的类&nbsp;<BR>、函数或变量。&nbsp;<BR>6.4.1&nbsp;从包中导入*&nbsp;<BR>现在,如果用户写“from&nbsp;Sound.Effects&nbsp;import&nbsp;*”会发生什么情况?理想情况下我们&nbsp;<BR>希望这应该扫描文件系统,找到所有包内的子模块并把它们都导入进来。不幸的是这种&nbsp;<BR>操作在Mac和Windows平台上不能准确实现,这两种操作系统对文件名的大小写没有准确&nbsp;<BR>信息。在这些平台上,不知道名为“ECHO.PY”的文件会作为模块echo、Echo还是ECHO被&nbsp;<BR>导入。(例如,Windows&nbsp;95在显示文件名时总是讨厌地把第一个字母大写)。DOS的8+&nbsp;<BR>3文件名限制更是对长模块名造成了有趣的困难。&nbsp;<BR>这个问题的唯一解决办法是由模块作者显式地提供包的索引。引入*的import语句遵循如&nbsp;<BR>下规定:如果包的“__init__.py”文件定义了一个名为“__all__”的列表,这个列表&nbsp;<BR>就作为从包内导入*时要导入的所有模块的名字表。因此当包的新版本发布时需要包的作&nbsp;<BR>者确保这个列表是最新的。包的作者如果认为不需要导入*的话也可以不支持这种用法。&nbsp;<BR>例如,文件Sounds/Effects/__init__.py&nbsp;可以包含如下代码:&nbsp;<BR> &nbsp;<BR>__all__&nbsp;=&nbsp;[&quot;echo&quot;,&nbsp;&quot;surround&quot;,&nbsp;&quot;reverse&quot;]&nbsp;<BR>这意味着from&nbsp;Sound.Effects&nbsp;import&nbsp;*将从Sound包中导入指定的三个子包。 &nbsp;<BR>如果没有定义__all__,则from&nbsp;Sound.Effects&nbsp;import&nbsp;*语句不会导入Sound.Effects包&nbsp;<BR>中的所有子模块;此语句只能保证Sound.Effects被导入(可能是执行其初始化代码“_&nbsp;<BR>_init__.py&nbsp;”)并导入包中直接定义的名字。这包括由“__init__.py”定义的任何名&nbsp;<BR>字和显式导入的子模块名。这也包括模块中已经在前面用import显式地导入的子模块,&nbsp;<BR>例如:&nbsp;<BR> &nbsp;<BR>import&nbsp;Sound.Effects.echo&nbsp;<BR>import&nbsp;Sound.Effects.surround&nbsp;<BR>from&nbsp;Sound.Effects&nbsp;import&nbsp;*&nbsp;<BR> &nbsp;<BR>在这个例子中,echo和surround模块被导入当前名字空间,因为它们在执行from...imp&nbsp;<BR>ort&nbsp;语句时已定义(在定义了__all__的情况下这一点也是成立的)。&nbsp;<BR>注意用户应尽量避免使用从模块或包中导入*的做法,因为这样经常导致可读性差的代码&nbsp;<BR>。尽管如此,在交互运行时可以用导入*的办法节省敲键次数,而且有些模块在设计时就&nbsp;<BR>考虑到了这个问题,它们只输出遵循某种约定的名字。注意,from&nbsp;包&nbsp;import&nbsp;特定子模&nbsp;<BR>块的用法并没有错,实际上这还是我们推荐的用法,除非程序还需要用到来自其它包的&nbsp;<BR>同名的子模块。&nbsp;<BR>6.4.2&nbsp;包内部引用&nbsp;<BR>子模块常常需要彼此引用。例如,模块surround可能要用到模块echo。事实上,这样的&nbsp;<BR>引用十分常见,所以import语句首先从子模块的所在包中寻找要导入的子模块才在标准&nbsp;<BR>模块搜索路径查找。所以,模块surround只要写import&nbsp;echo或from&nbsp;echo&nbsp;import&nbsp;echo&nbsp;<BR>filter。如果在包含本模块的包中没有找到要导入的模块,import语句将去寻找指定名&nbsp;<BR>字的顶级模块。&nbsp;<BR>当包组织成子包时(比如例中的Sound包),没有一种简单的办法可以引用兄弟包中的子&nbsp;<BR>模块――必须使用子模块的全名。例如,如果模块Sound.Filters.vocoder要引用Sound&nbsp;<BR>.Effects&nbsp;包中的echo模块,它可以用Sound.Effects&nbsp;import&nbsp;echo。&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;162.105.17.22]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -