Python學習手記 pt4 函數

來源:互聯網
上載者:User

函數通過def關鍵字定義。def關鍵字後跟一個函數的 標識符 名稱,然後跟一對圓括弧。圓括弧之中可以包括一些變數名,該行以冒號結尾。接下來是一塊語句,它們是函數體。下面這個例子將說明這事實上是十分簡單的:

無參數:
def sayHello():print 'Hello World!' # block belonging to the functionsayHello() # call the function

     帶參數:

def sayHello(s):print s # block belonging to the functionsayHello( raw_input('type some words')) # call the function
記住用def來定義模組. 之後要緊跟:
 

global語句
如果你想要為一個定義在函數外的變數賦值,那麼你就得告訴Python這個變數名不是局部的,而是 全域 的。我們使用global陳述式完成這一功能。沒有global語句,是不可能為定義在函數外的變數賦值的。你可以使用定義在函數外的變數的值(假設在函數內沒有同名的變數)。然而,我並不鼓勵你
這樣做,並且你應該盡量避免這樣做,因為這使得程式的讀者會不清楚這個變數是在哪裡定義的。使用global語句可以清楚地表明變數是在外面的塊定義的。

#!/usr/bin/python# Filename: func_global.pydef func():global xprint 'x is', xx = 2print 'Changed local x to', xx = 50func()print 'Value of x is', x

global語句被用來聲明x是全域的——因此,當我們在函數內把值賦給x的時候,這個變化也反映在我們在主塊中使用x的值的時候。你可以使用同一個global語句指定多個全域變數。例如global x, y, z。

 

預設參數值
對於一些函數,你可能希望它的一些參數是 可選 的,如果使用者不想要為這些參數提供值的話,這些參數就使用預設值。這個功能藉助於預設參數值完成。你可以在函數定義的形參名後加上賦值運算子(=)和預設值,從而給形參指定預設參數值。注意,預設參數值應該是一個參數。更加準確的說,預設參數值應該是不可變的,從現在開始,請記住這一點。
使用預設參數值
例7.5 使用預設參數值

#!/usr/bin/python# Filename: func_default.pydef say(message, times = 1):print message * times //這裡*times表示連續輸出times次.say('Hello')say('World', 5)
 

關鍵參數
如果你的某個函數有許多參數,而你只想指定其中的一部分,那麼你可以通過命名來為這些參數賦值——這被稱作 關鍵參數 ——我們使用名字(關鍵字)而不是位置(我們前面所一直使用的方法)來給函數指定實參。
這樣做有兩個 優勢 ——一,由於我們不必擔心參數的順序,使用函數變得更加簡單了。二、假設其他參數都有預設值,我們可以只給我們想要的那些參數賦值。
使用關鍵參數

例7.6 使用關鍵參數
#!/usr/bin/python
# Filename: func_key.py
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
輸出
$ python func_key.py
a is 3 and b is 7 and c is 10 //c是預設值
a is 25 and b is 5 and c is 24 // b是預設值
a is 100 and b is 5 and c is 50 // 類似c//

 

return語句: 返回.如果沒有傳回值的return語句等價於return None。None是Python中表示沒有任何東西的特殊類型。例如,如果一個變數的值為None,可以表示它沒有值。除非你提供你自己的return語句,每個函數都在結尾暗含有return None語句。通過運行print someFunction(),你可以明白這一點,函數someFunction沒有使用return語句,如同:
def someFunction():
pass // 一般定義好後, 先隨後再寫. 用這個
pass語句在Python中表示一個空的語句塊。

 

DocStrings

Python有一個很奇妙的特性,稱為 文檔字串 ,它通常被簡稱為 docstrings 。DocStrings是一個重要的工具,由於它協助你的程式文檔更加簡單易懂,你應該盡量使用它。你甚至可以在程式啟動並執行時候,從函數恢複文檔字串!

使用DocStrings

#!/usr/bin/python# Filename: func_doc.pydef printMax(x, y):'''Prints the maximum of two numbers.
The two values must be integers.'''x = int(x) # convert to integers, if possibley = int(y)if x > y:print x, 'is maximum'else:print y, 'is maximum'printMax(3, 5)print printMax.__doc__

輸出
$ python func_doc.py
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.

在函數的第一個邏輯行的字串是這個函數的 文檔字串 。注意,DocStrings也適用於模組和類。文檔字串的慣例是一個多行字串,它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述。 強烈建議 你在你的函數中使用文檔字串時遵循這個慣例。
你可以使用__doc__(注意雙底線)調用printMax函數的文檔字串屬性(屬於函數的名稱)。請記住Python把 每一樣東西 都作為對象,包括這個函數。它所做的只是抓取函數的__doc__屬性,然後整潔地展示給你。你可以對上面這個函數嘗試一下——只是在你的程式中包括help(printMax)。記住按q退出help。自動化工具也可以以同樣的方式從你的程式中提取文檔。因此,我 強烈建議 你對你所寫的任何正式函數編寫文檔字串。隨你的Python發行版附帶的pydoc命令,與help()類似地使用DocStrings。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.