Python 2.7與Python3 的print有什麼區別?
阿新 • • 發佈:2019-02-08
總地來說, 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 ...
一類的語句一定要放在程式碼開始處。