日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
有關(guān)Python語法介紹說明

本文主要講述Python語法的相關(guān)文章,怎樣編寫Python語法的一些做法,這些內(nèi)容都是一些門戶網(wǎng)站和技術(shù)論壇找到的,中間可能有不少錯(cuò)誤是我沒有挑出的,歡迎大家指正。

接下來說下我遇到的問題,本來想學(xué)下lambda用法(現(xiàn)在還沒搞明白),就在網(wǎng)上找了個(gè)例子,如下(print語法我已經(jīng)改了。

 
 
 
  1. class People:   
  2.     age=0  
  3.     gender='male'  
  4.     def __init__(self, age, gender):     
  5.         self.age = age     
  6.         self.gender = gender   
  7.     def toString(self):   
  8.         return 'Age:'+str(self.age)+'\tGender:'+self.gender   
  9.        
  10. List=[People(21,'male'),People(20,'famale'),People(34,'male'),People(19,'famale')]   
  11. print('Befor sort:')   
  12. for p in List:   
  13.     print(p.toString())   
  14. List.sort(lambda p1,p2:cmp(p1.age,p2.age))   
  15. print('\nAfter ascending sort:')   
  16. for p in List:   
  17.     print(p.toString())   
  18. List.sort(lambda p1,p2:-cmp(p1.age,p2.age))   
  19. print('\nAfter descending sort:')   
  20. for p in List:   
  21.     print(p.toString())

重點(diǎn):Python語法指定含有一個(gè)參數(shù)的函數(shù),這個(gè)函數(shù)被用來提取各個(gè)元素之間比較用的關(guān)鍵字(現(xiàn)在看來,這個(gè)用法比用lambda更明了些)根據(jù)這個(gè)提示,終于明白了,我要比較List中每個(gè)元素大小,每個(gè)元素都是People類,用age成員作為比較關(guān)鍵字,所以很簡單聯(lián)想到要給key賦一個(gè)方法,這個(gè)方法返回People中的age,所以修改后代碼如下:

 
 
 
  1. class People:   
  2.     age=0  
  3.     gender='male'  
  4.     def __init__(self, age, gender):     
  5.         self.age = age     
  6.         self.gender = gender   
  7.     def toString(self):   
  8.         return 'Age:'+str(self.age)+'\tGender:'+self.gender   
  9.        
  10. List=[People(21,'male'),People(20,'famale'),People(34,'male'),People(19,'famale')]   
  11. print('Befor sort:')   
  12. for p in List:   
  13.     print(p.toString())   
  14. List.sort(lambda p1,p2:cmp(p1.age,p2.age))   
  15. print('\nAfter ascending sort:')   
  16. for p in List:   
  17.     print(p.toString())   
  18. List.sort(lambda p1,p2:-cmp(p1.age,p2.age))   
  19. print('\nAfter descending sort:')   
  20. for p in List:   
  21.     print(p.toString())

前兩天把《A Byte of Python》大致看了一遍,算是基本可能入門了。動(dòng)手寫了些很簡單的小例子,對(duì)Python語法有個(gè)基本的了解。但是還有一些細(xì)節(jié)不是很清楚,有些地方可能知其然不知所以然,還有待更深入的學(xué)習(xí)。今天再翻《Dive into python》,發(fā)現(xiàn)寫出書上那么簡潔但是功能強(qiáng)大的程序還是需要一段時(shí)間的。

關(guān)于函數(shù)定義:函數(shù)定義不需要定義返回的數(shù)據(jù)類型,不需要指定參數(shù)的類型。在Python 中, 永遠(yuǎn)也不需要明確指定任何東西的數(shù)據(jù)類型。舉個(gè)例子:char *ret = (x!=0) ? "True" : "False"這行代碼對(duì)應(yīng)的python形式就是ret = (x and "True") or "False"(很簡單吧,事實(shí)上括號(hào)可以去掉)。

運(yùn)行時(shí),python虛擬機(jī)會(huì)對(duì)賦值符右邊的布爾表達(dá)式(注意這里并非三元表達(dá)式)求值,返回值是***一個(gè)被分析到的值。為什么是“***一個(gè)被分析到的”而不是表達(dá)式中“***一個(gè)”呢?因?yàn)椴紶柋磉_(dá)式有一個(gè)短路效應(yīng),比如a or b,如果a為真那么就不會(huì)分析b了。#t#

嗯,估計(jì)現(xiàn)在大家差不多明白了這行python代碼的原理了。如果x為真,由于字符串“True”也為真,于是返回"True",反之,x為假,那么就沒必要看字符串"True"了(短路效應(yīng)),直接返回"False"。不難看出,三元運(yùn)算在Python語法中事實(shí)上可以通過借用布爾求值表達(dá)。然后,有時(shí)會(huì)有點(diǎn)小問題。舉個(gè)例子,char *ret = x ? "" or "VAL"。

根據(jù)前面的例子,我們很自然想到在python里應(yīng)該這樣寫,ret = x and "" or "VAL"。錯(cuò)了!不管x的布爾求值是真還是假,ret得到的總是"VAL"。奇怪么?不奇怪,因?yàn)樵趐ython中對(duì)空字符串的布爾求值為false,這樣x and ""永遠(yuǎn)都是false,所以ret得到的自然總是"VAL"了。

解決這個(gè)問題有兩種辦法,***種,也是我喜歡的一種,就是寫成ret = not x and "VAL" or ""。第二種,麻煩一點(diǎn)ret=x and [""] or ["VAL"],然后每次取ret[0]作為返回值,這是因?yàn)閇""]在布爾求值時(shí)值為true。


標(biāo)題名稱:有關(guān)Python語法介紹說明
標(biāo)題鏈接:http://www.dlmjj.cn/article/dheigjs.html