Python 提供了 time 和 calendar 模块可以用于格式化日期和时间。
import time; #一般要使用time模块的函数时需要引入time模块注:本文部分示例是在ipython命令行中操作进行
Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:
1.1 获取当前时间戳
1.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 方法来格式化日期,调用格式如下:
格式参数如下:
%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模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:
1.6 拓展模块
使用datetime模块来获取当前的日期和时间
In [50]: import datetimeIn [51]: ti = datetime.datetime.now()In [52]: tiOut[52]: datetime.datetime(2017, 8, 31, 14, 29, 43, 544916)In [53]: ti.isti.isocalendar ti.isoformat ti.isoweekday In [53]: ti.isoformat()Out[53]: '2017-08-31T14:29:43.544916'In [54]: ti.yearOut[54]: 2017In [55]: ti.monthOut[55]: 8In [56]: ti.dayOut[56]: 31In [57]: ti.hourOut[57]: 14In [58]: ti.minuteOut[58]: 29In [59]: ti.secondOut[59]: 43python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
3. 不定长参数传递我们可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。基本语法如下:
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)12345python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression示例:
In [60]: sum = lambda num1,num2:num1+num2In [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]: resultOut[64]: 120欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |