python学习第11节:模块的概念和应用

发布时间:2020/07/10 作者:天马行空 阅读(1162)

什么是模块?

模块(Module)是“打包”好的代码集合,它可以被别的程序引入,以使用该模块中的函数等功能。本质上,模块就是一个Python文件,它的后缀名是.py。而模块则用来“打包”包括函数在内的一切代码集合,方便我们在任何想用它的时候直接拿过来用。本质上,每一个单独的.py文件,都是一个模块。

模块有Python提供的内置模块,也有用户编写的自定义模块;此外,模块还有一个非常重要的种类——第三方模块。


内置模块

Python为我们提供大量的内置模块,像内置函数一样,可以帮助我们完成一些常见的功能,用import来导入某个模块。

图片.png


random模块

# 导入模块
import random
# 产生 1 到 10 的一个整数型随机数  
print(random.randint(1,10))
# 产生 0 到 1 之间的随机浮点数    
print(random.random())


查看模块所在的路径

import random
print(random.__file__)


math模块

math模块为我们提供常用的数值,比如圆周率π、自然常数e等等;它也为我们提供普通运算符无法完成的计算,比如自然对数log、三角函数cos等等。

import math
# 打印模块的变量:圆周率math.pi
print("圆周率", math.pi)
# 打印模块的变量:自然常量math.e
print("自然常量", math.e)
# 调用模块的函数:求1的对数值
print("自然对数", math.log(1))
# 调用模块的函数:求0的余弦值
print("余弦函数", math.cos(0))


图片.png


开源模块

开源模块也叫第三方模块,由于Python是一种开源编程语言,任何人都可以贡献自己的代码到社区中,成为开源模块。

源模块的种类非常丰富,比如爬虫常用的urllib,数据分析常用的pandas和numpy,机器学习常用的sklearn等等。


图片.png


自定义模块

新建一个文件MyModule.py,内容输入

# 自定义模块 MyModule
hello = "你好,我是你的模块。"


导入自定义模块

如果你觉得MyModule每次输入起来实在太麻烦,你还可以用import 模块名 as 缩写模块名的方式给他定义一个缩写。

import MyModule
# 打印出MyModule模块中的hello变量
print(MyModule.hello)


还可以使用from 模块名 import 变量名或者函数名的导入方式。从MyModule2模块中,导入hello变量、greet和bye函数:

from MyModule2 import hello, greet, bye
print(hello)
greet("小可爱")
bye()


程序门卫

代码块中定义的逻辑,在模块文件作为主程序被单独执行的时候依然会被触发。比如像下面这样直接执行MyModule4的代码,主程序中if __name__ == '__main__':代码块中的print('hello')同样被执行了。

当模块被别的程序import的时候,属于程序门卫代码块中的逻辑就不会被执行了。

hello = "你好,我是你的模块。"
if __name__ == '__main__':
    print(hello)

图片.png



常用模块:pandas

pandas模块提供了对大部分格式文件的读写方法,如下表所示。其中我们最常用的是读取excel文件的方法read_excel( )和保存excel文件的方法to_excel( )。

图片.png


数据读写

import pandas as pd
data = pd.read_excel('人口数据.xlsx')
data.to_excel("./tmp/人口数据_新.xlsx")


数据描述

读取了数据之后,我们可以使用pandas中的一些方法对数据进行简单的描述,最常用的数据描述方法是describe( )方法,它的用法是数据变量名.describe( )。

import pandas as pd
data = pd.read_excel("人口数据.xlsx")
print(data.describe())



索引和切片

pandas数据索引和切片的语法是变量名.loc[行名, 列名]。

如果我们需要第2行,第“人口”列的数据时,可以使用data.loc[1, "人口"]

如果我们想要第2行到第11行的人口数据,我们可以使用data.loc[1:10, "人口"]。


只查看人口数据.xlsx这个文件中人口那一列的数据描述信息。

import pandas as pd
data = pd.read_excel("人口数据.xlsx")
print(data.loc[:, '人口'].describe())

图片.png


总结

模块:包含所有定义的函数和变量的文件,其后缀名是.py。有内置模块、开源模块、自定义模块三大类。
方法:模块中的函数习惯是称之为方法。
程序门卫:使用if __name__ == '__main__':来控制其他程序使用本程序作为模块时某些代码不被运行。
再来总结一下本关的主要知识点。

图片.png


练习:幸运抽奖

def lucky():
    import random
    r = random.random()
    if r>0 and r<=0.01:
        return '一等奖'
    elif r>0.01 and r<=0.06:
        return '二等奖'
    elif r>=0.06 and r<=0.36:
        return '三等奖'
    else:
        return '未中奖'

if __name__ == '__main__':
    times ={"未中奖":0,"一等奖":0,"二等奖":0,"三等奖":0}
    for i in range(1000):
        times[lucky()]+=1
        
    print(times)


关键字python python教程