编程语言之间很多概念是互通的,对于和Java或者JavaScript已经重复的基础内容,不再笔记,只挑选比较常用和不同的地方予以记录。
本章目录
- 安装Python
- 交互式解释器
- 算法是什么
- 数字和表达式
- 变量(略)
- 语句(略)
- 获取用户输入
- 函数(略)
- 模块
- 保存并执行程序
- 字符串
- 小结(略)
安装Python
Mac OS上默认安装了Python,除非你需要安装新版本的可以参考 官方下载。[注:Terminal上输入python发现个人版本是2.7.8。到官网上查看发布历史,也是醉了,早些时候已经到了3.4.2,而最近的版本居然是2.7.9 ]
除了官方的发布版本外,还有很多Python的版本可供下载,每个版本侧重功能可能会有不同。因此如果听说某Python前面加个 i 或者 j 叫成 iPython 或者 jPython 八成就是其他发布版本,不要觉得新奇。
交互式解释器
在Terminal输入python
即进入了交互式解释器,输入一些有意义的语句既可看到响应。
算法是什么
算法是我们为了达成目的,告诉计算机该要怎么做的一个步骤。
数字和表达式
使用交互式解释器可以做一些很基本的算术运算:
>>> 2 + 2
4
>>> 53672 + 235253
288925
>>> 1/2
0
如上的最后一个表达式,两个整数相除结果为整数,那么要让它不按照计算机语言处理方式,而只按照日常计算的方式有两种做法:
- 用浮点数进行运算。只要有一个数为浮点数,结果就为浮点数:
>>> 1.0 / 2.0
0.5
>>> 1 / 2.0
0.5
>>> 1.0 / 2
0.5
- 让Python改变除法的执行方式
>>> from __future__ import division
>>> 1 / 2
0.5
如上,从__future__中导入了division。这个时候要用整除就要使用双斜杆了。
>>> 1 // 2
0
还有一个取余运算符比较常用,注意的是取余运算符对浮点数也适用。
>>> 2.75 % 0.5
0.25
最后介绍一个幂(乘方)运算符:
>>> 3 ** 2
9
>>> -3 ** 2
-9
>>> (-3) ** 2
9
长整形数
受计算机存储单位的限制,所有整数不能大于某个数(也不能小于某个数),如果超出Python会自动转换为长整型数,当然你也可以自己定义的时候就加上L在后面,如下是定义和运算的例子:
>>> 1000000000000000000000
1000000000000000000000L
>>> 2987198739107239812 * 1239827389479283479283
3703610814563136332097919362350014814796L
十六进制和八进制
>>> 0xAF
175
>>> 010
8
获取用户输入
>>> x = input('x:')
x:4
>>> y = input('y:')
y:3
>>> print x*y
12
模块
可以把模块当作导入到Python中增强功能的扩展,有两种导入形式:
>>> import math
>>> int(math.floor(32.99))
32
>>> from math import sqrt
>>> sqrt(9)
3.0
cmatch和复数
cmatch被用来处理虚数、复数之类,几乎没机会用到的吧,略。
回到__furture__
一些在将来会成为Python语言特性的功能会被假如到模块__furture__中,在前面已经有接触到过这个 模块。
保存并执行程序
将程序片段保存在py为后缀的文件后,可以通过python file.py进行执行。如下介绍配置python文件为可执行文件的做法。
在文件的首行加上 #!usr/bin/env python
,然后命令行给文件加上可执行属性 chmod a+x hello.py
就能执行命令行键入 ./hello.py
执行代码了。(注:个人PC上的Python版本是2.7.8,不同版本不同操作系统,需要添加的行首内容或执行命令可能会有不同)示例代码如下:
#!usr/bin/python
name = raw_input('What is your name ?')
print 'Hello,' + name + '!'
直接通过双击也是可以的,但是输入结果以后程序运行完毕后就直接关闭了,加入如下代码即可:
raw_input("Press <enter>")
字符串
引号与转译
>>> "Hello, World!"
'Hello, World!'
如上,输入的时候是用的双引号,实际输出却是单引号,在Python中两者没有区别,那么为什么不统一用单或者双引号呢,看如下例子:
>>> "Let's go!"
"Let's go!"
在一些场合会需要输出单引号(或者双引号)的,除了单双引号交替以外,还可以使用\将引号进行转译,比如:
>>> 'Let\' go!'
"Let's go!"
拼接字符串
如下是拼接字符串的常规做法:
>>> "Hello," + " World!"
'Hello, World!'
>>> x = "Hello,"
>>> y = " World!"
>>> x + y
'Hello, World!'
字符串表示str和repr
>>> "Hello, World!"
'Hello, World!'
>>> 1000L
1000L
>>> print "Hello, World!"
Hello, World!
>>> print 1000L
1000
如上示例中我们可以看到,Python打印的字符串是有引号括起来的,而print函数打印的字符串是没有。差别就在于这是用来两种不同的字符串转换机制,前者是用repr将内容转化为Python代码中的形式,后者使用str将内容转化为方便用户看的形式,上面的示例等同于下面的写法:
>>> print repr("Hello, World!")
'Hello, World!'
>>> print repr(1000L)
1000L
>>>print str("Hello, World!")
'Hello, World!'
>>>print str(1000L)
1000
另外还有一个知识点请看如下示例:
>>> temp = 42
>>> print "The number is: " + temp
error
>>> print "The number is: " + \`temp\`
The number is: 42
直接将字符串和数字拼接是会报错的(写惯了js这点还是感觉蛮意外的),而通过如上写法等同于调用了repr(temp),将temp转化为了字符串“42”所以正常拼接后输出了。
input和raw_input的比较
input会把用户输入当做一个合法的结果,比如命令行执行 input("What's your name ?")
用户直接输入名字Lucy
是会报错的,需要输入内容裹上字符串才行,如"Lucy"
。而raw_input相当于替你作了这个事情,将输入内容作为raw数据然后替你包裹成字符串。除非有特殊需要,一般很少用input来做数据输入的。
特殊的字符串
-
长字符串
在文本内容跨多行的时候,可以使用三引号包裹的写法。 -
原始字符串
通过形如\n的方式我们可以使用一些转译字符,但是在一些路径的表示中,我们可能并不希望有些字符被转移,这时候可以通过在字符前加上r来将字符表示为原始字符串:
>>> print "C:\nowhere"
C:
owhere
>>> print r"C:\nowhere"
C:\nowhere
唯一要注意的是,原始字符串的最后一个字符串不能是反斜杆否则会报错。 做法是将最后一个反斜杆单独作为一个字符串来处理:
>>> print r"C:\nowhere\"
error
>>> print r"C:\nowhere" "\\"
C:\nowhere\
Unicode字符串
Python中的字符串是一ANSII来表示的,如果需要用Unicode的方式来存储可以使用如下写法:
>>> u"Hello, World!"
u'Hello, World!'
网友评论