国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3基礎(chǔ)之函數(shù)用法

2019-11-25 18:17:38
字體:
供稿:網(wǎng)友

一般來說,函數(shù)(function)是組織好的、可重復(fù)使用的、具有一定功能的代碼段。函數(shù)能提高應(yīng)用的模塊性和代碼的重復(fù)利用率,在Python中已經(jīng)提供了很多的內(nèi)建函數(shù),比如print(),同時Python還允許用戶自定義函數(shù)。

本文就來實例總結(jié)一下Python3的函數(shù)用法,具體內(nèi)容如下:

一、定義

定義函數(shù)使用關(guān)鍵字def,后接函數(shù)名和放在圓括號( )中的可選參數(shù)列表,函數(shù)內(nèi)容以冒號起始并且縮進(jìn)。一般格式如下:

def 函數(shù)名(參數(shù)列表):   """文檔字符串"""   函數(shù)體   return [expression] 

注意:參數(shù)列表可選,文檔字符串可選,return語句可選。

示例:

def fib(n):   """Print a Fibonacci series"""   a, b = 0, 1   while b < n:     print(b, end=' ')     a, b = b, a+b   print()  fib(2000) # call f = fib  # assignment f(2000) 

函數(shù)名的值是一種用戶自定義的函數(shù)類型。函數(shù)名的值可以被賦予另一個名字,使其也能作為函數(shù)使用。

二、函數(shù)變量作用域

在函數(shù)內(nèi)部定義的變量擁有一個局部作用域,在函數(shù)外定義的擁有全局作用域。注意:在函數(shù)內(nèi)部可以引用全局變量,但無法對其賦值(除非用global進(jìn)行聲明)。

a = 5     # 全局變量a  def func1():   print('func1() print a =', a)  def func2():   a = 21  # 局部變量a   print('func2() print a =', a)   def func3():   global a   a = 10  # 修改全局變量a   print('func3() print a =', a)  func1() func2() func3() print('the global a =', a) 

三、函數(shù)調(diào)用

1、普通調(diào)用

與其他語言中函數(shù)調(diào)用一樣,Python中在調(diào)用函數(shù)時,需要給定和形參相同個數(shù)的實參并按順序一一對應(yīng)。

def fun(name, age, gender):   print('Name:',name,'Age:',age,'Gender:',gender,end=' ')   print()  fun('Jack', 20, 'man') # call 


2、使用關(guān)鍵字參數(shù)調(diào)用函數(shù)

函數(shù)也可以通過keyword=value 形式的關(guān)鍵字參數(shù)來調(diào)用,因為我們明確指出了對應(yīng)關(guān)系,所以參數(shù)的順序也就無關(guān)緊要了。

def fun(name, age, gender):   print('Name:',name,'Age:',age,'Gender:',gender,end=' ')   print()  fun(gender='man', name='Jack', age=20) # using keyword arguments 

3、調(diào)用具有默認(rèn)實參的函數(shù)

Python中的函數(shù)也可以給一個或多個參數(shù)指定默認(rèn)值,這樣在調(diào)用時可以選擇性地省略該參數(shù):

def fun(a, b, c=5):   print(a+b+c)  fun(1,2) fun(1,2,3) 

注意:通常情況下默認(rèn)值只被計算一次,但如果默認(rèn)值是一個可變對象時會有所不同, 如列表, 字典, 或大多類的對象時。例如,下面的函數(shù)在隨后的調(diào)用中會累積參數(shù)值

def fun(a, L=[]):   L.append(a)   print(L)  fun(1) # 輸出[1] fun(2) # 輸出[1, 2] fun(3) # 輸出[1, 2, 3] 

4、調(diào)用可變參數(shù)函數(shù)

通過在形參前加一個星號(*)或兩個星號(**)來指定函數(shù)可以接收任意數(shù)量的實參。

def fun(*args):   print(type(args))   print(args)  fun(1,2,3,4,5,6)  # 輸出: # <class 'tuple'> # (1, 2, 3, 4, 5, 6) def fun(**args):   print(type(args))   print(args)  fun(a=1,b=2,c=3,d=4,e=5)  # 輸出: # <class 'dict'> # {'d': 4, 'e': 5, 'b': 2, 'c': 3, 'a': 1} 

從兩個示例的輸出可以看出:當(dāng)參數(shù)形如*args時,傳遞給函數(shù)的任意個實參會按位置被包裝進(jìn)一個元組(tuple);當(dāng)參數(shù)形如**args時,傳遞給函數(shù)的任意個key=value實參會被包裝進(jìn)一個字典(dict)。

5、通過解包參數(shù)調(diào)用函數(shù)

上一點說到傳遞任意數(shù)量的實參時會將它們打包進(jìn)一個元組或字典,當(dāng)然有打包也就有解包(unpacking)。通過 單星號和雙星號對List、Tuple和Dictionary進(jìn)行解包:

def fun(a=1, b=2, c=3):   print(a+b+c)  fun()  # 正常調(diào)用 list1 = [11, 22, 33] dict1 = {'a':40, 'b':50, 'c':60} fun(*list1)  # 解包列表 fun(**dict1) # 解包字典  # 輸出: # 6 # 66 # 150 

注:*用于解包Sequence,**用于解包字典。解包字典會得到一系列的key=value,故本質(zhì)上就是使用關(guān)鍵字參數(shù)調(diào)用函數(shù)。

四、lambda表達(dá)式

lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)。lambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個表達(dá)式的值,它的一般形式如下:

lambda [arg1 [,arg2,.....argn]] : expression 

lambda表達(dá)式可以在任何需要函數(shù)對象的地方使用,它們在語法上被限制為單一的表達(dá)式:

f = lambda x, y: x+y print(f(10, 20)) def make_fun(n):   return lambda x: x+n  f = make_fun(15) print(f(5)) 

五、文檔字符串

函式體的第一個語句可以是三引號括起來的字符串, 這個字符串就是函數(shù)的文檔字符串,或稱為docstring 。我們可以使用print(function.__doc__)輸出文檔:

def fun():   """Some information of this function.   This is documentation string."""   return  print(fun.__doc__) 

文檔字符串主要用于描述一些關(guān)于函數(shù)的信息,讓用戶交互地瀏覽和輸出。建議養(yǎng)成在代碼中添加文檔字符串的好習(xí)慣。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石台县| 太湖县| 林周县| 壶关县| 丰顺县| 灌南县| 新源县| 陆丰市| 东城区| 辽中县| 靖西县| 伽师县| 法库县| 阳曲县| 调兵山市| 新丰县| 兴山县| 东港市| 萝北县| 甘孜县| 嵊泗县| 荣成市| 隆子县| 佳木斯市| 深圳市| 四平市| 德惠市| 江西省| 鸡东县| 合山市| 鹿泉市| 浮梁县| 衡东县| 西丰县| 城步| 安陆市| 昌都县| 阿城市| 灵宝市| 眉山市| 雷山县|