【问题标题】:Python for Absolute Beginners: Chapter 2 #Personal_Greeter绝对初学者的 Python:第 2 章 #Personal_Greeter
【发布时间】:2017-01-12 17:28:03
【问题描述】:

一个关于括号的简单问题。我很想知道为什么括号有时会打印,有时仍然“不可见”?在这种情况下,我可以举一个代码示例和答案来说明我的意思。

如果我输入:

 name = "Larry"
 print(name)
 print("Hi", name)
 raw_input("Enter to exit program")

为什么我会得到这个答案:

 Larry
 ('Hi', 'Larry') 
 Enter to exit program

Larry 没有括号,也没有单引号。然而 ('Hi', 'Larry') 是带括号和单引号的吗?

有人可以指出发生了什么吗?

【问题讨论】:

  • 最新版 Python for Absolute Beginners 是 2010 年 1 月发布的第三版,适用于 Python 3。您使用的是 Python 2.7。在 Python 2.7 中,print 是一个语句,不需要括号。因此,当 Python 2.7 看到 print("Hi", name) 时,它会看到 print 和元组 ("Hi", name)。如果您使用的是 Python 3,它会将括号解释为带有两个参数的函数调用的一部分。解决您的问题的正确方法是使用 Python 3,因为这正是您的书所教给您的。
  • 顺便说一句,在美国英语中,[] 是括号。

标签: python python-2.7 variables brackets


【解决方案1】:

括号中的表达式被解释为一种特殊的数据类型,一个元组——一个将一些值收集在一起的东西。在 Python 中可以交替使用单引号和双引号来表示字符串。

在 Python 2.7 中,当您 print 时,括号是不必要的,并且可能导致解释问题。删除它们,看看会发生什么。

与此代码比较:

a = ('hello', 3) #a tuple
print a
print 'hello', 3

另一方面,在 Python 3 中,括号是必需的。

【讨论】:

    【解决方案2】:

    最新版本的 Python for Absolute Beginners 是 2010 年 1 月发布的第三版,适用于 Python 3。您使用的是 Python 2.7。在 Python 2.7 中,print 是一个语句,不需要括号。因此,当 Python 2.7 看到 print("Hi", name) 时,它会看到 print 和元组 ("Hi", name)。如果您使用的是 Python 3,它会将括号解释为带有两个参数的函数调用的一部分。您的问题的正确解决方案是使用 Python 3,因为这正是您的书所教给您的。

    Python 2.7:

    >>> name = "Larry"
    >>> print(name)
    Larry
    >>> print("Hi", name)
    ('Hi', 'Larry')
    

    Python 3:

    >>> name = "Larry"
    >>> print(name)
    Larry
    >>> print("Hi", name)
    Hi Larry
    

    通过from __future__ import print_function 可以使 Python 2.7 像 Python 3 一样运行,但我建议不要这样做,因为您在阅读本书时会遇到其他不兼容问题。

    【讨论】:

    • 太好了,谢谢。只是一个补充问题,您可以在计算机上(分别)运行 Python 2.7 和 Python 3 吗?正如我在另一篇文章中提到的,我正在做的一门课程需要 2.7,因此根据需要调用 2.7 或 3 而不是更新它会很有用。
    • @user7409665 是的,您可以同时安装两者。
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2020-08-15
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多