Python 提供了 time 和 calendar 模块可以用于格式化日期和时间。
import time; #一般要使用time模块的函数时需要引入time模块注:本文部分示例是在ipython命令行中操作进行 Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的: 1.1 获取当前时间戳
In [65]: time = time.time() In [66]: time Out[66]: 1504162320.6293961.2 获取当前时间
从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数。
In [40]: time.localtime(time.time()) Out[40]: time.struct_time(tm_year=2017, tm_mon=8, tm_mday=31, tm_hour=14, tm_min=9, tm_sec=26, tm_wday=3, tm_yday=243, tm_isdst=0)1.3 获取格式化的时间
你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():
In [41]: time.asctime(time.localtime(time.time())) Out[41]: 'Thu Aug 31 14:10:43 2017'1.4 格式化日期 我们可以使用 time 模块的 strftime 方法来格式化日期,调用格式如下:
time.strftime(format[, t])格式参数如下:
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身示例:
#将时间格式化为当前的'年-月-日 时:分:秒'格式 In [42]: time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) Out[42]: '2017-08-31 14:12:46' #将时间格式化为当前的'星期 月份 日期 时:分:秒 年'格式 In [43]: time.strftime("%a %b %d %H:%M:%S %Y",time.localtime()) Out[43]: 'Thu Aug 31 14:15:15 2017' # 将格式字符串转换为时间戳 timestr = 'Thu Aug 31 14:16:46 2017' In [46]: time.mktime(time.strptime(timestr,'%a %b %d %H:%M:%S %Y')) Out[46]: 1504160206.01.5 获取某月日历 Calendar模块内置函数: Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:
#打印某个月的日历 >>> import calendar >>> moth201708 = calendar.month(2017,8) >>> print moth201708 August 2017 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>>1.6 拓展模块
使用datetime模块来获取当前的日期和时间
In [50]: import datetime In [51]: ti = datetime.datetime.now() In [52]: ti Out[52]: datetime.datetime(2017, 8, 31, 14, 29, 43, 544916) In [53]: ti.is ti.isocalendar ti.isoformat ti.isoweekday In [53]: ti.isoformat() Out[53]: '2017-08-31T14:29:43.544916' In [54]: ti.year Out[54]: 2017 In [55]: ti.month Out[55]: 8 In [56]: ti.day Out[56]: 31 In [57]: ti.hour Out[57]: 14 In [58]: ti.minute Out[58]: 29 In [59]: ti.second Out[59]: 43python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
我们可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ): #加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。对于未命名的参数,可以通过for in结构来调用 ... return [expression]示例:
In [74]: def argtest(arg1,*argset): print arg1 for i in argset: print i ....: In [75]: argtest(1,2,3,4,5) 1 2 3 4 5python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression示例:
In [60]: sum = lambda num1,num2:num1+num2 In [61]: sum(1,3) Out[61]: 4return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
例如我们有一个计算多数字乘法的函数,我们想调用它进行计算然后将结果返回并且赋值给一个变量:
In [62]: def mult(lst): ....: result = 1 ....: for i in lst: ....: result *= i ....: return result ....: In [63]: result = mult([1,2,3,4,5]) In [64]: result Out[64]: 120