㈠ python3字元串都是什麼編碼
編碼
字元串是一種數據類型,但是,字元串比較特殊的是還有一個編碼問題。
因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時採用8個比特(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進制11111111=十進制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整數是4294967295。
由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。
Unicode
Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。
Unicode標准也在不斷發展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代操作系統和大多數編程語言都直接支持Unicode。
現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。
字母A用ASCII編碼是十進制的65,二進制的01000001;
字元0用ASCII編碼是十進制的48,二進制的00110000,注意字元'0'和整數0是不同的;
漢字已經超出了ASCII編碼的范圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。
如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。
新的問題又出現了:如果統一成Unicode編碼,亂碼問題從此消失了。但是,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。
所以,又出現了把Unicode編碼轉化為「可變長編碼」的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間:
字元
ASCII
Unicode
UTF-8
A 01000001 00000000 01000001 01000001
中 x 01001110 00101101 11100100 10111000 10101101
從上面的表格還可以發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以,大量只支持ASCII編碼的歷史遺留軟體可以在UTF-8編碼下繼續工作。
搞清楚了ASCII、Unicode和UTF-8的關系,我們就可以總結一下現在計算機系統通用的字元編碼工作方式:
在計算機內存中,統一使用Unicode編碼,當需要保存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。
用記事本編輯的時候,從文件讀取的UTF-8字元被轉換為Unicode字元到內存里,編輯完成後,保存的時候再把Unicode轉換為UTF-8保存到文件:
瀏覽網頁的時候,伺服器會把動態生成的Unicode內容轉換為UTF-8再傳輸到瀏覽器:
所以你看到很多網頁的源碼上會有類似<meta charset="UTF-8" />的信息,表示該網頁正是用的UTF-8編碼。
Python的字元串
在最新的Python 3版本中,字元串是以Unicode編碼的,也就是說,Python的字元串支持多語言,例如:
>>> print('包含中文的str')
包含中文的str
對於單個字元的編碼,Python提供了ord()函數獲取字元的整數表示,chr()函數把編碼轉換為對應的字元:
1個中文字元經過UTF-8編碼後通常會佔用3個位元組,而1個英文字元只佔用1個位元組。
在操作字元串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。
Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行
#!/usr/bin/env python3# -*- coding: utf-8 -*-
第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
格式化:
在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例如下:
format % (...params)
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'
%運算符就是用來格式化字元串的。在字元串內部,%s表示用字元串替換,%d表示用整數替換,%x表示16進制整數,有幾個%?佔位符,後面就跟幾個變數或者值,順序要對應好。如果只有一個%?,括弧可以省略。
格式化整數和浮點數還可以指定是否補0和整數與小數的位數:
>>> '%2d-%02d' % (3, 1)' 3-01'>>> '%.2f' % 3.1415926'3.14'
有些時候,字元串裡面的%是一個普通字元怎麼辦?這個時候就需要轉義,用%%來表示一個%:
>>> 'growth rate: %d %%' % 7'growth rate: 7 %'
㈡ Python3基礎
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:
在 Python 3 中,非 ASCII 標識符也是允許的了。
保留字即關鍵字,我們不能把它們用作任何標識符名稱。Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:
Python中單行注釋以 # 開頭,實例如下:
執行以上代碼,輸出結果為:
多行注釋可以用多個 # 號,還有 ''' 和 """:
執行以上代碼,輸出結果為:
python最具特色的就是使用縮進來表示代碼塊,不需要使用大括弧 {} 。
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。實例如下:
以下代碼最後一行語句縮進數的空格數不一致,會導致運行錯誤:
以上程序由於縮進不一致,執行後會出現類似以下錯誤:
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠()來實現多行語句,例如:
在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(),例如:
python中數字有四種類型:整數、布爾型、浮點數和復數。
實例
輸出結果為:
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行並不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的代碼,便於日後代碼的維護或重構。
記住: 空行也是程序代碼的一部分。
執行下面的程序在按回車鍵後就會等待用戶輸入:
以上代碼中 ," "在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:
執行以上代碼,輸出結果為:
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。
像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。
我們將首行及後面的代碼組稱為一個子句(clause)。
如下實例:
print 默認輸出是換行的,如果要實現不換行需要在變數末尾加上 end="" :
以上實例執行結果為:
在 python 用 import 或者 from...import 來導入相應的模塊。
將整個模塊(somemole)導入,格式為: import somemole
從某個模塊中導入某個函數,格式為: from somemole import somefunction
從某個模塊中導入多個函數,格式為: from somemole import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from somemole import *
import sys print ( ' ================Python import mode========================== ' ) ; print ( ' 命令行參數為: ' ) for i in sys . argv : print ( i ) print ( ' python 路徑為 ' , sys . path )
from sys import argv , path # 導入特定的成員 print ( ' ================python from import=================================== ' ) print ( ' path: ' , path ) # 因為已經導入path成員,所以此處引用時不需要加sys.path
很多程序可以執行一些操作來查看一些基本信息,Python可以使用-h參數查看各參數幫助信息:
㈢ python代碼的注釋有幾種
python代碼的注釋有兩種。㈣ Python基本語法
1.Hello World
實例 HelloWorld.py
# !/usr/bin/python3
print(「Hello, World!」);
運行腳本
$python HelloWorld.py
註解:以如上方式運行,第一行無意義;但以./HelloWorld.py的方式運行,第一行則指定python解釋器的位置
2.標識符
必須字母或下劃線開頭
標識符其他部分是字母、下劃線和數字
大小寫敏感
3.設置編碼
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:
# -- coding: cp-1252 --
4.注釋
python單行注釋以#開始,多行注釋可以用多個#或'''和"""
例子
#!/usr/bin/python3
# 注釋
# 注釋
'''
注釋
注釋
'''
"""
注釋
注釋
"""
print (「Hello, World!」)
4.行和縮進
python使用行縮進代表代碼塊而不需要({}),同一個代碼塊的行縮進必須一致,否則報錯。
5.多行語句
python如果一個語句過長可以用 實現多行語句。
sum = one +
two +
three
6.等待用戶輸入
執行下面的程序在按回車鍵後就會等待用戶輸入:
#!/usr/bin/python3
input(「按下 enter 鍵退出。」)
用戶按下鍵時,程序將退出。
7.import 與 from…import
在 python 用 import 或者from…import來導入相應的模塊。
將整個模塊(somemole)導入,格式為:* import somemole*
從某個模塊中導入某個函數,格式為:from somemole import somefunction
從某個模塊中導入多個函數,格式為:from somemole import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為:from somemole import *
㈤ Python3 求個注釋 請看代碼
importos
all_files=os.listdir(os.curdir)#使用os.curdir表示當前目錄更標准
type_dict=dict()#定義一個字典
foreach_fileinall_files:
ifos.path.isdir(each_file):
type_dict.setdefault('文件夾',0)#設置字典默認值如果沒有這個鍵就添加為0
type_dict['文件夾']+=1#值+1
else:
ext=os.path.splitext(each_file)[1]#取擴展名
type_dict.setdefault(ext,0)#同上
type_dict[ext]+=1
#遍歷字典得到相當文件數量
foreach_typeintype_dict.keys():
print('該文件夾下共有類型為【%s】的文件%d個'%(each_type,type_dict[each_type]))
㈥ Python中如何添加註釋
1. 單行注釋
Python編程語言的單行注釋常以#最初,單行注釋能夠作為獨自的一行放在被注釋代碼行之上,也能夠放在語句或許表達式之後。
實例:
# -*- coding: UTF-8 -*-
print ("hello world!"); #您好,國際
2. 多行注釋
Python中多行注釋運用三個單引號(’’’)或許三個雙引號(”””)來標記,而實際上這是多行字元串的書寫方法,並不是Python本身提倡的多行注釋方法。
實例:
'''
這是多行注釋,運用單引號。
這是多行注釋,運用單引號。
'''
"""
這是多行注釋,運用雙引號。
這是多行注釋,運用雙引號。
"""
3. 編碼注釋
在進行Python開發時,需進行編碼聲明,如選用UTF-8編碼,需在源碼上方進行 # -*- coding: UTF-8 -*- 聲明,從Python3開始,Python默許運用UTF-8編碼,所以Python3.x的源文件不需要特別聲明UTF-8編碼。
4. 平台注釋
如果需要使Python程序運行在Windows平台上,需在Python文件的上方加上 #!/usr/bin/python 注釋闡明。
關於Python中如何添加註釋,青藤小編就和您分享到這里了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。