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)語句以冒號(hào)“:”結(jié)尾時(shí),縮進(jìn)的語句視為代碼塊。
  • Python程序是大小寫敏感的
  • 縮進(jìn)的壞處就是“復(fù)制-粘貼”功能失效了,這是最坑爹的地方。

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

  • 字符串可以用單引號(hào)'或雙引號(hào)"
  • 字符串內(nèi)部既包含'又包含"用轉(zhuǎn)義字符\來標(biāo)識(shí)
'I\'m \"OK\"!'
  • r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義
>>> print '\\\t\\'
\       \
>>> print r'\\\t\\'
\\\t\\
  • 多行字符串 '''...'''
print('''line1
line2
line3''')
  • 布爾值: True False
    布爾值可以用andornot運(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)一到一套編碼里,這樣就不會(huì)再有亂碼問題了

  • UTF-8編碼把Unicode編碼轉(zhuǎn)化為“可變長(zhǎng)編碼”的。
    UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié),常用的英文字母被編碼成1個(gè)字節(jié),漢字通常是3個(gè)字節(jié),只有很生僻的字符才會(huì)被編碼成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ù)器會(huì)把動(dòng)態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器:

Python的字符串

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

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

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
  • 十六進(jìn)制的字符串
>>> '\u4e2d\u6587'
'中文'
  • 由于Python的字符串類型是str,在內(nèi)存中以Unicode表示,一個(gè)字符對(duì)應(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會(huì)報(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編碼對(duì)str和bytes進(jìn)行轉(zhuǎn)換。

  • 由于Python源代碼也是一個(gè)文本文件,所以,當(dāng)你的源代碼中包含中文的時(shí)候,在保存源代碼時(shí),就需要?jiǎng)?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)起作用,它會(huì)把任何數(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è)逗號(hào),,來消除歧義 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):

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

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

>>> 'Thomas' in d
False
  • dict要?jiǎng)h除一個(gè)key,用pop(key)方法,對(duì)應(yīng)的value也會(huì)從dict中刪除:
 >>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
  • set(數(shù)學(xué)意義上的無序和無重復(fù)元素的集合)和dict類似,也是一組key的集合,但不存儲(chǔ)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是無序的

  • 對(duì)于不變對(duì)象來說,調(diào)用對(duì)象自身的任意方法,也不會(huì)改變?cè)搶?duì)象自身的內(nèi)容。相反,這些方法會(huì)創(chuàng)建新的對(duì)象并返回,這樣,就保證了不可變對(duì)象本身永遠(yuǎn)是不可變的。

參考:《Python教程》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評(píng)論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,013評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,146評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,534評(píng)論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,767評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,318評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,074評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,258評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,486評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評(píng)論 1 290
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,993評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,234評(píng)論 2 375

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

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