Python 3.10 中新的功能和变化

本文介绍了Python 3.10的新功能和变化,包括联合运算符的更新语法、多行上下文管理器的简化方式以及引入的结构模式匹配,还提到了性能改进和zip函数的长度检查。这些改变将提升编程效率和代码可读性。

随着最后一个alpha版发布,Python 3.10 的功能更改全面敲定!

现在,正是体验Python 3.10 新功能的理想时间!正如标题所言,本文将给大家分享Python 3.10中所有重要的功能和更改。

新功能1:联合运算符

在过去, |符号用于 "算术或"运算,例如:

print(0 | 0)
print(0 | 1)
print({1, 2} | {2, 3})

输出:

0
1
{1, 2, 3}

在Python 3.10中, |符号有的新语法,可以表示x类型 或 Y类型,以取代之前的typing.Union 完成类型注解

举个栗子:

函数的参数应该是一个int 或 str类型

旧的写法:

  • from typing import Union
    
    
    def f(value: Union[int, str]) -> Union[int, str]:
      return value*2
    

新的写法:

  • python<br />def f(value: int | str) -&gt; int | str:<br /> return value*2<br />

这种新的语法也被作为isinstance()issubclass() 的第二个参数,用于类型判断

 isinstance(1086, int | str)   # 10086是否为 int型 或 str型

新功能2: 多行上下文管理器

在过去,上下文管理器一般用于资源的自动获取和自动释放,利用打开文件时使用上下文管理器:

with open("test.txt", "w") as f:  # 自动打开和关闭文件
    f.write("hello, 我是三木")    #  对文件进行读写

如果要复制文件的话,需要打开源文件和目标文件,那么就需要2个上下文管理器,代码会写成这个样子:

with open("test.txt", "r") as f:  # 打开第一个文件
    with open("test_copy.txt", "w") as f_copy: &nbs
CMake Error at /opt/ros/humble/share/rosidl_adapter/cmake/rosidl_adapt_interfaces.cmake:59 (message): execute_process(/home/jetson/miniconda3/envs/bevfusion/bin/python3 -m rosidl_adapter --package-name continental_msgs --arguments-file /home/jetson/autoware/build/continental_msgs/rosidl_adapter__arguments__continental_msgs.json --output-dir /home/jetson/autoware/build/continental_msgs/rosidl_adapter/continental_msgs --output-file /home/jetson/autoware/build/continental_msgs/rosidl_adapter/continental_msgs.idls) returned error code 1: Traceback (most recent call last): File "/home/jetson/miniconda3/envs/bevfusion/lib/python3.8/runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "/home/jetson/miniconda3/envs/bevfusion/lib/python3.8/runpy.py", line 87, in _run_code exec(code, run_globals) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__main__.py", line 19, in <module> sys.exit(main()) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/main.py", line 53, in main abs_idl_file = convert_to_idl( File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__init__.py", line 18, in convert_to_idl from rosidl_adapter.msg import convert_msg_to_idl File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/msg/__init__.py", line 16, in <module> from rosidl_adapter.resource import expand_template File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/resource/__init__.py", line 19, in <module> import em ModuleNotFoundError: No module named &#39;em&#39; Call Stack (most recent call first): /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces) CMakeLists.txt:17 (rosidl_generate_interfaces)
最新发布
11-04
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值