Python基础教程-基础

Python简介

Python是一种跨平台、解释型、面向对象、动态数据类型的高级程序设计语言。
Python由Guido van Rossum于1989年底发明,于1991年第一个公开发行版发行。
目前 Python 有Python2和Python3两个版本,但是两个版本并不完全兼容。

Python的官方网站为https://www.python.org/

环境搭建

Python安装

可以从官网下载对应平安装包安装即可。Linux, Unix、Mac等操作系统基本都 内置Python. 无需下载,

运行Python

有三种方式可以运行Python:

  1. 交互式解释器
    通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。
    你可以在Unix,DOS或任何其他提供了命令行或者shell的系统进行python编码工作。
1
2
3
$ python # Unix/Linux 
或者
C:>python # Windows/DOS
  1. 命令行脚本
    通过引入解释器可以在命令行中执行Python脚本,如下所示:
1
2
3
4
5
$ python script.py # Unix/Linux 

或者

C:>python script.py # Windows/DOS
  1. 集成开发环境
    推荐使用 PyCharm
    PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
    PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……

Python基础语法

编码

默认情况下,Python 3源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 Python2 并没有指定UTF-8 编,因此,如果在代码中使用中文,需要在文件头加上 utf-8.

1
2
#!usr/bin/env python  
# -*- coding:utf-8 _*-

和其它脚本语言一样,在文件第一行指定解释器。

如无特殊情况, 文件头部必须加入#--coding:utf-8--标识

注释

Python中单行注释以 # 开头

1
# 第一个注释

多行注释可以用多个 # 号,还有 ‘’’ 和 “””:

1
2
3
4
5
6
7
8
9
10
11
12
# 第一个注释
# 第二个注释

'''
第三注释
第四注释
'''

"""
第五注释
第六注释
"""

标识符

  • 标识符必须是字母表中字母或下划线 _ 开头。
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符对大小写敏感。

保留字

保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

1
2
3
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。【推荐都使用4个空格】

1
2
3
4
if True:
print ("True")
else:
print ("False")

多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

1
2
3
total = item_one + \
item_two + \
item_three

字符串(String)

python中单引号和双引号使用完全相同。
使用三引号(‘’’或”””)可以指定一个多行字符串。
转义符 ‘'
反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r”this is a line with \n” 则\n会显示,并不是换行。
按字面意义级联字符串,如”this “ “is “ “string”会被自动转换为this is string。
字符串可以用 + 运算符连接在一起,用 * 运算符重复。
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
Python中的字符串不能改变。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
字符串的截取的语法格式如下:变量[头下标:尾下标]

1
2
3
4
5
6
7
8
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""

print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

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

我们将首行及后面的代码组称为一个子句(clause)。

1
2
3
4
5
6
if expression : 
suite
elif expression :
suite
else :
suite

编码风格

可以参考Google Python 编码风格
http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

Python基础

变量

Python 中的变量赋值不需要类型声明。
等号(=)用来给变量赋值。
Python允许你同时为多个变量赋值。

1
2
3
4
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
a = b = c = 1 # 多个变量赋值

输入和输出

输出

Python使用print()向屏幕上输出。

1
print('hello, world')

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:

1
2
>>> print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog

输入

Python使用input(),让用户输入字符串,并存放到一个变量里。

1
2
name = input()
Michael

数据类型

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

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

Numbers

Python支持不同的数字类型:

  • 整数 -> Python可以处理任意大小的整数,当然包括负整数。
  • 浮点数 -> 浮点数也就是小数。
  • 布尔值 -> 布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值。
  • 空值 -> 空值是Python里一个特殊的值,用None表示。

String

字符串或串(String)是由数字、字母、下划线等组成的一串字符。

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

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

List(列表)

列表用 [ ] 标识,内部元素用逗号隔开。

列表中值的切也可以用到变量 [头下标:尾下标]

从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 * 是重复操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
以上实例输出结果:

['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']

Tuple(元组)

元组用”()”标识,类似于List(列表)。区别是元组是只读的, 元素不能修改。

Dictionary(字典)

字典用”{ }”标识。字典由索引(key)和它对应的值value组成。

与列表的区别是:

  1. 列表是有序的对象集合,字典是无序的对象集合。
  2. 字典当中的元素是通过键来存取的,而不是通过偏移存取。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

Python 运算符

Python的运算符的和其它语言类似。

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 位运算符
  • 逻辑运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

逻辑运算符

Python逻辑运算符包括 and or not, 分别表示逻辑与或非。

成员运算符

Python成员运算符包括 in 和 not in , 用来测试字符串,列表或元组实例中是否包含了一系列的成员。

  • in 如果在指定的序列中找到值返回 True,否则返回 False。
  • not in 如果在指定的序列中没有找到值返回 True,否则返回 False

身份运算符

Python身份运算符包括 is 和 is not , 用于比较两个对象的存储单元

  • is is 是判断两个标识符是不是引用自一个对象 x is y, 如果引用的是同一个对象则返回 True,否则返回 False。
  • is not is not 是判断两个标识符是不是引用自不同对象 x is not y 。如果引用的不是同一个对象则返回结果 True,否则返回 False。

is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

控制流程

顺序

条件

IF-ELSE

1
2
3
4
if 判断条件:
执行语句……
else:
执行语句……

IF-ELSE 多重

1
2
3
4
5
6
7
8
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……

循环

循环语句

  • WHILE
1
2
while 判断条件:
执行语句……
  • FOR

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的语法格式如下:

1
2
for iterating_var in sequence:
statements(s)

通过序列索引迭代

1
2
3
4
5
fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]

print "Good bye!"

循环控制语句

循环控制包括Break, Continue, Pass。

  1. break语句用来终止循环语句,
  2. continue 语句跳出本次循环,
  3. pass 不做任何事情,一般用做占位语句。