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

淺談Python中的函數(shù)(def)及參數(shù)傳遞操作

 更新時(shí)間:2021年05月25日 10:31:24   作者:小菜鳥快飛  
這篇文章主要介紹了淺談Python中的函數(shù)(def)及參數(shù)傳遞操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如下所示:

#抽象 (函數(shù))
 
# 1、callable  判斷一個(gè)對(duì)象是否可以被調(diào)用
x = 1
def y():
    return None
callable(y)  # y可以被調(diào)用
callable(x)  # x不可以被調(diào)用
 
 
# 2、當(dāng)函數(shù)沒有return時(shí)   函數(shù)將默認(rèn)返回None
# 3、放在函數(shù)開頭的字符串成為文檔字符串   如下:
def square(x):
    'my name is hexianmin'   #這個(gè)為文檔字符串   將作為函數(shù)的一部分存儲(chǔ)起來(lái)
    return x*x
 
# 4、函數(shù)中的 '傳值'  和  '傳地址'       切片列表產(chǎn)生的是一個(gè)相等但不相同的副本(即兩個(gè)列表存儲(chǔ)地址不一樣)
# 傳值:   調(diào)用函數(shù)時(shí)傳 變量   eg: x = 1   change(x)
# 傳地址:   調(diào)用函數(shù)時(shí)傳  列表(在這里說(shuō)明:元組不可以改變  傳過去也不能修改)   eg: x = list('pyhon')   change(x)
 
 
# 函數(shù)參數(shù) :?。薄⑽恢脜?shù)  ?。病㈥P(guān)鍵字參數(shù)  
# 1、位置參數(shù) :實(shí)參與形參的對(duì)應(yīng)關(guān)系為 '一一對(duì)應(yīng)' 的關(guān)系  實(shí)參的前后位置決定了形參接到的值
# 2、關(guān)鍵字參數(shù) :由指定關(guān)鍵字去給形參傳值(或者傳地址)  像字典一樣 key-value 的對(duì)應(yīng)關(guān)系
# 注意: 1、二者不可以沖突   2、關(guān)鍵字參數(shù)和位置參數(shù)可以混在一起用,優(yōu)先關(guān)鍵字參數(shù),剩下的按照位置一一對(duì)應(yīng)
 
 
#  *  /  **  的妙用 :收集參數(shù)  和   分配參數(shù)   的作用
# 收集參數(shù):   *  : 將  多余的  一般的對(duì)象(位置參數(shù),字典也將作為位置參數(shù))收集成元組類型       ** : 將  多余的  關(guān)鍵字參數(shù)  收集為字典類型
# 分配參數(shù):   *  : 將元組類型的參數(shù)分配給形參                             ** : 將字典類型的參數(shù)分配給形參
 
 
# 收集參數(shù):
def print_params_1(x, y, z=3, *pospar, **keypar):  #注意這里的 z=3 是給z賦一個(gè)默認(rèn)值  當(dāng)調(diào)用函數(shù)時(shí)沒有給z賦值時(shí)使用  但是一旦調(diào)用時(shí)給z賦值了  z就不用默認(rèn)值了                            
    print(x, y, z)
    print(pospar)   #在函數(shù)里面使用時(shí) : 1、不帶星號(hào)(*) 是 一個(gè)元組   2、帶星號(hào)(*) 是 取元組中的每個(gè)值出來(lái)
    print(keypar)   #在函數(shù)里面使用時(shí) : 1、不帶星號(hào)(**) 是 一個(gè)字典(但是取不了值出來(lái))  2、帶一個(gè)星號(hào)(*) 是 取字典中的每個(gè)關(guān)鍵字(key)出來(lái)   3、帶兩個(gè)星號(hào) 會(huì)報(bào)錯(cuò)
print_params_1(1, 2, 4, 5, 6, 7, foo=1, bar=2)
 
 
# 分配參數(shù):
def foo(x, y, z, m=0, n=0):
    print(x, y, z)
    print(m)
    print(n)
    return -1
def call_foo(*args, **kwds):  #收集參數(shù)
    print('calling foo!')
    foo(*args, kwds)   #分配參數(shù)   這里如果用foo(*args, **kwds)  **kwds會(huì)報(bào)錯(cuò)
x1 = 1
y1 = 2
z1 = 3
d = {
    'm1': 4,
    'n1': 5
}
print(call_foo(x1, y1, z1, d1=1, d2=2))  #調(diào)用的時(shí)候  一個(gè)字典是作為一個(gè)位置參數(shù)的  
 
 
 
# 作用域 :1、全局變量    2、局部變量
 
# 注意: 在局部函數(shù)(局部函數(shù)中默認(rèn)變量都是局部變量)中使用全局變量: 1、只使用一次(且重名了)   2、聲明后使用(聲明后就是全局變量了)
# 1、只使用一次(且重名了):
para = 1
def combine(para):
    print(para,globals()['para'])    # globals()['para']   
combine(2)
 
# 2、聲明后使用(聲明后就是全局變量了):
xx = 2
def change_global():
    global xx     #聲明后就是全局變量了
    xx = xx +2
    print(xx)
change_global()
 
# 3、vars(): 賦值其實(shí)是一個(gè)看不見的字典   使用后返回的就是一個(gè)字典
x11 = 1
x22 = vars() 
print(x22['x11'])
 
# 4、 vars()  globals()   locals()  使用后都是返回一個(gè)字典
 
 
# 作用域嵌套
def multi(fac):
    def multiFac(num):   # multiFac(num)函數(shù)被稱為 : 閉包
        return num * fac
    return multiFac
dou = multi(2)   #返回的 dou 現(xiàn)在是一個(gè)函數(shù)( multiFac(num)函數(shù) )
dou(3)  #這樣相當(dāng)于調(diào)用 multiFac(3)
 
 
# list(map(str,range(10)))  與  [str(i) for i in range(10)]  是等價(jià)的
# filter(lambda x: x.isalnum, seq)        
#from functools import reduce       reduce(lambda x,y: x+y, numbers)
 
# map   filter   reduce  

補(bǔ)充:python參數(shù)傳遞問題(參數(shù)傳出)

變量、對(duì)象與類型關(guān)系

python是動(dòng)態(tài)類型語(yǔ)言,并不需要預(yù)先聲明變量類型,變量的類型和值在賦值的那一刻完成初始化。進(jìn)一步說(shuō),python中的類型是屬于對(duì)象的,而不是變量。

例如:

a=2
b=[1,2]

分別表示把一個(gè)int對(duì)象2,賦值給a;把一個(gè)list對(duì)象[1,2]賦值給b。

也就是說(shuō)在將不同類型的python對(duì)象通過賦值號(hào)賦給某一個(gè)變量時(shí),才完成該變量的初始化,而使得該變量代表某種類型的對(duì)象。

函數(shù)

不可更改參數(shù)傳遞

如果想進(jìn)行參數(shù)傳遞,那么在python 中的定義函數(shù)之前,必須對(duì)參數(shù)的變量進(jìn)行聲明,否則會(huì)出現(xiàn)提示global name 'abun1' is not defined,當(dāng)然,該變量的聲明過程可以是隱式的進(jìn)行。

例如a=2或者a={},在對(duì)a進(jìn)行賦值的那一刻完成變量的類型初始化,也即是完成變量的聲明。

但是,尤其需要注意的是,python中的int,long, bool, float,tuple() 等對(duì)象都是不能更改的,因此,在參數(shù)傳遞時(shí),不能傳遞輸出這些類型的變量。

例如:

def tmpF(a):
    a=10
nint=2
tmpF(nint)
print(nint) #結(jié)果仍是2

因?yàn)?,變量nint代表一個(gè)整型對(duì)象2,調(diào)用函數(shù)tmpF()時(shí),因整型對(duì)象無(wú)法改變,那么新建了一個(gè)整型對(duì)象10,使a指向它,因此nint代表的整型對(duì)象仍舊是2,沒有發(fā)生改變。

可更改參數(shù)傳遞

如果在定義函數(shù)時(shí),想利用參數(shù)輸出某些處理過的變量,那必須使用可以更改的對(duì)象,如list,dict等。

例如:

def tmpF(a):
    a.append(2)
nx=[]
tmpF(nx)
print(nx) #nx=[2]

因?yàn)椋琹ist是可更改類型對(duì)象,因此,在調(diào)用函數(shù)tmpF()時(shí),對(duì)該list型對(duì)象進(jìn)行了修改,而nx指向的仍舊是這個(gè)對(duì)象。

所以,函數(shù)可以通過可變類型對(duì)象,將參數(shù)輸出。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中函數(shù)的創(chuàng)建及調(diào)用

    Python中函數(shù)的創(chuàng)建及調(diào)用

    這篇文章主要介紹了Python中函數(shù)的創(chuàng)建及調(diào)用,創(chuàng)建函數(shù)也稱為定義一個(gè)函數(shù),可以理解為創(chuàng)建一個(gè)具有某種用途的工具。調(diào)用函數(shù)也就是執(zhí)行函數(shù)。如果把創(chuàng)建的函數(shù)理解為創(chuàng)建一個(gè)具體有某種用途的工具,那么調(diào)用函數(shù)就相當(dāng)于使用該工具
    2022-06-06
  • 用python處理圖片之打開\顯示\保存圖像的方法

    用python處理圖片之打開\顯示\保存圖像的方法

    本篇文章主要介紹了用python處理圖片之打開\顯示\保存圖像的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • Pycharm如何運(yùn)行.py文件的方法步驟

    Pycharm如何運(yùn)行.py文件的方法步驟

    這篇文章主要介紹了Pycharm如何運(yùn)行.py文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python實(shí)現(xiàn)MySql數(shù)據(jù)庫(kù)交互的示例

    Python實(shí)現(xiàn)MySql數(shù)據(jù)庫(kù)交互的示例

    本文主要介紹了Python實(shí)現(xiàn)MySql數(shù)據(jù)庫(kù)交互的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 放棄 Python 轉(zhuǎn)向 Go語(yǔ)言有人給出了 9 大理由

    放棄 Python 轉(zhuǎn)向 Go語(yǔ)言有人給出了 9 大理由

    今年 Stream 團(tuán)隊(duì)的主要編程語(yǔ)言從 Python 轉(zhuǎn)向了 Go。本文解釋了其背后的九大原因以及如何做好這一轉(zhuǎn)換。下面小編給大家分享放棄 Python 轉(zhuǎn)向 Go語(yǔ)言有人給出了 9 大理由,一起看看吧
    2017-10-10
  • Django-simple-captcha驗(yàn)證碼包使用方法詳解

    Django-simple-captcha驗(yàn)證碼包使用方法詳解

    這篇文章主要介紹了Django-simple-captcha驗(yàn)證碼包使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python如何生成requirements.txt

    Python如何生成requirements.txt

    在 Python 項(xiàng)目中,requirements.txt 文件通常用于列出項(xiàng)目依賴的庫(kù)及其版本號(hào),本文主要介紹了Python生成requirements.txt的幾個(gè)常用方法,希望對(duì)大家有所幫助
    2025-02-02
  • 解決Python安裝時(shí)報(bào)缺少DLL問題【兩種解決方法】

    解決Python安裝時(shí)報(bào)缺少DLL問題【兩種解決方法】

    這篇文章主要介紹了解決Python安裝時(shí)報(bào)缺少DLL問題,本文通過兩種方法給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • pandas提升計(jì)算效率的一些方法匯總

    pandas提升計(jì)算效率的一些方法匯總

    理解 pandas 的函數(shù),要對(duì)函數(shù)式編程有一定的概念和理解,下面這篇文章主要給大家介紹了關(guān)于pandas提升計(jì)算效率的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 一文詳細(xì)NumPy中np.zeros的使用

    一文詳細(xì)NumPy中np.zeros的使用

    np.zeros是NumPy庫(kù)中一個(gè)非常實(shí)用的函數(shù),用于快速創(chuàng)建指定形狀和大小的全零數(shù)組,本文主要介紹了NumPy中np.zeros的使用,感興趣的可以了解一下
    2024-03-03

最新評(píng)論

灵寿县| 兴义市| 汾西县| 珲春市| 大邑县| 友谊县| 盐津县| 泗洪县| 色达县| 米易县| 贵溪市| 南通市| 恩平市| 巍山| 拉孜县| 克什克腾旗| 湖州市| 自贡市| 德昌县| 页游| 贡觉县| 易门县| 辽阳市| 长治市| 绥芬河市| 普陀区| 乌拉特后旗| 蕲春县| 旬阳县| 岑巩县| 育儿| 平罗县| 榕江县| 交城县| 南和县| 常德市| 祁门县| 湘阴县| 罗定市| 泰兴市| 乌鲁木齐县|