python datetime和str轉換 計算時間差;Python 函式接收元組和字典引數
server上跑housecleaning的指令碼,需要比較時間內容
例如t1 和t2都是datetime.datetime型別,則可以通過下面的sample code來計算二者的時間差
def __time_diff(t1,t2):
seconds = (t1-t2).seconds
return seconds
但是如果t1或者t2是一個字串的時間表示呢?
例如:
t1 = 2014-09-02 10:43:55
則需要把這個str轉換為datetime型別:
其中,time.strptime的第一個引數是表示時間的一個字串,第二個引數是轉換模式def __str2time(s): t = time.strptime(s,'%Y-%m-%d %H:%M:%S') latest_active_time = datetime(*t[:6]) return latest_active_time
t[:6]是一個包含6個元素的元組
至於那個*號是幹什麼的,我也不知道,只能去學習一下了。。參考2的內容
對於def func(*args):,*args表示把傳進來的位置引數儲存在tuple(元組)args裡面。例如,呼叫func(1, 2, 3) ,args就表示(1, 2, 3)這個元組 。
例如:
>>> def func(*x):
if len(x)==0:
print 'None'
else:
print x
>>> func(1)
(1,) #存放在元組中
>>> func()
None
>>> func(1,2,3)
(1, 2, 3)
那如果想直接傳一個元組給這個函式呢?例如t=(1,2,3),那麼在元組名前面加*,就可以傳給func方法了。
而對於def func(**args):,**args表示把引數作為字典的健-值對儲存在dict(字典)args裡面。例如,呼叫func(a='I', b='am', c='wcdj') ,args就表示{'a':'I',
'b':'am', 'c':'wcdj'}這個字典 。
同理,如果想傳一個字典給func函式,則需要使用**,即d={'a':'fuck', 'b'='shit'},則使用func(**d)即可。
reference:
1. http://www.cnblogs.com/finallyliuyu/archive/2012/02/17/2356160.html
2. http://blog.csdn.net/delphiwcdj/article/details/5746560
3. http://www.cnblogs.com/smiler/archive/2010/08/02/1790132.html