美文网首页
Python 3.7特性

Python 3.7特性

作者: Zszen | 来源:发表于2020-06-23 16:12 被阅读0次
特性 代码 对比
新增内置函数breakpoint() """猜数字游戏"""


def guess(target):
user_guess = input("请输入你猜的数 >>> ")
breakpoint() //加入这一行
if user_guess == target:
return "你猜对了!"
else:
return "猜错了"


if name == 'main':
a = 100
print(guess(a))
请输入你猜的数 >>> 100
> d:\work\for_test\py3_test\test.py(7)guess()
-> if user_guess == target:
(Pdb) locals()
{'target': 100, 'user_guess': '100'}
(Pdb) type(user_guess)
<class 'str'>
类型和注解 # 带类型注解
def foo(bar: 'Describe the bar', baz: print('random')) -> 'return thingy':
# 不带类型注解
def foo(bar, baz):
生成器异常处理 在Python 3.7中,生成器引发StopIteration异常后,StopIteration异常将被转换成RuntimeError异常,那样它不会悄悄一路影响应用程序的堆栈框架。这意味着如何处理生成器的行为方面不太敏锐的一些程序会在Python 3.7中抛出RuntimeError。在Python 3.6中,这种行为生成一个弃用警告;在Python 3.7中,它将生成一个完整的错误。

一个简易的方法是使用try/except代码段,在StopIteration传播到生成器的外面捕获它。更好的解决方案是重新考虑如何构建生成器――比如说,使用return语句来终止生成器,而不是手动引发StopIteration。
-
开发模式 Python解释器添加了一个新的命令行开关:-X,让开发人员可以为解释器设置许多低级选项。

这种运行时的检查机制通常对性能有重大影响,但在调试过程中对开发人员很有用。

-X 激活的选项包括:

asyncio模块的调试模式。这为异步操作提供了更详细的日志记录和异常处理,而异常操作可能很难调试或推理。
面向内存分配器的调试钩子。这对于编写CPython扩展件的那些人很有用。它能够实现更明确的运行时检查,了解CPython如何在内部分配内存和释放内存。
启用faulthandler模块,那样发生崩溃后,traceback始终转储出去。
高精度时间函数 新的时间函数使用后缀_ns。比如说,time.process_time()的纳秒版本是time.process_time_ns()。请注意,并非所有的时间函数都有对应的纳秒版本。
其他新特性
- 字典现在保持插入顺序, 这在 3.6 中是非正式的,但现在成为了官方语言规范。在大多数情况下,普通的 dict 能够替换 collections.OrderedDict。
- .pyc 文件具有确定性,支持可重复构建 —— 也就是说,总是为相同的输入文件生成相同的 byte-for-byte 输出。
- 新增contextvars模块,针对异步任务提供上下文变量。
- main中的代码会显示弃用警告(DeprecationWarning)。
- 新增UTF-8模式。在Linux/Unix系统,将忽略系统的locale,使用UTF-8作为默认编码。在非Linux/Unix系统,需要使用-X utf8选项启用UTF-8模式。
- 允许模块定义getattrdir函数,为弃用警告、延迟import子模块等提供便利。
- 新的线程本地存储C语言API。
- 更新Unicode数据到11.0。

相关文章

网友评论

      本文标题:Python 3.7特性

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