成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

有關Python語法介紹說明

開發 后端
剛學Python語法的時候,所以是學的最新版的3.1,發現有很多規則都和2.x的不一樣,最基本的print都改了,恐怕想把以前的工程移植到。

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

接下來說下我遇到的問題,本來想學下lambda用法(現在還沒搞明白),就在網上找了個例子,如下(print語法我已經改了。

  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()) 

重點:Python語法指定含有一個參數的函數,這個函數被用來提取各個元素之間比較用的關鍵字(現在看來,這個用法比用lambda更明了些)根據這個提示,終于明白了,我要比較List中每個元素大小,每個元素都是People類,用age成員作為比較關鍵字,所以很簡單聯想到要給key賦一個方法,這個方法返回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》大致看了一遍,算是基本可能入門了。動手寫了些很簡單的小例子,對Python語法有個基本的了解。但是還有一些細節不是很清楚,有些地方可能知其然不知所以然,還有待更深入的學習。今天再翻《Dive into python》,發現寫出書上那么簡潔但是功能強大的程序還是需要一段時間的。

關于函數定義:函數定義不需要定義返回的數據類型,不需要指定參數的類型。在Python 中, 永遠也不需要明確指定任何東西的數據類型。舉個例子:char *ret = (x!=0) ? "True" : "False"這行代碼對應的python形式就是ret = (x and "True") or "False"(很簡單吧,事實上括號可以去掉)。

運行時,python虛擬機會對賦值符右邊的布爾表達式(注意這里并非三元表達式)求值,返回值是***一個被分析到的值。為什么是“***一個被分析到的”而不是表達式中“***一個”呢?因為布爾表達式有一個短路效應,比如a or b,如果a為真那么就不會分析b了。#t#

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

根據前面的例子,我們很自然想到在python里應該這樣寫,ret = x and "" or "VAL"。錯了!不管x的布爾求值是真還是假,ret得到的總是"VAL"。奇怪么?不奇怪,因為在python中對空字符串的布爾求值為false,這樣x and ""永遠都是false,所以ret得到的自然總是"VAL"了。

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

責任編輯:chenqingxiang 來源: 清華大學出版社
相關推薦

2010-02-24 17:22:59

Python項目

2010-02-01 17:11:45

Python 解釋器

2010-02-23 14:41:28

Python模塊

2010-02-22 16:16:14

Python語法

2010-02-03 17:37:30

Python語法

2010-02-22 14:42:19

Python 控制語句

2010-02-01 16:32:49

Python腳本

2010-02-26 11:20:53

Python應用

2009-12-25 17:11:40

ADO方法

2010-03-03 17:50:45

Android圖形界面

2010-03-10 11:26:29

交換機配置

2010-02-02 13:05:58

Python代碼

2010-02-03 13:27:17

Python 特性

2010-03-01 10:39:18

Python源代碼

2010-03-10 16:32:17

光端交換機

2010-02-22 13:20:58

Python中文問題

2010-02-02 13:28:46

Python變量

2010-02-01 18:06:48

Python Edit

2010-02-03 16:03:44

Python系統文件

2010-01-06 16:53:57

JS兩種語法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久一区二区三区 | 一区二区三区四区在线免费观看 | 人成在线 | 中文字幕综合 | 亚洲精品天堂 | 中文字幕免费视频 | 亚洲精品视频在线看 | 中文字幕在线观看一区 | 国产精品久久二区 | 国产精品久久国产精品久久 | 国产精品美女久久久久aⅴ国产馆 | 一级片在线观看 | 国产视频h | 国产一区二区三区在线看 | 亚洲精品www. | av在线播放不卡 | 九九在线精品视频 | 日韩免费一二三区 | 成人在线视频一区 | 午夜精品一区 | 亚洲天堂av网 | 亚洲成人一区二区 | 天天操天天干天天透 | 国产1区在线 | 999久久久 | 精品国产一区二区三区免费 | 欧美激情在线精品一区二区三区 | 亚洲国产黄| 国产日韩欧美一区 | 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区一在线观看 | 欧美不卡 | 亚洲综合久久网 | 亚洲免费视频在线观看 | 欧美一级二级在线观看 | 欧美精品一区二区三区在线 | 超碰超碰 | h片免费在线观看 | 久久人人网| 久久不卡| 国产精品成人一区二区三区 |