Python的模块
1.0、参考
1.1、导入模块
1.1.1、import <[packageName.]moduleName [as alias]>

导入moduleName模块中的所有符号

可以一次性导入多个模块,多个模块之间用逗号隔开。

示例1:

import os;
os.system('ls');

示例2:

import os as opratingSystem;
opratingSystem.system('ls');

示例3:

import os, sys;
os.system('ls');
print(sys.path);

示例4:

import pkg.moudle;
pkg.moudle.func();

注意Python内置模块优先被导入,我们自己编写Python模块的时候,如果没有放到某个中,就千万不要与Python内置模块名称一样,否则将无法被导入。

1.2.2、from <packageName> import <moduleName [as alias]>...

导入packageName中的模块

可以一次性导入多个模块,多个模块之间用逗号隔开。

示例1:

from pkg import module;
module.func();

示例2:

from pkg import module1, module2, module3;
module1.func();
module2.func();
module3.func();

示例3:

from pkg import *;
module1.func();
module2.func();
module3.func();

moduleName列表可以使用*,表示要导入packageName__init__.py文件中用__all__指定的可以被其他模块模糊导入模块数组。

1.2.3、from <[packageName.]moduleName> import <symbol [as alias]>...

导入moduleName模块中的符号

可以一次性导入多个符号,多个符号之间用逗号隔开。

示例1:

from os import system;
system('ls');

示例2:

from os import system, uname, environ;
system('ls');
uname();
print(environ['PATH']);

示例3:

from os import *;
system('ls');
uname();
print(environ['PATH']);

symbol列表可以使用*,表示要导入moduleName中用__all__指定的可以被其他模块模糊导入symbol数组。

示例4:

from pkg.module import func;
func();
1.2.4、模块的查找规则

1、在import语句所在的源文件所在的文件夹中查找是否有要导入的模块;

2、如果没有找到,就去sys.path数组依次查找。

只要找到一个,就停止寻找,如果没有找到,就抛出错误。

1.3、模块内变量
1.3.1、__all__ = array

当通过from moduleName import *或者from packageName import *语句模糊导入的时候, 根据__all__指定的符号列表或者模块列表进行导入。如果__all__缺失,将会全部导入。

1.3.2、__file__

__file__是一个字符串,由Python解释器在运行的时候设定,表示该模块在文件系统中的路径。

1.3.3、__package__

__package__是一个字符串,由Python解释器在运行的时候设定,表示该模块所在的包名称。

1.3.4、__name__

__name__是一个字符串,由Python解释器在运行的时候设定,表示该模块的名字。

当该模块被通过from moduleName import symbol或者from packageName import moduleName语句导入的时候,__name__被赋值为文件名的前缀;

当该模块Python解释器直接运行的时候,__name__被赋值为__main__字符串。

通常,通过判断此变量的值,来判断是否是由Python解释器直接运行,从而编写不同的逻辑。示例:

import sys;
from pkgA import main;

if __name__ == '__main__':
    sys.exit(main());
1.4、第三方模块

成千上万的个人、组织、公司为Python开发第三方模块。

不过,第三方模块必须以的方式提供, 所以,第三方模块都是存在于某个里的。