本章内容
- 整数(Int)
- 浮点数(Float)
- 空(None)
- 布尔值(Bool)
- 复数(Complex)
- 日期(Data)和时间(Time)
前言
这一篇专讲int、float、None、bool、complex、data。学习版本为3.x,但是还是会提到一些与2.x的区别,毕竟2.x 与 3.x 里有的功能有一些改变,所以都要学啊。所用工具:python shell 3.x 和 pycharm 3.x 。
一、整数
在2.7版本中,python是把 int 和 long 是分开的。int 类型的最大值是2147483647,超过了这个值就是 long 类型了(长整数不过是大一些的数)。而在3.x中,python把 int 和 long 整合到一起了,以int来表示。
1 >>> num = 123
2 >>> type(num)
3 <class 'int'>
二、浮点数
float有两种表现形式,一种是十进制数形式,它由数字和小数点组成,并且这里的小数点是不可或缺的;另一种是指数形式,用e(大写也可以)来表示之后可以有正负号,来表示指数的符号,e就是10的幂,指数必须是整数。
1 >>> a = 10E2
2 >>> a
3 1000.0
4 >>> b = 10e2
5 >>> b
6 1000.0
7 >>> c = 1.1
8 >>> type(c)
9 <class 'float'>
三、空
表示该值是一个空对象,空值是python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。None有自己的数据类型NoneType,它与其他的数据类型比较永远返回False,你可以将None复制给任何变量,但是你不能创建其他NoneType对象。
1 >>> type(None)
2 <class 'NoneType'>
3 >>> None == 0
4 False
5 >>> None == True
6 False
7 >>> None == False
8 False
四、布尔值
bool就是用来表征真假的一种方式。True(真)或False(假);非0(真)或0(假)。
1 >>> False + False
2 0
3 >>> True + True
4 2
5 >>> True + False
6 1
7 >>>
五、复数
复数有实数和虚数部分组成,一般形式为 x + yj,其中的 x 是复数的实数部分,y是复数的虚数部分,这里x和y都是实数。注意,虚数部分的不区分大小写。
1 >>> -.6545 + 0J
2 (-0.6545+0j)
3 >>> 4.53e1 - 7j
4 (45.3-7j)
5 >>> 45.j
6 45j
7 >>> 3.14j
8 3.14j
六、日期和时间
python提供了一个 time 和 calendar 模块可以用于格式化如期和时间。时间间隔是以秒为单位的浮点数,每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示,所以1970年之前的日期就不能用时间戳来表示了。太遥远的日期也是不行的,UNIX和Windows只支持到2038年哦。时间戳是最适合用来做日期运算的。
1.Time模块
获取本地时间:
1 #导入time模块
2 import time
3 #获取当前时间戳,单位是秒
4 now_timestamp = time.time()
5 #打印now_timestamp
6 print(now_timestamp) #打印:1499085481.4974537
7 # 获取本地时间,默认是获取当前时间
8 localtime = time.localtime()
9 #打印localtime
10 print(localtime) #打印:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=3, tm_hour=20, tm_min=38, tm_sec=1, tm_wday=0, tm_yday=184, tm_isdst=0)
11 #获取本地时间,传入时间戳
12 localtime = time.localtime(now_timestamp)
13 #打印locatime
14 print(localtime) #打印:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=3, tm_hour=20, tm_min=38, tm_sec=1, tm_wday=0, tm_yday=184, tm_isdst=0)
从上面代码将引进一个时间元组的概念,什么是时间元组?python函数用一个元组装起来的9组数字处理时间,如下图:
代码中的struct_time()就是时间元组啦,如下图:
time.localtime() 方法,官方文档中是这样说的:
"""
Convert seconds since the Epoch to a time tuple expressing local time.
When 'seconds' is not passed in, convert the current time instead."""
意思就是啊,这个方法就是将秒转换成时间元组,然后打印出来表示本地时间,如果你不加参数,默认就把当前时间加进去。
还有一点,在上段代码中,会发现最后打印的两个 localtime 结果是一样的,真的是一样的么?当然不一样,至于为什么不一样自己想吧。
通过 import time ;help(time) 我们得到其中的Functions:
#从时代(1970年1月1日)开始,以秒的时间来返回当前时间,就是返回时间戳。
time() -- return current time in seconds since the Epoch as a float
#如果你要衡量不同程序的耗时时间,clock会比time更有用,它返回的是以浮点数计算的秒数的当前CPU时间。
clock() -- return CPU time since process start as a float
#让你的程序 " 睡 " 会,用来延迟时间的。
sleep() -- delay for a number of seconds given as a float
#将时间戳转换成格林威治(本初子午线)天文时间下的时间元组。
gmtime() -- convert seconds since Epoch to UTC tuple
#这个上面说了,就是将时间戳转换成时间元组。
localtime() -- convert seconds since Epoch to local time tuple
#这个呢是将时间元组转换成字符串(如:Mon Jul 3 23:08:38 2017),好让我们读。
asctime() -- convert time tuple to string
#不给参数的话就相当于 asctime(localtime(time.time())) ,就是直接从时间戳转到了方便读的String。
ctime() -- convert time in seconds to string
#将时间元组转换成时间戳。
mktime() -- convert local time tuple to seconds since Epoch
#根据参数中所添加的格式,将时间元组转换String,例: strtime = time.strftime("%Y-%m-%d--%H:%M:%S",start_time) ,格式化符号加到这一小小节的末尾。
strftime() -- convert time tuple to string according to format specification
#根据参数中所添加的格式,将String转换成时间元组,接着上条写:time.strptime(strtime,"%Y-%m-%d--%H:%M:%S") 。
strptime() -- parse string to time tuple according to format specification
#更改本地时区
tzset() -- change the local timezone
1 %y 两位数的年份表示(00-99)
2 %Y 四位数的年份表示(000-9999)
3 %m 月份(01-12)
4 %d 月内中的一天(0-31)
5 %H 24小时制小时数(0-23)
6 %I 12小时制小时数(01-12)
7 %M 分钟数(00=59)
8 %S 秒(00-59)
9 %a 本地简化星期名称
10 %A 本地完整星期名称
11 %b 本地简化的月份名称
12 %B 本地完整的月份名称
13 %c 本地相应的日期表示和时间表示
14 %j 年内的一天(001-366)
15 %p 本地A.M.或P.M.的等价符
16 %U 一年中的星期数(00-53)星期天为星期的开始
17 %w 星期(0-6),星期天为星期的开始
18 %W 一年中的星期数(00-53)星期一为星期的开始
19 %x 本地相应的日期表示
20 %X 本地相应的时间表示
21 %Z 当前时区的名称
22 %% %号本身
2.Calendar模块
打印某月日历:
1 >>> import calendar
2 >>> cal = calendar.month(2017,7)
3 >>> print(cal)
4 July 2017
5 Mo Tu We Th Fr Sa Su
6 1 2
7 3 4 5 6 7 8 9
8 10 11 12 13 14 15 16
9 17 18 19 20 21 22 23
10 24 25 26 27 28 29 30
11 31
通过 import time ;help(time) 我们得到其中的Functions:
哈哈,原文档有点长我就不全列出来了,直接把菜鸟教程的拿过来了。
#返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。
calendar.calendar(year,w=2,l=1,c=6)
#返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。
calendar.firstweekday( )
#是闰年返回True,否则为false。
calendar.isleap(year)
#返回在Y1,Y2两年之间的闰年总数。
calendar.leapdays(y1,y2)
#返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
calendar.month(year,month,w=2,l=1)
#返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthcalendar(year,month)
#返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
calendar.monthrange(year,month)
#相当于 print calendar.calendar(year,w,l,c)。
calendar.prcal(year,w=2,l=1,c=6)
#相当于 print calendar.calendar(year,w,l,c)。
calendar.prmonth(year,month,w=2,l=1)
#设置每周的起始日期码。0(星期一)到6(星期日)
calendar.setfirstweekday(weekday)
#和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。
calendar.timegm(tupletime)
#返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
calendar.weekday(year,month,day)
python中,其他处理日期和时间的模块还有:
- datetime
- pytz
- dateutil
可以通过用import module;help(module) 来进行学习,或者看各位大牛写的专题博客来学习。
Python数字类型转换及数学函数
数字类型转换
1 int(x [,base]) 将x转换为一个整数
2 float(x ) 将x转换到一个浮点数
3 complex(x) 将x转换为复数
4 str(x) 将对象x转换为字符串 ,通常无法用eval()求值
5 repr(x) 将对象x转换为表达式字符串 ,可以用eval()求值
6 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
7 tuple(s) 将序列s转换为一个元组
8 list(s) 将序列s转换为一个列表
9 chr(x) 将一个整数转换为一个字符
10 unichr(x) 将一个整数转换为Unicode字符
11 ord(x) 将一个字符转换为它的整数值
12 hex(x) 将一个整数转换为一个十六进制字符串
13 oct(x) 将一个整数转换为一个八进制字符串
数学函数
1 abs(x) 返回数字的绝对值,如abs(-10) 返回 10
2 ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
3 cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
4 exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
5 fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
6 floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
7 log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
8 log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
9 max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
10 min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
11 modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
12 pow(x, y) x**y 运算后的值。
13 round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
14 sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j
获奖感言:
写博客,一、是为了分享自己的心得;二、是希望看到的大佬们可以帮忙矫正错误的地方;三、希望有人一起探讨。
告诉你们:刚在地摊买了本《孙子兵法》 翻开一看 扉页上赫然写着 :首先 你要有个爷爷。
注:该获奖感言以正能量为主,以逗为辅。