1. 程式人生 > >Python 2.7與Python3 的print有什麼區別?

Python 2.7與Python3 的print有什麼區別?

總地來說, Python2.7的print不是一個function,而Python3裡的print是一個function。
兩都呼叫方式的主要區別如下:

print 'this is a string' #python2.7
print('this is a string') #python3

當然,python2.7裡你也可以用括號把變數括起來, 一點都不會錯:

print('this is a string') #python2.7

但是python3將print改成function不是白給的:
1. 在python3裡,能使用help(print)檢視它的文件了, 而python2不行:

>>help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to
the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.

2 . 在python3裡,能更方便的使用輸出重定向
python2.7裡,你需要以類似於C++的風格完成重定向:

with open('print.txt', 'w') as f:
    print
>> f, 'hello, python!'

在python3裡:

with open('print.txt', 'w') as f:
    print('hello, python!', file = f)

file是python3 print新加的一個引數。 另一個很handy的引數是sep, 例如列印一個整數陣列, 但你想用星號而不是空格連線。python2時可能需要寫一個迴圈來完成, python3裡這樣就行了:

a = [1, 2, 3, 4, 5]
print(*a, sep = '*')

最後, 如果想在python2.7裡使用python3的print,只需要在第一句程式碼前加入:

from __future__ import print_function

注意, from __future__ import ...一類的語句一定要放在程式碼開始處。

References