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!
    >:
  • 相关阅读:
    SpringIoC和SpringMVC的快速入门
    Swoole引擎原理的快速入门干货
    Windowns 10打开此电脑缓慢问题的一种解决办法
    CentOS下使用Postfix + Dovecot + Dnsmasq搭建极简局域网邮件系统
    CentOS7.2 创建本地YUM源和局域网YUM源
    CentOS 7.2 安装配置Samba服务器
    Zookeeper 日志输出到指定文件夹
    MySQL索引优化-from 高性能MYSQL
    Transaction事务注解和DynamicDataSource动态数据源切换问题解决
    Redis使用经验之谈
  • 原文地址:https://www.cnblogs.com/LilianChen/p/3376045.html
Copyright © 2011-2022 走看看