Python编程开发

一、准备工作

1.1 Python版本迭代

1.1.1 大版本划分

首先,Python 的大版本分为 2.× 、 3.× 两个系列,通常称之为 Python2 和 Python3。从 Python2 到 Python3 是一个大版本升级,存在很多不向下兼容的差异,所有很多 Python2 的代码不能被 Python3 解释器运行,反之亦然。

从2020年开始,Python 官方宣布停止对 Python2 的维护,不再更新,所以除了历史项目中用的Python2开发且无法迁移到Python3的情况,无论是学习 Python 语言,还是新项目的开发,都应该选择 Python3。

1.1.2 Python3小版本

Python3 计划每年发布一个新的子版本,每次只增加两三种新语法。所以我们了解清楚各版本发生的语法变化是非常有必要的。

下面就来盘点一下 Python3 各版本的发布时间和语法变化:

版本时间更新内容
Python3.02008年重新设立很多的语法规范
Python3.1 ~ Python3.32009-2013年不断进行细节完善
Python3.42014年1、采用 pip 作为 Python 第三方包的默认安装方式。
2、增加标准库 pathlib ,用于按面向对象的方式操作文件路径。
3、增加标准库 enum ,用于定义枚举类。
4、增加标准库 asyncio ,用于实现异步 IO 。
5、增加标准库 statistics ,提供了求平均值、中位数、方差等运算的函数。
6、增加标准库 tracemalloc ,用于跟踪内存分配的情况,方便调试。
Python3.52015年1、扩展了迭代拆包运算符 * 、字典拆包运算符 ** 的语法。
2、增加语法:使用 Python2 风格的百分号 % 来格式化字符串。
3、增加关键字 async、await,用于定义协程。
4、增加语法:类型注释(type annotations)。
5、增加标准库 typing ,定义了一些类型,常用于类型注释。
6、增加标准库 zipapp ,用于将 Python 脚本打包成可执行的归档文件,扩展名为 .pyz 。
Python3.62016年1、dict 中的元素以前是按 key 顺序存储,现在会按插入顺序存储。
2、增加语法:支持在数字中插入下划线作为分隔符,提高可读性。
3、增加语法:f-string 给字符串加上前缀 f 之后,就会执行花括号 {} 内的语句,实现字符串格式化。
4、增加标准库 secrets ,用于生成安全的随机数,解决原有的 random 模块生成的随机数可能被预测的安全隐患。
Python3.72018年1、增加 time 模块对纳秒级分辨率功能的支持。
2、模块和泛型类型的核心支持 typing 。
Python3.82019年1、增加语法:赋值表达式(海象运算符 :=),可以在表达式中创建变量并赋值。
2、增加语法:定义函数时,在正斜杆 / 之前的参数都会被视作位置参数。
3、增加语法:在 f-string 中用 {var} 或 {var=} 的格式插入变量的值,比 str.format() 更方便。
4、支持在 finally 语句块中使用 continue 关键字。
5、multiprocessing 模块增加一个 SharedMemory 类,用于创建进程之间的共享内存。
Python3.92020年1、dict 类增加合并运算符 |、更新运算符 |= 。
2、str 类增加两个方法 removeprefix()、removesuffix() 。
3、支持将大部分内置类型的类名用作函数实参,便于声明注释。
Python3.102021年1、增加语法:match-case 模式匹配,可以不用大量的 if-elif-elif-else 嵌套了,并且支持模糊匹配等。
2、增加语法:用 |运算符连接多个类型,表示 Union 类型。
3、调用 open() 函数时,允许传入参数 encoding=‘locale’ ,等价于 encoding=None ,表示采用当前平台的默认编码格式。
Python3.112022年1、CPython 解释器优化了加载模块、调用函数等操作,使得 Python3.11 比 Python3.10 的启动速度、运行速度快了 10%~60% 。
2、增加了标准异常类型 BaseExceptionGroup、ExceptionGroup,用于将多个异常打包为一组。
3、打印 tracebacks 异常信息时,更准确地指出引发异常的代码位置。

1.2 Python安装

1.2.1 python.exe 下载安装

参考资料:Python 3.11.0下载安装并使用help查看模块信息(Win11)

1.2.2 conda下载安装

1.3 镜像源配置

1.3.1 为什么要用镜像源?

python包安装默认使用的是国外源,会受到网络资源限制,速度相对会比较慢,需要等待一段时间,甚至还会出现连接超时,导致下载失败。这时候我们就可以考虑改变我们自己的下载源,选择国内的镜像源速度更快更稳定。

常用的国内镜像源:

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

阿里云 http://mirrors.aliyun.com/pypi/simple/

豆瓣 http://pypi.douban.com/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

华中科技大学http://pypi.hustunique.com/

1.3.2 pip配置镜像源

pip是Python中常用的软件包管理工具(安装,升级,卸载等)。

1)临时使用镜像源
使用-i参数,指定镜像源。

--临时指定清华下载源 安装requests库
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

如果提示镜像地址不是可信地址,此时加上--trusted-host=镜像地址(域名)

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
--trusted-host=pypi.tuna.tsinghua.edu.cn

2)永久使用镜像源
待补充
参考文档:配置使用pip源为国内镜像源的三种方法

1.3.3 Pycharm配置镜像源

1、点击顶部菜单栏的 “File”(文件)选项,然后选择 “Settings”(设置)。
2、在弹出的设置窗口中,展开 “Project”(项目)部分,并选择 “Python Interpreter”(Python 解释器)。
3、在 “Python Interpreter” 部分,你会看到当前项目使用的 Python 解释器。在标号2所示位置有一个"+"号图标,点击该图标。
在这里插入图片描述
4、点击+图标后选择管理仓库。

5、在弹出的对话框中,将镜像源粘贴至对话框内,即可使用国内镜像源来搜索和安装包。
在这里插入图片描述

1.3.4 conda配置镜像源

待补充

二、Python语言基础

初识Python、语言元素、分支结构、循环结构、构造程序逻辑、函数和模块的使用、字符串和常用数据结构、面向对象编程基础、面向对象进阶、图形用户界面和游戏开发、文件和异常、字符串和正则表达式、进程和线程、网络编程入门和网络应用开发、图像和文档处理。

2.1 变量和注释

变量和注释是作者表达思想的基础,是读者理解代码的第一道门,它们对代码质量的贡献毋庸置疑。

2.1.1 注释

1)先写注释,后写代码。
2)不要用注释复述代码,应该提供信息增益,或者写高质量的指引性注释
3)类型注解:给变量注明类型
4)接口注释的风格:Sphinx文档风格、Google风格。

2.1.2 变量

1)变量命名原则:遵循PEP8原则、描述性要强、要匹配类型
2)在一段代码内,不要出现多个相似的变量名
3)保持变量的一致性:不要把同一个变量重复指向不同类型的值
4)不要把初始化变量放在一起,按照使用顺序放置
5)能不定义变量就别定义 vs 定义临时变量提升可读性
6)对局部变量分组并建模
7)不要使用locals(),调用它会返回当前作用域中的所有局部变量
8)不要出现神奇的字面量,使用常量或者枚举类型替换他们

PEP8原则

  • 对于普通变量,使用蛇形命名法,比如 max_value
  • 对于常量,采用全大写字母,使用下划线连接,比如 MAX_VALUE;
  • 如果变量标记为“仅内部使用”,为其增加下划线前缀,比如_local_var;
  • 当名字与Python关键字冲突时,在变量末尾追加下划线,比如class_
  • 类名应该使用驼峰风格(FooClass)
  • 函数应该使用蛇形风格(bar_function)

2.2 数值和字符串

2.2.1 数值

1)python的浮点数有精度问题,请使用decimal对象做精确的小数运算
2)使用float(‘inf’)无穷大可以简化边界处理逻辑

2.2.2 字符串

1)字符串与字节串
字符串分为2类:str(给人阅读的文本类型)和bytes(给计算机阅读的二进制类型)。
通过.encode()和.decode()可以在两种字符串之间做转换。

with open('output.txt', 'w', encoding='UTF-8') as fp:
    pass

在这里插入图片描述
2)字符串格式化方法:f-string(优先推荐)、str.format()、C语言风格
3)复杂字符串的简化操作
当操作SQL语言等结构化字符串时,使用专有模版比裸处理的代码更易于维护。
比如处理SQL语言的SQLAlchemy、处理XML的lxml模块、Jinja2模块。
4)常用字符串方法
.join()
.split()
.startswith()
.partition():按照分隔符sep切分字符串,返回分隔符前内容、分隔符、分隔符后内容。
.translate():按照规则一次性替换多个字符。

2.3 容器类型:列表、元组、字典、集合

列表:非常经典的容器类型。[]
元组:和列表非常相似,但是不能被修改。()
集合:成员不能重复。{}
字典:存放一个个键值对。

2.3.1 列表

1)在遍历列表时获取下标

for index, s in enumerate(names):
    print(index, s)

2)列表推导式

result = [n * 100 for n in numbers if n % 2 == 0]

2.3.2 字典

1)遍历字典

for key in movie:
    print(key, movie[key])

for key, value in movie.items():
    print(key, value)

2)访问不存在的字典键
dict.get(key, default) 方法接收一个default参数,当访问的键不存在时,返回default作为默认值。

3)使用setdefault取值并修改
dict.setdefault(key, default)

4)使用pop方法删除不存在的键
dict.pop(key, default)

5)合并两个字典

{**d1, **d2}

2.3.3 可变类型和不可变类型

可变:列表、字典、集合
不可变:整数、浮点数、字符串、字节串、元组
1)对于可变类型,必要时对其进行拷贝操作,避免产生意料之外的影响
2)常见的浅拷贝方式:copy.copy、推导式、切片操作
深拷贝方式:copy.deepcopy

三、Python语言进阶

常用数据结构、函数的高级用法、面向对象高级知识、迭代器和生成器、并发和异步编程。

四、数据分析

数据分析概述、环境准备、Numpy的应用、Pandas的应用、数据可视化、概率统计基础、方差分析和参数估计、相关和回归、数据分析方法论。

4.1 数据可视化

4.1.1 绘制省份分布图

一、安装pyecharts
1、jupyter环境
!pip show pyecharts显示已经安装,但是import报错不到模块,目前没有找到解决办法。
在这里插入图片描述
2、pycharm环境
正常安装流程,成功
python=3.6.5
pyecharts=2.0.4

二、绘制图形

  • .Map()创建了一个地图实例。
  • .add()添加了数据。
  • .set_global_opts()修改了内容。
  • .render()将生成的地图以html格式保存。

1、.add()添加数据
第1个参数:标记图例名称,比较丑,建议用''
第2个参数:数据项 (坐标点名称,坐标点值)
第3个参数:'china’代表中国地图,'world’代表世界地图。
name_map:自定义地区的名称映射。使用自定义映射后,原始数据和地图显示都是省份简称。
is_map_symbol_show=False:不显示标记图形(红点表示该省份有数据)

2、VisualMapOpts视觉映射
is_show=True:显示视觉映射配置
is_piecewise=True:分段显示
pieces: 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式。

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts

claim_map = Map()

namemap = {"宁夏回族自治区":"宁夏","河南省":"河南","北京市":"北京","河北省":"河北","辽宁省":"辽宁","江西省":"江西", "上海市":"上海","安徽省": "安徽","江苏省":"江苏","湖南省":"湖南","浙江省":"浙江","海南省":"海南",  "广东省":"广东","湖北省":"湖北", "黑龙江省": "黑龙江","陕西省":"陕西","四川省":"四川","内蒙古自治区":"内蒙古", "重庆市":"重庆","广西壮族自治区":"广西","云南省":"云南","贵州省":"贵州","吉林省":"吉林","山西省":"山西", "山东省":"山东","福建省":"福建","青海省":"青海","天津市":"天津","新疆维吾尔自治区":"新疆","西藏自治区":"西藏", "甘肃省":"甘肃","大连市":"大连", "东莞市":"东莞","宁波市":"宁波","青岛市":"青岛","厦门市":"厦门","台湾省":"台湾","澳门特别行政区":" ",  "香港特别行政区":" ","南海诸岛":" "}  
data = [('吉林', 0.999),
        ('山东', 0.111)]
claim_map.add('', data, 'china', name_map=namemap,is_map_symbol_show=False)  

claim_map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {'min': 0,    'max': 0.07, 'label': '万分之7以下',  'color': '#FFF5EE'},
            {'min': 0.07, 'max': 0.11, 'label': '万分之7-11',  'color': '#FFE5B4'},
            {'min': 0.11, 'max': 0.15, 'label': '万分之11-15', 'color': '#F08000'},
            {'min': 0.15, 'max': 0.20, 'label': '万分之15-20', 'color': '#FF5F1F'},
            {'min': 0.20, 'max': 1,    'label': '万分之20以上', 'color': '#C04000'}
        ]
    )
)

claim_map.render('claim_map.html')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值