大多数谈论 python2 和 python3 之间差异的网站都提到了差异中的“语法易用性”:
除了提到 print 函数和 unicode 字符串之外,他们并没有真正解释为什么会出现这种情况,对我来说,这实际上并不构成重大的语法更改。当我阅读 python2 代码和 python3 代码时,它们对我来说看起来几乎相同。
谁能提供例子吗?
PS:我不明白为什么这个问题因为基于意见而被关闭。如果我问“我认为 python3 比 python2 更具可读性,你们觉得怎么样?”,这将是基于意见的。我正在陈述我在该主题上阅读的大多数网站的事实,我想了解为什么 python3 通常被认为比 python2 更具可读性(无论是因为 print 函数/unicode 字符串还是因为还有更多内容)。
我发现许多问题都与可读性和处理不同类型文本数据的能力有关。
在Python 2中,字符串有两种类型:str和unicode。默认字符串类型 (str) 是 ASCII,如果您想使用 Unicode 字符串,则必须在字符串前面加上 u 前缀,如下所示:
ascii_str = "hello"
unicode_str = u"hello"
这可能会令人困惑且容易出错,因为混合 str 和 unicode 会引发错误。例如,连接它们可能会出现问题:
# This will raise an error!
result = ascii_str + unicode_str
此外,在处理非 ASCII 字符时,您必须确保使用 unicode 或自己处理编码/解码。
# You must explicitly decode bytes
result = ascii_str + unicode_str.decode()
在 Python 3 中,通过将所有字符串默认设置为 Unicode 来解决 str 和 unicode 之间的混淆。
unicode_str = "hello"
这意味着当您在 Python 3 中定义字符串时,它可以处理来自世界各地的大多数字符,而无需任何额外的麻烦。如果你想要一个字节字符串(相当于 Python 2 的 ASCII str),你可以在前面加上 b:
byte_str = b"hello"
这种明显的区别使得使用字符串变得更加容易,尤其是在处理国际字符时,而无需担心意外的编码错误。
使用python 3,你可以编写
my_var = 5
my_string = f"I have {my_var} apples"
而之前使用 python 2
my_var = 5
my_string = 'I have %s apples' % (my_var)
所以这至少是 python 3 更具可读性的一个例子。当有多个变量时,我发现 f 字符串更容易使用。