负基础学python编程_【数据科学系统学习】Python # 编程基础[二]
在上一篇中我們講到了函數(shù),如果你想在所編寫的別的程序中重用一些函數(shù)的話,應該怎么辦?正如你可能想象到的那樣,答案是模塊(Modules)。我們這一篇就從模塊說起。
模塊
為了編寫可維護的代碼,我們把很多函數(shù)分組,分別放到不同的文件里,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在 Python 中,一個.py文件就稱之為一個模塊(Module)。包括 Python 內(nèi)置的模塊和來自第三方的模塊。點擊查看 Python 的所有內(nèi)置函數(shù)。
dir 函數(shù)
內(nèi)置的dir()函數(shù)能夠返回由對象所定義的名稱列表。
如果這一對象是一個模塊,則該列表會包括函數(shù)內(nèi)所定義的函數(shù)、類與變量。該函數(shù)接受參數(shù)。
如果參數(shù)是模塊名稱,函數(shù)將返回這一指定模塊的名稱列表。
如果沒有提供參數(shù),函數(shù)將返回當前模塊的名稱列表。
包
變量通常位于函數(shù)內(nèi)部,函數(shù)與全局變量通常位于模塊內(nèi)部。如果你希望組織起這些模塊的話,就需要包(Packages)。
Python 引入了按目錄來組織模塊的方法,稱為包(Package)。它是一種能夠方便地分層組織模塊的方式。包是指一個包含模塊與一個特殊的 __init__.py 文件的文件夾,這個文件是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊。
使用模塊
在一個模塊中,我們可能會定義很多函數(shù)和變量,但有的函數(shù)和變量我們希望給別人使用,有的函數(shù)和變量我們希望僅僅在模塊內(nèi)部使用。在 Python 中,是通過_前綴來實現(xiàn)的。
類似__xxx__這樣的變量是特殊變量,可以被直接引用,但是有特殊用途,比如__author__,__name__就是特殊變量。我們自己的變量一般不要用這種變量名。
類似_xxx和__xxx這樣的函數(shù)或變量就是非公開的(private),不應該被直接引用,比如_abc,__abc等。
安裝第三方模塊
對應的 pip 命令是pip3。
默認情況下,Python 解釋器會搜索當前目錄、所有已安裝的內(nèi)置模塊和第三方模塊,搜索路徑存放在sys模塊的path變量中:
數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)(Data Structures)是一種結(jié)構(gòu),能夠?qū)⒁恍?shù)據(jù)聚合在一起。換句話說,它們是用來存儲一系列相關(guān)數(shù)據(jù)的集合。 Python 中有四種內(nèi)置的數(shù)據(jù)結(jié)構(gòu)——列表(List)、元組(Tuple)、字典(Dictionary)和集合(Set)。
列表
列表是一種用于保存一系列有序項目的集合,也就是說,你可以利用列表保存一串項目的序列。應用方括號[]括起來,元素之間用逗號隔開。
一旦你創(chuàng)建了一張列表,你可以添加、移除或搜索列表中的項目。既然我們可以添加或刪除項目,我們會說列表是一種可變的(Mutable)數(shù)據(jù)類型,即這種類型是可以被改變的。
Python 為 list 類提供了一種append方法,能夠允許你向列表末尾添加一個項目。列表的sort方法對列表進行排序,這一方法影響到的是列表本身,而不會返回一個修改過的列表。del語句會從列表中移除相應的項目。最后,想了解列表對象定義的所有方法,可通過help(list)語句。
元組
元組(Tuple)用于將多個對象保存到一起。你可以將它們近似地看作列表,但是元組不能提供列表類能夠提供給你的廣泛的功能。
元組的一大特征類似于字符串,它們是不可變的,也就是說,你不能編輯或更改元組。
元組是通過特別指定項目來定義的,在指定項目時,你可以給它們加上括號(),并在括號內(nèi)部用逗號進行分隔。
元組通常用于保證某一語句或某一用戶定義的函數(shù)可以安全地采用一組數(shù)值,意即元組內(nèi)的數(shù)值不會改變。
字典
字典就像一本地址簿,如果你知道了他或她的姓名,你就可以在這里找到其地址或是能夠聯(lián)系上對方的更多詳細信息,換言之,我們將鍵值(Keys)(即姓名)與值(Values)(即地址等詳細信息)聯(lián)立到一起。在這里要注意到鍵值必須是唯一的,正如在現(xiàn)實中面對兩個完全同名的人你沒辦法找出有關(guān)他們的正確信息。
另外要注意的是你只能使用不可變的對象(如字符串)作為字典的鍵值,但是你可以使用可變或不可變的對象作為字典中的值。
在字典中,你可以通過使用符號構(gòu)成d = {key : value1 , key2 : value2}這樣的形式,來成對地指定鍵值與值。在這里要注意到成對的鍵值與值之間使用冒號分隔,而每一對鍵值與值則使用逗號進行區(qū)分,它們?nèi)加梢粚ɡㄌ柪ㄆ稹?/p>
另外,字典中的成對的鍵值—值配對不會以任何方式進行排序。如果你希望為它們安排一個特別的次序,只能在使用它們之前自行進行排序。
你將要使用的字典是屬于 dict 類下的實例或?qū)ο蟆?/p>
切片:
切片是一個重要的概念。切片為序列的一部分,那么什么是序列呢?
序列的主要功能是資格測試(Membership Test)和索引操作(Indexing Operations),它們能夠允許我們直接獲取序列中的特定項目。
上面的列表、元組和字符串都可以看作序列(Sequence)的某種表現(xiàn)形式。它們都擁有一種切片(Slicing)運算符。
切片操作:
Python 從 0 開始計數(shù),因此索引操作也從 0 算起,索引操作也可以使用負數(shù),此時位置計數(shù)將從隊列的末尾開始。如 shoplist[-1] 指的是序列的最后一個項目。
在切片操作中,第一個數(shù)字(冒號前面的那位)指的是切片開始的位置,第二個數(shù)字(冒號后面的那位)指的是切片結(jié)束的位置。
如果第一位數(shù)字沒有指定,Python 將會從序列的起始處開始操作。如果第二個數(shù)字留空,Python 將會在序列的末尾結(jié)束操作。
也可以在切片操作中提供第三個參數(shù),這一參數(shù)將被視為切片的步長(Step)(在默認情況下,步長大小為 1)。當步長為 2 時,我們得到的是第 0、2、4…… 位項目。當步長為 3 時,我們得到的是第 0、3……位項目。
要注意的是切片操作會在開始處返回 start,并在 end 前面的位置結(jié)束工作。也就是說,序列切片將包括起始位置,但不包括結(jié)束位置。
舉例:
shoplist[1:3] 返回的序列的一組切片將從位置 1 開始,包含位置 2 并在位置 3 時結(jié)束,因此,這塊切片返回的是兩個項目。類似地,shoplist[:] 返回的是整個序列。
shoplist[:-1] 強返回一組序列切片,其中不包括序列的最后一項項目,但其它所有項目都包含其中。
如果你希望創(chuàng)建一份諸如序列等復雜對象的副本(而非整數(shù)這種簡單的對象(Object)),必須使用切片操作來制作副本。
如果你僅僅是將一個變量名賦予給另一個名稱,那么它們都將“查閱”同一個對象,容易造成麻煩。
集合
集合(Set)是簡單對象的無序集合(Collection)。
當集合中的項目存在與否比起次序或其出現(xiàn)次數(shù)更加重要時,我們就會使用集合。通過使用集合,你可以測試某些對象的資格或情況,檢查它們是否是其它集合的子集,找到兩個集合的交集,等等。
>>> bri = set(['brazil', 'russia', 'india'])
>>> 'india' in bri
True
>>> 'usa' in bri
False
如有不足,歡迎指正。
總結(jié)
以上是生活随笔為你收集整理的负基础学python编程_【数据科学系统学习】Python # 编程基础[二]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: creo管道设计教程_CREO/PROE
- 下一篇: python分层聚类集群合并_24、py