Python2與3的一些注意要點(後期持續更新)
1.Linux指令碼的申明:
如果使用該申明:#!/usr/bin/ python 代表是系統自帶的python.2.7來解釋你的指令碼。如果你安裝一個高版本 是在usr/local/python3.5目錄下,由於一般情況下不可以替換系統自帶的Python怕發生其他問題。
所以我們寫指令碼的時候用該申明:#!/usr/bin/env python這樣解析該指令碼的就是高版本(加上解析申明就代表檔案本身只要具備執行許可權也可以直接執行)
2.字串和2進位制:
Python2的字串和二進位制是自動互相轉換,
Python3需要進行encode才可以把字串轉換成二進位制型別(bytes),二進位制需要進行decode才可以轉成字串型別(str)
3.請求輸入(標準輸入)的區別:
print('Hi, %s!' %input('Please enter your name: ')) python3.*版本用input
print('Hi, %s!' %raw_input('Please enter your name: ')) #python2.*版本用raw_input
4.字符集的區別
python3:python 3統程式預設和檔案編碼是unicode字符集不管是GBK 還是utf-8最終要顯示中文就必須要解碼unicode字符集才可以顯示 (一個文字內容統一顯示某一字符集顯示,如果存在其他字符集需轉換否則以bytes型別顯示)
python2:python2:統程式預設和檔案編碼是ascii字符集指令碼需要宣告字符集如:-*- coding:utf-8 -*- or -*- coding:gbk -*-.一個檔案包含gbk utf-8的字符集,只需要切換會話視窗對應的字符集就可以顯示 如:會話視窗是GBK ,那麼utf-8的字符集就會出現亂碼,如會話串列埠是utf-8,那麼其他字符集就會出現亂碼或者空
5.提示輸入
Python2:raw_input
Python3:input
5.類的區別查詢方式
py2經典類是按深度優先來繼承的,新式類是按廣度優先繼承的
py3全是按廣度優先繼承
6.socket區別:
python 2
1.增加指令碼申明:-*-coding:utf-8-*-
2.server.listen()#監聽埠 ==== server.listen(5): 監聽一定要寫數量否則出錯
傳送資料無需轉換資料型別
Python3
所有資料必須要.encode(‘utf-8’) 編碼成bytes型別才可進行傳送資料和接收資料
然後在本地如果要檢視恢復就.decode(‘utf-8’)解碼就可以了