1

我是 Python 新手,我正在尝试声明一个变量并打印它的值。

这是我的代码:

#!C:\Python32\python.exe
import sys
import os
import cgi
import cgitb
cgitb.enable()
a = 5
print(a)-------------------------> My doubt is in this line

但是我的一个朋友把那行写成print a. 在他的 Python 中,它正在打印该值,但在我的情况下,它显示为“无效语法”。为什么会这样?

4

2 回答 2

5

在 Python 2 中,print不是函数,而是关键字。因此括号无关紧要并且print 'foo'print('foo').

Python 3print变成了一个函数,必须用参数调用它:print('foo'). 将其称为print 'foo'将不再起作用。

由于在使用printas 关键字时遇到错误,因此您使用的是 Python 3。您必须print像以前一样使用 as 函数。你的朋友正在使用 Python 2,它可以双向工作。

Python 3 和 Python 2 相似,但如果您计划与使用不同版本 Python 的人合作,您应该阅读一些主要差异:http: //docs.python.org/py3k/whatsnew /3.0.html

于 2012-09-19T04:08:29.747 回答
4

由于您在 Python 3 中,printis a function,所以您将其称为:print(a)。在 Python 2(你的朋友正在使用的)中,你可以去掉括号,将其命名为:print a,但这在未来将不起作用,所以你的方式是正确的

此外,您的版本 ( print(a)) 将适用于 Python 3 和 Python 2,因为只要它们匹配,就会忽略额外的括号。我建议始终以 Python 3 风格编写它,因为它适用于两者。您可以通过使用(有点神奇的)__future__模块来明确和要求:

from __future__ import print_function

将其作为函数会导致其他一些差异,因为在printPython 3 中,您可以将变量设置为指向print,或将其作为参数传递给函数:

a = print
a('magic') # prints 'magic'

def add_and_call(func, num):
    num += 1
    func(num)

add_and_call(print, 1) # prints 2
于 2012-09-19T04:07:57.377 回答