简明Python教程第二部分7-9
- 第7章 函數
- 第8章 模塊
- 使用sys模塊
- 第9章 數據結構
第7章 函數
函數是重用的程序段。類和模塊、包也是。它們是Python系統的層次構造工具。
函數中的參數名稱為形參,而你提供給函數調用的值稱為實參。將實參傳遞給形參是一個隱性的賦值過程。
局部變量:當你在函數定義內聲明變量的時候,它們與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是局部的。
這稱為變量的作用域 。所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。
這意味著當我們在頂層文件中定義變量時,它就是全局變量;在函數內定義是它就是局部變量。且變量和函數一樣只允許前向引用,即不能在定義之前使用它們。使用global語句聲明(多個)全局變量,使得在函數中就可以改變函數外變量的值
默認參數值:對于一些函數,你可能希望它的一些參數是可選的,如果用戶不想要為這些參數提供值的話,這些參數就使用默認值。這個功能借助于默認參數值完成。
你可以在函數定義的形參名后加上賦值運算符(=)和默認值,從而給形參指定默認參數值。注意,默認參數值應該是一個參數,而且默認參數值應該是不可變的。只有在形參表末尾的那些參數可以有默認參數值,即你不能在聲明函數形參的時候,先聲明有默認值的形參而后聲明沒有默認值的形參。
這是因為Python語法的限制,例如,def func(a, b=5)是有效的,但是def func(a=5, b)是無效的。
關鍵參數
如果你的某個函數有許多參數,而你只想指定其中的一部分,那么你可以通過命名來為這些參數賦值——即使用關鍵字參數 ——我們使用名字(關鍵字)而不是位置(我們前面所一直使用的方法)來給函數指定實參。
優勢在于:- 由于我們不必擔心參數的順序,使用函數變得更加簡單了;
- 假設其他參數都有默認值,我們可以只給我們想要的那些參數賦值。
沒有返回值的return語句等價于return None,除非你提供你自己的return語句,每個函數都在結尾暗含有return None語句。
DocStrings
Python有一個很奇妙的特性,稱為文檔字符串,它通常被簡稱為docstrings。
DocStrings是一個重要的工具,由于它幫助你的程序文檔更加簡單易懂,你應該盡量使用它。你甚至可以在程序運行的時候,從函數恢復文檔字符串!- 文檔字符串也適用與類和模塊;
- 我們使用__doc__調用函數對象的文檔字符串屬性,也可以使用help(),它所做的就是抓取函數的__doc__屬性,然后整潔地展示給你。
- 隨我們的Python發行版附帶的pydoc命令,與help()類似地使用DocStrings。
第8章 模塊
- 在一個程序中使用函數來重用代碼,如果想要在其他程序中重用很多函數,那么你該如何編寫程序呢?答案就是使用模塊。
- 首先,我們將學習如何使用標準庫模塊。
使用sys模塊
sys模塊包含了與Python解釋器和它的環境有關的函數。
當Python執行import sys語句的時候,它在sys.path變量中所列目錄中尋找sys.py模塊。如果找到了這個文件,這個模塊的主塊中的語句將被運行,然后這個模塊將能夠被你使用 。
注意,初始化過程僅在我們第一次輸入模塊的時候進行。
sys.argv變量是一個字符串的列表,包含了命令行參數的列表,即我們使用命令行傳遞給程序的參數。記住,腳本的名稱總是sys.argv列表的第一個參數。
sys.path包含輸入模塊的目錄名列表。sys.path的第一個字符串是空的,這個空的字符串表示當前目錄也是sys.path的一部分,這與PYTHONPATH環境變量是相同的。這意味著你可以直接輸入位于當前目錄的模塊。否則,你得把你的模塊放在sys.path所列的目錄之一。
# use_sys.pyimport sys print "The command line arguments are:' for i in sys.argv:print iprint '\n\nThe PYTHONPATH is', sys.path, '\n'字節編譯的.pyc文件:輸入一個模塊相對來說開銷較大。而創建字節碼編譯的文件 ,這些文件以.pyc作為擴展名,則會快得多,因為一部分輸入模塊所需的處理已經完成了。另外,這些字節編譯的文件也是與平臺無關的,這使得Python具有跨平臺的特性。而且,這樣可以使我們不必將源代碼也一并泄露出去。
模塊的__name__:每個模塊都有一個名稱,在模塊中可以通過語句來找出模塊的名稱。
- 假如我們只想在程序本身被使用的時候運行主塊,而在它被別的模塊導入的時候不運行主塊,這可以通過模塊的__name__屬性完成。
輸出:
$ python using_nam e.py This program is being run by itself$ python >>> import using_name I am being im ported from another m odule如果它是'__m ain__',這說明這個模塊被用戶單獨運行,我們可以進行相應的恰當操作。
dir()函數:我們可以使用內建的dir函數來列出模塊定義的標識符。標識符有函數、類和變量。
當你為dir()提供一個模塊名的時候,它返回模塊定義的名稱列表;如果不提供參數,它返回當前模塊中定義的名稱列表。關于del的一點注釋——這個語句在運行后被用來刪除一個變量/名稱。
第9章 數據結構
在Python中有三種內建的數據結構——列表、元組和字典。
- 列表:是處理一組有序項目的數據結構。
元組:元組和字符串一樣是 不可變的,元組通過圓括號中用逗號分割的項目定義。
元組通常用在使語句或用戶定義的函數能夠安全地采用一組值的時候,即被使用的元組的值不會改變。字典:
- 注意:鍵必須是唯一的;
- 注意:只能使用不可變的對象(比如字符串)來作為字典的鍵,但可以把不可變或可變的對象作為字典的值。
序列:
列表、元組和字符串都是序列。
序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個特定項目。切片操作符讓我們能夠獲取序列的一個切片,即一部分序列。引用:當我們創建一個對象并給它賦一個變量的時候,這個變量僅僅 引用 那個對象,而不是表示這個對象本身!
也就是說,變量名指向你計算機中存儲那個對象的內存,它等同于指針。而這被>稱作名稱到對象的綁定。在Python中,變量無類型,對象有類型,因為變量只是指向對象的引用。而Python也因為對對象類型的強調,被認為是一種強類型語言。
記住列表的賦值語句不創建拷貝,得使用切片操作符來建立序列的拷貝。
更多字符串的內容
- startwith方法是用來測試字符串是否以給定字符串開始。
- in操作符用來檢驗一個給定字符串是否為另一個字符串的一部分。
- find方法用來找出給定字符串在另一個字符串中的位置,或者返回-1以表示找不到子字符串。
- str類也有以一個作為分隔符的字符串join序列的項目的整潔的方法,它返回一個生成的大字符串。
總結
以上是生活随笔為你收集整理的简明Python教程第二部分7-9的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF Edu54 E. Vasya an
- 下一篇: 非阻塞I/O多路复用机制