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