python之函數

來源:互聯網
上載者:User

標籤:預設值   語句   定義函數   情況下   報錯   none   不定長參數   自己的   括弧   

函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼片段。

函數能提高應用的模組性,和代碼的重複利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己建立函數,這被叫做使用者自訂函數。

定義一個函數

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括弧 ()
  • 任何傳入參數和自變數必須放在圓括弧中間,圓括弧之間可以用於定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字串—用於存放函數說明。
  • 函數內容以冒號起始,並且縮排。
  • return [運算式] 結束函數,選擇性地返回一個值給調用方。不帶運算式的return相當於返回 None。
  • 文法

    Python 定義函數使用 def 關鍵字,一般格式如下: 

  • 1 def 函數名(參數列表):2     函數體

    預設情況下,參數值和參數名稱是按函式宣告中定義的順序匹配起來的。例如:讓我們使用函數來輸出"Hello World!":

  • 1  def hello() :2     print("Hello World!")3 4 hello()  #調用函數5 6 Hello World!  #調用函數得到的結果

    更複雜點的應用,函數中帶上參數變數: 計算兩個數相乘的函數:

  • 1 def calc(a,b):#a,b 是形參,形式參數2     #位置參數,也叫必填參數,不填會報錯3     res=a*b4     print(‘%s * %s = %s‘ %(a,b,res))5 calc(7,9)#7和8 是實參,實際參數6 7 #7 * 9 = 63 調用函數的結果
    預設參數
  • 調用函數時,如果沒有傳遞參數,則會使用預設參數。以下執行個體中如果沒有傳入 age 參數,則使用預設值:
     1 def printinfo( name, age = 35 ): 2    "列印任何傳入的字串" 3    print ("名字: ", name) 4    print ("年齡: ", age) 5    return 6 #調用printinfo函數 7 printinfo( age=50, name="runoob" ) 8 print ("------------------------") 9 printinfo( name="runoob" )10 11 #以上執行個體輸出結果:12 名字:  runoob13 年齡:  5014 ------------------------15 名字:  runoob16 年齡:  35
    不定長參數

    你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述2種參數不同,聲明時不會命名。基本文法如下:

    1 def functionname([formal_args,] *var_args_tuple ):2    "函數_文檔字串"3    function_suite4    return [expression]

    加了星號(*)的變數名會存放所有未命名的變數參數。如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變數。如下執行個體:

    # 可寫函數說明def printinfo( arg1, *vartuple ):   "列印任何傳入的參數"   print ("輸出: ")   print (arg1)   for var in vartuple:      print (var)   return # 調用printinfo 函數printinfo( 10 )printinfo( 70, 60, 50 )以上執行個體輸出結果:輸出:10輸出:706050
    匿名函數

    python 使用 lambda 來建立匿名函數。

    所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。

    • lambda 只是一個運算式,函數體比 def 簡單很多。
    • lambda的主體是一個運算式,而不是一個代碼塊。僅僅能在lambda運算式中封裝有限的邏輯進去。
    • 匿名函式擁有自己的命名空間,且不能訪問自己參數列表之外或全域命名空間裡的參數。
    • 雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內嵌函式,後者的目的是調用小函數時不佔用棧記憶體從而增加運行效率。

    匿名函式的文法只包含一個語句,如下:

  • 1 p = lambda x,y:x+1 #冒號後面的是函數體,也是函數的處理邏輯,冒號前面的是傳回值2 print(p(2))3 4 #結果是5 3
    全域變數和局部變數

    定義在函數內部的變數擁有一個局部範圍,定義在函數外的擁有全域範圍。

    局部變數只能在其被聲明的函數內部訪問,而全域變數可以在整個程式範圍內訪問。調用函數時,所有在函數內聲明的變數名稱都將被加入到範圍中。函數裡面定義的變數,都是局部變數,只在函數裡面使用,出了函數就不可以調用。如下執行個體:

  •  1 total = 0 # 這是一個全域變數 2  3 def sum( arg1, arg2 ): 4     #返回2個參數的和." 5     total = arg1 + arg2 # total在這裡是局部變數. 6     print ("函數內是局部變數 : ", total) 7     return total 8  9 #調用sum函數10 sum( 10, 20 )11 print ("函數外是全域變數 : ", total)12 13 #以上執行個體輸出結果:14 15 函數內是局部變數 :  3016 函數外是全域變數 :  0

     

python之函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.