|
Size: 1315
Comment:
|
Size: 2523
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 9: | Line 9: |
| ======== | |
| Line 13: | Line 13: |
| 附件 |contribute_docs| | 模块 ===== 为什么有module? 首先,你用Python实现的一些功能(python代码)可以保存为py文件,否则离开了Python解释器,就丢失了这些功能; 其次对于较大程序可以用文本编辑器开发,再Python将其作为输入来运行,而且某些些程序你可以拆分为多个较小py文件,便于维护。 最后,你想复用这些功能时只需要import它们,而不需要重复拷贝代码。 这些就module的功能,可以认为一个py文件就是一个module。 一个module是一个包含了Python代码的文件,文件的名称就是module名称加上py后缀。举例来说:fibo.py <pre> # Fibonacci numbers module |
| Line 15: | Line 24: |
| .. |contribute_docs| image:: 1.0/RoughDocs/contribute_docs.jpg | def fib(n): # write Fibonacci series up to n a, b = 0, 1 while b < n: print b, a, b = b, a+b |
| Line 17: | Line 30: |
| 脚注 [#]_ | def fib2(n): # return Fibonacci series up to n result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result </pre> 在Python解释器中 使用import fibo导入fibo module 和 使用fibo.fib(1000)来调用函数,也可以用fib = fibo.fib 将module函数赋值到本地函数。 <pre> >>> import fibo >>> fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' >>> fib = fibo.fib >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 </pre> |
| Line 19: | Line 53: |
| 二级标题.1 -------------------- |
搜寻module的路径 ===== 当你import spam,python解释器现在当前目录下搜寻spam.py,如果没有找到,会依次在$PYTHONPATH指示的所有路径中搜寻。$PYTHONPATH的设定方法与$PATH是一样的,即多个目录路径的字符串。事实上,module的搜寻路径是依照sys.path变量(多个路径组成的list变量)。当Python解释器启动时,会将当前目录、$PYTHONPATH、以及按照安装时设定的一些目录加入到sys.path中。如果你有把握,可以修改这些参数来该表搜寻module的路径。 |
| Line 22: | Line 57: |
| 三级标题.1.1 ```````````````````` 二级标题.2 -------------------- 三级标题.2.1 ```````````````````` 小结 =============================== 练习 -------------------- 引用:: This is the main heading ======================== :Status: Draft MoinMoin 链接: - `page with a ReStructuredText primer <HelpOnParsers/ReStructuredText/RstPrimer>`_ - `use of ReST in MoinMoin <HelpOnParsers/ReStructuredText>`_. 外部链接: - `Docutils-Users mailing list`_ - `Docutils project web site`_ .. [#] If that relative link doesn't work, try the master document: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html. .. _Docutils-Users mailing list: http://lists.sourceforge.net/lists/listinfo/docutils-users .. _Docutils project web site: http://docutils.sourceforge.net/ |
Packages ===== Package是一种采用"."组织module 命令空间的方式。比如module名称A.B表示是表示A package中的module B。这种命名空间的组织方式能够避免不同module命令的冲突。 |
:status: 草稿|校对|正式;HuangYi;完成度1%;
.. contents::
:depth: 3
========
模块与包
========
模块
=====
为什么有module?
首先,你用Python实现的一些功能(python代码)可以保存为py文件,否则离开了Python解释器,就丢失了这些功能;
其次对于较大程序可以用文本编辑器开发,再Python将其作为输入来运行,而且某些些程序你可以拆分为多个较小py文件,便于维护。
最后,你想复用这些功能时只需要import它们,而不需要重复拷贝代码。
这些就module的功能,可以认为一个py文件就是一个module。
一个module是一个包含了Python代码的文件,文件的名称就是module名称加上py后缀。举例来说:fibo.py
<pre>
# Fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
</pre>
在Python解释器中
使用import fibo导入fibo module 和 使用fibo.fib(1000)来调用函数,也可以用fib = fibo.fib 将module函数赋值到本地函数。
<pre>
>>> import fibo
>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
</pre>
搜寻module的路径
=====
当你import spam,python解释器现在当前目录下搜寻spam.py,如果没有找到,会依次在$PYTHONPATH指示的所有路径中搜寻。$PYTHONPATH的设定方法与$PATH是一样的,即多个目录路径的字符串。事实上,module的搜寻路径是依照sys.path变量(多个路径组成的list变量)。当Python解释器启动时,会将当前目录、$PYTHONPATH、以及按照安装时设定的一些目录加入到sys.path中。如果你有把握,可以修改这些参数来该表搜寻module的路径。
Packages
=====
Package是一种采用"."组织module 命令空间的方式。比如module名称A.B表示是表示A package中的module B。这种命名空间的组织方式能够避免不同module命令的冲突。
.. macro:: [[PageComment2(nosmiley=1, notify=1)]]
.. macro:: -- HuangYi [[[DateTime(2007-06-26T05:50:11Z)]]]