Python基礎(chǔ)學(xué)習(xí)2:Python基礎(chǔ)概念

# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)
  • 自然語言在不同的語境下有不同的理解,而計(jì)算機(jī)要根據(jù)編程語言執(zhí)行任務(wù)萤彩,就必須保證編程語言寫出的程序決不能有歧義
  • # 是注釋粪滤,其他每一行都是一個(gè)語句,當(dāng)語句以冒號“:”結(jié)尾時(shí)雀扶,縮進(jìn)的語句視為代碼塊额衙。
  • Python程序是大小寫敏感的
  • 縮進(jìn)的壞處就是“復(fù)制-粘貼”功能失效了,這是最坑爹的地方怕吴。

數(shù)據(jù)類型和變量

  • 字符串可以用單引號'或雙引號"
  • 字符串內(nèi)部既包含'又包含"用轉(zhuǎn)義字符\來標(biāo)識
'I\'m \"OK\"!'
  • r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義
>>> print '\\\t\\'
\       \
>>> print r'\\\t\\'
\\\t\\
  • 多行字符串 '''...'''
print('''line1
line2
line3''')
  • 布爾值: True False
    布爾值可以用and窍侧、ornot運(yùn)算

  • 空值 None

  • Python沒有常量, 只是習(xí)慣上用全部大寫的變量名來表示“常量”

  • /除法計(jì)算結(jié)果是浮點(diǎn)數(shù)转绷,即使是兩個(gè)整數(shù)恰好整除

>>> 9 / 3
3.0
  • //稱為地板除伟件,兩個(gè)整數(shù)的除法仍然是整數(shù)(去掉小數(shù)部分)
>>> 10 // 3
3

字符編碼

  • ASCII : 127個(gè)字符

  • Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了

  • UTF-8編碼把Unicode編碼轉(zhuǎn)化為“可變長編碼”的议经。
    UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié)斧账,常用的英文字母被編碼成1個(gè)字節(jié),漢字通常是3個(gè)字節(jié)煞肾,只有很生僻的字符才會被編碼成4-6個(gè)字節(jié)咧织。

  • 在計(jì)算機(jī)內(nèi)存中,統(tǒng)一使用Unicode編碼籍救,當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r(shí)候习绢,就轉(zhuǎn)換為UTF-8編碼。

    用記事本編輯的時(shí)候蝙昙,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里闪萄,編輯完成后,保存的時(shí)候再把Unicode轉(zhuǎn)換為UTF-8保存到文件:

    瀏覽網(wǎng)頁的時(shí)候奇颠,服務(wù)器會把動態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器:

Python的字符串

  • Python 3版本中败去,字符串是以Unicode編碼的。

  • ord()函數(shù)獲取字符的整數(shù)表示烈拒,chr()函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
  • 十六進(jìn)制的字符串
>>> '\u4e2d\u6587'
'中文'
  • 由于Python的字符串類型是str圆裕,在內(nèi)存中以Unicode表示,一個(gè)字符對應(yīng)若干個(gè)字節(jié)荆几。如果要在網(wǎng)絡(luò)上傳輸吓妆,或者保存到磁盤上,就需要把str變?yōu)橐宰止?jié)為單位的bytes伴郁。

    bytes類型的數(shù)據(jù)表示: x = b'ABC'

  • 以Unicode表示的str通過encode()方法可以編碼為指定的bytes :

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

純英文的str可以用ASCII編碼為bytes耿战,內(nèi)容是一樣的,含有中文的str可以用UTF-8編碼為bytes焊傅。含有中文的str無法用ASCII編碼剂陡,因?yàn)橹形木幋a的范圍超過了ASCII編碼的范圍狈涮,Python會報(bào)錯(cuò)。

  • bytes中鸭栖,無法顯示為ASCII字符的字節(jié)歌馍,用\x##顯示。

  • 把bytes變?yōu)閟tr晕鹊,就需要用decode()方法:

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
  • len()函數(shù)計(jì)算的是str的字符數(shù)松却,如果換成byteslen()函數(shù)就計(jì)算字節(jié)數(shù):
>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
  • 為了避免亂碼問題溅话,應(yīng)當(dāng)始終堅(jiān)持使用UTF-8編碼對str和bytes進(jìn)行轉(zhuǎn)換晓锻。

  • 由于Python源代碼也是一個(gè)文本文件,所以飞几,當(dāng)你的源代碼中包含中文的時(shí)候砚哆,在保存源代碼時(shí),就需要務(wù)必指定保存為UTF-8編碼屑墨。

# -*- coding: utf-8 -*-
  • 格式化
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'

如果你不太確定應(yīng)該用什么躁锁,%s永遠(yuǎn)起作用,它會把任何數(shù)據(jù)類型轉(zhuǎn)換為字符串卵史。

使用list和tuple

  • list是一種有序的集合战转,里面的元素的數(shù)據(jù)類型可以不同
classmates = ['Michael', 'Bob', 'Tracy']
classmates[-1]
classmates.append('Adam')
classmates.insert(1, 'Jack')
classmates.pop()          # 刪除list末尾的元素
classmates.pop(1)        # 刪除指定位置的元素
classmates[1] = 'Sarah'
len(classmates)
  • tuple和list非常類似,但是tuple一旦初始化就不能修改
>>> classmates = ('Michael', 'Bob', 'Tracy')
  • 能用tuple代替list就盡量用tuple
  • 只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號,以躯,來消除歧義 t = (2)
  • 在tuple中放入list槐秧,這樣看上去就能修改tuple tt = ("a", "b", [4,5,9])

條件判斷

if age >= 18:
    print('your age is', age)
    print('adult')
else:
    print('your age is', age)
    print('teenager')


if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')

循環(huán)

  • for x in ... : 把每個(gè)元素代入變量x,然后執(zhí)行縮進(jìn)塊的語句寸潦。
  • range()
sum = 0
for x in range(101):
    sum = sum + x
print(sum)
  • while
  • break
  • continue語句色鸳,跳過當(dāng)前的這次循環(huán),直接開始下一次循環(huán)见转。

使用dict和set

  • dict
    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    d['Michael']
    d.get('Thomas')     # None
    d.get('Thomas', -1) # -1
    d.pop('Bob')
  • 和list比較,dict有以下幾個(gè)特點(diǎn):

    • 查找和插入的速度極快蒜哀,不會隨著key的增加而增加斩箫;
    • 需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多撵儿。
  • dict的key必須是不可變對象乘客。

  • dict的key不存在時(shí)會包KeyError錯(cuò)誤,可通過inget()方法來判斷淀歇。

>>> 'Thomas' in d
False
  • dict要刪除一個(gè)key易核,用pop(key)方法,對應(yīng)的value也會從dict中刪除:
 >>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
  • set(數(shù)學(xué)意義上的無序和無重復(fù)元素的集合)和dict類似浪默,也是一組key的集合牡直,但不存儲value缀匕。由于key不能重復(fù),所以碰逸,在set中乡小,沒有重復(fù)的key。
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(4)
>>> s
{1, 2, 3}
  • set是無序的

  • 對于不變對象來說饵史,調(diào)用對象自身的任意方法满钟,也不會改變該對象自身的內(nèi)容。相反胳喷,這些方法會創(chuàng)建新的對象并返回湃番,這樣,就保證了不可變對象本身永遠(yuǎn)是不可變的吭露。

參考:《Python教程》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牵辣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奴饮,更是在濱河造成了極大的恐慌纬向,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戴卜,死亡現(xiàn)場離奇詭異逾条,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)投剥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門师脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人江锨,你說我怎么就攤上這事吃警。” “怎么了啄育?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵酌心,是天一觀的道長。 經(jīng)常有香客問我挑豌,道長安券,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任氓英,我火速辦了婚禮侯勉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铝阐。我一直安慰自己址貌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著练对,像睡著了一般遍蟋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锹淌,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天匿值,我揣著相機(jī)與錄音,去河邊找鬼赂摆。 笑死挟憔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烟号。 我是一名探鬼主播绊谭,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汪拥!你這毒婦竟也來了达传?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤迫筑,失蹤者是張志新(化名)和其女友劉穎宪赶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脯燃,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搂妻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辕棚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欲主。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逝嚎,靈堂內(nèi)的尸體忽然破棺而出扁瓢,到底是詐尸還是另有隱情,我是刑警寧澤补君,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布引几,位于F島的核電站,受9級特大地震影響赚哗,放射性物質(zhì)發(fā)生泄漏她紫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一屿储、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渐逃,春花似錦够掠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赊堪。三九已至,卻和暖如春竖哩,著一層夾襖步出監(jiān)牢的瞬間哭廉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工相叁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遵绰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓增淹,卻偏偏與公主長得像椿访,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子虑润,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 字符集和編碼簡介 在編程中常吵擅担可以見到各種字符集和編碼,包括ASCII,MBCS,Unicode等字符集拳喻。確切的說...
    蘭山小亭閱讀 8,461評論 0 13
  • 個(gè)人筆記哭当,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,682評論 0 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,557評論 1 118
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù)冗澈,當(dāng)然包括負(fù)整數(shù)钦勘,在Python程序...
    績重KF閱讀 1,660評論 0 1
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的,另外根據(jù)自己平時(shí)的積累進(jìn)行修正...
    renyangfar閱讀 3,025評論 0 10