Python教程

python笔记——模块与包

本文主要是介绍python笔记——模块与包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

模块

1、定义:在python中一个扩展名为.py的文件就是一个模块
2、结构:一个python程序有多个模块(.py文件),一个模块可以包含多个函数、类和语句。
3、使用模块的好处

  • 方便其他程序和脚本的导入和使用(不用在意内部细节)。
  • 每个模块可由不同人员开发,非常便于团队开发,提高效率。
  • 避免函数名和变量名的冲突。
  • 提高代码的可维护性(哪个模块有问题就改哪个,其他无需改变)。
  • 提高代码的可重用性(多次调用)。

自定义模块

1、创建模块

新建一个.py文件,名称尽量不要于python自带的标准模块名称相同。

2、导入自定义模块报错?

在所创建的程序目录中选择Sources Root即可
在这里插入图片描述

3、导入模块

  • 导入整个模块:import 模块名称 [as 别名]
  • 只导入模块的一个函数/变量/类:from 模块名称 import 函数/变量/类

使用上的区别:若是导入整个模块,则必须用模块名.函数/变量/类来调用,若是只导入某个函数/变量/类,则可以直接使用。

import math
print(math.pi)    #3.141592653589793
print(math.pow(2,3))     #8.0
______________________________________________
from math import pi
print(pi)     #3.141592653589793
print(math.pow(2,3))    #报错

4、以主程序形式运行

在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的__name__变量的值为__main__
说白了就是在每个模块中加上if name == ‘main’:。把只在运行这个模块才需要执行的代码写到里面去,防止别的模块导入它时执行了该模块的这些代码。

if __name__ == 'main':
	#写在这里的代码只有在运行这个模块时才会执行,别的模块导入此模块时不会触发这里的代码。
	pass

下面这个程序就是模块demo1不把输出函数限制在本模块执行,可以看到,demo2导入模块demo1时,执行了demo1中的输出函数,这有时是我们不愿看到的。

#demo1
def add(a,b):
	return a+b

print(add(10,20))

#demo2
import demo1
print(demo1.add(100,200))    #30 300

只需加上一条语句,就可以限制demo1的输出在本模块中执行

#demo1
def add(a,b):
	return a+b
if __name__ == main:
	print(add(10,20))

#demo2
import demo1
print(demo1.add(100,200))    #300

1、定义:包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下
2、作用:

  • 代码规范
  • 避免模块名称冲突

3、包package与目录directory的区别

  • 包含__init__.py文件的目录称为包
  • 目录里通常不包含__init__.py文件

4、导入其他包的模块:

  • 使用import方式导入时,只能导入包或模块:import 包名(.模块名) 【as 别名】
  • 使用from … import可以导入包/模块/函数/变量/类:from 包名(.模块名) import (模块名)/函数/变量/类

python中常用的内置模块

模块名描述
sys与Python解释器及其环境操作相关的标准库
time提供与时间相关的各种函数的标准库
os提供了访问操作系统服务功能的标准库
calendar提供与日期相关的各种函数的标准库
urllib用于读取来自网上(服务器)的数据标准库
json用于使用JSON序列化和反序列化对象
re用于在字符串中执行正则表达式匹配和替换
math提供标准算术运算函数的标准库
decimal用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算
logging提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能
这篇关于python笔记——模块与包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!