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