python-16:模块 包

Python 模块

模块定义

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

    简单来说,模块就是一个保存了Python代码的文件(.py 文件)文件名 就是 模块名 (modulename)加上  .py 后缀。

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

             函数名,模块名都可看着变量名。

导入模块

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

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

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

             注:import modulename,实质:1、执行modulename.py文件(实质,将此文件代码全部导入);2、引入变量名(modulename,模块名就是变量名),故有,modulename.function()

             注:pagegename,实质是一个文件夹,但包含了一个__init__.py文件,

            注:执行文件和引用文件,一般bin.py是一个程序入口文件,bin.py中的import modulename,modulename.py就是一个引用文件

 

定位模块

    当你导入一个模块,Python解析器对模块位置的搜索顺序是: 通过 import sys  sys.path查看,

      1. 当前目录,(指的是执行文件的当前目录,即执行的那个文件的目录)

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

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

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

             

 运行本质 

 
#1 import test

#2 from test import add 

无论1还是2,首先通过sys.path找到test.py,然后执行test脚本(全部执行),区别是1会将test这个变量名加载到名字空间,而2只会将add这个变量名加载进来。  

import只能导入模块,不能导入模块中的对象(类、函数、变量等)。如一个模块A(A.py)中有个函数getName,另一个模块不能通过import A.getName将getName导入到本模块,只能用import A。如果想只导入特定的类、函数、变量则用from A import getName即可。

调用包实质就是执行包下的__init__.py文件,包之间的引用,用点操作,如:from web.web1.web2 import test

     

if __name__=='__main__':有两层意思:1、在模块中用,是为了模块的测试;2、在主程序(bin.py)中用,是为了防止被其它用户调用自己的主程序

原文地址:https://www.cnblogs.com/Zhouzg-2018/p/9822856.html