国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Head First Python 學習心得(1-6章)

pumpkin9 / 528人閱讀

摘要:在指定位置刪除并返回這個數(shù)據(jù)項,注意這里是有返回項的。移除某一個特定數(shù)據(jù)項。第二章發(fā)布并上傳代碼到在查閱大量資料發(fā)布和上傳還有很多附屬文件需要編寫和上傳以確保模塊能夠正常發(fā)布和更新。包含函數(shù)串鏈,特點是中包含函數(shù)。

寫在前面:
“吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而致千里;假舟楫者,非能水也,而絕江河。君子生非異也,善假于物也。”
十幾年的默默學習,而今希望更多是對自己知識的一個總結反思積累,能夠探討進步更是求之不得。雖然現(xiàn)在coding能力有限,但所幸站在巨人肩膀上,可總有一天,我也能成為巨人。
一篇簡單python入門學習開始,作為自己千里之行第一步,sf.gg平臺的第一次嘗試。

第一章 對于列表的理解

python中的列表可以實現(xiàn)對各種數(shù)據(jù)的組織:
movies=["The Holy Grail","The life of brain","The meaning of life",2017,["dog","cat","duck"]]
包括數(shù)字,字符串和列表,但數(shù)字和字符的組合只能包含在字符串之中。
列表中數(shù)據(jù)項的調用:
print(movies[1]) 顯示"The life of brain"
下面列出一些關于list類列表的BIF:
len(movies)
輸出列表中的數(shù)據(jù)項個數(shù)。
movies.append("")
在列表末尾添加單個數(shù)據(jù)項。
movies.extend(["",""])
在列表末尾增加一個數(shù)據(jù)項集合。
movies.pop(n)
在指定位置刪除并返回這個數(shù)據(jù)項,注意這里是有返回項的。
movies.remove("")
移除某一個特定數(shù)據(jù)項。
insert("")
在特定位置增加一個數(shù)據(jù)項。
isinstance(name,list)
檢查某個標識符(name)是否屬于某種類型(例如list)。
list()
產(chǎn)生一個空列表的工廠函數(shù)。
range()
根據(jù)需要生成一個范圍的數(shù)字,常用于循環(huán)次數(shù)
int()
將一個字符串或一個數(shù)字轉換為整數(shù)

----自己入門一定是從點到面的,因此這里并不是很全面的總結,希望以后更加完善。

關于python中的邏輯

迭代語句:

for each_file in movies:
    print(each_file)         

其中 each_file 是我們自己為列表中的數(shù)據(jù)項定義的名字。

count = 0
while count < len(movies):
    print(movies[1])
    count = count + 1

這里建議只要是能用for語句盡量用for語句。

判斷語句:

if isinstance(each_item,list):
    print(each_item)
else:
   print("none")   

這里與c語言并無明顯區(qū)別,多重判斷加入elif。

創(chuàng)建自定義函數(shù)
def print_lol(the_list):
    xxxx
    xxxxx
    

自定義函數(shù)還有較多注意地方,在后續(xù)內容中有所提及。

第二章 發(fā)布并上傳代碼到pypi

在查閱大量資料發(fā)布和上傳pypi還有很多附屬文件需要編寫和上傳以確保模塊能夠正常發(fā)布和更新。這里只寫了文中提到的能夠保證發(fā)布和上傳的最必要的幾個步驟,未來可能會專門寫一篇關于發(fā)布詳細文章。

發(fā)布

1.為模塊傳建一個與模塊文件(.py)相同名字的文件夾(例如:cat),并把文件放進去。
2.創(chuàng)建setup.py文件

from distutils.core import setup

setup(
    name = "cat", 
    version = "1.0.0",  
    py_modules = ["cat"], 
    author = "davystokess",  
    author_email = "xxxxx", 
    url = "http://www.xxxx.com", 
    description = "A simple example"
      ) 

setup文件是為你的模塊做出說明

3.發(fā)布 在此文件夾空白處 shift+右鍵 打開命令窗口輸入:

4.安裝到本地文件:

5.嘗試導入并使用模塊:

import cat

cat.print_lol(xxx)

其中cat.print_lol涉及命名空間,如果使用

from cat import print_lol
print_lol(xx)

則print_lol可以直接使用。

上傳到pypi

書中的方法在我使用的3.6.2版本已經(jīng)無法使用(僅限本人)。這里使用官方推薦方式:

py -m pip install twine   # 安裝twine,必須有py -m 前綴否則無法使用,具體啥意思我也不知道(待改)

py -m twine upload dist/*  #利用twine上傳

小體會:
(不保證完全正確)

上傳的模塊名字不能與已經(jīng)上傳的名字相同,否則會上傳失敗

上傳本人無法建立有效的.pypirc文件 因此每次上傳都需要輸入賬號密碼(待學習)

再上傳更新版本的時候需要模塊重新發(fā)布。但需要刪除dist文件夾的上一個版本的xxx.tar 文件否則會顯示上傳已經(jīng)存在

注釋有兩種(1)是 # 注釋一整行 (2)"""xxx"""注釋一段

對于函數(shù)使用具有缺省值的參數(shù)例如 def print_lol(the_list,level=0)

end=" "作為print函數(shù)參數(shù)可以關閉默認的自動換行

列表項目

第三章 文件與異常 文件

文件的打開:
data = open(sketch.text,"wb")
sketch.text是某一個文件,方式有"r""rb""w""wb""w+""a"分別代表讀,二進制讀,寫二進制寫,讀和寫,追加寫入。注意data并不是一個列表,w會清空現(xiàn)有文件再寫入,沒有文件則會創(chuàng)建一個文件。

顯示python當前工作文件夾,更改工作文件夾:

import os
os.getcwd()
os chdir(F:codepython)

xxx.split(","n)
將xxx(一個數(shù)據(jù)項,或者一個列表等)中的數(shù)據(jù)依據(jù)","分為一個個數(shù)據(jù)項,n為分隔的個數(shù),n=1則意味著在第一個,處將數(shù)據(jù)分為兩半;不設置則有x個,分為x+1項的列表
xxx.readline()
讀取xxx一個數(shù)據(jù)行(待改)
xxx.find("n")
尋找xxx數(shù)據(jù)中是否存在n 是返回參數(shù):個數(shù)如10;否返回參數(shù)-1
xxx.seek()
用來是文件恢復到初始位置
not
將所得結果取反
xxx.close()
將文件關閉

處理異常

舉例:

man=[]
other=[]
try:
    data=open("sketch.txt")
    for each_line in data:
        try:
            (role,line_spoken)=each_line.split(":",1)
            line_spoken= line_spoken.strip
            if role=="Man":
                man.append(line_spoken)
            elif role=="Other Man":
                other.append(line_spoken)
        except ValueError:
            pass
    data.close()
except IOError:
    print("The data file is missing!")
try:
    man_file=open("man_data.txt","w")
    other_file=open("other_data.txt","w")

    print(man,file=man_file)
    print(other,file=other_file)
except IOError as err:
    print("File error:"+str(err)) #通過這種方式可以將問題反饋給我們,用來分析錯誤類型
finally:
    man_file.close()
    other_file.close()    

try語句用來執(zhí)行正常模塊處理功能,except語句用來處理可能出現(xiàn)的錯誤:例如找不到指定文件或者數(shù)據(jù)類型不對等等;finally語句用來處理一定要執(zhí)行語句。

第四章 將數(shù)據(jù)保存到文件

print("",file = file_name)
將數(shù)據(jù)寫入文件

try:
    with open("man_data.txt","w") as man_file:   #注意形式
        print_lol(man,fh=man_file)
    with open("other_data.txt","w") as other_file:
        print_lol(other,fh=other_file) 
except IOError as err:
    print("File error:"+str(err))

使用with open() as xxx:語句可以妥善文件的開關

import pickle
try:
    with open("man_data.txt","wb") as man_file,open("other_data.txt","wb") as other_file:
    #注意創(chuàng)建儲存的文件是xxxx.pickle或xxx.txt格式都可以
        pickle.dump(man,man_file)
        pickle.dump(other,other_file)
except IOError as err:
    print("file error:"+str(err))
except pickle.PickleError as perr:
    print("Pickleing error:"+ste(perr))

new_man=[]


with open("man_data.txt","rb") as man_file:
    new_man=pickle.load(man_file)
print_lol(new_man)

呵呵 使用pickle.dump(數(shù)據(jù),文件名)可以將數(shù)據(jù)壓縮保存;使用pickle.load(數(shù)據(jù)名)可以將數(shù)據(jù)提取出來。注意寫,讀打開方式是wb和rb 。

第五章 處理數(shù)據(jù)
def get_coach_data(filename):
    with open(filename) as f:
        data=f.readline()
        return(data.strip().split(","))  
#方法串鏈 從左往右讀 特點以點為分隔,()中無包含關系

對于第五章的數(shù)據(jù)(只有計時數(shù)據(jù))進行處理 打開-讀取(變?yōu)榱斜淼挥幸豁棧浚?去空格-以","為分隔變?yōu)槎鄠€數(shù)據(jù)項的列表返回。

def sanitize(time_string):
    if "-" in time_string:
        splitter="-"
    elif ":" in time_string:
        splitter=":"
    else:
        return(time_string)
    (mins,secs)= time_string.split(splitter)
    return(mins+"."+secs)

自定義sanitize函數(shù)用于將數(shù)據(jù)中的"-"":"都變?yōu)?."。

print(sorted(set([sanitize(t) for t in james]))[0:3])
包含函數(shù)串鏈,特點是()中包含函數(shù)。一種寫代碼的方式:列表推導 自行體會。但其中的set()函數(shù)是將數(shù)據(jù)(無論是導入的還是列表數(shù)據(jù))轉換為一個集合,這樣就可以去除數(shù)據(jù)中的重復項。

第六章 打包代碼和數(shù)據(jù)

當數(shù)據(jù)發(fā)生改變(增加或者減少類型)時,使用 字典 使用字典會非常方便:

def get_coach_data(filename):
    with open(filename) as f:
        data=f.readline().strip().split(",")
        data1={}
        data1["name"]=data.pop(0)
        data1["DOB"] =data.pop(0)
        data1["Times"]=str(sorted(set([sanitize(t) for t in data]))[0:3])
    return(data1)
sarah = get_coach_data("sarah2.txt")
print(sarah["name"]+""s fastest time are:"+sarah["Times"])
# 對字典的調用例如sarah["name"],方式簡單實用。

這里面get_coach_data()函數(shù)創(chuàng)建并處理數(shù)據(jù)追中返回一個字典,對字典的調用。

但將數(shù)據(jù)與代碼打包在一起是更好的,函數(shù)與數(shù)據(jù)關聯(lián)才有意義,因此引入類的使用:

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times= [ ]): 
    #  __init__這里一定要注意 兩個短橫線 
        self.name =a_name
        self.dob = a_dob
        self.times=a_times
    def top3(self):
        return(sorted(set([sanitize(t) for t in self.times]))[0:3])
    def add_time(self,time_value):
        self.times.append(time_value)
    def add_times(self,list_of_times):
        self.times.extend(list_of_times)

這里涉及了‘定制類’的創(chuàng)建例子,注意其中的賦值與擴展方法。

def sanitize(time_string):
    if "-" in time_string:
        splitter="-"
    elif ":" in time_string:
        splitter=":"
    else:
        return(time_string)
    (mins,secs)= time_string.split(splitter)
    return(mins+"."+secs)
#此處是重點  注意觀察一定制類的不同
class Athletelist(list):
# 注意()中的是你將派生的類的類型
    def __init__(self,a_name,a_dob=None,a_times= []):
        list.__init__([])
        self.name =a_name
        self.dob = a_dob
        self.extend(a_times)
    def top3(self):
        return(sorted(set([sanitize(t) for t in self]))[0:3])

        
def get_coach_data(filename):
    with open(filename) as f:
        data = f.readline().strip().split(",")
    return(Athletelist(data.pop(0),data.pop(0),data))
    #注意觀察類的調用方式
        
sarah = get_coach_data("sarah2.txt")
print(sarah.name+""s fastest time are:"+str(sarah.top3()))

vera= Athletelist("vera vi")
vera.extend(["1.31","1-21","2:22"])

print(vera.top3())

這里涉及了子類的創(chuàng)建方法,不僅包含編寫的功能,還包含list本身的功能。

小結:
小小入門。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40813.html

相關文章

  • 我的第一本 gitbook: Flask Web 開發(fā)筆記

    摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進行了完善,當然也拖了不少時間。本書主要介紹的基本使用,這也是我一開始在學習過程中經(jīng)常用到的。第章實戰(zhàn),介紹了如何開發(fā)一個簡單的應用。聲明本書由編寫,采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書籍地址 head-f...

    KevinYan 評論0 收藏0
  • 記錄一次用Python寫爬蟲的心得

    摘要:前前后后弄了一個星期,看書寫代碼,我寫出了一個基本能用的爬蟲小代碼,地址代碼注釋都很詳細了,其實只要直接閱讀源碼即可。然后我網(wǎng)上找了一下資料,發(fā)現(xiàn)很多人推薦這個庫,自己下來用了一下,發(fā)現(xiàn)真的很舒服,所以果斷采用了。 現(xiàn)在網(wǎng)絡爬蟲有很多方式可以寫,比如Node.js或者Go, 甚至PHP都行,我之所以選擇Python的原因是因為教程多,可以系統(tǒng)學習,因為光懂得使用Html選擇器來爬去頁面...

    james 評論0 收藏0
  • Python拾遺(一)

    摘要:扔在一邊很久了,最近剛好有幾天閑,買了本復習一下。這是第一部分和數(shù)據(jù)處理。返回當前作用域下的本地變量。這個更好玩兒,模塊里面包含了異常和一些其他的對象。庫中變量是一個保存環(huán)境變量的字典,可以通過訪問字典值得方式獲得一些環(huán)境變量的值。 python扔在一邊很久了,最近剛好有幾天閑,買了本《Head First Python》復習一下。 跟python結緣是因為教C語言的王青老師推薦我們邊...

    2i18ns 評論0 收藏0
  • head first python(第四)–學習筆記

    showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其實持久存儲不僅僅包含文件,還包括數(shù)據(jù)庫等,本章先介紹一部分,先熟悉一下。 熟悉python數(shù)據(jù) #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...

    venmos 評論0 收藏0
  • head first python(第一)–學習筆記

    摘要:第一章學習流程圖安裝這里是用的,除了之外,和都自帶了,只是版本沒有這么新。是區(qū)分大小寫的。可以根據(jù)多維數(shù)組來理解。知識點補充里列表是打了激素的數(shù)組,意味著列表比數(shù)組更厲害,更好用。的語句的縮進是必須規(guī)范的。 head first python(第一章)--學習流程圖 showImg(http://source1.godblessyuan.com/blog_headfirstpytho...

    TerryCai 評論0 收藏0

發(fā)表評論

0條評論

pumpkin9

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<