-
sorted高階函數(shù)中傳入自定義排序函數(shù), 實(shí)現(xiàn)忽略大小寫(xiě)排序。請(qǐng)用functools.partial把這個(gè)復(fù)雜調(diào)用變成一個(gè)簡(jiǎn)單的函數(shù)
查看全部 -
帶參數(shù)的@decorator,@functools.wraps應(yīng)該放置位置
查看全部 -
import time
def performance(unit):
? ? def performance_decorator(f):
? ? ? ? def fn(*args, **kw):
? ? ? ? ? ? t1 = time.time()
? ? ? ? ? ? r = f(*args, **kw)
? ? ? ? ? ? t2 = time.time()
? ? ? ? ? ? if unit == "ms":
? ? ? ? ? ? ? ? print('call %s() in %fs ms' % (f.__name__, (t2 - t1)*1000))
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('call %s() in %fs s' % (f.__name__, (t2 - t1)))
? ? ? ? ? ? return r
? ? ? ? return fn
? ? return performance_decorator
@performance('ms')
def factorial(n):
? ? return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
查看全部 -
import time
def performance(f):
? ? def fn(*args, **kw):?
? ? ? ? t1 = time.time()??
? ? ? ? r = f(*args, **kw)?
? ? ? ? t2 = time.time()??
? ? ? ? print 'call %s() in %fs' % (f.__name__, (t2 - t1))? ?
? ? ? ? return r? ? ? ? ? ??
? ? return fn? ? ? ? ? ? ??
@performance
def factorial(n):
? ? return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
查看全部 -
str.upper()把字符串 str 任意字符變成大寫(xiě) str.lower()把字符串str任意字符變成小寫(xiě) str.capitalize()返回一個(gè)首字符大寫(xiě)其他字符小寫(xiě)的str的副本 map(f,L)把L相應(yīng)數(shù)據(jù)均通過(guò)f()函數(shù)轉(zhuǎn)換為一個(gè)新的list map(func_name,list_obj)高階函數(shù):返回list_obj中每個(gè)元素分別經(jīng)過(guò)func_name作用過(guò)的新的list,例子如下: def formate_name(s): return str.capitalize(s) print map(formate_name,['adam','LINDA','jany']) 輸出結(jié)果為:['Adam','Linda','Jany']
map()函數(shù)不改變?cè)械?list,而是返回一個(gè)新的 list。
s.capitalize()第一個(gè)大寫(xiě),其他全部小寫(xiě)
print(str.upper())??????????#?把所有字符中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母 print(str.lower())??????????#?把所有字符中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母 print(str.capitalize())?????#?把第一個(gè)字母轉(zhuǎn)化為大寫(xiě)字母,其余小寫(xiě) print(str.title())??????????#?把每個(gè)單詞的第一個(gè)字母轉(zhuǎn)化為大寫(xiě),其余小寫(xiě)
查看全部 -
def add(x, y, f) :
? ? ? ? return f(x) + f(y)
這里的f指函數(shù)的的定義,abs是絕對(duì)值函數(shù),開(kāi)根號(hào)函數(shù)math是包含各種函數(shù)或方法的模塊,若前面是import math, 引用模塊中的函數(shù)就要用格式math.sqrt()。
查看全部 -
(lambda 參數(shù):條件/運(yùn)算方式,列表、元組等)
查看全部 -
任務(wù)需要過(guò)濾一些不符合的字符,所以用filter,用于對(duì)列表每一元素做運(yùn)算時(shí),用map
查看全部 -
本身符合則返回-1
不符合自己所要求的的順序? 反而返回的是1邏輯相反
查看全部 -
在定義 Person 類(lèi)時(shí),可以為Person類(lèi)添加一個(gè)特殊的__init__()方法,當(dāng)創(chuàng)建實(shí)例時(shí),__init__()方法被自動(dòng)調(diào)用,我們就能在此為每個(gè)實(shí)例都統(tǒng)一加上以下屬性:
class?Person(object):????def?__init__(self,?name,?gender,?birth): ????????self.name?=?name ????????self.gender?=?gender ????????self.birth?=?birth
__init__()?方法的第一個(gè)參數(shù)必須是?self(也可以用別的名字,但建議使用習(xí)慣用法),后續(xù)參數(shù)則可以自由指定,和定義函數(shù)沒(méi)有任何區(qū)別。
items函數(shù),將一個(gè)字典以列表的形式返回,因?yàn)樽值涫菬o(wú)序的,所以返回的列表也是無(wú)序的。iteritems()返回一個(gè)迭代器。
setattr()?函數(shù)對(duì)應(yīng)函數(shù)?getattr(),用于設(shè)置屬性值,該屬性不一定是存在的。語(yǔ)法:
setattr(object,?name,?value)
查看全部 -
sorted()?是高階函數(shù),接受一個(gè)比較函數(shù)。
cmp(x,y) 函數(shù)用于比較2個(gè)對(duì)象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
查看全部 -
在Python中,類(lèi)通過(guò)?class?關(guān)鍵字定義。以?Person?為例,定義一個(gè)Person類(lèi)如下:
class?Person(object): ????pass
按照?Python?的編程習(xí)慣,類(lèi)名以大寫(xiě)字母開(kāi)頭,緊接著是(object),表示該類(lèi)是從哪個(gè)類(lèi)繼承下來(lái)的。類(lèi)的繼承將在后面的章節(jié)講解,現(xiàn)在我們只需要簡(jiǎn)單地從object類(lèi)繼承。
有了Person類(lèi)的定義,就可以創(chuàng)建出具體的xiaoming、xiaohong等實(shí)例。創(chuàng)建實(shí)例使用?類(lèi)名+(),類(lèi)似函數(shù)調(diào)用的形式創(chuàng)建:
xiaoming?=?Person() xiaohong?=?Person()
查看全部 -
如果導(dǎo)入的模塊不存在,Python解釋器會(huì)報(bào)?ImportError?錯(cuò)誤:
>>>?import?something Traceback?(most?recent?call?last): ??File?"<stdin>",?line?1,?in?<module> ImportError:?No?module?named?something
有的時(shí)候,兩個(gè)不同的模塊提供了相同的功能,比如?StringIO?和?cStringIO?都提供了StringIO這個(gè)功能。
這是因?yàn)镻ython是動(dòng)態(tài)語(yǔ)言,解釋執(zhí)行,因此Python代碼運(yùn)行速度慢。
如果要提高Python代碼的運(yùn)行速度,最簡(jiǎn)單的方法是把某些關(guān)鍵函數(shù)用?C?語(yǔ)言重寫(xiě),這樣就能大大提高執(zhí)行速度。
同樣的功能,StringIO?是純Python代碼編寫(xiě)的,而?cStringIO?部分函數(shù)是?C?寫(xiě)的,因此 cStringIO 運(yùn)行速度更快。
利用ImportError錯(cuò)誤,我們經(jīng)常在Python中動(dòng)態(tài)導(dǎo)入模塊:
try: ????from?cStringIO?import?StringIO except?ImportError: ????from?StringIO?import?StringIO
上述代碼先嘗試從cStringIO導(dǎo)入,如果失敗了(比如cStringIO沒(méi)有被安裝),再嘗試從StringIO導(dǎo)入。這樣,如果cStringIO模塊存在,則我們將獲得更快的運(yùn)行速度,如果cStringIO不存在,則頂多代碼運(yùn)行速度會(huì)變慢,但不會(huì)影響代碼的正常執(zhí)行。
try?的作用是捕獲錯(cuò)誤,并在捕獲到指定錯(cuò)誤時(shí)執(zhí)行?except?語(yǔ)句。
查看全部 -
分別賦值 f1,f2,f3=count()
查看全部
舉報(bào)