每种语言都有各种数据类型。这就像在现实生活中,我们计数的时候需要用到数字,在表述金额、重量、距离等需要精确计数时用到小数,在日常交谈中要用文字,等等。在计算机语言中,为了表述不同的情况,也需要用到各种数据类型。

在 Python 主要有数值类型(int, float),字符串类型,布尔型和空值。

整型 int

Python 中整型来表示整数,正数或者负数,没有小数点。10 和 10.0 是两种数据类型。

浮点数 float

浮点数也就是我们常见的带小数点的数字。之所以叫浮点数,是因为小数点的位置不固定,也就是浮动的。

比如 10.01 可以写为 1.001 * 10^1,也可以写为 0.1001 * 10^2。

字符串 str

字符串是最常用的数据类型之一,用引号包裹起来的就是字符串。在 Python 中,引号可以是双引号,也可以是单引号。但是不能混用。

同时也可以使用三对引号(单双都可以)来标记多行字符串。

>>> char = 'nemo'    # 单引号
>>> char2 = "python" # 双引号
>>> char3 = 'python" # 单双引号混用,语法错误
>>> char4 = 'this 's a pig' # 语法错误,可以将外面的引号替换为双引号,或者使用转义符
>>> char5 = 'this \'s a pig'

Python 中还有很多关于字符串的操作,将在后续教程中详细讲解。

布尔型 bool

布尔型,只有两个值,就是我们通常说的真与假,错与对,是和否。

在计算机语言中,通常使用布尔值来表示条件是否成立,条件成立则为 True,不成立则为 False。

>>> 3 > 1
True
>>> 0 < 5
False
>>> 5 == '5'
False

空值 None

空值 None 是 Python 中的一种特殊数据类型,严格意义上来说也不算是一种数据类型。空值用来表示什么都没有,空字符串不是空,空的字符串也是字符串,而空值什么都不是。在其他语言或数据库中用 null 表示。

常见于函数中,当函数没有定义返回值的时候,默认返回的就是 None。

判断数据类型的常用函数

在 Python 中,用于判断数据类型的函数主要有两种,type() isinstance()

type()函数用于查看数据的类型:

>>> type(5)
<class 'int'>
>>> type(5.0)
<class 'float'>
>>> type('5')
<class 'str'>

isinstance()用于判断数据的类型,符合返回True,不符合返回False

>>> isinstance(5, int)      # isinstance 需要两个参数,第一个是值,第二个是类型
True
>>> isinstance('5', int)
False
>>> isinstance('5', str)
True
>>> isinstance(True, int)
True
>>> isinstance(True, bool)
True

这里有个现象 isinstance(True, int)也是符合的,我们上面说过 True是布尔型,怎么int型也是符合的呢?

其实布尔型是int的一种,值只有 0 和 1 罢了。

>>> True == 1
True
>>> False == 0
True

数据类型转换

不同的数据类型是可以互相转换的。如果要转为整数类型,可以使用int()函数,如果转为浮点型,可以使用float() 函数, 如果转为字符串类型,可以使用str() 函数。

目标类型 函数
int int()
str str()
float folat()
>>> int('15')
15
>>> int('15a') # 报错,字符串转 int ,必须全部是十进制的数字
ValueError: invalid literal for int() with base 10: '15a'
>>> int('1.1') # 报错,看似浮点数也不行,但是这个可以用 float 转为浮点数
ValueError: invalid literal for int() with base 10: '1.1'
>>> float('1.1')
1.1
>>> float('11')
11.0
>>> str(100)
'100'

其余转换情况可自行尝试。

在 Python 中,任意的数据类型,都是对象!当然,还不止于此,在 Python 中所见皆对象。不过这句话现在不需要理解,先记住就好。

本结思考

5 == 5.0,结果是什么?为什么?

5 is 5.0,结果是什么?为什么?

Python 极简教程(三)数据类型的更多相关文章

  1. Python 极简教程(八)字符串 str

    由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...

  2. python极简教程04:进程和线程

    测试奇谭,BUG不见. 大家好,我是谭叔. 这一场,主讲python的进程和线程. 目的:掌握初学必须的进程和线程知识. 进程和线程的区别和联系 终于开始加深难度,来到进程和线程的知识点~ 单就这两个 ...

  3. python极简教程01:基础变量

    测试奇谭,BUG不见. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的教程,他们同大多数自学编程语言的人一样,无外乎遇到以下这些问题: 网络上的资料过多且良莠不全,不知道如 ...

  4. Python 极简教程(一)前言

    现在 Python 用处很多,学的人也很多,其流行程度自不必说.但是很多人学 Python 的时候都遇到过问题,特别对于非计算机专业毕业的人来说. 现在的教程非常多,但是绝大部分对于初学者都不够友好. ...

  5. Python 极简教程(十)集合 set

    什么是集合? 集合(set)是一种可变,无序和不重复的序列. 集合是python的序列之一,集合没有列表(list).元组(tuple)和字典(ditc)常见.但是有时候也有奇效. 我们先来看个集合的 ...

  6. python极简教程07:封装、多态和继承

    测试奇谭,BUG不见. 这一场主讲python的面向对象部分--封装.多态和继承. 目的:掌握Python面向对象的三个核心概念. 封装 01 什么是封装? 封装的目的是,保护隐私.通俗的讲:不想让别 ...

  7. python极简教程08:对象的方法

    测试奇谭,BUG不见. 讲解之前,我先说说我的教程和网上其他教程的区别: 1 我分享的是我在工作中高频使用的场景,是精华内容: 2 我分享的是学习方法,亦或说,是指明你该学哪些.该重点掌握哪些内容: ...

  8. Python 极简教程(十二)逻辑控制语句 if else

    计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理. 比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是 ...

  9. Python 极简教程(十一)字典 dict

    字典是以大括号标识,以键值对(key:value)的形式,无序,不可重复,可变的集合类型. 字典具有非常高效的读写效率. >>> d = {} # 创建一个空字典 >>& ...

随机推荐

  1. Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅

    通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个 ...

  2. Vim插件使用技巧(转)

    在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...

  3. IT运维分析

    http://www.infoq.com/cn/presentations/case-of-it-operation-analysis-and-log-search-analysis-engine?u ...

  4. 【Linux探索之旅】第四部分第三课:文件传输,潇洒同步

    内容简单介绍 .第四部分第三课:文件传输.潇洒同步 2.第四部分第四课:分析网络.隔离防火 文件传输.潇洒同步 这一课的内容相对简单,所以我们慢慢享用. 经过上一课的学习.我们已经知道怎样远程连接到其 ...

  5. js -- 分页功能

    html 代码 <html> <head> <meta charset='utf-8'> <script type="text/javascript ...

  6. CDQZ 0003:jubeeeeeat

    0003:jubeeeeeat 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是 ...

  7. 关于oracle sql语句查询时 表名和字段名要加双引號的问题具体解释

      作为oracle的刚開始学习的人相信大家一定会遇到这个问题.如图:          明明就是navicat可视化创建了表,但是就是不能查到!这个为什么呢?           select * ...

  8. RecyclerView具体解释

    public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild { 由上面的继承结 ...

  9. java byte中存大于0x7E的十六进制数

    在做一个Android app和arm板子交互的程序中,遇到一个问题,Java byte中无法直接存储大于0x7E的十六进制,但是C语言却可以. 出现这个状况的原因是:Java中是byte存储的是有符 ...

  10. [LuoguU41039]PION后缀自动机 树链剖分+动态开点线段树

    链接 刚开始看出题人题解都吓蒙掉了,还以为是什么难题,结果就一板子题 思路:对每一个文件名开一棵线段树,然后树剖即可 #include<bits/stdc++.h> #define REP ...