python3.8中新增的三个特性

由于之前学习以及项目中一直用的是python3.6.5,最近几天在学习之余看了一下python3.8的官方文档,了解了一下python3.8.x中新增的特性。以此来记录一下。

1.海象运算符

python3.8.x中新增了海象运算符:=,可以在局部代码块中的表达式给变量赋值,并且该变量可以用于该代码块中。该用法可以用于简化if语句以及列表推导等,下面是官方中给出的例子:(据说是因为通过了这个python特性而使得龟叔决定退出python管理层。。。)

# s = "python 3.8.3 test"
# 在if语句中使用
# if (n := len(s)) > 10:
#     print(f"the length of s {n} is too long!")  # 避免了使用两次len
#
# if (match := re.search(r"\d+", s)):
#     print(match.group())  # 结合正则表达式进行使用,要是以前版本可能需要这样写:
#
# match = re.search(r"\d+", s)
# if match:
#     print(match.group())
#
#
# def random_string(s1, s2):
#     return s1 + s2
#
#
# 在列表推导中使用
# print([random_str.upper() for item in s if (random_str := random_string("t", item)) in s])
#

使用海象运算符可以在if语句的判断语句中定义变量,同时该变量可以在代码块中使用。或者是在列表推导中可以使用更复杂的函数来进行相关的判断。

2.f字符串的增强

# 自从python引入f-string以后,格式化字符串更方便,在python3.8.x中格式符串中形式为
# f'{expr=}' 的 f-字符串将扩展表示为表达式文本,加一个等于号,再加表达式的求值结果,可以更方便的用于调试和SQL语句等
# now = format(datetime.now(),"%Y-%m-%d %H:%M:%S")
# print(f"{now=}")  # >>> now='2020-02-29 13:52:37'
# print(f"now={now}")  # >>> now=2020-02-29 13:53:50之前版本的写法和输出结果,所有如果是SQL语句中之前的版本必须写成:
# print(f"now='{now}'")  # >>> now='2020-02-29 13:54:46'

3.仅限位置参数

# """仅限位置参数"""
# python 3.8.x中在函数参数的关键字中增加了仅限位置参数/.
#
#
# def func(a, b, /, c, d, *, e, f):  # 此时a, b为仅限位置参数,不能以key=word的形式传入,c,d则为关键字参数或者位置参数,e,f则为关键字参数
#     print(a, b, c, d, e, f)
#
#
# func(10, 20, 30, d=40, e=50, f=60)  # >>> 10 20 30 40 50 60
# func(a=10, b=20, 30, d=40, e=50, f=60) 错误的调用方式
# 引入仅限位置参数的好处在于可以更方便的重构函数,由于此时必须以位置参数的形式传入而不能以func(a=10, b=20, 30, d=40, e=50, f=60)的形式
# 调用,所以此时如果重构func的函数参数a,b等,外面调用的代码不需要改变.
#
#
# def func_kwargs(a, b, /, **kwargs):
#     print(a, b, kwargs)
#
#
# func_kwargs(10, 20, a=30, b=40)  # >>> 10 20 {'a': 30, 'b': 40},由于/左侧的形参不会被公开为关键字参数
# 所以在函数参数传递的时候仍然可用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值