python學習之路(七)

來源:互聯網
上載者:User

標籤:roc   個數   font   輸出   doc   維護   程式   傳回值   知識點   

今天更新一下有關於函數的知識點~

函數是什麼?

函數一詞來源於數學,但編程中的「函數」概念,與數學中的函數是有很大不同的,具體區別,編程中的函數在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子過程或子程式),在Pascal中叫做procedure(過程)和function,在C中只有function,在Java裡面叫做method。

函數分為物件導向,面向過程和函數式編程。

定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可

特性:

  1. 減少重複代碼
  2. 使程式變的可擴充
  3. 使程式變得易維護
文法定義
def name() :   #name 是函數名稱    print("hello world")    return 0     #傳回值可有可無,可以是任何值或者函數或者運算式,可以是任何東西,不寫的話返回NONEname()
 

當然,函數是可以傳參數的,比如下面:

def asd(x,y):  #xy都是形參    print(x,y)asd(1,2)   #1,2是實參asd(x=1,y=2)asd(1,y=2)以上三種傳參方法都是正確的,但需要注意的是第三種方法,位置參數是必須要優先的,如果寫成asd(2,x=1)程式是不會把2傳給y的。

還有一種方法是傳預設參數,多用於設定預設值或者串連資料庫連接埠號碼,這種相當於設定了初始值,如果想修改也能修改。

def test(x,y=8080):    print(x,y)test (443)結果是輸出 443,8080如果是test(443,80)那麼輸出就是 443,80

函數不光可以傳單個參數,也可以傳參數組,可以用元祖或者字典去傳值,方法如下:

def test(*args):   #*args將接收的N個數值轉換成元祖,放在元祖中傳值    print(args)test(1,2,3,4,5)

def test(**kwargs): #這是將字典傳入函數
  print(kwargs[‘name‘])
test(name=‘xiaoming‘,age=22)
結果是xiaoming

不光可以傳入單一類型的值,還能組合傳入:

def test(name,age=18,*args,**kwargs):    print(name,age,args,kwargs)test(‘xiaoming‘,24,1,2,3,4,sex=‘man‘)

 

局部變數和全域變數

在子程式中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。當全域變數與局部變數同名時:在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用。簡而言之,全域變數就是在程式頂部寫的,局部變數  嵌套函數和遞迴 嵌套函數
name = "xiaoming" def change_name():    name = "xiaowang"     def change_name2():        name = "xiaofang"        print("第3層列印",name)     change_name2() #調用內層函數    print("第2層列印",name)  change_name()print("最外層列印",name)

遞迴

在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞迴函式。

ef calc(n):    print(n)    if int(n/2) ==0:        return n    return calc(int(n/2)) calc(10) 輸出:10521

遞迴特性:

1. 必須有一個明確的結束條件

2. 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少

3. 遞迴效率不高,遞迴層次過多會導致棧溢出(在電腦中,函數調用是通過棧(stack)這種資料結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴調用的次數過多,會導致棧溢出)

匿名函數:

匿名函數就是不需要顯式的指定函數,匿名函數主要是和其它函數搭配使用。如下面所示

def calc(n):    return n**nprint(calc(10)) #換成匿名函數calc = lambda n:n**nprint(calc(10))

內建函數:

python中有很多已經寫好的函數,可以直接調用。

具體操作方法請見:https://docs.python.org/3/library/functions.html?highlight=built#ascii

 

  

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.