• Python学习 Part4:模块


    1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用。模块中的定义可以被导入到其他模块或者main模块。

    模块就是一个包含Python定义和语句的文件。文件名就是添加了.py扩展名的模块名。

     在当前目录下建立一个包含以下内容的fibo.py文件:

    ef fib(n):
        a,b=0,1
        while b<n:
            print(b,end=' ')
            a,b=b,a+b
        print()
    
    def fib2(n):
        result=[]
        a,b=0,1
        while b<n:
            result.append(b)
            a,b=b,a+b
        return result

    然后利用import fibo命令导入这个模块,便可直接引入fibo中定义的函数名

    >>> import fibo
    >>> fibo.fib(100)
    1 1 2 3 5 8 13 21 34 55 89 
    >>> 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 
    >>> 


    2. 深入Python模块

    除了包含函数定义以外,模块也可以包含可执行语句,这些语句一般用来初始化模块,他们仅在第一次被导入的地方执行一次。

    每个模块都有自己私有的符号表,被模块内所有的函数定义作为全局符号表使用。

    还有一种import语句的变体,可以从一个模块中将名字直接导入到当前模块的符号表中,但是这种方式不会把操作的模块名引入到当前符号表中

    >>> from fibo import fib,fib2
    >>> fib(400)
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 
    >>> 

    更进一步,还有一种导入模块中定义的所有名称的变体(这会导入那些除了以下划线开头的名称):

    >>> from fibo import *
    >>> fib(500)
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 
    >>> 

    注意:在一个解释器会话中每个模块仅被导入一次,所以,如果修改了模块,必须重启解释器-或者如果只是一个想要交互测试的模块,使用import.reload()方法。例如:

    >>> import imp
    >>> imp.reload(modulename)

    2.1 模块的搜索路径
    当一个名spam的模块被导入时,解释器首先会在当前目录搜索一个名为spam.py的文件,然后是在环境变量PYTHONPATH中定义的目录列表。如果没有定义PYTHONPATH,或者按照里面的路径没有找到文件,解释器会继续在Python默认安装路径中搜索。

    实际上,模块都是在变量sys.path定义的目录列表中查找:

    >>> import sys
    >>> sys.path
    ['', 'C:\Python33\Lib\idlelib', 'C:\Windows\system32\python33.zip', 'C:\Python33\DLLs', 'C:\Python33\lib', 'C:\Python33', 'C:\Python33\lib\site-packages']

    在每个Python解释器中,变量sys.ps1和sys.ps2分别定义了主提示符和次提示符使用的字符串(仅在Python命令行有效,在Python IDLE 中无效)

    >>> import sys
    >>> sys.ps1
    '>>> '
    >>> sys.ps2
    '... '
    >>> sys.ps1='>:'
    >:print('Yuck!')
    Yuck!
    >:
  • 相关阅读:
    简明 Vim 练级攻略
    设置命令的别名
    GPIO实验(二)
    GPIO实验(一)
    ubuntu文件夹默认列表显示
    ubuntu 12.04下gedit查看txt中文乱码解决办法
    ubuntu下超强的截图工具scrot
    原码 反码 补码 移码的关系(精简总结)
    内核编译
    [Linux] shell利用sed如何批量更改文件名详解[转载] | 不使用正则表达式,修改未知的文件名|
  • 原文地址:https://www.cnblogs.com/LilianChen/p/3376045.html
Copyright © 2020-2023  润新知