您的位置:首页 > 编程语言 > Python开发

海象运算符?一文详解python3.8到底更新了哪些新功能

2021-01-21 21:42 1036 查看


检查你的python版本





早在2019年10月


正式版的python就已经更新到3.8版本


听说还加了一只小海象进去


那么半年过去了


python3.8究竟更新了哪些新功能


我要不要更新到最新版本


一起跟随本文看看吧!



Python 3.8中最大的变化是引入赋值表达式。


也就是前面说的海象运算符


赋值表达式可以在一行代码中


同时完成赋值和返回值的操作


说人话就是在python3.7及之前版本


这么干需要两步


>>> text = "早起学习"
>>> print(text)
False

那么有了这个赋值表达式


只要一步就可以搞定


>>> print(text :=
"早起学习")
早起学习


再来看一个例子


现在需要一串代码实现下面需求


要求用户输入直到输入早起 python并记录用户的输入


用以前的方式实现

inputs = list()
current = input("请输入文字: ")
while current != "早起python":
   inputs.append(current)
   current = input("请输入文字: ")

这里重复的使用了input,麻烦麻烦


再换个思路优化一下


用一个无限while循环,然后使用break跳出


inputs = list()
while True:
   current = input(请输入文字": ")
   if current == "早起python":
       break
   inputs.append(current)

看上去只用了一次input函数


但是怎么代码越写越长


那么使用最新的赋值表达式试试看


inputs = list()
while (current := input("请输入文字: ")) != "早起python":
   inputs.append(current)

直接在while后面就开始了判断


是不是有点像C/C++


而在正则表达式中用赋值表达式会更加简洁


不过话说回来


代码是少了


但一行代码所含的信息量就多了


就需要花更多的时间去阅读这一行代码


所以什么时候使用还请自己判断


等等!


还没说为啥把赋值表达式叫做海象运算符


因为赋值表达式长这样


请把手机旋转90度


再看这符号像不像侧着的海象象牙



不管你觉得像不像


反正大家都这么解释



再来看下一个新特性


使用f-字符进行更简单的调试


在python3.6之后就有了f-字符


可以这么用


>>> style = "早起python"
>>> f"I love {style} "

'I love 早起python'


但是在Python 3.8中


可以在f字符串中使用赋值表达式


>>> f"i love {(text := '早起python')} "
'I love 早起python'


甚至可以在表达式末尾添加 = 来调试代码


>>> python = 3.8
>>> f"{python=}"
'python=3.8'

这在调试脚本中非常有用


因为以前需要输入两次变量名称


>>> python = 3.7
>>> f"python={python}"

'python=3.7'

毕竟活着就是为了偷懒


   


好了看下一个


Python 3.8提供了一个新模块importlib.metadata


可以访问有关已安装软件包的信息


#查看pip相关信息

>>> metadata.version("pip")

'20.0.2'

>>> pip_metadata = metadata.metadata("pip")
>>> list(pip_metadata)
['Metadata-Version', 'Name', 'Version', 'Summary', 'Home-page', 'Author',
'Author-email', 'License', 'Keywords', 'Platform', 'Classifier',
 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier',
 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier',
 'Classifier', 'Classifier', 'Requires-Python']

>>> pip_metadata["Home-page"]
'https://pip.pypa.io/'

>>> pip_metadata["Requires-Python"]
'>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'

反正我不知道具体有啥用


再看下一个改动


添加了错误语法提示


给你一个贴心的语法问题定位


#python3.7

>>> version = "3.7"

>>> version is "3.7"
False

# Python 3.8
>>> version = "3.8"
>>> version is "3.8"
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
False

>>> version == "3.8"

True

好了


肉眼可见可操作的更新基本上就在以上了


当然还有一些小的改动就不再介绍


如果想体验最新的python3.8


可以按照下面步骤安装


yum -y install yum-utilsyum-builddep pythoncurl -O https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgztar xf Python-3.8.0.tgzcd Python-3.8.0./configuremakemake install


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: