Python函數Day04

來源:互聯網
上載者:User

標籤:code   hello   調用   傳參   *args   擷取   作用   接收   注意   

函數是什麼  函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。函數是邏輯結構化和過程化的一種編程方法。函數的特性  :
  1. 提高代碼複用性
  2. 提高程式的擴充性
  3. 是程式更易於維護
文法格式
1 def hello():  # 函數名2     print("Hello, I‘m Baylor!")3 4 5 hello()  # 調用函數
形參
  • 形參變數只有在被調用時才分配記憶體單元,在調用結束時,即刻釋放所分配的記憶體單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數
實參
  • 實參可以是常量、變數、運算式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。
1 def func(name): #形參2     print(name)3 func(‘Baylor‘)  #實參
函數的四種形參類型:
 1 def calc(x, y): 2     res = x ** y 3     return res  # 返回函數執行結果-函數傳回值
 4  5  6 c = calc(5,6) #結果賦值給c變數  7 print(c)  8  9 d = calc(y=6,x=5) 10 print(d)
要想擷取函數的執行結果,就可以用return語句把結果返回注意:
  • 函數在執行過程中只要遇到return語句,就會停止執行並返回結果,so 也可以理解為 return 語句代表著函數的結束
  • 如果未在函數中指定return,那這個函數的傳回值為None 
位置參數:
  • 位置參數,字面意思也就是按照參數的位置來進行傳參,比如說上面的calc函數,x和y就是位置參數,位置參數是必傳的,
  • 有幾個位置參數在調用的時候就要傳幾個,否則就會報錯了,那如果有多個位置參數的話,記不住哪個位置傳哪個了怎麼辦,可以使用位置參數的名字來指定調用
  • 比如說上面的那個calc函數也可以使用calc(y=1,x=2)這樣來調用,這種調用方式叫做關鍵字傳參
預設參數:
  • 非必須傳遞參數時,可以在函數定義時,設定預設參數,調用需要更改時重新指定關鍵參數覆蓋
  • 形式參數在前 預設參數在後
關鍵字參數: 
  • 關鍵參數不能寫在位置參數前面&位置不固定
  • 關鍵字參數在傳遞參數時,可以不用形式參數順序傳遞,已經通過關鍵字參數指定傳參
1 def func(name,sex,age = 22,): #預設參數age2     print(name,sex,age)3 func(sex=‘男‘,name=‘Baylor‘)  #關鍵字參數

非固定參數-參數組
  • *args 會把多傳入的參數變成一個元組形式
  • **kwargs 會把多傳入的參數變成一個字典形式
1 def func(*args,name,**kwargs): #*args 元組方式接收參數,**kwargs k,v方式接收參數2     print(args,name,kwargs)3 4 func(1,2,3,name=‘Baylor‘,corporation=‘MLS‘,age=‘18‘)5 #輸出結果  (1, 2, 3) Baylor {‘corporation‘: ‘MLS‘, ‘age‘: ‘18‘}

全域變數
  • 寫在程式的最開始,全域變數範圍是整個程式
  • 在子程式中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。
  • 全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。
  • 當全域變數與局部變數同名時:
  • 在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用 
  • 修改全域變數 通過 global 修改, 不建議在子程式中修改全域變數 當代碼量大時,不便於維護全域變數
局部變數
  • 局部變數範圍是定義該變數的子程式
  • 字串和單獨的整數,是不能在局部改
  • 字典,列表,集合,都是可以在局部直接更改全域
 1 test =‘BestTest‘  # 全域變數 2 temp={1:1} 3 tag=[‘李二狗‘,‘張三‘] 4 def func(name): 5     print(name) 6     #global test # global test #修改全域變數 7     test=‘Baylor‘# 局部變數-只在函數裡生效 8     print(test) 9     #temp={2:2}10     print(temp)11     tag[0]=‘狗蛋‘12     print(tag)13 14 15 name = ‘Niuhanyang‘16 func(name)17 print(test)

遞迴函式在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞迴函式遞迴特性:
  •  必須有一個明確的結束條件
  • 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少
  • 遞迴效率不高,遞迴層次過多會導致棧溢出(在電腦中,函數調用是通過棧(stack)這種資料結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴調用的次數過多,會導致棧溢出
              

Python函數Day04

聯繫我們

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