2014-11-04 37 views
1

簡單代碼:爲什麼分配打印結果的語法無效?

>>> a = print('foo') 
    File "<stdin>", line 1 
    a = print('foo') 
      ^
SyntaxError: invalid syntax 

爲什麼?是不是print應該返回None?有什麼特別的關於print

注意:沒有太多的指向,只是試圖瞭解爲什麼這個特定的功能會如此反應。

+0

你正在使用python 2試試'python「你好」' – Hackaholic 2014-11-04 20:19:04

+1

@Hackaholic:我不明白你的評論 – njzk2 2014-11-04 20:21:15

+0

in 2'print「hello」'in 3 print( 「hello」),是的,它不會解決OP問題 – Hackaholic 2014-11-04 20:22:31

回答

8

在Python 2中,print是一個聲明。這不是一個功能,也沒有「結果」。但是,您可以通過執行from __future__ import print_function來使其成爲函數,然後您的示例就可以工作。 (在Python 3中它總是一個函數。)

+3

爲了補充說明,'print(' foo')'*看起來像一個函數調用,但它只是'print'關鍵字後面的括號表達式。 – chepner 2014-11-04 20:19:05

+0

這就是它看起來像一個令人困惑的功能的部分。 – njzk2 2014-11-04 20:22:33

+3

@ njzk2:如果您嘗試打印兩個參數,您可以看到差異:'print 2,3'將打印'2 3',而'print(2,3)'打印一個參數,一個元組,所以輸出將是'(2,3)'。 – abarnert 2014-11-04 20:25:07