Python系列教程(十):类型判断和数值型

    前面在简单介绍基础数据类型的时候,其中提到数值类型包括整数和浮点数,今天将简单的回顾,并在此基础上继续深入,了解数值类型的本质,以及数值类型的一些处理函数。

  一、怎么判断类型  

1、方法1:type(obj)

    直接查看对象是什么类型的,返回的是类型,而不是字符串。Tips:你的目的是查看什么类型,我当然返回什么类型啦。

>>>type('abc')
>>>str

>>>type(17)
>>>int

>>>type(None)
>>>NoneType

2、方法2:isinstance(obj, class_or_tuple)

    判断一个对象是否属于某个或多个类的实例,返回的是bool值,类型可以有一个或多个,如果是多个要用元组(小括号括起来)。Tips:你让我判断是否属于你指定的类型,我当然返回要么是或者不是啦。

    使用这个函数,或者对这个函数的理解,一定要从大局观去思考,这个函数不仅仅可以判断str,int,float自带的类型,还可以用来判断某个对象和我们自己写的类是否有对应关系

>>>isinstance(3,str)
>>>False

>>>isinstance(3,int)
>>>True

>>>isinstance(3,(str,int,float))
>>>True

  二、数值类型  

1、有哪些数值类型

    int:整数,包括正负整数,在Python 3.x中不区分long和int,都是长整型,没有长度限制,只要内存放的下就可以。

    float:浮点数,由整数和小数部分组成。支持十进制和科学计数法表示。只有双精度型。

    complex:复数,有实数和虚数部分组成,实数和虚数部分都是浮点数,3+4.2J

    bool:布尔类型,只有True、False,可以和整数直接运算(因为本质就是‘1’和‘0’)

2、数值本质到底是什么

    首先,我们要先提一个概念,这个概念也将贯穿我们学习Python的整个过程:在Python中,一切皆对象

    跟我们在学习Linux时提出的‘一切皆文件’一样,因为Python是一门面对对象的编程语言,所以Python对自身的设计也追求到了极致,所有都是对象,都是某个类的实例,这个会在后面关于类的篇章中详细讲解。

    既然是一切皆对象了,那么你在Python中使用的数值,比如‘28’,‘3.1415’,‘3+4.2J’,‘True’都是对象,所谓对象就是某个类的实例,他们分别是int,float,complex,bool这4个类的实例。而bool还比较特殊,它是int的子类,所以‘Ture’,‘False’的本质就是‘1’和‘0’。
    所以我们在Python中看到的,用到的一个个数值也好,一个个字符串也罢,其实本质就是它们所对应类的实例

3、类型转换

    可以通过内置函数将一个值转换成对应的类型

    int(x):返回一个整数

    floa(x):返回一个浮点数

    complex(x):返回一个复数

    bool(x):返回一个布尔值‘True’或者‘False’

    不是什么类型都可以互相转换的,这里有一个基本原则是:能转换的,Python尽量帮你转换。

    比如下面的例子中,字符串‘1’,我可以帮你转换成数值1,但是你字符串‘a’,抱歉,我无能为力,我不知道转换成什么数值,所以不是字符串都无法转换,也不是字符串都可以转换,而是要看你具体的值,我Python能不能转换,非常人性化。而bool类型,前面说过哪些是等价False的,这些都会统统给你转换成False。

>>>int('1')
>>>1
>>>int(32.9)
>>>32
>>>int('a')
>>>ValueError: invalid literal for int() with base 10: 'a'

>>>float('3')
>>>3.0

>>>bool('ac')
>>>True
>>>bool()
>>>False
>>>bool(0)
>>>False

  三、数值类型的处理函数  

1、内置函数:round()

    约等函数,但不是四舍五入,而是四舍六入五取偶

>>>round(3.5)        #在3和4之间,取偶数就是4
>>>4
>>>round(2.5)        #在2和3之间,取偶数就是2
>>>2
>>>round(7.9)
>>>7

2、math模块:floor()和ceil()

    floor():字面意思地板,意思是不管小数位多少,直接舍弃

    ceil():字面意思天花板,意思是不管小数位多少,直接进一位

>>>import math
>>>math.floor(2.9)
>>>2

>>>math.ceil(2.1)
>>>3

3、内置函数:最大最小值min()和max()

    min(x, x, x….):取最小值,可以有多个值同时比较,但必须都是数值类型

    max(x, x, x….):取最大值,可以有多个值同时比较,但必须都是数值类型

>>>min(1,4,99,-3,-3.4)
>>>-3.4

>>>max(1,4,99,-3,-3.4)
>>>99

4、内置函数:进制转换

    将对应的数值转换成对应的进制数,注意,这里说的数值,不要传一个字符串过来,没有办法帮你转换,还有最终返回的是一个字符串,而不是数值类型。

    bin(x):二进制

    oct(x):八进制

    hex(x):十六进制

>>>bin(9)
>>>'0b1001'

>>>oct(9)
>>>'0o11'

>>>hex(28)
>>>'0x1c'
Jimmy's Blog ,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.xjimmy.com/python-10-number.html

Leave a Comment