• python不同版本常用功能差异


    py3.5

    • 列表(*)、字典(**)解包操作符
    1. print(*[1], *[2], 3, *[4, 5])
    2. def fn(a, b, c, d):
    3. print(a, b, c, d)
    4. fn(**{'a': 1, 'c': 3}, **{'b': 2, 'd': 4})
    5. """************************************************"""
    6. *range(4), 4
    7. [*range(4), 4]
    8. {*range(4), 4, *(5, 6, 7)}
    9. {'x': 1, **{'y': 2}}
    • 函数注解  (1. 方便程序员查看,2. IDE的设计者可以用来做代码检查。)

    py3.6

    • 格式化字符串 f-字符串
    1. name = "Fred"
    2. str_ = f"He said his name is {name}."
    3. print(str_) # He said his name is Fred
    • 变量注解
    1. """添加变量注释后会添加到__annotations__中"""
    2. primes: List[int] = []
    3. captain: str # Note: no initial value!
    4. class Starship:
    5. stats: Dict[str, int] = {}
    6. n : int # n为int型变量,没有赋值
    7. n2 : int = 10 # n2为int型变量,赋值为10
    8. r : str # r为str型变量,没有赋值
    9. r2 : str = 'hello' # r2为str型变量,赋值为hello
    10. v : float # v为float型变量,没有赋值
    11. v1 : float = 3.14 # v1为float型变量,赋值为3.14

    py3.7

    • 类型标注延迟求值
    1. # 不带类型注解
    2. def foo(bar, baz):
    3. pass
    4. #def foo(bar: str, baz: int)-> int:
    5. # return baz
    6. # 标注延迟求值
    7. from __future__ import annotations

    py3.8

    • 海象运算符  ( := 可在表达式内部为变量赋值)
    1. """海象运算符, :返回值、= 赋值 ,赋值后返回"""
    2. if (n := len(a)) > 10:
    3. print(f"List is too long ({n} elements, expected <= 10)")
    4. if a:=1>0:
    5. print(a) # 1
    • 仅限位置形参   /
    • 仅限关键字参数 *
    1. # / : 函数形参语法 / 用来指明某些函数形参必须使用仅限位置而非关键字参数的形式
    2. def f(a, b, /, c, d, *, e, f):
    3. print(a, b, c, d, e, f)
    4. # 形参 a 和 b 为仅限位置形参,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参
    5. f(10, 20, 30, d=40, e=50, f=60)
    •  f-字符串支持 = 用于自动记录表达式和调试文档
    1. # 增加 = 说明符用于 f-string。 形式为 f'{expr=}' 的 f-字符串将扩展表示为表达式文本,加一个等于号,再加表达式的求值结果。
    2. print(f'{theta=} {cos(radians(theta))=:.3f}') # theta=30 cos(radians(theta))=0.866
    3. # 通常的 f-字符串格式说明符 允许更细致地控制所要显示的表达式结果:
    4. >>> delta = date.today() - member_since
    5. >>> f'{user=!s} {delta.days=:,d}'
    6. 'user=eric_idle delta.days=16,075'
    7. >>> print(f'{theta=} {cos(radians(theta))=:.3f}')
    8. theta=30 cos(radians(theta))=0.866

    py3.9

    • 字典合并与更新运算符
    1. >>> x = {"key1": "value1 from x", "key2": "value2 from x"}
    2. >>> y = {"key2": "value2 from y", "key3": "value3 from y"}
    3. >>> x | y
    4. {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
    5. >>> y | x
    6. {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
    • 新增用于移除前缀和后缀的字符串方法
    1. str.removeprefix(prefix, /)
    2. >>> 'TestHook'.removeprefix('Test')
    3. 'Hook'
    4. >>> 'BaseTestCase'.removeprefix('Test')
    5. 'BaseTestCase'
    6. str.removesuffix(suffix, /)
    7. >>> 'MiscTests'.removesuffix('Tests')
    8. 'Misc'
    9. >>> 'TmpDirMixin'.removesuffix('Tests')
    10. 'TmpDirMixin'
    • 标准多项集中的类型标注泛型
    1. def greet_all(names: list[str]): # -> None
    2. for name in names:
    3. print("Hello", name)

  • 相关阅读:
    Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动
    微信服务商模式(电商收付通)合单支付APIV3完整Demo,可直接使用,适用于(H5、JSAPI、H5、App、小程序)
    超市促销叫卖的语音是怎么做的?介绍简单小方法,方便又快捷
    (附源码)node.js基于Vue技术的外卖平台的设计与实现 毕业设计 151448
    抖音API接口汇总及解析式(网络爬虫)
    Swing程序设计(5)绝对布局,流布局
    Vim 系列 (一) Using Marks in Vim
    OpenFeign快速入门及使用
    测试与爬虫—抓包神器之Charles
    如何才能在Ubuntu系统部署RabbitMQ服务器并公网访问
  • 原文地址:https://blog.csdn.net/mildpython/article/details/125534515