• 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

      

    获奖感言:

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

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

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

  • 相关阅读:
    ECharts 上传图片Example
    SpringBoot|mybatis-maven依赖
    SpringBoot|web应用开发-CORS跨域资源共享
    IDEA|自动生成序列化ID
    SpringBoot|自定义业务异常使用
    SpringBoot|常用配置介绍
    SpringBoot|多环境配置
    SpringBoot|其他常用注解
    SpringBoot|以jar包形式运行springboot服务
    SpringBoot|restfull风格的接口实现方式
  • 原文地址:https://www.cnblogs.com/lyonyang/p/7106771.html
Copyright © 2020-2023  润新知