python之函數

來源:互聯網
上載者:User

標籤:*args   理解   lob   文法   技術分享   全域變數   結束   logs   方式   

一,函數是什嗎?

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

特性:

1.減少代碼的重複性

2.代碼的可擴充性

3.代碼的易維護性

文法定義

def sayHello():

  print(‘hello,i‘m good boy)

sayHello()

也可直接傳入參數

def add(x,y):

  res = x+y

  return res

result = add(3,5)

print(result)

二,函數參數

形參變數只有在調用時才會被分配記憶體單元,調用結束時就釋放記憶體,也就是說,形參變數不調用時是不會佔用任何記憶體的。因此,形參只能在函數內部有效。

實參可以是常量,變數,運算式,函數等,但是在函數調用時,它必須有確定的值以便傳給形參。

函數傳遞的四種方式

1.位置傳遞

def info(name,age,sex):    return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(‘mingo‘,23,‘男‘))
View Code

按照位置一一對應進去,多個或少一個實參都會報錯

2.關鍵字傳遞

def info(name,age,sex):    return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,sex=‘男‘,age=23))
View Code

關鍵字傳遞無順序,只要你的名字對了就行,但要注意一點的就是,關鍵字參數不能出現在位置參數的前面

例如:

def info(name,age,sex):    return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,sex=‘男‘,23))
View Code

3.預設傳遞

def info(name,age,sex=‘女‘):    return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,age=23))#sex不寫預設女print(info(name=‘mingo‘,sex=‘男‘,age=23))#sex寫會覆蓋預設的值
View Code

4包裹傳遞(不確定使用者想傳入多少個參數時使用)

def info(*args):    print(args)    print(type(args))info(1,2,4,‘a‘,‘mingo‘,21,‘nan‘)列印結果(1, 2, 4, ‘a‘, ‘mingo‘, 21, ‘nan‘)<class ‘tuple‘>
View Code

args會收集傳遞進去的參數並變成元組的形式,args只是一個規範的名稱,可以改其它名稱,例如*aa

def info(**kwargs):    print(kwargs)    print(type(kwargs))info(name=‘mingo‘,age=21,sex=‘nan‘)列印結果{‘name‘: ‘mingo‘, ‘age‘: 21, ‘sex‘: ‘nan‘}<class ‘dict‘>
View Code

kwargs會接受key-value形式的參數並變成字典的形式

def info(*args,**kwargs):    print(args)    print(kwargs)info(1,2,name=‘mingo‘,age=21,sex=‘nan‘)列印結果(1, 2){‘name‘: ‘mingo‘, ‘age‘: 21, ‘sex‘: ‘nan‘}
View Code

以上多種形式可以配合著使用,如果有機會看到的小夥伴還是自己多動手試一試吧,我就不貼出代碼了

三,局部變數

name = "Mingo"def change_name(name):    print("before change:", name)    name = "明哥,一個買不起房的男人"    print("after change", name)change_name(name)print("在外面看看name改了麼?", name)列印結果before change: Mingoafter change 明哥,一個買不起房的男人在外面看看name改了麼? Mingo
View Code

全域與局部變數

在子程式中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。當全域變數與局部變數同名時:在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用。 要想修改全域變數只能在內部調用global,改全域變數有待商榷,不敢肆意為之。 四,傳回值相信很多人對return產生了疑問?

要想擷取函數的執行結果,就可以用return語句把結果返回

注意:

  1. 函數在執行過程中只要遇到return語句,就會停止執行並返回結果,so 也可以理解為 return 語句代表著函數的結束
  2. 如果未在函數中指定return,那這個函數的傳回值為None 

所以,有什麼卵用呢?看你的需求了。

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.