全民一起玩Python提高篇第二课:模块、包、传参

模块

import导入即执行

a.py中间 import b,那么首先就运行b程序

何时导入何时执行

执行顺序根据import所在位置来确定

重复导入不再执行

只有第一处import XX 才执行这个XX,后面的哪怕是间接导入,也不会再执行了

import new_file
print('hello world')

引用自己,输出的是两次’hello world’

module对象

每个.py文件都是一个module对象
a里面要用b的变量,就要写b.x
为了保证a导入模块b时,b中的代码不被直接执行
需要在代码中加入结构

if __name__=='__main__':
    x=add(3,5)
    print('执行结果为',x)

如果是独立运行,python给这个name赋值为main
如果是被a导入运行,就赋值为模块名b
module类都有一个属性 name
自己程序里面就不用加b.name
但是在a中 查看 就要写 b.name
__file__可以返回该程序所在的地方

packet(包)

实际上就是整个项目所在文件夹下的一个子文件夹

在这里插入图片描述
要调用包里面的文件,就要写成

import mypacket.a

安装matplotlib
安装后还会附带pandas和numpy
在这里插入图片描述

import  matplotlib.pyplot as plt
#导入模块
plt.rcParams['font.sans-serif']=['Microsoft Yahei']
plt.rcParams['axes.unicode_minus']=False
#设置字体,确保负号正确显示
体重=[10,20,21,33,44,23]
战力=[100,30,222,323,444,12]
#创建横纵坐标列表
size=[]
color=[]
for x in 战力:
    size.append(x*2)
for y in 战力:
    if y>300:
        i='r'
    elif y>200:
        i='g'
    else:
        i='b'
    color.append(i)
plt.grid()
plt.title('这是一张气泡散点图')
plt.xlabel('这是横轴')
plt.ylabel('这是纵轴')
#加栅格和标题
plt.scatter(体重,战力,s=size,marker='*',c=color)
#调用绘图方法,改变大小,显示为*,红色
plt.show()
#显示

在这里插入图片描述

题目一

绘制最基本的散点图,横坐标为身高,纵坐标为体重;
在散点图中添加网格线、横轴说明(比如“身高”)和纵轴说明(比如“体重”);
将该散点图改造为气泡图,使点的大小与体重数值相关;
请将数据直接拷贝到Excel表格中并保存工作簿。然后使用xlwings读取这些数据,并使用matplotlib绘制前述图表。

import  xlwings as xw
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft Yahei']
plt.rcParams['axes.unicode_minus']=False
app1=xw.App()
wb=app1.books.open('E:\拷贝过来的文件\全民一起玩Python\数据源.xlsx')
ws=wb.sheets[0]
身高=ws.range('A2:A6').value
体重=ws.range('B2:B6').value
#给数据
wb.close()
app1.quit()
#创建横纵坐标列表
size=[]
for x in 体重:
    size.append(x*x/10)

plt.grid()
plt.title('这是一张Excel引入数据的散点图')
plt.xlabel('这是身高')
plt.ylabel('这是体重')
#加栅格和标题
plt.scatter(身高,体重,s=size)
#调用绘图方法,改变大小,显示为*,红色
plt.savefig('E:/拷贝过来的文件/全民一起玩Python/Python安装/这是我画的图.png')
#保存要放在show之前
plt.show()
#显示

在这里插入图片描述

不定长参数传参

列表型

def credit(saving,debt,revenue,car=0,married=False,*house):
    #默认值的为可选参数,不然算必须参数,这个顺序很讲究
    #先必须再可选,最后给元组
    max_loan=saving-debt+revenue*5+car
    for h in house:
        max_loan+=h
    if married==True:
        max_loan*=1.2
    return max_loan

if __name__ =='__main__':
    m=credit(saving=1,revenue=3,debt=2,married=True)
    x=credit(1,3,2,False,150,20,30)
    #要用数字传参,就要都用数字,要带参数类别,就都要带
    print(m,x)

字典型

def 字典怎么传_info(info):
    print('客户姓名:',info['name'])
    print('客户年龄:',info['age'])
    print('客户性别:',info['gender'])

if __name__ =='__main__':
    i={'name':'锦到黑','age':21,'gender':'男'}
    字典怎么传_info(i)

两者等价

def 字典怎么传2_info(**info):
#两个**是关键
    print('客户姓名:',info['name'])
    print('客户年龄:',info['age'])
    print('客户性别:',info['gender'])

if __name__ =='__main__':
    字典怎么传2_info(name='锦到黑',age=21,gender ='男')
    #传参方式不同

字典参数要放在元组参数之后

题目二

请编写程序读取某公司各产品线产量报表(点击此处下载),然后为每一个产品(即每一行)生成一张统计图(散点图、柱形图、折线图等),并将所有这些图表都存放到某一文件夹下(文件夹名称位置可自己指定)。

在这里插入图片描述

import xlwings as xw
import matplotlib.pyplot as plt

# 下面代码从Excel中读取所有数据(包含表头信息)
app = xw.App()
wb = app.books.open('E:\拷贝过来的文件\全民一起玩Python\MyProject\第四课练习.xlsx')
all_data = wb.sheets(1).range('c3:o12').value
#读一个二维列表
app.quit()

# 设置pyplot的中文兼容性、以及横纵轴标签
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('这是月份')
plt.ylabel('这是产量')

# all_data 中的第一个子列表是表头,
# 其中从第2列开始都是月份名称,对于所有图表都一样,
# 故可以在循环前就一次读出放到变量里随时备用
month_names = all_data[0][1:]

# 从all_data的第二个元素(即产品1)开始逐行读取。
for row in all_data[1:]:
    # 当前子列表row的第一个元素是该行第一列的产品名
    product_name = row[0]
    # 第二个元素开始到最后,是该行各月份产量数据
    counts = row[1:]
    # 以产品名为本图表标题
    plt.title(product_name)
    # 以月份名变量为横轴、产量数据为纵轴绘图
    plt.bar(month_names, counts)
    # 保存图表,以产品名为文件名,png格式
    plt.savefig(f'E:\拷贝过来的文件\全民一起玩Python\MyProject/{product_name}.png')
    # 清空图表以备下次循环绘图
    plt.clf()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值