洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

时间:2023-01-17 23:35:44

 

 上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢?

  • 整形(int)
  • 长整型(long)
  • 浮点型(float)
  • 字符型(str)
  • 布尔型(bool)

最常见的就这几种。

 

在这之前不得不先提到一个知识——变量,什么是变量,一般会这么理解:就是会变的量,它的值会改变的量,与常量(数字)对应。其实这不太准确的。

变量名就像我们现实社会的名字,把一个值赋值给一个名字时,TA会存储在内存中,称之为变量(variable)。在大多数语言中,都把这个行为称为“给变量赋值”或“把值存储的在变量中,给变量赋值就是一个等号符号(=),不过在python中,比如a=4,那么此时a的值即为4,接下来我又让a=6,此时a的值即为6。但注意赋值并不等同于数学里的等于符号,等于是’==‘,在python里是作为判断使用,并且在python里,a=4这个操作解释为给变量赋值是不太准确的,4并不是把值存储在变量中,而更像是把名字贴在值的上。这里又牵扯到python提倡的一个关键词:内存空间

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

 

 注意:

  • 使用变量前需要赋值
  • 变量名可以是字母,数字,下划线,但变量不能以数字开头
  • 区分大小写
  • 符号’=’是赋值的意思,左边是名字,右边是值
  • 变量的名字尽量取专业的名字,做到顾名思义
  • 变量是不可变对象(这个后面会提到,先了解是不可变对象就行)

 

以下变量名为了方便解说,暂且随意取,并且为了简单操作,我使用的python2的IDLE

一,基本知识:

1.整形(int):

整形即为整数,一个数字,没有小数的数字,比如1,2,-1,-2等

打印:洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

这里用到一个BIF(内置函数)——type(),这个函数可以查看类型,方便辨别是是什么类型

还有一个和type()函数一样功能的函数:isinstance(),用法如下:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

那么为何type里只放了一个参数,isinstance用了两个参数,为什么呢?我怎么知道其用法呢?

这里又要用到一个BIF——help()来查看python的官方文档,如:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

(由于输出的内容很长,只截了目前有用的一点),只看注明那一行,object是对象的意思,在python里一切皆对象,所以type()的用法是,你可以将任何东西放进去,然后反馈给你这个对象的类型

 同样看看isinstance()的官方帮助文档:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

意思是,要给两个参数,第一个参数是需要查看类型的对象,第二个是给一个类型,然后会返回一个布尔型(请看第5点),这样就可以辨别类型了。

 

2.长整型(long):

长整型也是整形,是整形的一种,不过由于比整形更长,所以叫长整型,比如123552466L,后面带一个‘L’的即为长整型,在python3里不再有长整型,因为其实没什么鸟用,大部分时候还是直接用的整形

打印:洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

 

3.浮点型(float):

即带有小数的数字类型,比如1.5,1.0,1.555等

和浮点型对应的有个定点型(double),也是有小数的数字类型,基本很少用

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

4.字符型(str):

即被引号包围住的,比如:‘python’,’hello‘这种,可以用单引号,也可以用双引号,不影响,但不能单双混用

 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

5.布尔型(bool):

布尔本是一个人的名字,这人当时定义开灯即为1,关灯即为0,好比二进制0/1,而永远都只有这两个状态,不可能处于不开灯也不关灯或者又开灯又关灯的状态,而这个原理被其他研究者拿来放到运算原理里,让这种只存在两者中的任一一种状态发扬光大。

在编程里也一样,有对,有错,不可能出现又对又错或者不对也不错的状态,所以则有True和False(首字母必须大写)这两个关键词,这两个关键词在判断里会有很大的作用。

还有一点,True和False其实分别等于1和0的:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但在编程中如果把True和False当作1和0来参与计算是很蹩脚的,这也不是一个合格的程序员能做的,记住这一点就行,在以后的编程里可以方便理解等的。

 说到这,那肯定要说一个关键语句——判断语句if

这是最基础也是最核心的东西,所有的开发语言都有这个判断语句

怎么判断呢?

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

if,如果的意思,有如果那就有一个相反的else:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

当满足给的条件就跟着程序走一条路,当不满足就走另一条路

可以有单个if,但不可以有单个else,if...else,while...else是配套存在的(while在后面的循环里会提到)

 

 

数据类型之间是可以相互转换的,python很灵活,不会像JAVA一样,JAVA的只能数据类型短的转换到数据类型长度长的,数据类型长度长的不能转换成数据类型短(真要转换得强制转换,题外话不多说)。

看几个简单的例子你就懂了:

number=2
type(number)
number2=long(number)
type(number2)
number2
number3=str(number)
type(number3)
number3
number4=float(number)
type(number4)
number4

 

结果:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

 

开始print一些东西了:

打印一个文件路径:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

这里要说个概念,其实你应该注意到了,print和没使用print结果不一样,也就是为什么在交互式界面(IDLE)里直接给变量和print 变量得到的结果不太一样?因为print在打印时会自动加入一个\n换行符,这样在编程时可以下面的代码隔开,并且表达式是代表一件事,print+表达式是这件事,比如‘1+2’是指这件事,print ‘1+2’ 是做打印‘1+2’这件事,并且个人认为在python里print会根据默认编码等的默认设置来自动处理一下代码并打印到屏幕上,但是注意的是,print不会改变其对象本身任何东西,只是根据自己的机制打印到屏幕上。

注意在Windows中,路径分割符是双\\,Windows就要这样,没办法

再打印一个:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

和我们预想有点出入,在这之前需要了解几个特殊符号(完整版):

\ :转义字符;换行续写(后面多行字符串会提到)
\':单引号
\":双引号
\a:发出系统响铃声
\b:退格符
\n:表示换行
\t  表示一个制表符,即一个tab键的位置
\v:纵向制表符
\r:回车符
\f:换页符
\o:八进制数代表的字符
\x:十六进制数代表的字符
\0:表示一个空字符
\\  表示\字符本身,反斜杠
# 注释字符,也可以注释掉暂时不用的代码

 

所以这里错把’\n‘和’\t‘当作特殊字符看待了,由此一个换行了,一个tab了

 

给它转义一下,用\\转义成它自身,让它没有任何特殊意义即可:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

实际应用:

打印——Let's go(其本身就带有一个引号)的

一贯操作:洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型,颜色变了,因为关键词颜色会高亮显示,这里明显颜色不对

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

果然,见红报错了,这报错意思是语法错误,后面在异常处理会详细解说

外层用双引号可以解决:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

或者用转义符转义:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但这又有一个问题,如果路劲过长呢,还有一个一个手动的添加转义吗?

所以牵扯一个新的用法,是的,我的套路就是在实际问题中慢慢丢出要掌握的概念

r ---原始字符串

原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

在字符串之前加上r,这个用法其实在前面说道编码问题时有用过,前面查看中国的’中‘字,使用Unicode方式就是写的【u'中'】,可以翻翻前面的。

但是还有一个问题,照原始字符串的概念来讲,我这样写没问题啊:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但是报错了,第一个刚才说了,那是因为引号字符冲突,加入r不能解决。第二个在最后加入了反斜行,还是报错了,所以解决办法是:

在原始字符串无法解决的位置单独转义:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但是还是不太方便对不对,万一以后就要这么用怎么办?还要每个单独再转义一次,有点麻烦啊

所以又有了一个终极必杀技:多行字符串,或者叫长字符串’’’’’’,三个引号

多行字符串内,不管里面是什么,都是字符串,不再发生任何意义,顾名思义,还可以注释多行

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但是注意如果多行字符串在最后有反斜行的话会这样:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

 

一直敲回车都没用,因为末尾的\成了换行续写的意思,或者你也可以理解为转义符\把本有的反三引号给转义了。所以一直没完,手动加入反三引号才算完

 

 

最后还有个问题,因为print后面的字符串,字符串里面有什么就打印什么,假如,我不想这样,我想执行字符串里的代码并得到一个结果呢?

比如:

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

我想得到这个结果怎么办?

有两个内置函数可以解决这个问题,exec()和eval()

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

但是这两个函数基本很少用的,记住有这么个用法就行