《Python基础教程》第1章 基础知识

2135 查看

编程语言之间很多概念是互通的,对于和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!'