捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >基础知识 > 正文
2 2018.03

Python 模块

点击次数:1322 更新时间:2018/3/2 22:35:10  【打印此页

模块定义

    随着程序越来越庞大,需要分隔成几个文件;也需要能在不同文件中复用函数、类和变量,而不是拷贝代码。为了满足这些需要,Python提供了模块。

    简单来说,模块就是一个保存了Python代码的文件(.py 文件)文件名 就是 模块名 加上  .py 后缀。(这边学习使用Notepad++ 保存的 .py 文件即为模块)

    模块能定义函数,类和变量。模块里也能包含可执行的代码。模块的模块名(作为一个字符串)可以由全局变量 __name __ 得到。

    例如,在当前目录下创建一个名为 fibo.py 的文件,内容如下:

# Fibonacci numbers module

def fib(n):                    # write Fibonacci series up to n
    a = 0
    b = 1
    while b < n:
        print(b, end=' ')        
        b = a + b            
        a = b - a
    print()

    备注:Notepad++ 中可分视图查看,选择移动到另一视图,查看下方截图

    新建一 .py 文件,如 module.py( 与 fibo.py 同一目录),引用 fibo  import fibo ,执行 fibo下的 fib 函数  fibo.fib(1000)  (即输出1000 内的 fibonacci数列),参见下方截图

 

  导入模块

    模块需要导入,通过上方的例子以及之前的章节,已经接触到 import 的语句,现在具体来说明下模块的导入。

    import modulename1 [, modulename2[,... modulenameN]  可通过 import 语句导入一个或多个模块,模块导入命令通常放在脚本顶端。

    参考上例,  import fibo 该命令不会直接把fibo中的函数导入当前,只是引入了模块名fibo,可通过模块名来访问函数  fibo.fib(1000) 

    可在代码中定义变量来反复使用该函数,如:

fib = fibo.fib        # 新建函数变量
fib(20)
fib(100)

    from modname import name1[, name2[, ... nameN]]  从模块中导入一个或多个指定的部分到当前命名空间中

    在 fibo.py 新增一个函数,代码如下:

def fib_l(n):            # return Fibonacci series up to n
    result = []
    a = 0
    b = 1
    while b < n:
        result.append(b)        
        b = a + b            
        a = b - a
    return result

    通过  from fibo import fib_l  导入 fibo 中的指定部分 fib_l,这样不会导入模块名 fibo

     from modname import *   导入模块中的所有定义(除了以下划线_命名的),这种声明不该被过多地使用。

 

  定位模块

    当你导入一个模块,Python解析器对模块位置的搜索顺序是:

      1. 当前目录

      2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录

      3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/

    模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

 

  dir() 函数

    内置函数 dir() 用于按模块名搜索模块定义,返回一个字符串类型的存储列表;无参数调用时,dir() 函数返回当前定义的命名。

    该列表列出了所有类型的名称:变量、模块、函数 等等;dir() 不会列出内置函数和变量名,这些在 __builtin__ 中定义

 

   if __name__ = '__main__'

    这边重点说下  if __name__ = '__main__':   代码的作用。我们经常会在代码的最下面看到类似代码段,原因在于我们import 模块时,会执行.py文件,但若希望仅在非import情况下执行的代码,该如何实现呢?

    判断 .py 文件的 __name__ 属性是否是 "__main__" 即可实现,原理如下:

        直接运行.py文件, 则__name__的值是'__main__';

        而在import 一个.py文件后,__name__的值就不是'__main__'了;

        从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件

     这边可做如下实验,查看运行效果,示例代码如下:

if __name__ == '__main__':
    print('This program is being run by itself')
else:
    print('I am being imported from another module')

    保存为using_name.py;分别查看直接运行该 using_name.py 及import该模块的差别,输出如下:

Output:
$ python using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another module
>>>

 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1322 更新时间:2018/3/2 22:35:10  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修