Python库、包、模块

一、什么是库、包、模块

无论是库、包、模块,其核心都在于封装了一系列的功能。

1、库library,这个概念并非Python里的概念,是从C语言过来的。库这个概念其实就是一堆代码一起完成一个或多个任务。非常类似函数,但是是以文件组织在一起。

2、模块module,这个概念就是Python里的概念,一个模块就是一个py文件,然后包含多行代码执行一个或多个任务,库约等于模块。

3、包。包含多个模块的“目录”为包package,通俗来说包就是一类功能模块的组织者。

Python的标准库函数

 random是一个模块,就是一个py文件

Python的第三方库函数

 我们使用pip安装的都放在site-packages中,属于第三方库

在第三方库中,包下面包含一个_init_.py,还有很多模块。

 二、如何导入包和模块

首先说明一下:import导入的可以是包,也可以是模块。导入过程,导入包和模块后通过"."调用方法

第一种导入方法(直接导入)

(1)import包/方法

(2)调用具体方法

1
2
import random
print(random.randint(1,6));

 #注意# randint是random模块下的一个具体方法(def) 

第二种导入方法(跳跃式)

(1)from 包/模块 import 模块/方法

(2)调用具体方法

1
2
3
from time import sleep
sleep(1000)
print("Hello World")

 #注意# 使用from就直接跳跃到time下的sleep方法了

第三种导入方法(贪婪式)

(1)from 包/模块 import所有模块/方法

(2)调用具体方法

1
2
3
from time import *
sleep(1)
print("Hello World")

 #注意# 使用from time import *把所有方法都导入了

第四种导入方法(自定义名称)

(1)from 包/模块 import所有模块/方法

(2)调用具体方法

1
2
3
4
5
from time import sleep as sl
import time as ti
sl(10)
print(ti.localtime())
print("Hello World")

调用的具体方法 sl(10)和sleep(10)效果一样

#注意# 自定义你在程序中使用该方法的名称

如何自定义一个包/模块

一个py文件就是一个模块,一个具有__init__.py的"文件夹"以及其他py文件的就是包

创建模块

创建包

如果包/模块不在主程序同级别目录下

python第三方知名库

输出系统文件路径

1
2
3
4
import sys
print(sys.path)
sys.path.append("/")
print(sys.path)

 输出结果

选择困难症的救星--------决策神器

算法参考:比较多个商品的性能得分时,可以分别比较每个商品在对应性能上的排名,根据排名打分,然后算出每个商品在所有性能上得分的总和,如果仅仅比较两个商品,可以按照胜负结果给予不同分数。当然,如果你想做的更牛逼,还可以给不同的性能参数以不同的权重系数,具体怎么给,看个人偏好,看重什么性能就给予更高的权重

算法参考:计算性价比得分的时候,你已经得到了性能总得分,直接用价格除以性能总得分就可以了,当然性价比作为最终选择的标准,只是一种参考而已,你可以根据自己的标准,指定自己的算法,作为最终决策依据。

程序文件结构:

原始数据car.txt

1
2
3
4
5
6
7
8
9
10
北京汽车 EU5 17.19 501 60.2
吉利帝豪 EV 15.98 500 52
东风风行 S50EV 18.49 415 56.9
爱驰 U5 29.21 623 83
小鹏 P7 34.99 522 80.9
特斯拉 Model3 41.98 420 66.5
广汽丰田 iA5 19.28 510 58.8
启辰 D60EV 17.88 481 58
荣威 Ei5 16.11 420 52.5
比亚迪 秦ProEV 20.49 401 53.1

effective.py

1
2
3
4
5
6
7
8
9
10
def get_value(data, k):
    return data.get(k)
 
 
def effective_score(data):
    for info in data:
        info['性价比得分'] = float(format(info['性能得分']/info['价格得分'],'.2f'))
        # 这里有坑!!!因为后边要计算性价比,所以最低价格不能作为最高得分
    final_result=sorted(data,key=lambda x:get_value(x,'性价比得分'),reverse=True)
    return (final_result)

performance.py

1
2
3
4
5
6
7
8
9
10
11
12
13
def get_value(data, k):
    return data.get(k)
 
 
def by_performance(data,*args):
    for y in args:
        # 这里有坑!!!因为后边要计算性价比,所以最低价格不能作为最高得分
        car_by_performance=sorted(data,key=lambda x:get_value(x,y))
        score = 1
        for car_by_performance in car_by_performance:
            car_by_performance['性能得分'] = car_by_performance['性能得分'] + score
            score +=  1
    return car_by_performance

price.py

1
2
3
4
5
6
7
8
9
10
11
12
def get_value(data, k):
    return data.get(k)
 
 
def price_score(data):
    car_by_price = sorted(data, key=lambda x: get_value(x, '售价'), reverse=False)
    # 这里有坑!!!因为后边要计算性价比,所以最低价格不能作为最高得分
    score = 1
    for car_price in car_by_price:
        car_price['价格得分'] = car_price['价格得分'] + score
        score +=  1
    return car_by_price 

主函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 任务:创建一个帮助你购物决策的包,可以比较多个商品的性价比
# 使用数据要求:这个模块的功能时,每个商品的数据存到一个字典中,数据必须包含价格
# 这一项,其他项为商品的各种性能参数指标,可以根据商品自定义,数据长度不限制,但要求参与比较的商品的字典中的key项保持一致
# 不然没办法比较
 
# 包和模块的功能:要包含几个模块,可以实现以下功能
# (1)比较多个商品**价格**,按照价格排序(升序) price
# (2)比较多个商品的**性能**参数得分,按照得分排序(降序)performance
# (3)比较多个商品的**性价比**,按照性价比结果排序(降序),最终给出的决策以性价比高为标准,effective
 
# 数据收集渠道:商品数据可以从淘宝等平台去找,也可以自己在生活中中搜索
# 算法参考:比较多个商品的性能得分时,可以分别比较每个商品在对应性能上的排名,根据排名打分,然后算出每个商品在所有性能上得分的总和,
# 如果仅仅比较两个商品,可以按照胜负结果给予不同分数。当然,如果你想做的更牛逼,还可以给不同的性能参数以不同的权重系数,具体怎么给,
# 看个人偏好,看重什么性能就给予更高的权重
 
# 算法参考:计算性价比得分的时候,你已经得到了性能总得分,直接用价格除以性能总得分就可以了,当然性价比作为最终选择的标准,
# 只是一种参考而已,你可以根据自己的标准,指定自己的算法,作为最终决策依据。
 
# *******数据出处 car.dlev.com 第一电动车 ****#
 
from decision import price, performance, effective
 
car_list = []
# 打开一个txt文档,使用r=read模式开启
raw = open('car.txt', 'r'# 建立读取对象
for x in raw.readlines():
    car_detial = {'价格得分': 0, '性能得分': 0, '性价比得分': 0}
    car_detial['品牌'] = x.split()[0]
    car_detial['型号'] = x.split()[1]
    car_detial['售价'] = x.split()[2]
    car_detial['续航'] = x.split()[3]
    car_detial['电池容量'] = x.split()[4]
    car_list.append(car_detial)
raw.close()
 
#获取价格得分
car_list=price.price_score(car_list)
# for x in car_list:
#     print(x)
 
#获取性能得分
performance_list=performance.by_performance(car_list,'续航','电池容量')
# for x in car_list:
#     print(x)
 
#获取性价比得分
effective_score_list=effective.effective_score(car_list)
for x in car_list:
    print(x)

 输出结果:

posted @   leagueandlegends  阅读(2072)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-04-20 SpringBoot(十一) ----SpringBoot结合mybatis实现增删改查
点击右上角即可分享
微信分享提示