python中的可变打印

时间:2012-09-19 04:06:28

标签: python

我是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中,它正在打印该值,但在我的情况下,它显示为“无效语法”。为什么会这样?

2 个答案:

答案 0 :(得分:5)

在Python 2中,print不是函数,而是关键字。因此括号无关紧要,print 'foo'print('foo')一起使用。

Python 3将print转换为一个函数,具有,并使用参数print('foo')进行调用。将其称为print 'foo'将不再有效。

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

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

答案 1 :(得分:4)

由于您使用的是Python 3 print is a function,因此您将其称为:print(a)。在Python 2(您的朋友正在使用的内容)中,您可以不使用括号,并将其称为print a,但将来无法使用,因此你的方式是正确的

此外,您的版本(print(a))将同时适用于Python 3和Python 2,因为只要它们匹配,就会忽略额外的括号。我建议总是用Python 3风格编写它,因为它适用于两者。你可以使用(有些神奇的)__future__ module

来明确和要求
from __future__ import print_function

print作为函数会导致其他一些差异,因为在Python 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