Python 模块和包(1)

2024-01-08 08:35:30

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

import用法:

语法:import 模块名 as 别名

使用 Python 源文件,只需在另一个源文件里执行 import 语句。当 Python解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

该方式会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

from 模块名 import 成员名 as 别名

#导入sys模块的argv,winver成员

from sys import argv, winver

from 模块名 import *

#导入sys 棋块内的所有成员

from sys import *

自定义模块:为自定义模块添加说明文档,和函数或类的添加方法相同,即只需在模块开头的位置定义一个字符串即可。

import MyMod1

__name__属性 一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

每个模块都有一个__name__属性,当其值是’main’时,表明该模块自身在运行,否则是被引入

if __name__ == '__main__':
   print('程序自身在运行')
   speak()
else:
   print('我来自另一模块')

__all__变量 模块提供的 all 变量,该变量的值是一个列表,存储的是当前模块中一些成员(变量、函数或者类)的名称。即其他文件只能导入该变量指定的成员,未指定的成员是无法导入的。

注意:all 变量仅限于在其它文件中以“from 模块名 import *”的方式引入。否则该变量是无效的

__all__ = ["speak", "Class1"]

包 包是一个包含多个模块的文件夹,它的本质依然是模块,只不过在该文件夹下存在一个名为“init.py” 的文件

注意:每个包的目录下都必须建立一from 模块名 import *

init.py 的模块,可以是一个空模块,可以写一些初始化代码,其作用就是告诉 Python 要将该目录当成包来处理。

自定义模块:可以通过模板的 doc 属性,来访问模板的说明文档。

包其实本质上还是模块,因此导入模块的语法同样也适用于导入包。

在使用模块中的成员(变量、函数、类)时,需添加“包名.模块名”为前缀。

import 包名[.模块名 [as 别名]]

在使用模块中的成员(变量、函数、类)时,需添加“包名.模块名”为前缀。

import demo.Animal
  demo.Animal.speak()

from 包名 import 模块名 [as 别名]

在使用其成员时不需要带包名前缀,但需要带模块名前缀。

from demo import Animal
Animal.speak()

from 包名.模块名 import 成员名 [as 别名]

```bash
from demo.Animal import Animal
obs=Animal('shi')
obs.speak()

通过 file 属性查找该模块(或包)文件所在的绝对路径(输出它的 init.py 文件的存储路径)。

import demo.Animal
print(demo.__file__) 

dir() 函数:用来列出某个类或者某个模块中的全部内容,包括变量、方法、函数和类等。

print(dir(demo.Animal))

help() 函数:用来查看某个函数或者模块的帮助文档。

print(help(str.lower))

参考:
https://blog.csdn.net/liuqinhou/article/details/129940672
https://blog.csdn.net/weixin_42405670/article/details/130856967

文章来源:https://blog.csdn.net/weixin_43145997/article/details/135365036
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。