HeadFirst Python記事本

第一章筆記

"BIF"內(nèi)置函數(shù)
"組(suit)"Python代碼塊蜓斧,會(huì)通過縮進(jìn)來指示分組
"功能齊全(Batteries included)"這是指Python提供了快速高效地完成工作所需的大多數(shù)功能

  • 從命令行或者IDLE中運(yùn)行Python3
  • 標(biāo)識(shí)符是指數(shù)據(jù)對象的名字。標(biāo)識(shí)符沒有“類型”睁冬,不過標(biāo)識(shí)符所指示的數(shù)據(jù)對象有類型
  • print() BIF會(huì)在屏幕上顯示一個(gè)消息
  • 列表是一個(gè)數(shù)據(jù)集合挎春,數(shù)據(jù)項(xiàng)之間用逗號(hào)分隔看疙,整個(gè)列表用中括號(hào)包圍
  • 列表就像打了“激素”的數(shù)組
  • 可以用BIF處理列表,另外列表還支持一組列表方法
  • 列表可以存放任意數(shù)據(jù)直奋,而且數(shù)據(jù)可以是混合類型能庆,列表還可以包含其他列表
  • 列表可以隨意伸縮,數(shù)據(jù)使用的所有內(nèi)存都由Python為你管理
  • Python使用縮進(jìn)將語句歸組在一起
  • len() BIF會(huì)提供某個(gè)數(shù)據(jù)對象的長度脚线,或者統(tǒng)計(jì)一個(gè)集合中的項(xiàng)數(shù)搁胆,如列表中的項(xiàng)數(shù)
  • for循環(huán)允許迭代處理一個(gè)列表,這通常比使用一個(gè)等價(jià)的while循環(huán)更方便
  • 可以利用if...else...語句在代碼中完成判定
  • isinstance() BIF會(huì)檢查一個(gè)標(biāo)識(shí)符是否指示某個(gè)指定類型的數(shù)據(jù)對象
  • 使用def來定義一個(gè)定制函數(shù)

第二章筆記

發(fā)布到PyPi

  1. 首先新建一個(gè)文件夾保存模塊
  2. 在新文件夾中創(chuàng)建一個(gè)名為“setup.py”的文件邮绿,setup文件包含發(fā)布的元數(shù)據(jù)
from distutils.core import setup

setup(
      name='nester_lian',
      version='1.0.0',
      py_modules=['nester_lian'],
      author='******',
      author_email='********@163.com',
      url='http://*******.com',
      description='A simple printer of nested lists',
      )
  1. 構(gòu)建一個(gè)發(fā)布文件渠旁,在windows系統(tǒng)下,打開管理員命令行進(jìn)入新建的文件夾目錄下船逮,鍵入命令:D:\Python35\python.exe setup.py sdist
  2. 將發(fā)布安裝到Python 本地副本中顾腊,同樣在上一步中的命令行窗口中鍵入:D:\Python35\python.exe setup.py install
  3. 使用模塊的時(shí)候記得命名空間的關(guān)系,看如何導(dǎo)入的挖胃,決定如何使用模塊中的方法或變量
  4. 上傳到Pypi網(wǎng)站杂靶,與大家共享代碼,首先注冊一個(gè)賬號(hào)冠骄,然后在本地命令行窗口中再次確認(rèn)注冊的賬號(hào)伪煤,每臺(tái)電腦安裝python后主需要注冊本地注冊賬號(hào)一次,使用命令:D:\Python35\python.exe setup.py register
  5. 注冊后即可上傳凛辣,同樣在命令行鍵入:D:\Python35\python.exe setup.py upload
  6. Python會(huì)在一組特定位置尋找模塊抱既,查看搜索位置的方式,在控制臺(tái)鍵入:
import sys;
sys.path

使用三重引號(hào)字符串可以在代碼中加入一個(gè)多行注釋
Python內(nèi)存中的名字就存放在“命名空間中”
Python的主命名空間名為__main__

  • 模塊是一個(gè)包含Python代碼的文本文件
  • 發(fā)布工具允許將模塊轉(zhuǎn)化為可共享的包
  • setup.py程序提供了模塊的元數(shù)據(jù)扁誓,用來構(gòu)建防泵、安裝和上傳打包的發(fā)布
  • 使用import語句可以將模塊導(dǎo)入到其他程序中
  • Python的各個(gè)模塊提供了自己的各個(gè)命名空間,使用module.function()形式調(diào)用模塊的函數(shù)時(shí)蝗敢,要用命名空間名限定函數(shù)
  • 使用import語句的from module import function形式可以從一個(gè)模塊將函數(shù)專門導(dǎo)入到當(dāng)前的命名空間
  • 使用#可以注釋掉一行代碼捷泞,或者為程序增加一個(gè)簡短的單行注釋
  • 內(nèi)置函數(shù)(built-in functions,BIF)有自己的命名空間,名為__builtins__,這會(huì)自動(dòng)包含在每一個(gè)Python程序中
  • range()BIF可以與for結(jié)合使用寿谴,從而迭代固定次數(shù)
  • 包含end=''作為print() BIF的一個(gè)參數(shù)會(huì)關(guān)閉其默認(rèn)行為(即在輸入中自動(dòng)包含換行)
  • 如果函數(shù)參數(shù)提供一個(gè)缺省值锁右,這個(gè)函數(shù)參數(shù)就是可選的

第三章筆記

文件處理方法,文件打開讶泰,文件關(guān)閉

 #打開文件咏瑟,賦值給一個(gè)文件對象,代表著打開的文件
try:
  the_file=open('file.txt')
  #文件處理代碼
  #文件處理代碼
except ***Error:
  print("*****")
finally:
  the_file.close()

“異郴臼穑”(exception)因運(yùn)行時(shí)錯(cuò)誤而出現(xiàn)码泞,會(huì)產(chǎn)生一個(gè)traceback
"traceback"是出現(xiàn)的運(yùn)行時(shí)錯(cuò)誤的一個(gè)詳細(xì)描述

  • 使用open() BIF打開一個(gè)磁盤文件,創(chuàng)建一個(gè)迭代器從文件讀取數(shù)據(jù)狼犯,一次讀取一個(gè)數(shù)據(jù)行
  • readline()方法從一個(gè)打開的文件讀取一行數(shù)據(jù)
  • seek()方法可以用來將文件“退回”到起始位置
  • close()方法關(guān)閉一個(gè)之前打開的文件
  • split()方法可以將之前的一個(gè)字符串分解為一個(gè)子串列表
  • Python中不可改變的常量列表稱為元組(tuple)余寥。一旦將列表數(shù)據(jù)賦至一個(gè)元祖列表领铐,就不能再改變。元祖是不可改變的
  • 數(shù)據(jù)不符合期望的格式時(shí)會(huì)出現(xiàn)ValueError
  • 數(shù)據(jù)無法正常訪問時(shí)會(huì)出現(xiàn)IOError(例如宋舷,可能你的文件被移走或者重命名)
  • help()BIF允許你在IDLE shell中訪問Python的文檔
  • find()方法會(huì)在一個(gè)字符串中查找一個(gè)特定子串
  • not關(guān)鍵字將一個(gè)調(diào)節(jié)取反
  • try/except語句提供了一個(gè)異常處理機(jī)制绪撵,從而保護(hù)可能導(dǎo)致運(yùn)行時(shí)錯(cuò)誤的某些代碼行
  • pass語句就是Python的空語句或null語句,它什么也不做

第四章筆記

文件的讀寫祝蝠,open()方法可以有多個(gè)模式莲兢,默認(rèn)是r模式即讀模式,如果要寫文件续膳,可以用參數(shù)提供"w",如果這個(gè)文件存在收班,則會(huì)清空它現(xiàn)有的內(nèi)容坟岔,也就是完全清除然后再寫入,如果需要追加到一個(gè)文件需要使用訪問模式a摔桦。如果要打開一個(gè)進(jìn)行讀寫社付,不清除則使用w+模式。

try:
    data=open('its.txt',"w")
    data2=open('data2.txt',"w")
    print("It's ...",file=data)
except IOError as err:
    print('File error: '+str(err))
finally:
        if 'data' in locals():
                data.close()

等同于使用with代碼

try:
    with open('its.txt',"w") as data,open("data2.txt","w") as data2:
        print("It's ...",file=data)
except IOError as err:
    print('File error: '+str(err))

Python術(shù)語
“不可變類型”——Python中的一些數(shù)據(jù)類型一旦賦值邻耕,這個(gè)值就不能再改變
“腌制”——將數(shù)據(jù)對象保存到一個(gè)持久存儲(chǔ)中的過程
“解除腌制”——從持久存儲(chǔ)中恢復(fù)一個(gè)已保存的數(shù)據(jù)對象的過程

  • strip()方法可以從字符串中去除不想要的空白符
  • print() BIF的file參數(shù)控制將數(shù)據(jù)發(fā)送/保存到哪里
  • finally組總會(huì)執(zhí)行鸥咖,而不管try/except語句中出現(xiàn)什么異常
  • 會(huì)向ecxept組傳入一個(gè)異常對象,并使用as關(guān)鍵字賦至一個(gè)標(biāo)識(shí)符
  • str()BIF可以用來訪問任何數(shù)據(jù)對象(支持串轉(zhuǎn)換)的串表示
  • in操作符用于檢查成員關(guān)系
  • "+"操作符用于字符串時(shí)將連接兩個(gè)字符串兄世,用于數(shù)字時(shí)則會(huì)將兩個(gè)數(shù)相加
  • with語句會(huì)自動(dòng)處理所有已打開文件的關(guān)閉工作啼辣,即使出現(xiàn)異常也不例外。with語句也使用as關(guān)鍵字
  • sys.stdout是Python中所謂的“標(biāo)準(zhǔn)輸出”御滩,可以從標(biāo)準(zhǔn)庫的sys模塊訪問
  • 標(biāo)準(zhǔn)庫的pickle模塊允許你容易而高效地從將Python數(shù)據(jù)對象保存到磁盤以及從磁盤恢復(fù)
  • pickle.dump()函數(shù)將數(shù)據(jù)保存到磁盤
  • pickle.load()函數(shù)從磁盤恢復(fù)數(shù)據(jù)

第五章筆記

列表排序

  • 原地排序鸥拧,排序后替換掉原本的列表:list.sort()
  • 復(fù)制排序,復(fù)制一個(gè)副本后排序削解,保留了原來的列表:list.sorted()

一般一個(gè)列表轉(zhuǎn)化為另外一個(gè)列表需要干哪幾個(gè)步驟富弦?

  1. 創(chuàng)建一個(gè)新列表來存放轉(zhuǎn)換后的列表
  2. 迭代處理原列表中的數(shù)據(jù)
  3. 每次迭代時(shí)完成轉(zhuǎn)換
  4. 將轉(zhuǎn)換后的數(shù)據(jù)追加到新列表
clean_mikey=[]
for each_t in mikey:
  clean_mikey.append(sanitize(each_t))

如果用列表推導(dǎo)的話只需要一行代碼,不需要自己添加append()代碼:

clean_mikey=[sanitize(each_t) for each_t in mikey]

Python中還有一個(gè)數(shù)據(jù)結(jié)構(gòu)(列表list氛驮,元組tuple不能改變長度與值腕柜,集合set)set集合數(shù)據(jù)結(jié)構(gòu),集合數(shù)據(jù)不允許重復(fù)矫废,沒有排序要求盏缤。
set()BIF創(chuàng)建一個(gè)空集合,三種創(chuàng)建集合的方式:

  • distances=set() 創(chuàng)建一個(gè)空結(jié)合
  • distances={10.6,5.4,4.5}
  • distances=set(list) 列表中所有重復(fù)項(xiàng)都被忽略掉

“原地”排序——轉(zhuǎn)換然后替換
“復(fù)制排序”——轉(zhuǎn)換然后返回
“方法串鏈”——從左向右讀磷脯,對數(shù)據(jù)應(yīng)用一組方法
“函數(shù)串鏈”——從右向左讀蛾找,對數(shù)據(jù)應(yīng)用一組函數(shù)
“列表推導(dǎo)”——在一行上指定轉(zhuǎn)換(而不是使用迭代)
“分片”——從一個(gè)列表訪問多個(gè)列表項(xiàng)
“集合”——一組無序的數(shù)據(jù)項(xiàng),其中不包含重復(fù)項(xiàng)

  • sort()方法可以在原地改變列表的排序
  • sorted()BIF通過提供復(fù)制排序可以幾乎對任何數(shù)據(jù)結(jié)構(gòu)排序
  • 向sort()或sorted()傳入reverse=True可以按降序排列數(shù)據(jù)
  • 如果有以下代碼
new_l=[]
for t in old_l:
  new_l.append(len(t))

使用列表推導(dǎo)重寫這個(gè)代碼赵誓,可以寫作:

new_l=[len(t) for t in old_l]
  • 要訪問一個(gè)列表中的多個(gè)數(shù)據(jù)項(xiàng)可以用分片打毛。例如:my_list[3:6]這會(huì)訪問列表中索引位置3到(不包括)索引位置6的列表項(xiàng)
  • 使用set()集合工廠方法可以創(chuàng)建一個(gè)集合

第六章筆記

pop()方法柿赊,會(huì)將列表指定位置的數(shù)據(jù)項(xiàng)刪除,并返回對應(yīng)的數(shù)據(jù)項(xiàng)
Python中的字典幻枉,是一個(gè)含有映射關(guān)系的數(shù)據(jù)結(jié)構(gòu)碰声,能夠保存數(shù)據(jù)項(xiàng)的結(jié)構(gòu)關(guān)系,創(chuàng)建方式可以有:

dict_data={} #直接用大括號(hào)包圍實(shí)現(xiàn)直接創(chuàng)建
dict_data=dict() #利用dict()方法創(chuàng)建

Python使用class創(chuàng)建對象熬甫,每個(gè)定義的類都有一個(gè)特殊的方法胰挑,名為__init__(),可以通過這個(gè)方法控制如何初始化對象椿肩,類中的方法與函數(shù)的定義類似瞻颂,也就是說同樣使用def來定義,基本形式如下:

class Athlete:
  def __init__(self):
    #The code to initialize a "Athlete" object.
    ...

創(chuàng)建對象實(shí)例郑象,不用new關(guān)鍵字贡这,只需要將對類名的調(diào)用賦至各個(gè)變量

a=Athltet()
b=Athltet()
c=Athltet()

Python類中self參數(shù)很重要,因?yàn)閜ython類的設(shè)計(jì)中厂榛,方法共享盖矫,屬性不共享,因此每個(gè)方法都需要self參數(shù)击奶,將目標(biāo)標(biāo)識(shí)符傳進(jìn)去處理辈双。
創(chuàng)建對象的流程,調(diào)用類的定制工廠函數(shù)Athlete(),然后python處理這行代碼時(shí)柜砾,它把工廠函數(shù)轉(zhuǎn)換為Athlete().__init__(a)調(diào)用湃望,這樣就將目標(biāo)標(biāo)識(shí)符傳進(jìn)去了,所以函數(shù)方法中self參數(shù)很重要痰驱。

“字典”——這是一個(gè)內(nèi)置的數(shù)據(jù)結(jié)構(gòu)喜爷,允許將數(shù)據(jù)值與鍵關(guān)聯(lián)
“鍵”——字典中查找的部分
“值”——字典中的數(shù)據(jù)部分(可以是任何值,也可以包括另一種數(shù)據(jù)結(jié)構(gòu))
“self”——這是一個(gè)方法參數(shù)萄唇,總是指向當(dāng)前對象實(shí)例

  • 使用dict()工廠函數(shù)或使用{}可以創(chuàng)建一個(gè)空字典
  • 要訪問一個(gè)名為person的字典中與鍵Name關(guān)聯(lián)的值檩帐,可以使用我們熟悉的中括號(hào)記法,person['Name']
  • 類似列表與集合另萤,Python的字典會(huì)隨新數(shù)據(jù)增加到這個(gè)數(shù)據(jù)結(jié)構(gòu)中而動(dòng)態(tài)擴(kuò)大
  • 可以先創(chuàng)建一個(gè)空字典:new_d=dict{}或new_d={}然后增加數(shù)據(jù)d['Name']='Eric Idle'來填充字典湃密,或者也可一次完成以上的全部工作:new_d={'Name':'Eric Idle'}
  • 可以用class關(guān)鍵字定義一個(gè)類
  • 類方法(代碼)與函數(shù)的定義基本相同,也就是說四敞,要用def關(guān)鍵字定義
  • 類屬性(數(shù)據(jù))就像對象實(shí)例中的變量
  • 可以在類中定義__init__()方法來初始化對象實(shí)例
  • 類中定義的每個(gè)方法都必須提供self作為第一個(gè)參數(shù)
  • 類中每個(gè)屬性前面都必須提供self作為第一個(gè)參數(shù)泛源,從而將數(shù)據(jù)與其實(shí)例關(guān)聯(lián)
  • 類可以從零開始構(gòu)建也可以從Python的內(nèi)置類或從其他定制類繼承
  • 類可以放到一個(gè)Python模塊中,并上傳到Pypi
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忿危,一起剝皮案震驚了整個(gè)濱河市达箍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铺厨,老刑警劉巖缎玫,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硬纤,死亡現(xiàn)場離奇詭異,居然都是意外死亡赃磨,警方通過查閱死者的電腦和手機(jī)筝家,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邻辉,“玉大人溪王,你說我怎么就攤上這事≈岛В” “怎么了莹菱?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吱瘩。 經(jīng)常有香客問我芒珠,道長,這世上最難降的妖魔是什么搅裙? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮裹芝,結(jié)果婚禮上部逮,老公的妹妹穿的比我還像新娘。我一直安慰自己嫂易,他們只是感情好兄朋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怜械,像睡著了一般颅和。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缕允,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天峡扩,我揣著相機(jī)與錄音,去河邊找鬼障本。 笑死教届,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驾霜。 我是一名探鬼主播案训,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粪糙!你這毒婦竟也來了强霎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤蓉冈,失蹤者是張志新(化名)和其女友劉穎城舞,沒想到半個(gè)月后轩触,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椿争,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年怕膛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秦踪。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褐捻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出椅邓,到底是詐尸還是另有隱情柠逞,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布景馁,位于F島的核電站板壮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏合住。R本人自食惡果不足惜绰精,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望透葛。 院中可真熱鬧笨使,春花似錦、人聲如沸僚害。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萨蚕。三九已至靶草,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岳遥,已是汗流浹背奕翔。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浩蓉,地道東北人糠悯。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像妻往,于是被迫代替她去往敵國和親互艾。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評(píng)論 25 707
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,571評(píng)論 1 118
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,478評(píng)論 6 427
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理讯泣,服務(wù)發(fā)現(xiàn)纫普,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 面試談判需要注意什么 文/老醋 在新公司上班的時(shí)候...
    老醋322閱讀 540評(píng)論 0 0