上一篇《Python入门(1)》我们已经简单介绍了Python的安装,和第一个Python程序“Hello World”的实现。在这一篇中,我们主要讲一下Python的基本语法和基本数据类型。

基本语法

Python 和 其他编程语言最大的区别应该就是:Python的代码块不是用大括号“{}”来控制类、函数以及其他逻辑判断的。Python 最具特色的就是用缩进来写模块。

缩进的空格符数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。缩进相同的一组语句构成一个代码块,我们称之代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。

if True:
    print ("True")
else:
    print ("False")

上面这样的代码是可以正确执行的,下面的代码是会报错的!

#!/usr/bin/python
# 文件名:test.py

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
    # 没有严格缩进,在执行时会报错
  print ("False") # 在这一行会报IndentationError: unindent does not match any outer indentation level

所以,在Python开发中,我们不管是使用空格缩进还是Tab缩进,使用的缩进方式必须一致,因为 Python 对格式的要求非常严格。建议:在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用。

在Python中,一般以换行符作为语句的结束符,而不是分号(;)符号;如果一条语句太长,我们可以使用反斜杠(\)将一行的语句分为多行显示;如果语句中包含[], {} 或 () 括号就不需要使用多行连接符(\);如果我们想把多条语句放在一行里才需要使用分号符(;)进行分割。如下:

#一条语句分成多行
total = item_one + \
        item_two + \
        item_three

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

import sys; s = 'Hello world'; sys.stdout.write(s + '\n')  #一行中包含多条语句

Python中的字符串可以用单引号(  )、双引号(  )、三引号( ”’ 或 “”” ) 来表示,引号的开始与结束必须是相同类型的。其中三引号可以由多行组成,是编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,三引号也可以被当做注释。如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''

word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""

Python 中的注释除了上面说的三引号,还可以使用  # 开头进行注释,如下:

#!/usr/bin/python
# 文件名:test.py

# 第一个注释
print ("Hello, Python!")  # 第二个注释

在Python程序的开发中,函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。空行也是程序代码的一部分。

数据类型

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Numbers(数字类型)

Python的数字类型用于用于存储数值。它们是不可改变的数据类型,当改变数字数据类型会分配一个新的对象。当我们指定一个值时,Number 对象就会被创建,可以使用del语句删除一些对象的引用。

var1 = 1
var2 = 10
del var1

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)
intlongfloatcomplex
1051924361L0.03.14j
100-0x19323L15.2045.j
-7860122L-21.99.322e-36j
0800xDEFABCECBDAECBFBAEl32.3e+18.876j
-0490535633629843L-90.-.6545+0J
-0x260-052318172735L-32.54e1003e+26J
0x69-4721885298529L70.2E-124.53e-7j
  1. 长整形(Long)建议使用大写 L(虽然小写 l 也可以)表示,避免与数字 1 混淆。
  2. 复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。

String(字符串类型)

字符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型。

Python的字串列表有2种取值顺序:

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,最大范围是字符串开头

如果我们要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

>>> s = 'abcdef'
>>> s[1:5]
'bcde'

Python 字符串截取还可以接收第三个参数,参数作用是截取的步长。

Python字符串还支持两个特殊符号:加号(+)是字符串连接运算符,星号(*)是重复操作。

#!/usr/bin/python

str = 'Hello World!'
print str * 2       # 输出字符串两次
print str + "TEST"  # 输出连接的字符串

List(列表)

List(列表) 是 Python 中使用最频繁的数据类型,用 [ ] 标识,是最通用的复合数据类型。它可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表中值的切割类似上面讲到的字符串截取,也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

Tuple(元组)

元组是另一个数据类型,类似于 List(列表),用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

元组和列表最大的区别是:元组不允许更新,而列表是允许更新的。

#!/usr/bin/python
 
tuple = ( 'Hello', 'World', 3.14, 'Python' )
list = [ 'Hello', 'World', 3.14, 'Python' ]
tuple[2] = 1000    # 元组不允许更新,所以这条语句是非法的
list[2] = 1000     # 在列表中,这个语句是合法的,列表会被更新成:[ 'Hello', 'World', 1000, 'Python' ]

Dictionary(字典)

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型,用”{ }”标识,它由索引(key)和它对应的值value组成。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。