Python 的函數(shù)傳遞參數(shù):

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的宣漢網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
Python 傳參數(shù)可以理解為 C 的 const 指針(your_type* const your_variable),它所指向的對(duì)象可以被修改產(chǎn)生副作用,但變量本身不能修改指向其他對(duì)象。這個(gè)和 C++ 的 reference 差不多。
所以如果一定要產(chǎn)生 C 的修改指針指向其他對(duì)象的效果,用 list、dict 或其他自定義的 mutable 對(duì)象包裝是一個(gè)辦法,但我認(rèn)為這樣是一種不良實(shí)踐。在 C 語(yǔ)言中用參數(shù)輸出結(jié)果有非常多的理由:
C 語(yǔ)言沒(méi)有 tuple,不能返回多值,除非聲明一個(gè) struct 類型。這種情況下劃分 in 參數(shù)和 out 參數(shù)成為一種慣例
C 語(yǔ)言沒(méi)有異常機(jī)制,返回值一般要保留給 errno
但這些情況在 Python 中都是不存在的
python函數(shù)傳對(duì)象對(duì)性能有影響。在Python中,一切皆對(duì)象,Python參數(shù)傳遞采用的都是“傳對(duì)象引用”的方式。實(shí)際上,這種方式相當(dāng)于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個(gè)可變對(duì)象(比如字典或者列表)的引用,就能修改對(duì)象的原始值,相當(dāng)于通過(guò)“傳引用”來(lái)傳遞對(duì)象。如果函數(shù)收到的是一個(gè)不可變對(duì)象(比如數(shù)字、字符或者元組)的引用,就不能直接修改原始對(duì)象,相當(dāng)于通過(guò)“傳值’來(lái)傳遞對(duì)象,此時(shí)如果想改變這些變量的值,可以將這些變量申明為全局變量。
為了把類中的變量傳遞給類中的函數(shù),我們需要用到3個(gè)特定格式
① 第一個(gè)格式 @classmethod 的中文意思就是“類方法”,@classmethod聲明了函數(shù)1是類方法,這樣才能允許函數(shù)1使用類屬性中的數(shù)據(jù)。
② 第二個(gè)格式 cls 的意思是class的縮寫(xiě)。如果類方法函數(shù)1想使用類屬性(也就是類中的變量),就要寫(xiě)上cls為函數(shù)1的第一個(gè)參數(shù),也就是把這個(gè)類作為參數(shù)傳給自己,這樣就能被允許使用類中的數(shù)據(jù)。
③ 第三個(gè)格式是 cls.變量 。類方法想使用類屬性的時(shí)候,需要在這些變量名稱前加上cls. 這就好比類方法和類之間的約法三章,所以但凡有任何格式錯(cuò)誤都會(huì)報(bào)錯(cuò)。
如果缺①,即缺了“@classmethod”,類方法就不能直接利用類中的屬性,于是報(bào)錯(cuò)
python的函數(shù)參數(shù)傳遞是"引用傳遞(地址傳遞)"。
python中賦值語(yǔ)句的過(guò)程(x = 1):先申請(qǐng)一段內(nèi)存分配給一個(gè)整型對(duì)象來(lái)存儲(chǔ)數(shù)據(jù)1,然后讓變量x去指向這個(gè)對(duì)象,實(shí)際上就是指向這段內(nèi)存(這里有點(diǎn)和C語(yǔ)言中的指針類似)。
在Python中,會(huì)為每個(gè)層次生成一個(gè)符號(hào)表,里層能調(diào)用外層中的變量,而外層不能調(diào)用里層中的變量,并且當(dāng)外層和里層有同名變量時(shí),外層變量會(huì)被里層變量屏蔽掉。函數(shù)? 調(diào)用 ?會(huì)為函數(shù)局部變量生成一個(gè)新的符號(hào)表。
局部變量:作用于該函數(shù)內(nèi)部,一旦函數(shù)執(zhí)行完成,該變量就被回收。
全局變量:它是在函數(shù)外部定義的,作用域是整個(gè)文件。全局變量可以直接在函數(shù)里面應(yīng)用,但是如果要在函數(shù)內(nèi)部改變?nèi)肿兞浚仨毷褂胓lobal關(guān)鍵字進(jìn)行聲明。
注意 :默認(rèn)值在函數(shù)? 定義 ?作用域被解析
在定義函數(shù)時(shí),就已經(jīng)執(zhí)行力它的局部變量
python中不可變類型是共享內(nèi)存地址的:把相同的兩個(gè)不可變類型數(shù)據(jù)賦給兩個(gè)不同變量a,b,a,b在內(nèi)存中的地址是一樣的。
python將自函數(shù)的變量傳給主函數(shù):通過(guò)變量傳遞就可以。
def func():global x,print 'x is', x,x=2,print 'Changed local x to', xx = 50func()print 'Value of x is', x。執(zhí)行結(jié)果是這樣的:x is 50Changed global x to 2Value of x is 2。
可移植性:
由于它的開(kāi)源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過(guò)改動(dòng)使它能夠工作在不同平臺(tái)上)。這些平臺(tái)包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2。
Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux開(kāi)發(fā)的android平臺(tái)。
一個(gè)用編譯性語(yǔ)言比如C或C++寫(xiě)的程序可以從源文件(即C或C++語(yǔ)言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語(yǔ)言(二進(jìn)制代碼,即0和1)。這個(gè)過(guò)程通過(guò)編譯器和不同的標(biāo)記、選項(xiàng)完成。
文章名稱:python函數(shù)傳遞 python函數(shù)傳遞self
地址分享:http://chinadenli.net/article30/doopeso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、App設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站收錄、微信小程序、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)