print,在版本2的使用方法是:
print 'this is version 2'
也可以是
print('this is version 2')
但到了3,就只能加上括號,像一個函數(shù)一樣來使用 print:
print('this is version 3')
input
而 input 就更繞一點。2里面有兩個用來從命令行接受輸入的函數(shù):input 和 raw_input响逢。
value = input()
input 接收的是一個值或變量矗晃,也就是說黍聂,你如果輸 123饼煞,程序接收到的就是整數(shù) 123腹纳,你輸 True痢掠,就是 bool 值 True。如果你輸了 abc嘲恍,程序會認為這是一個叫做 abc 的變量足画,而假如你沒有定義過這個變量,就會報錯佃牛。
所以淹辞,當你想用 input 得到一段文字的話,必須把文字寫在引號 "" 或 '' 中俘侠。
text = raw_input()
raw_input 接收的則是你輸入的字符串象缀,而不管你輸?shù)氖鞘裁磧热菔呓H绻阒苯幽?raw_input 得到的“數(shù)字”去比較大小,則會得到奇怪的結果央星。
在版本3里霞怀,為了減少混亂,這兩種輸入方式被合并了莉给。只是合并的方式又坑了新手:它保留了 input 這個名字和 raw_input 的效果毙石。3里只有input函數(shù),它接收你輸入的字符串颓遏,不管你輸?shù)氖鞘裁础?br>
text = input()
這種情況下徐矩,不管你是看著3的教材用2,還是看著2的教材用3州泊,都會踩到這個坑丧蘸。3里直接拿 input 得到的“數(shù)字”比較大小,會報錯類型不同無法比較遥皂。
那么在3里力喷,如何像2一樣得到用戶輸入的一個值呢?方法是 eval():
value = eval(input())
或者演训,如果你只是需要一個整數(shù)值弟孟,也可以:
value = int(input())
除了一開始越到的這兩個坑外,還有其他一些可能遇到的變動样悟,這里以3與2相比的差異來說:
打開文件不再支持 file 方法拂募,只能用 open
range不再返回列表,而是一個可迭代的range對象
除法 / 不再是整除窟她,而是得到浮點數(shù)陈症,整除需要用雙斜杠 //
urllib和urllib2合并成了urllib,常用的urllib2.urlopen()變成了urllib.request.urlopen()
字符串及編碼相關有大變動震糖,簡單來說就是原來的str變成了新的bytes录肯,原來的unicode變成了新的str。