最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年08月13日 18:04:44   投稿:shichen2014  
這篇文章主要介紹了Python3的函數(shù)用法,非常重要,需要的朋友可以參考下

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

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

一、定義

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

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

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

示例:

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ù)名的值是一種用戶(hù)自定義的函數(shù)類(lèi)型。函數(shù)名的值可以被賦予另一個(gè)名字,使其也能作為函數(shù)使用。

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

在函數(shù)內(nèi)部定義的變量擁有一個(gè)局部作用域,在函數(shù)外定義的擁有全局作用域。注意:在函數(shù)內(nèi)部可以引用全局變量,但無(wú)法對(duì)其賦值(除非用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)用

與其他語(yǔ)言中函數(shù)調(diào)用一樣,Python中在調(diào)用函數(shù)時(shí),需要給定和形參相同個(gè)數(shù)的實(shí)參并按順序一一對(duì)應(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ù)也可以通過(guò)keyword=value 形式的關(guān)鍵字參數(shù)來(lái)調(diào)用,因?yàn)槲覀兠鞔_指出了對(duì)應(yīng)關(guān)系,所以參數(shù)的順序也就無(wú)關(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í)參的函數(shù)

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

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

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

通過(guò)在形參前加一個(gè)星號(hào)(*)或兩個(gè)星號(hào)(**)來(lái)指定函數(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} 

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

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

上一點(diǎn)說(shuō)到傳遞任意數(shù)量的實(shí)參時(shí)會(huì)將它們打包進(jìn)一個(gè)元組或字典,當(dāng)然有打包也就有解包(unpacking)。通過(guò) 單星號(hào)和雙星號(hào)對(duì)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,**用于解包字典。解包字典會(huì)得到一系列的key=value,故本質(zhì)上就是使用關(guān)鍵字參數(shù)調(diào)用函數(shù)。

四、lambda表達(dá)式

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

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

lambda表達(dá)式可以在任何需要函數(shù)對(duì)象的地方使用,它們?cè)谡Z(yǔ)法上被限制為單一的表達(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)) 

五、文檔字符串

函式體的第一個(gè)語(yǔ)句可以是三引號(hào)括起來(lái)的字符串, 這個(gè)字符串就是函數(shù)的文檔字符串,或稱(chēng)為docstring 。我們可以使用print(function.__doc__)輸出文檔:

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

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

相關(guān)文章

  • Python之字符串的遍歷的4種方式

    Python之字符串的遍歷的4種方式

    這篇文章主要介紹了Python之字符串的遍歷的4種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python實(shí)現(xiàn)復(fù)制整個(gè)目錄的方法

    python實(shí)現(xiàn)復(fù)制整個(gè)目錄的方法

    這篇文章主要介紹了python實(shí)現(xiàn)復(fù)制整個(gè)目錄的方法,涉及Python中shutil模塊的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Python pypinyin注音庫(kù)輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音

    Python pypinyin注音庫(kù)輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音

    pypinyin 庫(kù),能像功夫熊貓那樣,輕松、快捷地幫你把漢字轉(zhuǎn)換成拼音,有了 pypinyin,不僅可以節(jié)省寶貴的時(shí)間,還可以更準(zhǔn)確地展示中文字符的讀音,使文化交流更為順暢,本文帶大家一起探索 pypinyin 庫(kù)的魅力
    2024-01-01
  • TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python自定義函數(shù)中的return和print使用及說(shuō)明

    python自定義函數(shù)中的return和print使用及說(shuō)明

    這篇文章主要介紹了python自定義函數(shù)中的return和print使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片

    PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片

    這篇文章主要介紹了PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python和JS反爬之解決反爬參數(shù)?signKey

    Python和JS反爬之解決反爬參數(shù)?signKey

    這篇文章主要介紹了Python和JS反爬之解決反爬參數(shù)?signKey,Python?反爬中有一大類(lèi),叫做字體反爬,核心的理論就是通過(guò)字體文件或者?CSS?偏移,接下來(lái)文章的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python使用pip安裝Matplotlib的方法詳解

    Python使用pip安裝Matplotlib的方法詳解

    在網(wǎng)上看見(jiàn)許多matplotlib的安裝教程都是比較復(fù)雜,需要配置許多環(huán)境,對(duì)于電腦基礎(chǔ)不好的人來(lái)說(shuō)可是一件頭疼的事情,今天我介紹一個(gè)簡(jiǎn)單的安裝方法,下面這篇文章主要給大家介紹了關(guān)于Python使用pip安裝Matplotlib的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 簡(jiǎn)單談?wù)刾ython的反射機(jī)制

    簡(jiǎn)單談?wù)刾ython的反射機(jī)制

    本文主要介紹python中的反射,以及該機(jī)制的簡(jiǎn)單應(yīng)用,熟悉JAVA的程序員,一定經(jīng)常和Class.forName打交道。在很多框架中(Spring,eclipse plugin機(jī)制)都依賴(lài)于JAVA的反射能力,而在python中,也同樣有著強(qiáng)大的反射能力,本文將做簡(jiǎn)單的介紹
    2016-06-06
  • Python項(xiàng)目實(shí)戰(zhàn)之使用Django框架實(shí)現(xiàn)支付寶付款功能

    Python項(xiàng)目實(shí)戰(zhàn)之使用Django框架實(shí)現(xiàn)支付寶付款功能

    這篇文章主要介紹了Python項(xiàng)目實(shí)戰(zhàn)之使用Django框架實(shí)現(xiàn)支付寶付款功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

荥经县| 丰原市| 合阳县| 永新县| 丰顺县| 兴山县| 会东县| 施秉县| 海门市| 钦州市| 建始县| 泌阳县| 永川市| 建阳市| 河北区| 射洪县| 临颍县| 扎赉特旗| 连城县| 棋牌| 江油市| 奉化市| 二手房| 沙洋县| 桃园市| 抚州市| 民乐县| 肇州县| 广安市| 延庆县| 大田县| 昂仁县| 富锦市| 固镇县| 赤壁市| 荆门市| 旺苍县| 静安区| 上饶县| 成都市| 资中县|