模块和包知识点总结

#一、模块的概念
# 可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,
# 并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。

#二、import导入模块和from 模块名 import 函数
# 1.import 模块名1 [as 别名1], 模块名2 [as 别名2],…:
#   使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。
#   不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

# 例1.直接导入模块
import sys
print(sys.argv[0])

# 例2.为模块指定别名
import sys as a
print(a.argv[0])

# 例3.一次导入多个模块
import sys,os
print(sys.argv[0])
print(os.sep)

# 例4.一次导入多个模块,并为每个模块指定别名
import sys as  a,os as b
print(a.argv[0])
print(b.sep)


# 2、from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…:
#   使用这种语法格式的import语句,只会导入模块中指定的成员,而不是全部成员。
#   同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。
#   注意,用[]括起来的部分,可以使用,也可以省略。

# 例1. from sys import argv
from sys import argv
print(argv[0])

# 三、自定义模块
# 可以借助 Python 内置的 __name__ 变量。
# 当直接运行一个模块时,name 变量的值为 __main__;
# 而将模块被导入其他程序中并运行该程序时,处于模块中的 __name__ 变量的值就变成了模块名。
# ###因此,如果希望测试函数只有在直接运行模块文件时才执行,则可在调用测试函数时增加判断,
#    即只有当 __name__ =='__main__' 时才调用测试函数。

# 例.我们之前创建了模块modele1,那么现在可以导入该模块
import module1 as m
m.say_hello("Li Lili")
print(m.__doc__)

# 四、解决“Python找不到指定模块”的方法有 3 种,分别是:
# 1.向sys.path中临时添加模块文件存储位置的完整路径;
# 2.将模块放在sys.path变量中已包含的模块加载路径中;
# 3.设置path系统环境变量。


# 五、事实上,当我们向文件导入某个模块时,
# 1、导入的是该模块中那些名称不以下划线(单下划线“_”或者双下划线“__”)开头的变量、函数和类。
#    因此,如果我们不想模块文件中的某个成员被引入到其它文件中使用,可以在其名称前添加下划线。
# 2、除此之外,还可以借助模块提供的 __all__ 变量,
#    该变量的值是一个列表,存储的是当前模块中一些成员(变量、函数或者类)的名称。
#    通过在模块文件中设置 __all__ 变量,当其它文件以“from 模块名 import *”的形式导入该模块时,
#    该文件中只能使用 __all__ 列表中指定的成员。
#    也就是说,只有以“from 模块名 import *”形式导入的模块,当该模块设有 __all__ 变量时,
#    只能导入该变量指定的成员,未指定的成员是无法导入的。


# 六、Python包:一个包含多个模块的文件夹,其本质依然是模块,因此包中也可以包含包。
#              更确切的说,包是一个包含“__init__.py”文件的文件夹。。
#     Python库:相比模块和包,库是一个更大的概念,例如在 Python 标准库中的每个库都有好多个包,
#               而每个包中都有若干个模块。
#    包的创建
#    1、新建一个文件夹,文件夹的名称就是新建包的包名;
#    2、在该文件夹中,创建一个 __init__.py 文件(前后各有 2 个下划线‘_’),
#       该文件中可以不编写任何代码。当然,也可以编写一些 Python 初始化代码,
#       则当有其它程序文件导入包时,会自动执行该文件中的代码
#    包的导入
#    1、import 包名[.模块名 [as 别名]]
#    2、from 包名 import 模块名 [as 别名]
#    3、from 包名.模块名 import 成员名 [as 别名]
#    注意:用 [] 括起来的部分,是可选部分,即可以使用,也可以直接忽略。


# 七.模块的说明文档查看
#  1、查看模块的说明文档可以使用:(1)help(模块名.模块成员名)。(2)也可以使用print(模块名.模块成员名.__doc__)查看
#     当指定模块(或包)没有说明文档时,仅通过 help() 函数或者 __doc__ 属性,无法有效帮助我们理解该模块(包)的具体功能。
#     在这种情况下,我们可以通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置,直接查看其源代码。
#     注意:并不是所有模块都提供 __file__ 属性,因为并不是所有模块的实现都采用 Python 语言,
#     如有某些模块采用的是其它编程语言(如C语言)。
#  2、查看模块中的所有属性和方法可以使用:(1)__all__查看,如print(模块名.__all__);(2)还可以使用:print(dir(模块名))
#     通过 dir() 函数获取到的模块成员,不仅包含供外部文件使用的成员,还包含很多“特殊”(名称以 2 个下划线开头和结束)的成员,
#     和 dir() 函数相比,__all__ 变量在查看指定模块成员时,它不会显示模块中的特殊成员,同时还会根据成员的名称进行排序显示。
#     注意:但是并不是所有的模块都能使用__all__查看所有模块方法和属性





 

你可能感兴趣的:(Python,Python)