日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python2和3的区别字符编码格式上下文管理is和==的区别

發布時間:2025/3/21 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python2和3的区别字符编码格式上下文管理is和==的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • python2和python3的區別:
    • 字符編碼格式
    • 上下文管理
    • is和==比較:

python2和python3的區別:

  • Python2默認 編碼方式為ASCII, Python3 默認編碼方式為UTF-8(是Unicode 的擴展集)
  • python2中字符串有str和unicode兩種類型, python3 中字符串有str和字節(bytes) 兩種類型
  • python3中不再支持u中文的語法格式
  • str與字節碼(bytes): python3中字符串兩種類型
  • unicode與str : python2中字符串兩種類型

python2和python3中編碼轉換:

  • 在python3中字符串默認是unicode所以不需要decode(),直接encode成想要轉換的編碼如gb2312
  • 在python2中默認是ASCII編碼,必須先轉換成Unicode,Unicode 可以作為各種編碼的轉換的中轉站

    頂部的:# -- coding: utf-8 --或者# coding: utf-8目前有三個作用
  • 如果代碼中有中文注釋,就需要此聲明。
  • 比較高級的編輯器會根據頭部聲明,將此作為代碼文件的格式。
  • 程序會通過頭部聲明,解碼初始化 u"人生苦短",這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致)

python2在文件中進行字符編碼轉換

#!/usr/bin/env python #-*- coding:utf8 -*-ss = '北京市' #1、第一步先將utf8的字符串解碼成unicode: str ----> Unicode #注:因為上面聲明了使用utf8所以這里必須制定用utf8格式才能decode解碼成Unicode unicode_type = ss.decode('utf8') # 將utf8的str格式轉換成 unicode編碼 print type(unicode_type) # type變成:<type 'unicode'>#2、第二步將unicode轉換成gbk gbk_type = unicode_type.encode('gbk') # 將'unicode' encode編碼成gbk格式的str print gbk_type.decode('gbk') # 只有將gbk格式的str再deode 解碼成 unicode才能顯示 "北京市" # print type( gbk_type.decode('gbk') ) # 能正常顯示的只有:<type 'unicode'> 格式

python3在文件中進行字符編碼轉換

import sys print(sys.getdefaultencoding()) #在python3中打印出默認字符編碼: utf-8s = "你好" print(s.encode("gbk")) #將Unicode轉換為gbk: b'\xc4\xe3\xba\xc3' print(s.encode("utf-8")) #將Unicode轉換為utf-8: b'\xe4\xbd\xa0\xe5\xa5\xbd' print(s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312")) # 1. s.encode("utf-8") #將Unicode編碼為utf-8 # 2. s.encode("utf-8").decode("utf-8") #將utf-8解碼為Unicode在解碼時必須指定現在的字符編碼“utf-8” # 3. s.encode("utf-8").decode("utf-8").encode("gb2312") #將Unicode編碼為”gb2312” # 4. s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312") #將gb2312解碼為unicode # 注1:encode("utf-8") encode作用是將Unicode編碼編碼為指定編碼(這里的utf-8是要編碼成什么) # 注2:decode(“utf-8”) decode作用是將其他編碼轉化為Unicode編碼(這里的utf-8是指定現在是什么編碼)

字符編碼格式

幾種常用編碼

  • ASCII : 不支持中文
  • GBK : 是中國的中文字符,其包含了簡體中文和繁體中文的字符
  • Unicode : 萬國編碼(Unicode 包含GBK)

1)Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼
2)規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536
3)這里還有個問題:使用的字節增加了,那么造成的直接影響就是使用的空間就直接翻倍了

  • Utf-8 : 可變長碼, 是Unicode 的擴展集

1) UTF-8編碼:是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類
2)ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存…

上下文管理

什么是with語句

  • with是一種上下文管理協議,目的在于從流程圖中把 try,except 和finally 關鍵字和資源分配釋放相關代碼統統去掉,簡化try….except….finlally的處理流程。
    所以使用with處理的對象必須有enter()和exit()這兩個方法
  • with通過enter方法初始化(enter方法在語句體執行之前進入運行
  • 然后在exit中做善后以及處理異常(exit()方法在語句體執行完畢退出后運行)
     
    with語句使用場景
  • with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源
  • 比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等

with處理文件操作的實例

with open('/etc/passwd') as f:for line in f:print(line)

is和==比較:

== 是比較兩個對象的內容是否相等,即兩個對象的“值“”是否相等,不管兩者在內存中的引用地址是否一樣

is 比較的是兩個實例對象是不是完全相同,它們是不是同一個對象,占用的內存地址是否相同

即is比較兩個條件:

  • 內容相同
  • 內存中地址相同

總結

以上是生活随笔為你收集整理的python2和3的区别字符编码格式上下文管理is和==的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。