Python筆記(4)

來源:互聯網
上載者:User

函數

一.函數簡介

函數是一個程式的重要組成部分。它們允許你給一塊語句一個名稱,然後你可以在你的程式的任何地方使用這個名稱任意多次地運行這個語句塊。

在Python中,

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

#!/usr/bin/python<br /># Filename: function1.py</p><p>def sayHello():<br /> print 'Hello World!' # block belonging to the function</p><p>sayHello() # call the function </p><p>

二.形參

在函數使用過程中,通過形參和實參的值得傳遞來完成。

例如:

#!/usr/bin/python<br /># Filename: func_param.py</p><p>def printMax(a, b):<br /> if a > b:<br /> print a, 'is maximum'<br /> else:<br /> print b, 'is maximum'</p><p>printMax(3, 4) # directly give literal values</p><p>x = 5<br />y = 7</p><p>printMax(x, y) # give variables as arguments </p><p>

輸出為:

$ python func_param.py<br />4 is maximum<br />7 is maximum

三.局部變數

你在函數定義內聲明變數的時候,它們與函數外具有相同名稱的其他變數沒有任何關係,即變數名稱對於函數來說是局部的。這稱為變數的範圍。所有變數的範圍是它們被定義的塊,從它們的名稱被定義的那點開始。

#!/usr/bin/python<br /># Filename: func_local.py</p><p>def func(x):<br /> print 'x is', x<br /> x = 2<br /> print 'Changed local x to', x</p><p>x = 50<br />func(x)<br />print 'x is still', x </p><p>

輸出為:

$ python func_local.py<br />x is 50<br />Changed local x to 2<br />x is still 50

關於global語句

如果你想要為一個定義在函數外的變數賦值,那麼你就得告訴Python這個變數名不是局部的,而是全域 的。

你可以使用定義在函數外的變數的值(假設在函數內沒有同名的變數)。但是,這樣使用的話,不利於代碼的可讀性。

#!/usr/bin/python<br /># Filename: func_global.py</p><p>def func():<br /> global x</p><p> print 'x is', x<br /> x = 2<br /> print 'Changed local x to', x</p><p>x = 50<br />func()<br />print 'Value of x is', x

輸出為:

$ python func_global.py<br />x is 50<br />Changed global x to 2<br />Value of x is 2

注意:你可以使用同一個global語句指定多個全域變數。例如global x, y, z

四.預設參數值

對於一些函數,你可能希望它的一些參數是可選的,如果使用者不想要為這些參數提供值的話,這些參數就使用預設值。這個功能藉助於預設參數值完成。你可以在函數定義的形參名後加上賦值運算子(=)和預設值,從而給形參指定預設參數值。

例如:

#!/usr/bin/python<br /># Filename: func_default.py</p><p>def say(message, times = 1):<br /> print message * times</p><p>say('Hello')<br />say('World', 5) </p><p>

輸出為:

$ python func_default.py<br />Hello<br />WorldWorldWorldWorldWorld

注意:只有在形參表末尾的那些參數可以有預設參數值,即你不能在聲明函數形參的時候,先聲明有預設值的形參而後聲明沒有預設值的形參。
這是因為賦給形參的值是根據位置而賦值的。例如,def func(a, b=5)是有效,但是def func(a=5, b)是無效的。

五.關鍵參數

如果你的某個函數有許多參數,而你只想指定其中的一部分,那麼你可以通過命名來為這些參數賦值——這被稱作關鍵參數,我們使用名字(關鍵字)而不是位置(我們前面所一直使用的方法)來給函數指定實參。

這樣做有兩個優勢,由於我們不必擔心參數的順序,使用函數變得更加簡單了。二、假設其他參數都有預設值,我們可以只給我們想要的那些參數賦值。

例如:

#!/usr/bin/python<br /># Filename: func_key.py</p><p>def func(a, b=5, c=10):<br /> print 'a is', a, 'and b is', b, 'and c is', c</p><p>func(3, 7)<br />func(25, c=24)<br />func(c=50, a=100) </p><p>

輸出為:

$ python func_key.py<br />a is 3 and b is 7 and c is 10<br />a is 25 and b is 5 and c is 24<br />a is 100 and b is 5 and c is 50

六.return語句

#!/usr/bin/python<br /># Filename: func_return.py</p><p>def maximum(x, y):<br /> if x > y:<br /> return x<br /> else:<br /> return y</p><p>print maximum(2, 3) </p><p>

輸出為:

$ python func_return.py<br />3 </p><p>

七.關於文檔字串

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

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

輸出為:

$ python func_doc.py<br />5 is maximum<br />Prints the maximum of two numbers.</p><p> The two values must be integers.

在函數的第一個邏輯行的字串是這個函數的文檔字串。注意,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.