轉(zhuǎn)自
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),滎經(jīng)企業(yè)網(wǎng)站建設(shè),滎經(jīng)品牌網(wǎng)站建設(shè),網(wǎng)站定制,滎經(jīng)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,滎經(jīng)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Python? range() 函數(shù)返回的是一個(gè)可迭代對象(類型是對象),而不是列表類型, 所以打印的時(shí)候不會(huì)打印列表。
函數(shù)語法:
range(stop)range(start,stop,step)//默認(rèn)start為0,step為1
Python? list() 函數(shù)是對象迭代器,可以把range()返回的可迭代對象轉(zhuǎn)為一個(gè)列表,返回的變量類型為列表。
list() 方法用于將元組轉(zhuǎn)換為列表。
注: 元組與列表是非常類似的,區(qū)別在于元組的元素值不能修改,元組是放在括號中( ),列表是放于方括號中[ ]。
元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號
tup1=(50,)
list、元組與字符串的索引一樣,列表索引從0開始。列表可以進(jìn)行截取、組合等。
python面向?qū)ο蟮娜筇卣鞯挠梅ê秃瘮?shù)的用法一樣。面向?qū)ο蟮娜筇匦允侵阜庋b、繼承和多態(tài)。面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用類和對象來實(shí)現(xiàn),所以,面向?qū)ο缶幊唐鋵?shí)就是對類和對象的使用。類就是一個(gè)模板,模板里可以包含多個(gè)函數(shù),函數(shù)里實(shí)現(xiàn)一些功能對象則是根據(jù)模板創(chuàng)建的實(shí)例,通過實(shí)例對象可以執(zhí)行類中的函數(shù)。
9.3.4. 方法對象
通常,方法通過右綁定方式調(diào)用:
x.f()
在 MyClass 示例中,這會(huì)返回字符串 'hello world'。然而,也不是一定要直接調(diào)用方法。 x.f 是一個(gè)方法對象,它可以存儲(chǔ)起來以后調(diào)用。例如:
xf = x.f
while True:
print(xf())
會(huì)不斷的打印 hello world。
調(diào)用方法時(shí)發(fā)生了什么?你可能注意到調(diào)用 x.f() 時(shí)沒有引用前面標(biāo)出的變量,盡管在 f() 的函數(shù)定義中指明了一個(gè)參數(shù)。這個(gè)參數(shù)怎么了?事實(shí)上如果函數(shù)調(diào)用中缺少參數(shù),Python 會(huì)拋出異常--甚至這個(gè)參數(shù)實(shí)際上沒什么用……
實(shí)際上,你可能已經(jīng)猜到了答案:方法的特別之處在于實(shí)例對象作為函數(shù)的第一個(gè)參數(shù)傳給了函數(shù)。在我們的例子中,調(diào)用 x.f() 相當(dāng)于 MyClass.f(x) 。通常,以 n 個(gè)參數(shù)的列表去調(diào)用一個(gè)方法就相當(dāng)于將方法的對象插入到參數(shù)列表的最前面后,以這個(gè)列表去調(diào)用相應(yīng)的函數(shù)。
如果你還是不理解方法的工作原理,了解一下它的實(shí)現(xiàn)也許有幫助。引用非數(shù)據(jù)屬性的實(shí)例屬性時(shí),會(huì)搜索它的類。如果這個(gè)命名確認(rèn)為一個(gè)有效的函數(shù)對象類屬性,就會(huì)將實(shí)例對象和函數(shù)對象封裝進(jìn)一個(gè)抽象對象:這就是方法對象。以一個(gè)參數(shù)列表調(diào)用方法對象時(shí),它被重新拆封,用實(shí)例對象和原始的參數(shù)列表構(gòu)造一個(gè)新的參數(shù)列表,然后函數(shù)對象調(diào)用這個(gè)新的參數(shù)列表。
python函數(shù)傳對象對性能有影響。在Python中,一切皆對象,Python參數(shù)傳遞采用的都是“傳對象引用”的方式。實(shí)際上,這種方式相當(dāng)于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個(gè)可變對象(比如字典或者列表)的引用,就能修改對象的原始值,相當(dāng)于通過“傳引用”來傳遞對象。如果函數(shù)收到的是一個(gè)不可變對象(比如數(shù)字、字符或者元組)的引用,就不能直接修改原始對象,相當(dāng)于通過“傳值’來傳遞對象,此時(shí)如果想改變這些變量的值,可以將這些變量申明為全局變量。
python中,所有的元素都是對象,其中第一類對象的通用特性:可作為值傳遞,賦值給另一個(gè)對象;可以作為元素添加到集合對象中;可以作為參數(shù)傳遞給其他函數(shù);可以作為函數(shù)的返回值
9.3.3. 實(shí)例對象
現(xiàn)在我們可以用實(shí)例對象作什么?實(shí)例對象唯一可用的操作就是屬性引用。有兩種有效的屬性名。
數(shù)據(jù)屬性 相當(dāng)于 Smalltalk 中的“實(shí)例變量”或 C++ 中的“數(shù)據(jù)成員”。和局部變量一樣,數(shù)據(jù)屬性不需要聲明,第一次使用時(shí)它們就會(huì)生成。例如,如果 x 是前面創(chuàng)建的 MyClass 實(shí)例,下面這段代碼會(huì)打印出 16 而在堆棧中留下多余的東西:
x.counter = 1
while x.counter 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
另一種為實(shí)例對象所接受的引用屬性是 方法。方法是“屬于”一個(gè)對象的函數(shù)。(在 Python 中,方法不止是類實(shí)例所獨(dú)有:其它類型的對象也可有方法。例如,鏈表對象有 append,insert,remove,sort 等等方法。然而,在后面的介紹中,除非特別說明,我們提到的方法特指類方法)
實(shí)例對象的有效名稱依賴于它的類。按照定義,類中所有(用戶定義)的函數(shù)對象對應(yīng)它的實(shí)例中的方法。所以在我們的例子中,x.f 是一個(gè)有效的方法引用,因?yàn)?MyClass.f 是一個(gè)函數(shù)。但 x.i 不是,因?yàn)?MyClass.i 不是函數(shù)。不過 x.f 和 MyClass.f 不同,它是一個(gè) 方法對象 ,不是一個(gè)函數(shù)對象。