zoukankan      html  css  js  c++  java
  • 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!
    >:
    复制代码
  • 相关阅读:
    C#知识点总结系列:5、CLR的组成和运转
    SQL知识整理三:变量、全局变量、视图、事务、异常
    SQL知识整理二:锁、游标、索引
    SQL知识整理一:触发器、存储过程、表变量、临时表
    TFS二次开发系列:六、TFS的版本控制
    TFS二次开发系列:五、工作项查询
    TFS二次开发系列:四、TFS二次开发WorkItem添加和修改、保存
    TFS二次开发系列:三、TFS二次开发的第一个实例
    TFS二次开发系列:二、TFS的安装
    TFS二次开发系列:一、TFS体系结构和概念
  • 原文地址:https://www.cnblogs.com/zhangfeivip/p/8931425.html
Copyright © 2011-2022 走看看