2023/2/12 学习笔记
主要学了pthon基础中的模块和matplotlib中的折线图绘制
python模块
- Python 程序由模块组成。一个模块对应 python 源文件,一般后缀名是:.py。
- 模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。
- 语句是 Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
if name == ‘main’ 的意义
每个模块都有一个名称,通过特殊变量__name__可以获取模块的名称。在正常情况下,模块名字对应源文件名。仅有一个例外,就是当一个模块被作为程序入口时(主程序、交互式提示符下),它的__name__的值为“main”。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。
也就是说,别人用我的模块时,显示的是我模块的名字,而运行自己的模块时,显示的是__main__。别人在调用我模块时会执行我模块中的代码,如果使用这个if判断,那么就可以在自己模块中添加一些测试代码,只有在自己模块运行时才会运行,在被其他程序调用时不会运行。
import语句和from…import语句的区别
import 导入的是模块。from…import 导入的是模块中的一个函数/一个类。
包(package)的概念和结构
当一个项目中有很多个模块时,需要再进行组织。我们将功能类似的模块放到一起,
形成了“包”。**本质上,“包”就是一个必须有__init__.py 的文件夹。**典型结构如下:
包下面可以包含“模块(module)”,也可以再包含“子包(subpackage)”。就像文件
夹下面可以有文件,也可以有子文件夹一样。
上图中,a 是上层的包,下面有一个子包:aa。可以看到每个包里面都有__init__.py 文件。
导入包的本质其实是“导入了包的__init__.py”文件。也就是说,”import pack1”意味
着执行了包 pack1 下面的__init__.py 文件。 这样,可以在__init__.py 中批量导入我们需要的模块,而不再需要一个个导入。
init.py 的三个核心作用:
- 作为包的标识,不能删除。
- 用来实现模糊导入
- 导入包实质是执行__init__.py 文件,可以在__init__.py 文件中做这个包的初始化、以及需要统一执行代码、批量导入。
在pycharm中创建包
matplotlib 折线图绘制
import random
import matplotlib
from matplotlib import pyplot as plt
# x = range(2,26,2)
# y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
#
# #设置图片大小
# plt.figure(figsize=(20,8),dpi=80)
# plt.plot(x,y)
#
# #设置x轴
# _x_lable = [i/2 for i in range(4,49)]
# plt.xticks(_x_lable)
# plt.yticks(range(min(y),max(y)+1))
#
# plt.show()
#######################################
font = {'family' : 'SimHei',
'weight' : 'bold',
'size' : '16'}
plt.rc('font', **font) # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
# from matplotlib import font_manager
#
# my_font = font_manager.FontProperties(fname='')
plt.figure(figsize=(15,12))
a = [random.randint(20,35) for i in range(120)]
x = [i for i in range(120)]
plt.plot(x,a)
#调整
_xtick_lable = ['10点{0}分'.format(i) for i in range(60)]
_xtick_lable += ['11点{0}分'.format(i) for i in range(60)]
#这里的两个参数,第一个参数是数值,对应x轴上的位置,第二个参数传入的是字符串,放在第一个参数数值对应的位置上
plt.xticks(x[::5],_xtick_lable[::5],rotation=45)
plt.yticks([i for i in range(20,37,2)])
#添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('温度的变化情况')
plt.show()