python 新特性
文章目录
- formatted字符串字面值
- formatted字符串支持 `=`
- 字符串新方法
- 变量类型标注
- 二进制表示中数字为1的数量统计
- 字典的三个方法新增`mapping`属性
- 函数`zip()`新增`strict`参数
- `dataclass`
- 字典合并
- match 语法
formatted字符串字面值
formatted字符串是带有’f’字符前缀的字符串,可以很方便的格式化字符串
#旧版本
name = '张三'
print('姓名是:%s'%name)
print('姓名是:{}'.format(name))
#新版本
print(f'{name},欢迎您加入')
works = ['数据分析','财务报表']
print(f'工作内容:{works[0]},{works[1]}等')
#格式化字符串字面值(formatted stringliteral),可以在字符串常量内使用嵌入的Python表达式。
a = 5
b = 10
print(f'表达式运算的结果:{2*(a+b)}')'''输出结果
姓名是:张三
姓名是:张三
张三,欢迎您加入
工作内容:数据分析,财务报表等
表达式运算的结果:30
'''
formatted字符串支持 =
user = 'zhangsan'
info = f'{user=}'
print(info) # user=zhangsan
#指定格式输出
name = 'manager'
#旧版本
print('{:*^20}'.format(name))
#新版本
print(f'{name:*^20}')
#数值类型的格式化输出
num = 10
print(f'{num=:.2f}') # num=10.00 :.2f代表控制输出2个小数
pct = 0.834
#旧版本
print('{:.2f}%'.format(pct*100))
#新版本
print(f'{pct*100:.2f}%')'''输出结果
user='zhangsan'
******manager*******
******manager*******
num=10.00
83.40%
83.40%
'''
字符串新方法
| 方法名 | 功能描述 |
|---|---|
str.removeprefix() | 如果str以它开头的话,将会返回一个修改过前缀的新字符串,否则它将返回原始字符串。 |
str.removesuffix() | 如果str以其结尾,则返回带有修改过后缀的新字符串,否则它将返回原始字符串。 |
info = 'sutpc'
print(info.removeprefix('sut'))
print(info.removesuffix('pc'))
'''输出结果
pc
sut
'''
变量类型标注
变量类型注解是用来对变量和函数的参数返回值类型做注解(暗示),帮助开发者写出更加严谨的代码,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。但是,变量类型注解语法传入的类型表述能力有限,不能说明复杂的类型组成情况,因此引入了 typing 模块,来实现复杂的类型表达。
| Type | Description | Type | Description |
|---|---|---|---|
| int | 整型integer | Union | 联合类型 |
| float | 浮点数字 | Optional | 参数可以为空或已经声明的类型 |
| bool | 布尔(int的子类) | Mapping | 映射,是collections.abc.Mapping的泛型 |
| str | 字符(unicode) | MutableMapping | Mapping对象的子类,可变 |
| bytes | 8位字符 | Generator | 生成器类型,Generator[YieldType、SendType、ReturnType] |
| object | 任意对象(公共基类) | NoReturn | 函数没有返回结果 |
| List[str] | 字符组成的列表 | Set | 集合set的泛型,推荐用于注解返回类型 |
| Tuple[int, int] | 两个int对象的元组 | AbstractSet | collections.abc.Set的泛型,推荐用于注解参数 |
| Tuple[int, …] | 任意数量的int对象的元组 | Sequence | collections.abc.Sequence的泛型,list、tuple等的泛化类型 |
| Dict[str, int] | 键是str值是int的字典 | TypeVar | 自定义兼容特定类型的变量 |
| Iterable[int] | 包含int的可迭代对象 | Generic | 自定义泛型类型 |
| Sequence[bool] | 布尔值序列(只读) | NewType | 声明一些具有特殊含义的类型 |
| Mapping[str, int] | 从str键到int值的映射(只读) | Callable | 可调用类型,Callable[[参数类型],返回类型] |
| Any | 具有任意类型的动态类型值 | NoReturn | 没法返回值 |
二进制表示中数字为1的数量统计
通过调用bit_count函数来统计二进制中数字“1”的个数
# bit_count()函数
#旧版本
value = 5
print(bin(value).count("1"))
#新版本
print(value.bit_count())
字典的三个方法新增mapping属性
mydict = {"一":1,"二":2,"三":3}
#旧版本
print(mydict.keys(),mydict.values(),mydict.items())
#新版本
keys = mydict.keys()
values = mydict.values()
items = mydict.items()
print(keys.mapping,values.mapping,items.mapping)'''输出结果
dict_keys(['一', '二', '三']) dict_values([1, 2, 3]) dict_items([('一', 1), ('二', 2), ('三', 3)])
{'一': 1, '二': 2, '三': 3} {'一': 1, '二': 2, '三': 3} {'一': 1, '二': 2, '三': 3}
'''
在Python3.10中,针对于字典的三个方法,items,keys,和values都增加了一mapping属性,通过上诉的程序可以发现,对三个方法调用mapping属性后都会返回原字典数据。
函数zip()新增strict参数
keys = ['one','two','three','four']
values = [1,2,3,4,5]
#旧版本
print(dict(zip(keys,values)))
#新版本
print(dict(zip(keys,values,strict=True)))
对于zip函数加了strict参数,顾名思义strict参数就是要严格的通过参数长度的匹配原则,在以上代码中,keys和values列表的长度并不一致。旧版本的zip函数会根据长度最短的参数创建字典。新版本的zip函数中,当设定strict参数为True,则要求zip的输入数必须要长度一致,否则报错。
dataclass
为了支持数据修改, 默认值, 比较等功能。更加好一些的方法是:使用自定义类来实现数据类。
dataclass 可以认为是提供了一个简写__init__ 方法的语法,类型注释是必填项 (不限制数据类型时, 添加typing.Any为类型注释), 默认值的传递方式和__init__ 方法的参数格式一致。
from dataclasses import dataclass
from typing import ClassVar
@dataclass
class Player:name:strnumber:intpostion:strage:int
p1 = Player('zhangsan',18,'PG',26)
print(p1)
'''输出结果
Player(name='zhangsan', number=18, postion='PG', age=26)
'''
字典合并
字典添加两个新的运算符:[|]和[|=]。[|]运算符用于合并字典。[|=]用于更新字典。
dict1 = {'name':'zhangsan'}
dict2 = {'type':'manager'}
#旧版本
dict1.update(dict2)
print(dict1)
#新版本
dict3 = dict1 | dict2
print(dict3) # {'name': 'zhangsan', 'type':'mananger'}
#[|=]
dict1 |= dict2 # 等价于dict1 = dict1 | dict2
print(dict1)
'''输出结果
{'name': 'zhangsan', 'type': 'manager'}
{'name': 'zhangsan', 'type': 'manager'}
{'name': 'zhangsan', 'type': 'manager'}
'''
match 语法
match...case结构化模式匹配,可以匹配字典、类以及其他更复杂的结构。match...case的匹配模式匹配于Java或C++中的switch的使用很相似。
# 语句结构
'''
match subject:case <pattern_1>:<action_1>case <pattern_2>:<action_2>case <pattern_3>:<action_3>case _:<action_wildcard>
'''status = 200
match status:case 200:print('访问成功')case 404:print('页面丢了')case _:print('不能识别')
#模式匹配
person1 = ('James',23,'male')
person2 = ('Lili',33,'female')
person3 = ('Mary',34,'female')
def func(person):match person:case (name,_,'female'):print(f'{name} is woman')case (name,_,'male'):print(f'{name} is man')case (name,age,gender):print(f'{name} is {age} old')
#调用函数
func(person1)
func(person2)
func(person3)'''输出结果
James is man
Lili is woman
Mary is woman
'''
相关文章:
python 新特性
文章目录 formatted字符串字面值formatted字符串支持 字符串新方法变量类型标注二进制表示中数字为1的数量统计字典的三个方法新增mapping属性函数zip()新增strict参数dataclass字典合并match 语法 formatted字符串字面值 formatted字符串是带有’f’字符前缀的字符串…...
十一、Redis持久化-RDB、AOF
Redis提供了两种持久化数据的方式。一种是RDB快照,另一种是AOF日志。RDB快照是一次全量备份,AOF日志是连续的增量备份。RDB快照是以二进制的方式存放Redis中的数据,在存储上比较紧凑;AOF日志记录的是对内存数据修改的指令文本记录…...
Oracle闪回数据库【Oracle闪回技术】(二)
理解Oracle闪回级别【Oracle闪回技术】(一)-CSDN博客 Oracle默认是不开启闪回数据库的。如果开启闪回数据库的前提条件是,开启Oracle归档模式并启用闪回恢复区。 因为闪回日志文件存放在闪回恢复区中,如果在RAC环境下,必须将闪回恢复区存储在集群文件或者ASM文件中。 一…...
简单负载均衡
题目描述 某工程师为了解决服务器负载过高的问题,决定使用多个服务器来分担请求消息。 现给定 k 台服务器(编号从 1 到 k),以及一批请求消息的信息,格式为到达时刻 负载大小,消息说明: 每个时刻…...
Portforge:一款功能强大的轻量级端口混淆工具
关于Portforge Portforge是一款功能强大的轻量级端口混淆工具,该工具使用Crystal语言开发,可以帮助广大研究人员防止网络映射,这样一来,他人就无法查看到你设备正在运行(或没有运行)的服务和程序了。简而言…...
1.8. 离散时间鞅-无界停时定理与随机游走
无界停时定理与随机游走 无界停时定理与随机游走1. 无界停时定理1.1. 一致可积1.2. 非一致可积2. 应用于随机游动-鞅方法2.1. 随机游走构造的鞅2.2. 对称简单随机游走无界停时定理与随机游走 1. 无界停时定理 本节给出一致可积下鞅的无界停时定理,说明一致可积下鞅的停止过程…...
Google Pixel4手机刷机+Root+逆向环境详细教程
Google Pixel4手机刷机Root逆向环境配置详细教程 刷机工具下载 Windows10、Google Pixel4手机当前安卓10系统、adb工具、要刷的谷歌原生的Android11最新刷机包、安装google usb驱动、美版临时twrp-3.6.0_11-0-flame.img和美版永久twrp-installer-3.6.0_11-0-flame.zip、Magis…...
IT项目管理-小题计算【太原理工大学】
1.合同总价问题 问承包商的利润是? 实际利润目标利润(目标成本-实际成本)*卖方分担比例 解:10 000(100 000 - 90 000)* 0.2 12 000(元) 实际成本有时也写作最终成本,问承…...
ARP欺骗使局域网内设备断网
一、实验准备 kali系统:可使用虚拟机软件模拟 kali虚拟机镜像链接:https://www.kali.org/get-kali/#kali-virtual-machines 注意虚拟机网络适配器采用桥接模式 局域网内存在指定断网的设备 二、实验步骤 打开kali系统命令行:ctrlaltt可快…...
Android动画(四):PathMeasure实现路径动画
文章概览 1 PathMeasure概述2 实现路径加载动画3 实现箭头加载动画4 实现操作成功动画 本系列将介绍以下内容: Android动画 1 PathMeasure概述 PathMeasure是一个单独的类,其全部源码如下(请详细研读注释): package…...
HTTP 连接详解
概述 世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的,客户端可以打开一条TCP/IP连接,连接到任何地方的服务器。一旦连接建立,客户端和服务器之间交换的报文就永远不会丢失、受损或失序 TCP(Transmission Control Protocol&…...
练习题(2024/5/12)
1二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…...
Day50代码随想录动态规划part12:309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
Day50 动态规划part12 股票问题 309.最佳买卖股票时机含冷冻期 leetcode题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 题意:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算…...
【软考】scrum的步骤
目录 1. 明确产品愿景和需求2. 制定计划和任务列表3. 进行迭代开发(Sprint)4. Sprint评审会议5. Sprint回顾会议6. 重复迭代 1. 明确产品愿景和需求 1.这个过程通常由项目所有者和利益相关者参与,目的是确保整个团队对项目的目标和方向有清晰…...
【C语言】编译与链接
✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:C语言 个人主页:Celias blog~ 目录 引言 一、翻译环境 1.1 编译 1.1.1 预处理 1.1.2 编译 …...
Consul 注册的服务地址变成了 127.0.1.1
问题 我们的服务一直用 Consul 作为注册中心,在 AWS 和 阿里云上使用的时候,没出现过问题。最近把一些服务迁到腾讯云的时候,遇到一个问题:注册的服务地址都是 127.0.1.1。 127.0.1.1 这个地址我们平时遇到的比较少,…...
数字水印 | 离散小波变换 DWT 的 Python 代码实现
🍍原文: 【图像处理】图像离散小波变换及 Python 代码实现 🍍写在前面: 本文在原文的基础上补全了代码。 1 环境准备 ① 安装 p y w t \mathsf{pywt} pywt 包: pip install PyWavelets说明: p y w t \…...
[框架] Unity 公共执行器
本篇我们通过使用单例模式来创建一个公共执行器,使得原本应该在Update()、FixedUpdate()中的指令都可以统一放在一个对象中执行,且可进行添加和移除操作。 1. 创建单例模式改造器:SingletonMono 我们先创建一个单例模式改造器,使…...
二进制转为HEX数组小工具
在使用RA8889时,JPG的解码只能从FLASH的DMA通道获取,那么如果要从远端、或者SD卡等处读取JPG图片出来显示怎么办? RA8889支持JPG图片硬解码,但数据流是从FLASH进行DMA读取的,然后再进行解码。因此这种情况下ÿ…...
数据结构-二叉树-红黑树
一、红黑树的概念 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
