国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]變量和參數(shù)

Freelander / 1340人閱讀

摘要:每個(gè)形參的名稱均可作為過(guò)程內(nèi)的局部變量。實(shí)參表示在您調(diào)用過(guò)程時(shí)傳遞給過(guò)程形參的值。看官如果硬著頭皮看完這段引文,發(fā)現(xiàn)里面有幾個(gè)關(guān)鍵詞參數(shù)變量形參實(shí)參。好似全局變量能力很強(qiáng)悍,能夠統(tǒng)帥函數(shù)內(nèi)外。

對(duì)于變量和參數(shù),不管是已經(jīng)敲代碼多年的老鳥,還是剛剛接觸編程的小白,都會(huì)有時(shí)候清楚,有時(shí)候又有點(diǎn)模糊。因?yàn)椋趯?shí)際應(yīng)用中,它們之間分分離離,比如,敲代碼都知道,x=3中x是變量,它不是參數(shù),但是在函數(shù)y=3x+4中,x是變量,也是參數(shù)。那么什么這兩個(gè)到底有什么區(qū)別和聯(lián)系呢?我在網(wǎng)上搜了一下,發(fā)現(xiàn)很多說(shuō)法,雖然大同小異,但是似乎只有下面這一段來(lái)自微軟網(wǎng)站的比較高度抽象,而且意義涵蓋深遠(yuǎn)。我摘抄過(guò)來(lái),看官讀一讀,是否理解,雖然是針對(duì)VB而言的,一樣有啟發(fā)。

  

參數(shù)和變量之間的差異 (Visual Basic)

  

多數(shù)情況下,過(guò)程必須包含有關(guān)調(diào)用環(huán)境的一些信息。執(zhí)行重復(fù)或共享任務(wù)的過(guò)程對(duì)每次調(diào)用使用不同的信息。此信息包含每次調(diào)用過(guò)程時(shí)傳遞給它的變量、常量和表達(dá)式。

  

若要將此信息傳遞給過(guò)程,過(guò)程先要定義一個(gè)形參,然后調(diào)用代碼將一個(gè)實(shí)參傳遞給所定義的形參。 您可以將形參當(dāng)作一個(gè)停車位,而將實(shí)參當(dāng)作一輛汽車。 就像一個(gè)停車位可以在不同時(shí)間停放不同的汽車一樣,調(diào)用代碼在每次調(diào)用過(guò)程時(shí)可以將不同的實(shí)參傳遞給同一個(gè)形參。

  

形參表示一個(gè)值,過(guò)程希望您在調(diào)用它時(shí)傳遞該值。

  

當(dāng)您定義 Function 或 Sub 過(guò)程時(shí),需要在緊跟過(guò)程名稱的括號(hào)內(nèi)指定形參列表。對(duì)于每個(gè)形參,您可以指定名稱、數(shù)據(jù)類型和傳入機(jī)制(ByVal (Visual Basic) 或 ByRef (Visual Basic))。您還可以指示某個(gè)形參是可選的。這意味著調(diào)用代碼不必傳遞它的值。

  

每個(gè)形參的名稱均可作為過(guò)程內(nèi)的局部變量。形參名稱的使用方法與其他任何變量的使用方法相同。

  

實(shí)參表示在您調(diào)用過(guò)程時(shí)傳遞給過(guò)程形參的值。調(diào)用代碼在調(diào)用過(guò)程時(shí)提供參數(shù)。

  

調(diào)用 Function 或 Sub 過(guò)程時(shí),需要在緊跟過(guò)程名稱的括號(hào)內(nèi)包括實(shí)參列表。每個(gè)實(shí)參均與此列表中位于相同位置的那個(gè)形參相對(duì)應(yīng)。

  

與形參定義不同,實(shí)參沒(méi)有名稱。每個(gè)實(shí)參就是一個(gè)表達(dá)式,它包含零或多個(gè)變量、常數(shù)和文本。求值的表達(dá)式的數(shù)據(jù)類型通常應(yīng)與為相應(yīng)形參定義的數(shù)據(jù)類型相匹配,并且在任何情況下,該表達(dá)式值都必須可轉(zhuǎn)換為此形參類型。

看官如果硬著頭皮看完這段引文,發(fā)現(xiàn)里面有幾個(gè)關(guān)鍵詞:參數(shù)、變量、形參、實(shí)參。本來(lái)想弄清楚參數(shù)和變量,結(jié)果又冒出另外兩個(gè)東東,更混亂了。請(qǐng)稍安勿躁,本來(lái)這段引文就是有點(diǎn)多余,但是,之所以引用,就是讓列位開(kāi)闊一下眼界,在編程業(yè)界,類似的東西有很多名詞。下次聽(tīng)到有人說(shuō)這些,不用害怕啦,反正自己聽(tīng)過(guò)了。

在Python中,沒(méi)有這么復(fù)雜。

看完上面讓人暈頭轉(zhuǎn)向的引文之后,再看下面的代碼,就會(huì)豁然開(kāi)朗了。

>>> def add(x):     #x是參數(shù)
...     a = 10      #a是變量
...     return a+x
... 
>>> x = 3           #x是變量,只不過(guò)在函數(shù)之外
>>> add(x)          #這里的x是參數(shù),但是它由前面的變量x傳遞對(duì)象3
13
>>> add(3)          #把上面的過(guò)程合并了
13

至此,看官是否清楚了一點(diǎn)點(diǎn)。當(dāng)然,我所表述不正確之處或者理解錯(cuò)誤之處,也請(qǐng)看官不吝賜教,小可作揖感謝。

全局變量和局部變量

下面是一段代碼,注意這段代碼中有一個(gè)函數(shù)funcx(),這個(gè)函數(shù)里面有一個(gè)變量x=9,在函數(shù)的前面也有一個(gè)變量x=2

x = 2

def funcx():
    x = 9
    print "this x is in the funcx:-->",x

funcx()
print "--------------------------"
print "this x is out of funcx:-->",x

那么,這段代碼輸出的結(jié)果是什么呢?看:

this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 2

從輸出看出,運(yùn)行funcx(),輸出了funcx()里面的變量x=9;然后執(zhí)行代碼中的最后一行,print "this x is out of funcx:-->",x

特別要關(guān)注的是,前一個(gè)x輸出的是函數(shù)內(nèi)部的變量x;后一個(gè)x輸出的是函數(shù)外面的變量x。兩個(gè)變量彼此沒(méi)有互相影響,雖然都是x。從這里看出,兩個(gè)X各自在各自的領(lǐng)域內(nèi)起到作用,那么這樣的變量稱之為局部變量

有局部,就有對(duì)應(yīng)的全部,在漢語(yǔ)中,全部變量,似乎有歧義,幸虧漢語(yǔ)豐富,于是又取了一個(gè)名詞:全局變量

x = 2
def funcx():
    global x
    x = 9
    print "this x is in the funcx:-->",x

funcx()
    print "--------------------------"
    print "this x is out of funcx:-->",x

以上兩段代碼的不同之處在于,后者在函數(shù)內(nèi)多了一個(gè)global x,這句話的意思是在聲明x是全局變量,也就是說(shuō)這個(gè)x跟函數(shù)外面的那個(gè)x同一個(gè),接下來(lái)通過(guò)x=9將x的引用對(duì)象變成了9。所以,就出現(xiàn)了下面的結(jié)果。

this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 9

好似全局變量能力很強(qiáng)悍,能夠統(tǒng)帥函數(shù)內(nèi)外。但是,要注意,這個(gè)東西要慎重使用,因?yàn)橥菀讕?lái)變量的換亂。內(nèi)外有別,在程序中一定要注意的。

不確定參數(shù)的數(shù)量

在設(shè)計(jì)函數(shù)的時(shí)候,有時(shí)候我們能夠確認(rèn)參數(shù)的個(gè)數(shù),比如一個(gè)用來(lái)計(jì)算圓面積的函數(shù),它所需要的參數(shù)就是半徑(πr^2),這個(gè)函數(shù)的參數(shù)是確定的。

然而,這個(gè)世界不總是這么簡(jiǎn)單的,也不總是這么確定的,反而不確定性是這個(gè)世界常常存在的。如果看官了解量子力學(xué)這個(gè)好多人聽(tīng)都沒(méi)有聽(tīng)過(guò)的東西,那就理解真正的不確定性了。當(dāng)然,不用研究量子力學(xué)也一樣能夠體會(huì)到,世界充滿里了不確定性。不是嗎?塞翁失馬焉知非福,這不就是不確定性嗎?

既然有很多不確定性,那么函數(shù)的參數(shù)的個(gè)數(shù),也當(dāng)然有不確定性,函數(shù)怎么解決這個(gè)問(wèn)題呢?python用這樣的方式解決參數(shù)個(gè)數(shù)的不確定性:

def add(x,*arg):
    print x         #輸出參數(shù)x的值
    result = x
    print arg       #輸出通過(guò)*arg方式得到的值
    for i in arg:
        result +=i
    return result

print add(1,2,3,4,5,6,7,8,9)    #賦給函數(shù)的參數(shù)個(gè)數(shù)不僅僅是2個(gè)

運(yùn)行此代碼后,得到如下結(jié)果:

1                       #這是函數(shù)體內(nèi)的第一個(gè)print,參數(shù)x得到的值是1
(2, 3, 4, 5, 6, 7, 8, 9) #這是函數(shù)內(nèi)的第二個(gè)print,參數(shù)arg得到的是一個(gè)元組
45                      #最后的計(jì)算結(jié)果

上面這個(gè)輸出的結(jié)果表現(xiàn)相當(dāng)不界面友好,如果不對(duì)照著原函數(shù),根本不知道每行打印的是什么東西。自責(zé)呀。

從上面例子可以看出,如果輸入的參數(shù)過(guò)多,其它參數(shù)全部通過(guò)*arg,以元組的形式傳給了參數(shù)(變量)arg。請(qǐng)看官注意,我這里用了一個(gè)模糊的詞語(yǔ):參數(shù)(變量),這樣的表述意思是,在傳入數(shù)據(jù)的前,arg在函數(shù)頭部是參數(shù),當(dāng)在函數(shù)語(yǔ)句中,又用到了它,就是變量。也就是在很多時(shí)候,函數(shù)中的參數(shù)和變量是不用那么太區(qū)分較真的,只要知道對(duì)象是通過(guò)什么渠道、那個(gè)東西傳到了什么目標(biāo)即可。

為了能夠更明顯地看出args(名稱可以不一樣,但是符號(hào)必須要有),可以用下面的一個(gè)簡(jiǎn)單函數(shù)來(lái)演示:

>>> def foo(*args):
...     print args      #打印通過(guò)這個(gè)參數(shù)得到的對(duì)象
... 
>>> #下面演示分別傳入不同的值,通過(guò)參數(shù)*args得到的結(jié)果

>>> foo(1,2,3)
(1, 2, 3)

>>> foo("qiwsir","qiwsir.github.io","python")
("qiwsir", "qiwsir.github.io", "python")

>>> foo("qiwsir",307,["qiwsir",2],{"name":"qiwsir","lang":"python"})
("qiwsir", 307, ["qiwsir", 2], {"lang": "python", "name": "qiwsir"})

不管是什么,都一股腦地塞進(jìn)了tuple中。

除了用*args這種形式的參數(shù)接收多個(gè)值之外,還可以用**kargs的形式接收數(shù)值,不過(guò)這次有點(diǎn)不一樣:

>>> def foo(**kargs):
...     print kargs
...
>>> foo(a=1,b=2,c=3)    #注意觀察這次賦值的方式和打印的結(jié)果
{"a": 1, "c": 3, "b": 2}

如果這次還用foo(1,2,3)的方式,會(huì)有什么結(jié)果呢?

>>> foo(1,2,3)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 0 arguments (3 given)

看官到這里可能想了,不是不確定性嗎?我也不知道參數(shù)到底會(huì)可能用什么樣的方式傳值呀,這好辦,把上面的都綜合起來(lái)。

>>> def foo(x,y,z,*args,**kargs):
...     print x   
...     print y
...     print z
...     print args
...     print kargs        
... 
>>> foo("qiwsir",2,"python")
qiwsir
2
python
()
{}
>>> foo(1,2,3,4,5)
1
2
3
(4, 5)
{}
>>> foo(1,2,3,4,5,name="qiwsir")
1
2
3
(4, 5)
{"name": "qiwsir"}

很good了,這樣就能夠足以應(yīng)付各種各樣的參數(shù)要求了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45295.html

相關(guān)文章

  • [基礎(chǔ)學(xué)python]重回函數(shù)

    摘要:函數(shù)的基本結(jié)構(gòu)中的函數(shù)基本結(jié)構(gòu)函數(shù)名參數(shù)列表語(yǔ)句幾點(diǎn)說(shuō)明函數(shù)名的命名規(guī)則要符合中的命名要求。在中,將這種依賴關(guān)系,稱之為多態(tài)。不要期待在原處修改的函數(shù)會(huì)返回結(jié)果比如一定要之用括號(hào)調(diào)用函數(shù)不要在導(dǎo)入和重載中使用擴(kuò)展名或路徑。 在本教程的開(kāi)始部分,就已經(jīng)引入了函數(shù)的概念:《永遠(yuǎn)強(qiáng)大的函數(shù)》,之所以那時(shí)候就提到函數(shù),是因?yàn)槲矣X(jué)得函數(shù)之重要,遠(yuǎn)遠(yuǎn)超過(guò)一般。這里,重回函數(shù),一是復(fù)習(xí),二是要在已經(jīng)...

    dmlllll 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]永遠(yuǎn)強(qiáng)大的函數(shù)

    摘要:萊布尼茲所指的函數(shù)現(xiàn)在被稱作可導(dǎo)函數(shù),數(shù)學(xué)家之外的普通人一般接觸到的函數(shù)即屬此類。中文的函數(shù)一詞由清朝數(shù)學(xué)家李善蘭譯出。前面提供的維基百科中的函數(shù)詞條,里面可以做一個(gè)概覽。 函數(shù),對(duì)于人類來(lái)講,能夠發(fā)展到這個(gè)數(shù)學(xué)思維層次,是一個(gè)飛躍。可以說(shuō),它的提出,直接加快了現(xiàn)代科技和社會(huì)的發(fā)展,不論是現(xiàn)代的任何科技門類,乃至于經(jīng)濟(jì)學(xué)、政治學(xué)、社會(huì)學(xué)等,都已經(jīng)普遍使用函數(shù)。 下面一段來(lái)自維基百科(...

    cangck_X 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)Python]賦值,簡(jiǎn)單也不簡(jiǎn)單

    摘要:以上原則,是基本原則。比如用指一組賬號(hào),就會(huì)被人誤解為是類型的數(shù)據(jù),事實(shí)上可能是也可能不是。不論如何,要記住一個(gè)標(biāo)準(zhǔn)明確賦值語(yǔ)句對(duì)于賦值語(yǔ)句,看官已經(jīng)不陌生了。其實(shí),賦值的樣式不少,核心就是將變量和某對(duì)象對(duì)應(yīng)起來(lái)。 變量命名 在《初識(shí)永遠(yuǎn)強(qiáng)大的函數(shù)》一文中,有一節(jié)專門討論取名字的學(xué)問(wèn),就是有關(guān)變量名稱的問(wèn)題,本溫故而知新的原則,這里要復(fù)習(xí): 名稱格式:(下劃線或者字母)+(任意數(shù)目...

    church 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]傳說(shuō)中的函數(shù)編寫條規(guī)

    摘要:關(guān)于函數(shù)的事情,總是說(shuō)不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。函數(shù)具有獨(dú)立性。也就是常說(shuō)的不要有太強(qiáng)的耦合性。要讓函數(shù)能夠獨(dú)立于外部的東西。函數(shù)實(shí)現(xiàn)的功能和目標(biāo)要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關(guān)于函數(shù)的事情,總是說(shuō)不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。特別聲明,這些事項(xiàng)不是我總結(jié)的,我是從一本名字為《Learning Python》的書里面抄過(guò)來(lái)的,順便寫成...

    mushang 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]類的細(xì)節(jié)

    摘要:在對(duì)象接口后包裝其實(shí)現(xiàn)的細(xì)節(jié),從而隔離了代碼的修改對(duì)用戶產(chǎn)生的影響。類提供了一個(gè)新的本地作用域,最小化了變量名沖突。類其實(shí)并沒(méi)有結(jié)束,不過(guò)本講座到此對(duì)類暫告一段。 前面對(duì)類的有關(guān)內(nèi)容已經(jīng)描述不少了,其實(shí)話題遠(yuǎn)遠(yuǎn)沒(méi)有結(jié)束,不過(guò)對(duì)于初學(xué)者,掌握這些已經(jīng)算是入門,在以后的實(shí)踐中,還需要進(jìn)行體會(huì)和感悟。 這幾天和幾個(gè)朋友以各種途徑討論過(guò)OOP的相關(guān)問(wèn)題,他們是:令狐蟲、Frank、晉劍、小馮...

    Fundebug 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<