关于Python的模块

Python的模块主要是用于把定义的类,函数等保存到一个文件里,以便复用。

先看看怎么声明和使用一个模块:

下面定义了Fibonacci数列的函数,在fib.py文件中。

# 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

在需要调用fib, fib2函数的地方,import上面那个脚本文件,然后就可以调用其中的函数了:

>>> import fib
>>> fib.fib2(10)
[1, 1, 2, 3, 5, 8]
>>> fib.__name__
'fib'

Python是如何搜索一个Module对应的脚本文件的

在上面import语句部分,我们只给出了模块名称,并没有提供脚本文件的路径,那么Python是怎么找到这个文件呢?

Python在处理import语句给出的模块名时,首先在内置的模块中寻找;

如果该模块不是Python自带的内置模块,就在sys.path指定的一系列路径下寻找:

  • 当前路径,比如在linux下,把fib.py保存到home目录,而在home目录执行python,就可以成功地import fib模块;
  • PYTHONPATH环境变量;

Python脚本可以在程序中修改sys.path路径。

举个例子(设置PYTHONPATH环境变量)

travis@travis-ubuntu1310:/usr$ export PYTHONPATH=/home/travis
travis@travis-ubuntu1310:/usr$ 
travis@travis-ubuntu1310:/usr$ python
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import fib
>>> fib.fib2(10)
[1, 1, 2, 3, 5, 8]
>>> 

为啥在可执行Python脚本文件中要加 if __name__ == "__main__":

在Python的模块中,除了包含函数定义等等之外,还可以包含可执行语句,这些语句一般是为了初始化模块用的,并只在首次被import时执行。但它们也能在模块作为脚本文件运行时候执行。显然,我们需要区分这两种情况,这时就需要__name__判断语句。

先在fib.py中加入一行打印语句:

print ‘Executing fib.py’

再次import(或者reload)这个模块时,这句话就被执行,比如:

>>> import fib
Executing fib.py
>>> 

现在编辑fib.py文件,改为如下形式:

# 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

if __name__ == '__main__':
    print 'Executing fib.py'

这时import fib或者(reload(fib)),print 语句就不会执行。

而运行脚本就可以看到print语句执行:

travis@travis-ubuntu1310:/usr$ python ~/fib.py
Executing fib.py











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值