-
任務
請給Person類的__init__方法中添加name和score參數,并把score綁定到__score屬性上,看看外部是否能訪問到。
?
?不會了怎么辦
以雙下劃線開頭的屬性無法被外部訪問,"__xxx__"除外。
參考代碼:
class?Person(object): ????def?__init__(self,?name,?score): ????????self.name?=?name ????????self.__score?=?score p?=?Person('Bob',?59) print?p.name print?p.__score
查看全部 -
任務
請定義Person類的__init__方法,除了接受?name、gender?和?birth?外,還可接受任意關鍵字參數,并把他們都作為屬性賦值給實例。
?
?不會了怎么辦
要定義關鍵字參數,使用?**kw;
除了可以直接使用self.name = 'xxx'設置一個屬性外,還可以通過?setattr(self, 'name', 'xxx')?設置屬性。
參考代碼:
class?Person(object): ????def?__init__(self,?name,?gender,?birth,?**kw): ????????self.name?=?name ????????self.gender?=?gender ????????self.birth?=?birth ????????for?k,?v?in?kw.iteritems(): ????????????setattr(self,?k,?v) xiaoming?=?Person('Xiao?Ming',?'Male',?'1990-1-1',?job='Student') print?xiaoming.name print?xiaoming.job
查看全部 -
順序:,x1 < x2(第一個元素小于第二個) 返回-1;
倒序:,x1 < x2(第一個元素小于第二個) 返回1;
查看全部 -
int(數字) ?會計算出取整數后的值,默認十進制,向下取整
判斷一個數的平方根是否是整數:math.sqrt(x)==int(math.sqrt(x))查看全部 -
map():一個參數,是對所有元素調用f,生成新list
reduce():兩個參數
reduce(function,?iterable[,?initializer])
,顯示第一二調用f,再結果和第三調用f,以此類推
filter():一個參數,過濾不符合條件的元素,符合條件的組成新的list
查看全部 -
p1.get_grade?返回的是一個函數對象,但這個函數是一個綁定到實例的函數,p1.get_grade()?才是方法調用。
查看全部 -
sum(iterable[,?start])
iterable -- 可迭代對象,如:列表、元組、集合。
反例:
print? ?map(sum,[1,2,3])??
運行后報錯:TypeError:?'int'?object?is?not?iterable
查看全部 -
import functools
def cmp_ignore_case(s1, s2):
? ? str1=s1.upper()
? ? str2=s2.upper()
? ??
? ? if str1 < str2:
? ? ? ? return -1
? ? if str1 > str2:
? ? ? ? return 1
? ? return 0
sorted_ignore_case = functools.partial(sorted,cmp=cmp_ignore_case)
print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])
查看全部 -
任務
請定義Person類的__init__方法,除了接受?name、gender?和?birth?外,還可接受任意關鍵字參數,并把他們都作為屬性賦值給實例。
?
?不會了怎么辦
要定義關鍵字參數,使用?**kw;
除了可以直接使用self.name = 'xxx'設置一個屬性外,還可以通過?setattr(self, 'name', 'xxx')?設置屬性。
參考代碼:
class?Person(object): ????def?__init__(self,?name,?gender,?birth,?**kw): ????????self.name?=?name ????????self.gender?=?gender ????????self.birth?=?birth ????????for?k,?v?in?kw.iteritems(): ????????????setattr(self,?k,?v) xiaoming?=?Person('Xiao?Ming',?'Male',?'1990-1-1',?job='Student') print?xiaoming.name print?xiaoming.job
查看全部 -
任務
請創建包含兩個?Person?類的實例的?list,并給兩個實例的?name?賦值,然后按照?name?進行排序。
?不會了怎么辦
sorted()?是高階函數,接受一個比較函數。
參考代碼:
class?Person(object): ????pass p1?=?Person() p1.name?=?'Bart' p2?=?Person() p2.name?=?'Adam' p3?=?Person() p3.name?=?'Lisa' L1?=?[p1,?p2,?p3] L2?=?sorted(L1,?lambda?p1,?p2:?cmp(p1.name,?p2.name)) print?L2[0].name print?L2[1].name print?L2[2].name
查看全部 -
任務
請練習定義Person類,并創建出兩個實例,打印實例,再比較兩個實例是否相等。
?
?不會了怎么辦
要打印實例,直接使用print語句;
要比較兩個實例是否相等,用==操作符。
參考代碼:
class?Person(object): ????pass xiaoming?=?Person() xiaohong?=?Person() print?xiaoming print?xiaohong print?xiaoming?==?xiaohong
查看全部 -
任務
在Python 3.x中,字符串統一為unicode,不需要加前綴?u,而以字節存儲的str則必須加前綴?b。請利用__future__的unicode_literals在Python 2.7中編寫unicode字符串。
?
?不會了怎么辦
使用from __future__ import unicode_literals將把Python 3.x的unicode規則帶入Python 2.7中。
參考代碼:
from?__future__?import?unicode_literals s?=?'am?I?an?unicode?' print?isinstance(s,?unicode)
查看全部 -
任務
利用import ... as ...,還可以動態導入不同名稱的模塊。
Python 2.6/2.7提供了json?模塊,但Python 2.5以及更早版本沒有json模塊,不過可以安裝一個simplejson模塊,這兩個模塊提供的函數簽名和功能都一模一樣。
試寫出導入json?模塊的代碼,能在Python 2.5/2.6/2.7都正常運行。
?不會了怎么辦
先嘗試導入json,如果失敗,再嘗試導入simplejson as json
參考代碼:
try: ????import?json except?ImportError: ????import?simplejson?as?json print?json.dumps({'python':2.7})
查看全部 -
Python的os.path模塊提供了?isdir()?和?isfile()函數,請導入該模塊,并調用函數判斷指定的目錄和文件是否存在。
注意:?
1.?由于運行環境是平臺服務器,所以測試的也是服務器中的文件夾和文件,該服務器上有/data/webroot/resource/python文件夾和/data/webroot/resource/python/test.txt文件,大家可以測試下。
2. 當然,大家可以在本機上測試是否存在相應的文件夾和文件。
import?os print?os.path.isdir(r'C:\Windows') print?os.path.isfile(r'C:\Windows\notepad.exe')
?不會了怎么辦
注意到os.path模塊可以以若干種方式導入:
import?os import?os.path from?os?import?path from?os.path?import?isdir,?isfile
每一種方式調用?isdir?和?isfile?都有所不同。
參考代碼:
import?os print?os.path.isdir(r'/data/webroot/resource/python') print?os.path.isfile(r'/data/webroot/resource/python/test.txt')
查看全部 -
任務
在第7節中,我們在sorted這個高階函數中傳入自定義排序函數就可以實現忽略大小寫排序。請用functools.partial把這個復雜調用變成一個簡單的函數:
sorted_ignore_case(iterable)
?不會了怎么辦
要固定sorted()的cmp參數,需要傳入一個排序函數作為cmp的默認值。
參考代碼:
import?functools sorted_ignore_case?=?functools.partial(sorted,?cmp=lambda?s1,?s2:?cmp(s1.upper(),?s2.upper())) print?sorted_ignore_case(['bob',?'about',?'Zoo',?'Credit'])
查看全部
舉報