Python 基礎 - Day 2 Learning Note - Function 函數

來源:互聯網
上載者:User

標籤:python 基礎   lte   test   遞迴   通過   數學模型   全域變數   物件導向   擴充   

前言:

編程的三種方式

  1. 物件導向:類 (class) 
  2. 物件導向 : 過程 (def)
  3. 函數式編程: 函數 (def) 
定義:函數 vs. 過程

在python中,函數是對程式邏輯進行結構化或過程化的一種編程方法。 函數式編程就是:先定義一個數學函數, 然後按照這個數學模型用程式設計語言來實現。 

過程式的編程就是沒有傳回值的函數式編程。 見下列

def func1():    ‘the function discption - define a function‘   #文檔介紹,強烈推薦解釋function的邏輯    print(‘in the func1‘)    return 0x=func1()print(‘from func1 return is %s‘ %x)

in the func1
from func1 return is 0

面向過程:定義一個過程,過程就是沒有傳回值的函數

def func2():    ‘define a process‘    print(‘in the func2‘) #定義一個過程,過程就是沒有傳回值的函數y=func2()print(‘from func2 return is %s‘ %y)

in the func2
from func2 return is None

函數的傳回值
 
返回的對象的數目 python實際返回的對象
0 None
1 object 
(包括一個list,或者另外一個function)
>1  tuple
  • 設定傳回值的原因: 需要函數整個執行的結果,後面的程式需要根據這個執行結果來操作。 
函數的作用:

1、可重複利用 2、使代碼保持一致 3、可擴充性

調用函數 - 參數

1. 關鍵字調用(與形參順序無關)及 標準位置調用 (與形參一一對應):關鍵參數不能寫在位置參數前面,混合使用時以位置調用為主

def test(x,y):  # 形式參數,是虛擬變數。    print(x)    print(y)test(1,2)  # 標準位置調用方法test(y=3,x=2) # 關鍵字調用

2. 預設參數: 調用函數市,預設函數可有可無,非必傳。 用途主要在於預設安裝值,聯絡資料庫的連接埠號碼。

3. 參數組:通過一個元組*(非關鍵字參數)或字典**(關鍵字參數)作為參數組傳遞給函數。參數組一定要放最後。

def func(*args):    print(args)func(1,3,4,3,67)func(*[1,3,4,3,67]) 

(1, 3, 4, 3, 67)

(1, 3, 4, 3, 67)

def func1(**kwargs):    print(kwargs)func1(name=‘alex‘,age=‘8‘,sex=‘F‘)  #必須以關鍵字參數的方式

 {‘name‘: ‘alex‘, ‘age‘: ‘8‘, ‘sex‘: ‘F‘}

變數的範圍在子程式中定義的變數稱為 局部變數,在程式的一開始定義的變數稱為 全域變數。全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。當全域變數與局部變數同名時:在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用。 遞迴在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞迴函式。遞迴的特性1. 必須有一個明確的結束條件2. 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少3. 遞迴效率不高,遞迴層次過多會導致棧溢出(在電腦中,函數調用是通過棧(stack)這種資料結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴調用的次數過多,會導致棧溢出) * 堆棧掃盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html  
def calc(n):    print(n)    if int(n/2) >0:        return calc(int(n/2))    print("->",n)calc(10)   # 遞迴的次數最高為999次

 

 函數式編程

函數是Python內建支援的一種封裝,我們通過把大段代碼拆成函數,通過一層一層的函數調用,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函數就是面向過程的程式設計的基本單元。

函數式編程中的函數這個術語不是指電腦中的函數(實際上是Subroutine),而是指數學中的函數,即自變數的映射。也就是說一個函數的值僅決定於函數參數的值,不依賴其他狀態。比如sqrt(x)Function Computex的平方根,只要x不變,不論什麼時候調用,調用幾次,值都是不變的。

Python對函數式編程提供部分支援。由於Python允許使用變數,因此,Python不是純函數式程式設計語言。函數式程式設計語言有erlang,hashhell等。lambda運算式和其他四種內建函數。 (待補充)

  • 匿名函數與lambda
  • 內建函數 - apply()
  • 內建函數 - filter()
  • 內建函數 - map()
  • 內建函數 - reduce()

 

高階函數 

 

Python 基礎 - Day 2 Learning Note - Function 函數

聯繫我們

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