Python入门:模块

十一、模块

Python有一个标准库(不需要pip安装),里面涉及了很多内置模块
Python标准库(中文版):https://docs.python.org/zh-cn/3/library/
PyPI:https://pypi.org

11.1 导入模块

导入整个模块

import 模块名

导入特定的函数

from 模块名 import 函数名

如果模块或函数名太长,你觉得使用起来不方便,你可以设定它的缩写

from 模块名 import 函数名 as 缩写名称
import 模块名 as 缩写名称

导入所有函数

from 模块名 import *

11.2 常用库

数据处理

import datatime  # 基础日期和时间数据类型
import calendar  # 通用日历函数
import random  # 生成随机数
import math  # 数学函数
import cmath  # 复数运算函数
import time  # 时间的访问和转换
import statistics  # 统计函数
import faker  # 创建伪数据,包括姓名、地址、电话等等
import numpy
import pandas

网页处理

import requests #  访问网页
import re  # 正则化表达

文档处理

import xlwt  # 写入Excel

游戏处理

import pygame

数据可视化

import plotly
import bokeh
import matplotlib
import seaborn
import missingno
import import pygal

优秀的库推荐

从数据处理到人工智能
从Web解析到网络空间
从人机交互到艺术设计

11.3 内置模块

this

import this # 来感受一下创始人的初心

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

附上一段翻译

优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)

当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
————————————————
版权声明:本文为CSDN博主「赖勇浩」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gzlaiyonghao/article/details/2151918

datetime

提供用于处理日期和时间的类

在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。

举个例子:计算距离特定事件天数的例子

from datetime import date

# 获取今天的日期
today = date.today()
print(today)

# 我的生日日期,年份保持不变
my_birthday = date(today.year, 1, 26)
print(my_birthday)

if my_birthday < today:
    my_birthday = my_birthday.replace(year=today.year + 1)

# 计算两个日期的差
time_to_birthday = abs(my_birthday - today)
print(time_to_birthday.days)

# 输出:
# 2020-04-14
# 2020-01-26
# 287

calendar

它提供了其它与日历相关的实用函数

import calendar
calendar.prmonth(2020, 4)
# 输出:
     April 2020
Mo Tu We Th Fr Sa Su
       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
calendar.prcal(2020)
image

random

import random
random.random()
# 输出:0.4176217805064072(产生0到1之间的随机浮点数)
random.randint(1,10)
# 输出:3(产生1到10的一个整数型随机数)
random.uniform(1.1,5.4)
# 输出:3.1108641423436807(产生1.1到5.4之间的随机浮点数,区间可以不是整数)
random.choice(["A","B"])
# 输出:A(从序列中随机选取一个元素)
random.randrange(1,100,2)
# 输出:5(生成从1到100的间隔为2的随机整数)

math

import math
math.fabs()  # 绝对值
math.pow()  #次方计算
math.sqrt()  #平方根计算
math.pi  #圆周率数值

statistics

该模块提供了用于计算数字 (Real-valued) 数据的数理统计量的函数。此模块针对图形和科学计算器的水平。

方法 解释
mean() 数据的算术平均数(“平均数”)
fmean() 快速的,浮点算数平均数。
geometric_mean() 数据的几何平均数
harmonic_mean() 数据的调和均值
median() 数据的中位数(中间值)
median_low() 数据的低中位数
median_high() 数据的高中位数
median_grouped() 分组数据的中位数,即第50个百分点。
mode() 离散的或标称的数据的单模(最常见的值)。
multimode() 离散的或标称的数据的模式列表(最常见的值)。
quantiles() 将数据以相等的概率分为多个间隔。

11.4 实践

设计一个抽奖活动,输入参与人数、参与人姓名、参与人ID,输入中奖人名单

Faker库需要安装:pip install Faker

它用来伪造数据,支持多种语言。可以伪造地址、身份证号、城市、邮箱、姓名、职业等等等。详情可戳:https://faker.readthedocs.io/en/master/locales/zh_CN.html

from faker import Faker
import random

fake = Faker(locale = 'zh_CN')  # 伪造中文数据

n = input("请输入参与人数:")
m = input("请输入中奖人数:")

# 构造ID和人名
list_name = []
list_ID = list(range(0,int(n)))
for _ in range(int(n)):
  list_name.append(fake.name())

# 开始抽奖,随机抽取
print("\n")
print("中奖名单:")
for _ in range(int(m)):
    ID_random = random.choice(list_ID)
    print("ID:{},{}".format(ID_random, list_name[ID_random]))
    list_name.remove(list_name[ID_random])
    
# 输出:

# 请输入参与人数:20
# 请输入中奖人数:2

# 中奖名单:
# ID:5,林文
# ID:9,韩秀珍
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

  • 5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...
    清清子衿木子水心阅读 1,469评论 0 1
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,708评论 0 8
  • 本文来自 我的博客。博客的文章保持更新,此文可能不是最新状态。 下载、解压 python 源代码 从 python...
    sunnogo阅读 69,754评论 0 5
  • 参考:http://blog.csdn.net/wuce_bai/article/details/50827393...
    Babyzpj阅读 776评论 0 0
  • 最喜欢的一张。 从北京回来两天,才终于有时间躺在温热的被窝里,听着温柔的女生浅吟轻唱,怀着依旧湿漉漉地心情,纪念和...
    谈恋爱不不不如跳舞阅读 252评论 0 0