python3.8新特性
海象运算符(赋值运算符)
#原来
def choice():
s = ' jsadlk '.strip()
res = isinstance(s, int)
if res:
return 'int'
else:
return 'other'
res = choice()
#使用了海象运算符之后
s = ' jsadlk '.strip()
def choice():
if res:=isinstance(s, int): #如果res为真的话赋值给res
return res
else:return res
res = choice()
也可以用于循环
a = True
while a:
print('helloworld')
使用了海象运算符之后↓
while a:=True:
print('helloworld')
f-string
a = '你好'
b = '世界'
print(f'a={a} b={b}')
# a=你好 b=世界 # f-string在3.8中变得更加简洁
a = '你好'
b = '世界'
print(f'{a=} {b=}')
# a=你好 b=世界
#还添加了赋值符号!s和!f,制定输入结果格式
import datetime time = datetime.datetime.now()
print(f'{time=!s}')
# time=2019-07-30 16:58:00.123412 import math print(f'{math.pi=!f:.2f}') # 精确到小数点后面两位
[/],[*]
有新的语法(/)表示必须按位置指定某些函数参数(即,不能用作关键字参数
# 使用「/」规定哪些变量的输入必须按照第一种格式
适用范围如下:
/的所有剩余参数都只作为位置处理。
如果/未在函数定义中指定,则该函数不接受任何位置参数。
围绕仅针对位置的参数的可选值的逻辑与针对位置或关键字参数的逻辑相同。
一旦用默认值指定了一个position -only参数,下面的position -only和position -or-keyword参数也需要有默认值。
没有默认值的仅定位参数是必需的仅定位参数。
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
---------- ---------- ----------
| | |
| 位置 和 关键字 参数 |
| - 只有关键字参数
-- 只有位置参数
其中/和*是可选的。如果使用这些符号,则通过参数传递给函数的方式来指示参数的类型:position -only、position -or-keyword和key - word-only。关键字参数也称为命名参数。
pos_or_kwd参数
如果/和*在函数定义中不存在,则可以通过位置或关键字将参数传递给函数。
pos-only参数
更详细地看一下,可以将某些参数标记为position -only。如果只是位置,则参数的顺序很重要,并且不能通过关键字传递参数。位置参数将放在/(正斜杠)之前。/用于逻辑上将位置参数与其他参数分开。如果函数定义中没有/,则没有位置参数。
所以/后面的参数可以是位置或关键字或关键字。
#下面是有效的位置函数
def name(p1, p2, /, p_or_kw, *, kw):
def name(p1, p2=None, /, p_or_kw=None, *, kw):
def name(p1, p2=None, /, *, kw):
def name(p1, p2=None, /):
def name(p1, p2, /, p_or_kw):
def name(p1, p2, /):
def name(p1, p2): #当然不加的话没有任何影响,和以前的没有区别
#下面是有效的定义函数
def name(p_or_kw, *, kw):
def name(*, kw):
#下面是无效的函数定义
def name(p1, p2=None, /, p_or_kw, *, kw):
def name(p1=None, p2, /, p_or_kw=None, *, kw):
def name(p1=None, p2, /):
总结:通过/或者*可以指定位置参数,常规参数,关键字参数在函数形参位置带来更好的可读性,重构性,错误提示性
多进程共享内存
multiprocessing模块提供了SharedMemory类,可以在不同的Python进城之间创建共享的内存区域
__pycache__
# __pycache__目录是由 Python3 解释器创建的,用于保存.pyc 文件。这些文件保存着解释器编译.py 文件之后的字节码(byte code)。之前的 Python 版本仅仅只是为每个.py 文件创建一个.pyc 文件,但是新版本会有所变化。
#
# 为了支持多版本的 Python,包括一些不是 CPython 的版本(如 PyPy),现在库文件会为每个 Python 版本创建对应的.pyc 文件,格式形如「name.interp-version.pyc」。例如,某个 foo.py 文件在第一次使用的时候会创建一个对应的 pyc 文件,其路径为「__pycache__/foo.cpython-37.pyc」,这个 pyc 文件会定义使用的 Python 版本。
python3.8将于不晚于2019年10月份,3.9版本估计在2020年左右
更多参考文档 https://docs.python.org/3.8/whatsnew/3.8.html#assignment-expressions
python3.8新特性的更多相关文章
- 字符串格式的方法%s、format和python3.6新特性f-string和类型注解
一.%s msg = '我叫%s,今年%s,性别%s' %('帅哥',18,'男') print(msg) # 我叫帅哥,今年18,性别男 二.format # 三种方式: # 第一种:按顺序接收参数 ...
- python3.8 新特性
https://docs.python.org/3.8/whatsnew/3.8.html python 3.8的新功能本文解释了与3.7相比,python 3.8中的新特性. 有关完整的详细信息,请 ...
- Python3.8新特性--PositionalOnly参数
“理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机. 不记得没关系,只需要知道:有这么一位老司机, 穿上西装带大家打拼职场! 操起键盘带大家打磨技术! ...
- 你不得不了解的Python3.x新特性
从 3.0 到 3.8,Python 3 已经更新了一波又一波,但似乎我们用起来和 2.7 没有太大区别?以前该怎么写 2.7 的代码现在就怎么写,只不过少数表达方式变了而已.在这篇文章中,作者介绍了 ...
- python3.6 新特性学习
#支持类型提示 typing { def greeting(name: str) -> str: return 'Hello ' + name #在函数greeting中,参数名称的类型为str ...
- Python3.8新特性-- 海象操作符
“理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机. 不记得没关系,只需要知道:有这么一位老司机, 穿上西装带大家打拼职场! 操起键盘带大家打磨技术! ...
- Python3.X新特性之print和exec
print print 现在是一个函数,不再是一个语句.<语法更为清晰> 实例1 打开文件 log.txt 以便进行写入并将对象指定给 fid.然后利用 print将一个字符串重定向给文件 ...
- python3.6新特性
print(f'{6:^30}') print('\n'.join([' '.join([f'{i}*{j}={i*j:2d}' for j in range(1,i+1)]) for i in ra ...
- Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth
Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1 Python 3_x 新特性1 python3.4新特性1 python3.5新特性1 值得关注的新特性1 ...
随机推荐
- c#通过socket判断服务器连接是否正常
判断Socket是否连接上,需要通过发包来确认. 之前确认都是调用调用socket的connected属性,然而该属性是上次的连接是否成功的结果,不及时. // 检查一个Socket是否可连接 pri ...
- centos 安装 swoole_framework 框架
composer require "matyhtf/swoole_framework" 运行以上命令 Using version ^1.20 for matyhtf/swoole_ ...
- Oracle Spatial图层元数据坐标范围影响R-TREE索引的ROOT MBR吗?
Oracle Spatial的空间索引R-TREE,其实现原理为一级级的MBR(最小定界矩形).我突然想到一个问题,它的ROOT MBR是怎么确定的?是根据元数据表user_sdo_geom_meta ...
- Nginx是什么及作用?代理和反向代理解析
一:介绍 nginx是一个高性能的HTTP和反向代理服务器,其特点是占用内存少,并发能力强. 二:名词介绍 代理服务器: 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络 ...
- Python: ImportRequestsError: No module named 'requests'解决方法
运行Python程序时,出现下面错误: import requests ModuleNotFoundError: No module named ‘requests’ 原因:没有导入requests ...
- python 可变数据类型和不可变数据类型(7)
python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,其中数据类型分为两个大类,一种是可变数据类型:一种是不可变数据类 ...
- Java设计模式--代理模式+动态代理+CGLib代理
静态代理 抽象主题角色:声明真实主题和代理主题的共同接口. 代理主题角色:代理主题内部含有对真实主题的引用,从而在任何时候操作真实主题对象:代理主题提供一个与真实主题相同的接口,以便在任何时候都可以代 ...
- [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation
近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. _论文地址:htt ...
- 解决计算精度问题:BigDecimal
BigDecimal类 BigDecimal所在包:java.math,不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成 ...
- Zabbix案例实践|Zabbix屏蔽告警
近期项目中,客户要求在凌晨00:00到02:00的CPU屏蔽虚拟化监控上ESXI的红色告警,红色告警是由于某台vmCPU利用率过高而产生的.做法如下:1. 找到红色告警的触发器,通过触发器找到监控项, ...