美文网首页
Python入门:模块

Python入门:模块

作者: 洋阳酱 | 来源:发表于2019-05-23 12:43 被阅读0次

    十一、模块

    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,韩秀珍
    

    相关文章

      网友评论

          本文标题:Python入门:模块

          本文链接:https://www.haomeiwen.com/subject/pxuvzqtx.html