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