Python 之包(Package)与模(Module)

来源:互联网 发布:java设计小游戏 编辑:程序博客网 时间:2024/05/29 06:41

1 模块

一个.py文件构成一个模块,模块名就是.py文件名。一个模块是由python定义和声明组成的一个.py文件。模块的文件名保存在全局变量__name__中。

例如,有一个python文件名为fibo.py ,内容如下

</pre><pre style="overflow-x: auto; overflow-y: hidden; padding: 5px; background-color: rgb(238, 255, 204); color: rgb(51, 51, 51); line-height: 15.600000381469727px; border-top-width: 1px; border-bottom-width: 1px; border-style: solid none; border-top-color: rgb(170, 204, 153); border-bottom-color: rgb(170, 204, 153);"><span class="c" style="color: rgb(64, 128, 144); font-style: italic;"> Fibonacci numbers module</span><span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">def</span> <span class="nf" style="color: rgb(6, 40, 126);">fib</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>    <span class="c" style="color: rgb(64, 128, 144); font-style: italic;"># write Fibonacci series up to n</span>    <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="mi" style="color: rgb(32, 128, 80);">0</span><span class="p">,</span> <span class="mi" style="color: rgb(32, 128, 80);">1</span>    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">while</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);"><</span> <span class="n">n</span><span class="p">:</span>        <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">print</span> <span class="n">b</span><span class="p">,</span>        <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o" style="color: rgb(102, 102, 102);">+</span><span class="n">b</span><span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">def</span> <span class="nf" style="color: rgb(6, 40, 126);">fib2</span><span class="p">(</span><span class="n">n</span><span class="p">):</span> <span class="c" style="color: rgb(64, 128, 144); font-style: italic;"># return Fibonacci series up to n</span>    <span class="n">result</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="p">[]</span>    <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="mi" style="color: rgb(32, 128, 80);">0</span><span class="p">,</span> <span class="mi" style="color: rgb(32, 128, 80);">1</span>    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">while</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);"><</span> <span class="n">n</span><span class="p">:</span>        <span class="n">result</span><span class="o" style="color: rgb(102, 102, 102);">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">)</span>        <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o" style="color: rgb(102, 102, 102);">+</span><span class="n">b</span>    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="n">result</span>

现在, 在python交互环境中,引入该module

>>> import fibo
此时,已经引入了fibo.py 模块,通过模块名可以调用模块中定义的函数

>>> 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函数,方便起见,定义fib = fibo.fib

>>> fib = fibo.fib>>> fib(500)1 1 2 3 5 8 13 21 34 55 89 144 233 377
每一个模块都有自己单独的符号表(symbol table),模块中所有的函数都把它作为全局符号表,共用这个符号表。所以不同模块之间不快出现符号冲突。


0 0
原创粉丝点击