数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:

整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

字符串

字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。

如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:

?

表示的字符串内容是:

?

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print打印字符串看看:

?

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,可以自己试试:

?

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容,可以自己试试:

?

上面是在交互式命令行内输入,如果写成程序,就是:

?

多行字符串'''...'''还可以在前面加上r使用,请自行测试。

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:

?

布尔值可以用and、or和not运算。

and运算是与运算,只有所有都为True,and运算结果才是True:

?

or运算是或运算,只要其中有一个为True,or运算结果就是True:

?

not运算是非运算,它是一个单目运算符,把True变成False,False变成True:

?

布尔值经常用在条件判断中,比如:

?

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到。

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:

?

变量a是一个整数。

?

变量t_007是一个字符串。

?

变量Answer是一个布尔值True。

在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:

?

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

?

和静态语言相比,动态语言更灵活,就是这个原因。

请不要把赋值语句的等号等同于数学的等号。比如下面的代码:

?

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12。

最后,理解变量在计算机内存中的表示也非常重要。当我们写:

?

时,Python解释器干了两件事情:

在内存中创建了一个'ABC'的字符串;

在内存中创建了一个名为a的变量,并把它指向'ABC'。

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

?

最后一行打印出变量b的内容到底是'ABC'呢还是'XYZ'?如果从数学意义上理解,就会错误地得出b和a相同,也应该是'XYZ',但实际上b的值是'ABC',让我们一行一行地执行代码,就可以看到到底发生了什么事:

执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC':

执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC':

执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

所以,最后打印变量b的结果自然是'ABC'了。

常量

所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

?

但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI的值,也没人能拦住你。

最后解释一下整数的除法为什么也是精确的,可以试试:

?

你没有看错,整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换成浮点数做除法就可以:

?

因为整数除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

?

无论整数做除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

小结

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

您的鼓励是作者写作最大的动力

如果您认为本网站的教程质量不错,读后觉得收获很大,预期工资涨幅能超过30%,不妨小额赞助我一下,让我有动力继续写出高质量的教程:

python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量相关推荐

  1. python中变量类型在程序中可以改变_Python中的变量和数据类型,python,及

    变量 变量的定义: 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台 ...

  2. python中变量类型在程序中可以改变_python的可变与不可变数据类型

    首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...

  3. python中数据类型大小_详细解析Python中的变量的数据类型

    变量是只不过保留的内存位置用来存储值.这意味着,当创建一个变量,那么它在内存中保留一些空间. 根据一个变量的数据类型,解释器分配内存,并决定如何可以被存储在所保留的内存中.因此,通过分配不同的数据类型 ...

  4. 如何使用python编程、字典中的get是什么_详细解析python字典get()实例教程

    对于程序员而言,了解更多的算法,对自己的程序完善是非常有意义的,关于Get方法有小伙伴了解是如何使用吗?不了解的小编已为大家整理,一起来看下吧~ get()函数简介 get()是查找并返回字典中的某个 ...

  5. python 获取json中最大值_详细解析 Python 爬取 bilibili 的视频、弹幕以及封面

    本文使用 Zhihu On VSCode 创作并发布 环境 用到的 Python 库: Python 3.7 requests moviepy json re os 浏览器:Firefox/ 83.0 ...

  6. 关于python的元组类型以下选项中描述错误的是_关于Python的元组类型,以下选项中描述错误的是【】...

    [单选题]给出如下代码: fname=imput('请输入要打开的文件:') fi=open(fname,'r') for line in fi.readlines(): print(line) fi ...

  7. 关于python浮点数类型错误的是_关于Python的数字类型,以下选项中描述错误的是...

    [单选题]以下程序的输出结果是: lcat =["狮子","猎豹","虎猫","花豹","孟加拉虎" ...

  8. python中复数类型与数学中复数的概念一致_2020年9月计算机二级python选择题在线题库12/15...

    1.在最坏情况下比较次数相同的是(). A.冒泡排序与快速排序 B.简单插入排序与希尔排序 C.简单选择排序与堆排序 D.快速排序与希尔排序 A  [解析]冒泡排序.快速排序.简单插入排序.简单选择排 ...

  9. python的复数类型表示数学中的复数对吗_关于Python的复数类型,以下选项中描述错误的是...

    [单选题]下面代码的输出结果是 >>> x = "Happy Birthday to you!" >>> x * 3 [判断题]打开一个文本文件 ...

最新文章

  1. SAP WM Storage Type Search配置里的Storage Class WPC标记
  2. PHOTOSHOP 快捷键
  3. 小程序使用wxParse解析html
  4. 折纸计算机大全,神之折纸电脑版
  5. python 依据某几列累加求和_如何用Python找出OBV金叉的股票?
  6. pb 修改数据窗口种指定字段位置_第三章 Python数据类型 容器
  7. java web 耗时请求_javaweb应用中出现了一个耗时异常长的数据查询,寻求帮助
  8. windows下的库文件在linux的使用,Windows、Linux之间传输文件的几种方式
  9. MATLAB double、str、cell间的类型转换
  10. 变量的比较之equals 与 == 的区别
  11. hadoop2.6.4 在ubuntu14.04下的搭建
  12. phtml php,PHTML Encoder
  13. 我是如何从一个xss到某个浏览器的远程命令执行
  14. iis提示“另一个程序正在使用此文件,进程无法访问”解决办法
  15. 深入浅出通信原理知识点5
  16. Laravel下载文件及文档
  17. 电脑使用 Dolby Audio提示将耳机或扬声器插入系统的音频插孔,以启用Dolby Audio
  18. 关于英伟达显卡驱动程序(GeForce)无法下载的问题
  19. Win10镜像安装net3.5
  20. ubuntu php7 pdo,记录捣鼓ubuntu下PHP7.1下安装sqlserver拓展

热门文章

  1. 联想继续为其硬件产品完善Linux支持
  2. .NET架构小技巧(6)——什么是好的架构
  3. 谁说.NET不适合搞大数据、机器学习和人工智能
  4. C#的未来:简化参数空值验证
  5. Excel催化剂插件安装过程升级,离线版全网公开下载!
  6. 我认真写下9段如翔一般的代码,只为等你来品鉴
  7. 坚持一个好习惯该有多难?
  8. [开源]OSharpNS - .net core 快速开发框架 - 简介
  9. 微软开源故事 | 开启 .NET 开源革命
  10. NumSharp v0.6.1 科学计算库发布,支持标量和隐式转换