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类型:

def __str2time(s):
    t = time.strptime(s,'%Y-%m-%d %H:%M:%S')
    latest_active_time = datetime(*t[:6])
    return latest_active_time
其中,time.strptime的第一个参数是表示时间的一个字符串,第二个参数是转换模式

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

你可能感兴趣的:(python)