上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢?
- 整形(int)
- 长整型(long)
- 浮点型(float)
- 字符型(str)
- 布尔型(bool)
最常见的就这几种。
在这之前不得不先提到一个知识——变量,什么是变量,一般会这么理解:就是会变的量,它的值会改变的量,与常量(数字)对应。其实这不太准确的。
变量名就像我们现实社会的名字,把一个值赋值给一个名字时,TA会存储在内存中,称之为变量(variable)。在大多数语言中,都把这个行为称为“给变量赋值”或“把值存储的在变量中,给变量赋值就是一个等号符号(=),不过在python中,比如a=4,那么此时a的值即为4,接下来我又让a=6,此时a的值即为6。但注意赋值并不等同于数学里的等于符号,等于是’==‘,在python里是作为判断使用,并且在python里,a=4这个操作解释为给变量赋值是不太准确的,4并不是把值存储在变量中,而更像是把名字贴在值的上。这里又牵扯到python提倡的一个关键词:内存空间
注意:
- 使用变量前需要赋值
- 变量名可以是字母,数字,下划线,但变量不能以数字开头
- 区分大小写
- 符号’=’是赋值的意思,左边是名字,右边是值
- 变量的名字尽量取专业的名字,做到顾名思义
- 变量是不可变对象(这个后面会提到,先了解是不可变对象就行)
以下变量名为了方便解说,暂且随意取,并且为了简单操作,我使用的python2的IDLE
一,基本知识:
1.整形(int):
整形即为整数,一个数字,没有小数的数字,比如1,2,-1,-2等
打印:
这里用到一个BIF(内置函数)——type(),这个函数可以查看类型,方便辨别是是什么类型
还有一个和type()函数一样功能的函数:isinstance(),用法如下:
那么为何type里只放了一个参数,isinstance用了两个参数,为什么呢?我怎么知道其用法呢?
这里又要用到一个BIF——help()来查看python的官方文档,如:
(由于输出的内容很长,只截了目前有用的一点),只看注明那一行,object是对象的意思,在python里一切皆对象,所以type()的用法是,你可以将任何东西放进去,然后反馈给你这个对象的类型
同样看看isinstance()的官方帮助文档:
意思是,要给两个参数,第一个参数是需要查看类型的对象,第二个是给一个类型,然后会返回一个布尔型(请看第5点),这样就可以辨别类型了。
2.长整型(long):
长整型也是整形,是整形的一种,不过由于比整形更长,所以叫长整型,比如123552466L,后面带一个‘L’的即为长整型,在python3里不再有长整型,因为其实没什么鸟用,大部分时候还是直接用的整形
打印:
3.浮点型(float):
即带有小数的数字类型,比如1.5,1.0,1.555等
和浮点型对应的有个定点型(double),也是有小数的数字类型,基本很少用
4.字符型(str):
即被引号包围住的,比如:‘python’,’hello‘这种,可以用单引号,也可以用双引号,不影响,但不能单双混用
5.布尔型(bool):
布尔本是一个人的名字,这人当时定义开灯即为1,关灯即为0,好比二进制0/1,而永远都只有这两个状态,不可能处于不开灯也不关灯或者又开灯又关灯的状态,而这个原理被其他研究者拿来放到运算原理里,让这种只存在两者中的任一一种状态发扬光大。
在编程里也一样,有对,有错,不可能出现又对又错或者不对也不错的状态,所以则有True和False(首字母必须大写)这两个关键词,这两个关键词在判断里会有很大的作用。
还有一点,True和False其实分别等于1和0的:
但在编程中如果把True和False当作1和0来参与计算是很蹩脚的,这也不是一个合格的程序员能做的,记住这一点就行,在以后的编程里可以方便理解等的。
说到这,那肯定要说一个关键语句——判断语句if
这是最基础也是最核心的东西,所有的开发语言都有这个判断语句
怎么判断呢?
if,如果的意思,有如果那就有一个相反的else:
当满足给的条件就跟着程序走一条路,当不满足就走另一条路
可以有单个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
结果:
开始print一些东西了:
打印一个文件路径:
这里要说个概念,其实你应该注意到了,print和没使用print结果不一样,也就是为什么在交互式界面(IDLE)里直接给变量和print 变量得到的结果不太一样?因为print在打印时会自动加入一个\n换行符,这样在编程时可以下面的代码隔开,并且表达式是代表一件事,print+表达式是这件事,比如‘1+2’是指这件事,print ‘1+2’ 是做打印‘1+2’这件事,并且个人认为在python里print会根据默认编码等的默认设置来自动处理一下代码并打印到屏幕上,但是注意的是,print不会改变其对象本身任何东西,只是根据自己的机制打印到屏幕上。
注意在Windows中,路径分割符是双\\,Windows就要这样,没办法
再打印一个:
和我们预想有点出入,在这之前需要了解几个特殊符号(完整版):
\ :转义字符;换行续写(后面多行字符串会提到) \':单引号 \":双引号 \a:发出系统响铃声 \b:退格符 \n:表示换行 \t 表示一个制表符,即一个tab键的位置 \v:纵向制表符 \r:回车符 \f:换页符 \o:八进制数代表的字符 \x:十六进制数代表的字符 \0:表示一个空字符 \\ 表示\字符本身,反斜杠 # 注释字符,也可以注释掉暂时不用的代码
所以这里错把’\n‘和’\t‘当作特殊字符看待了,由此一个换行了,一个tab了
给它转义一下,用\\转义成它自身,让它没有任何特殊意义即可:
实际应用:
打印——Let's go(其本身就带有一个引号)的
一贯操作:,颜色变了,因为关键词颜色会高亮显示,这里明显颜色不对
果然,见红报错了,这报错意思是语法错误,后面在异常处理会详细解说
外层用双引号可以解决:
或者用转义符转义:
但这又有一个问题,如果路劲过长呢,还有一个一个手动的添加转义吗?
所以牵扯一个新的用法,是的,我的套路就是在实际问题中慢慢丢出要掌握的概念
r ---原始字符串
原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
在字符串之前加上r,这个用法其实在前面说道编码问题时有用过,前面查看中国的’中‘字,使用Unicode方式就是写的【u'中'】,可以翻翻前面的。
但是还有一个问题,照原始字符串的概念来讲,我这样写没问题啊:
但是报错了,第一个刚才说了,那是因为引号字符冲突,加入r不能解决。第二个在最后加入了反斜行,还是报错了,所以解决办法是:
在原始字符串无法解决的位置单独转义:
但是还是不太方便对不对,万一以后就要这么用怎么办?还要每个单独再转义一次,有点麻烦啊
所以又有了一个终极必杀技:多行字符串,或者叫长字符串’’’’’’,三个引号
多行字符串内,不管里面是什么,都是字符串,不再发生任何意义,顾名思义,还可以注释多行
但是注意如果多行字符串在最后有反斜行的话会这样:
一直敲回车都没用,因为末尾的\成了换行续写的意思,或者你也可以理解为转义符\把本有的反三引号给转义了。所以一直没完,手动加入反三引号才算完
最后还有个问题,因为print后面的字符串,字符串里面有什么就打印什么,假如,我不想这样,我想执行字符串里的代码并得到一个结果呢?
比如:
我想得到这个结果怎么办?
有两个内置函数可以解决这个问题,exec()和eval()
但是这两个函数基本很少用的,记住有这么个用法就行