下面是关于“你应该知道的Python3.6、3.7、3.8新特性小结”完整攻略的讲解。
一、Python3.6新特性
1. 格式化字符串字面值
Python3.6引入了一种新的格式化字符串字面值语法(Formatted string literals),简称f-string,使用f-string可以帮助你更方便、更简洁地格式化输出字符串。具体使用方法如下:
name = "Alice"
age = 23
print(f"My name is {name}, and I am {age} years old.")
输出结果为:
My name is Alice, and I am 23 years old.
2. 字典键保持原有顺序
在Python3.6之前,字典是无序的,即使你按照一定顺序添加键值对,输出时也不一定保留原有顺序。Python3.6开始,字典会按照添加元素的顺序进行输出,这也是Python3.6的一个重要的新特性之一。示例代码如下:
d = {'a': 1, 'c': 2, 'b': 3}
print(d)
输出结果为:
{'a': 1, 'c': 2, 'b': 3}
二、Python3.7新特性
1. 嵌套变量访问
在Python3.7之前,你需要使用format()
函数来访问嵌套变量,如下所示:
person = {'name': 'Alice', 'age': 23}
template = "My name is {0[name]}, and I am {0[age]} years old.".format(person)
print(template)
输出结果为:
My name is Alice, and I am 23 years old.
Python3.7简化了这一过程,你可以直接在f-string中访问嵌套变量。示例代码如下:
person = {'name': 'Alice', 'age': 23}
template = f"My name is {person['name']}, and I am {person['age']} years old."
print(template)
输出结果为:
My name is Alice, and I am 23 years old.
2. breakpoint()
函数
Python3.7引入了一个新的内置函数breakpoint()
,可以帮助你更方便地调试代码。当你调用这个函数时,程序会自动在这个地方停下来,等待你进行调试。示例代码如下:
def foo():
x = 1
y = 2
breakpoint()
z = x + y
return z
foo()
你会发现,当程序运行到breakpoint()
函数时,程序会自动停下来并进入调试模式,你可以在这里进行你需要的调试工作。
三、Python3.8新特性
1. =
与:=
的区别
在Python3.8中,引入了一个新的赋值运算符:=
,也叫做海象运算符。这个运算符可以帮助你更方便地进行赋值操作。示例代码如下:
if (n := len("hello")) > 5:
print(f"'hello' has {n} characters.")
输出结果为:
'hello' has 5 characters.
相比于直接使用=
进行赋值操作,使用:=
语法可以更方便地在表达式中赋值并判断。需要注意的是,:=
是一个表达式,并不是一个语句,所以可以在if语句中直接使用。
2. 更好的f-string支持
在Python3.8中,f-string语法得到了进一步增强,你可以在其中使用表达式、函数、和内置对象。示例代码如下:
import datetime
name = "Alice"
age = 23
print(f"My name is {name.capitalize()}, and I am {age + 1} years old.")
print(f"Today is {datetime.datetime.now():%Y-%m-%d %H:%M:%S}")
输出结果为:
My name is Alice, and I am 24 years old.
Today is 2022-01-01 12:00:00
这个示例展示了如何在f-string中使用capitalize()
函数和datetime
对象进行输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你应该知道的Python3.6、3.7、3.8新特性小结 - Python技术站