方式一import 模块名importmathimport 模块名 as 模块别名importmy_math_moduleasmm优点此时模块中的成员重名没问题因为前面有模块名.进行区分。 缺点使用所有成员必须 模块名.成员 有点长麻烦方式二from 模块 import 成员frommy_math_moduleimportadd,subtract,divide,_remainderfrom 模块 import 成员 as 成员别名frommy_math_moduleimportmultiplyasmath_mul提示 import后面是什么就直接用什么 1import后面是模块名那么就用模块名.xx 2import后面是模块中的成员那么就用 xx不需要再加模块名. 优点灵活控制想用哪个成员就列出哪个成员 缺点如果用到的成员多需要列很多成员方式三from 模块名 import *frommy_math_moduleimport*如果使用这种方式该模块中的私有成员默认不会导入。 如果需要使用这个私有成员需要单独再用方式二导入。 如果2个模块有重名的成员也是需要单独再用方式二导入。 优点*简洁 缺点私有无法直接导入有重名的仍然要用方式二解决方式四# 导入模块中__all__[add,subtract,multiply]可以在被导入模块中加一个变量 __all__ 由它定义当前模块的哪些成员其他模块可以通过 import * 导入。 此时如果其他模块使用方式二单独导入__all__ 中没有列出的成员 语法上也允许不会报错但是有警告。 意思是 __all__ 列出的成员才是“公开”的成员。 优点被导入模块对自己的成员哪些需要公开可控。 缺点使用者需要提前了解__all__ 变量中定义了哪些公开成员