【Python】《python基础教程》学习笔记1

时间:2022-08-30 23:52:44

第一章 快速改造:基础知识

1.1安装Python

1.1.1Windows

具体的我也就不赘述了,可以看我另一篇博客。

http://blog.csdn.net/u012318329/article/details/60479591

1.1.2Linux和UNIX

python解释器是默认存在的,我没有装虚拟机,就也不细说了,有机会用linux的时候再一起研究。

1.1.3苹果机(Macintosh)

没钱啊……

1.1.4其他发行版本

1.1.5时常关注,保持更新


1.2交互式解释器

【Python】《python基础教程》学习笔记1

图1.惯例hello world。

1.3算法是什么

书里举了个例子,我就不复述了,上定义。

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

1.4数字和表达式

【Python】《python基础教程》学习笔记1

图2.Python可以用作计算器,功能强大。

【Python】《python基础教程》学习笔记1

图3.整数除法,浮点数除法。(参与除法的两个数有一个是浮点数,运算结果亦为浮点数)

【Python】《python基础教程》学习笔记1

图4.如果希望只执行普通除法,可以在程序前加入这样一句:

from __future__ import division
division(除法)
【Python】《python基础教程》学习笔记1

图5.双斜线可以在这种情况下用于整除代替原本单斜线的功能。

【Python】《python基础教程》学习笔记1

图6.取余运算、幂运算。

1.4.1长整数

【Python】《python基础教程》学习笔记1

图7.python可以处理非常大的整数。

1.4.2十六进制和八进制

【Python】《python基础教程》学习笔记1

图8.python解释器中的八进制和十六进制。

1.5变量

【Python】《python基础教程》学习笔记1

图9.python中的变量与赋值。

1.6语句

表达式是某件事情,语句是【做】某件事情。

【Python】《python基础教程》学习笔记1

图10.简单的表达式和打印语句。

【Python】《python基础教程》学习笔记1

图11.表达式和语句的差别在赋值表达式上体现的比较明显。

1.7获取用户输入

【Python】《python基础教程》学习笔记1

图12.input()语句括号内的字符串将成为新的【提示符】。

【Python】《python基础教程》学习笔记1

图13.input()语句的赋值情况。

1.8函数

【Python】《python基础教程》学习笔记1

图14.幂运算函数。

 【Python】《python基础教程》学习笔记1

图15.取绝对值运算函数。

【Python】《python基础教程》学习笔记1

图16.round函数会把浮点数四舍五入为最接近的整数值。

1.9模块

模块是导入到python以增强其功能的扩展,按照【模块.函数】的格式使用函数。

【Python】《python基础教程》学习笔记1

图17.导入自然语言处理模块

在使用了【form模块import函数】这种形式的import命令之后,就可以直接使用函数而不再需要模块名作为前缀了。

【Python】《python基础教程》学习笔记1

图18. 通过nltk.book导入所有自带的文本/通过 math直接使用sqrt函数,sqrt函数用于计算平方根。

1.9.1cmath和复数

【Python】《python基础教程》学习笔记1

图19.cmath下的sqrt函数支持对复数开平方根。

【Python】《python基础教程》学习笔记1

图20.python本身就支持复数。

1.9.2回到__future__

Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。
从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xxx'和'xxx'是完全一致的,而在2.x中以'xxx'表示的str就必须写成b'xxx',以此表示“二进制字符串”。
要直接把代码升级到3.x是比较冒进的,因为有大量的改动需要测试。相反,可以在2.7版本中先在一部分代码中测试一些3.x的特性,如果没有问题,再移植到3.x不迟。
Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。

1.10保存并执行程序

1.10.1通过命令提示符运行Python脚本

1.10.2让脚本像普通程序一样运行

1.10.3注释

这部分没什么好说的,重点讲一下书里提到的input()和raw_input()函数。首先是input()函数,input('please input:')之后会返回一个值,可以用tpye()查看他的类型,然而当我们输入字符串或者字符的时候, 要用双引号或者单引号包起来不然就会报错。input()函数输入什么类型,就显示什么类型。

【Python】《python基础教程》学习笔记1

图20.input()函数,类型按输入数据类型。

再来看raw_input()函数,不论输入什么类型,都是str类型。也就不用另外输入引号了。

【Python】《python基础教程》学习笔记1

图21.raw_input()函数,无论输入什么,都是str类型。

通过上面的实验我们知道input它会根据用户输入变换相应的类型,而且如果要输入字符和字符串的时候必须要用引号包起来,而raw_input则是不管用户输入什么类型的都会转变成字符型。

我们来看input的源码。

def input(prompt):
return eval(raw_input(prompt))
其实input也是调用了raw_input,只是做了eval处理。
而eval有什么作用呢?eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。

1.11字符串

1.11.1单引号字符串和转义引号

python里单引号和双引号大部分时间意义相同,双引号用在单引号出现在句子中时。转义字符为“\”。

1.11.2拼接字符串

用加号“+”来拼接字符串。

1.11.3字符串表示,str和repr

Python打印值的时候会保持该值在Python代码中的状态,不是用户所希望看到的状态。而使用print打印值则不一样,print打印出来的值是用户所希望看到的状态。 
例如:

>>> "Hello, world!"
'Hello, world!' # Python打印出来的值是给python理解的,这里python理解为字符串,所以带着引号
>>> 1000L # python理解为Long型的数字,所以它打印出来的时候也带着后缀L
1000L
>>> print "Hello, world!" # 打印一个字符串,给用户看的,所以不带引号
Hello, world!
>>> print 1000L # 用户看到的当然是一个数字1000,而不是字符串1000L
1000
str和repr实际就分别对应上述两种显示方式。

str把值转换为合理形式的字符串,给用户看的。str实际上类似于int,long,是一种类型。

>>> print str("Hello,  world!")
Hello, world!
>>> print str(1000L)
1000
>>> str("Hello, world!")
'Hello, world!' # 字符串转换之后仍然是字符串
>>> str(1000L)
'1000'
repr()创建一个字符串,以合法python表达式的形式来表示值。repr()是一个函数。

>>> print repr("Hello,  world!")
'Hello, world!'
>>> print repr(1000L)
1000L
>>> repr("Hello, world!")
"'Hello, world!'"
>>> repr(1000L)
'1000L'
总而言之,str出来的值是给人看的字符串,repr出来的值是给机器看的,括号中的任何内容出来后都是在它之上再加上一层引号。
1.11.4input和raw_input的比较

上面写过了,此处略。

1.11.5长字符串、原始字符串和Unicode

1.长字符串

长字符串可以用三个单引号或者三个双引号代替普通引号。

2.原始字符串

换行符可以写为\n,原始字符串前面为r,可在字符串中放入任何字符。

p.s.不能在原始字符串结尾输入反斜线。

1.12小结