Python数据类型篇(一)

本章内容

  1. 整数(Int)
  2. 浮点数(Float)
  3. 空(None)
  4. 布尔值(Bool)
  5. 复数(Complex)
  6. 日期(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-36615 %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

  

获奖感言:

  写博客,一、是为了分享自己的心得;二、是希望看到的大佬们可以帮忙矫正错误的地方;三、希望有人一起探讨。

  告诉你们:刚在地摊买了本《孙子兵法》 翻开一看 扉页上赫然写着 :首先 你要有个爷爷。

  注:该获奖感言以正能量为主,以逗为辅。

原文地址:https://www.cnblogs.com/lyonyang/p/7106771.html