【笔记】Python2学习笔记

前言

Python是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。(维基百科

安装 python

Windows

  • 在官网下载

https://www.python.org

Linux

  • 系统预装

MacOS

  1. 系统预装2.x版本

  2. 使用brew安装

1
brew search python
  1. 使用pyenv安装并管理多个python版本

传送门

python 运行方式

通过交互式解释器

1
python

退出

1
>>> exit()

以文件的方式运行

<file_name>python文件名

创建 python 文件

1
touch <file_name>.py

提升执行权限

1
chmod +x <file_name>.py

编辑 python 文件

1
vim <file_name>.py

添加 python 文件头

  • 文件头指定解释器
1
#!/usr/bin/python
自动查找解释器
1
#!/usr/bin/env python

使用 python命令 执行 python文件

1
python <file_name>.py

直接执行 python文件

1
./<file_name>.py

支持 tab 补齐的交互解释器

导入模块方式

  • 只能本次使用
1
2
3
>>> import readline
>>> import rlcompleter
>>> readline.parse_and_bind("tab:complete")

使用环境变量方式

  • 可以一直使用

创建一个脚本

1
touch tab.py

编辑脚本

1
vim tab.py

把代码写入文件

1
2
3
4
5
#!/usr/bin/env python

import readline
import rlcompleter
readline.parse_and_bind("tab:complete")

提升可执行权限

1
chmod a+x tab.py

刷新环境变量

1
source ~/.bash_profile

安装 pip

  • python 2.7默认安装pip

MacOS

  • 使用pyenv安装的python自带pip
  • 使用pyenv配置好python的默认版本,就可以直接使用pip命令

语句块缩进

  • python代码块通过缩进对齐表达代码逻辑而不是使用大括号
  • 缩进表达一个语句属于哪个代码块
  • 缩进通常使用4个空格

基本 python 语句

输出语句

<value>:输出的值

1
2
3
print(<value>)
print(<value>, <value>)
print(<value> + <value>)

输入语句

1
input()

有提示的输入语句

<value>:提示语句

1
input("<value>")

把输入的语句赋值给变量

<name>:变量名

1
<name> = input("<value>")

查看数据类型

<value>:数据

1
type(<value>)

类型转换

  • str类型转为int类型

<str>:str类型数据

1
int(<str>)
  • int类型转为str类型

<int>:int类型数据

1
str(<int>)

注释

单行注释

  • #开始,直到一行结束的内容都是注释

文档字符串

创建文档

<name>:文档名

1
touch <name>.py

编辑文档

<NAME>:用于注释文件名称
<DESCRIPTION>:用于注释文档描述
<FUCTIONS>:用于注释函数描述

1
2
3
4
5
6
7
8
"""<NAME>

<DESCRIPTION>
"""

def fuction():
"<FUCTIONS>"
print("end")

查看文档帮助

1
2
import <name>
help(function)

变量定义

变量定义规则

  • 第一个字符只能是字母下划线(不建议使用下划线)
  • 后续字符只能是字母数字下划线
  • 区分大小写

命名习惯

  • 有意义
  • 简短
  • 全部采用小写字母
  • 多个单词之间用下划线隔开
  • 变量一般使用名词,函数使用谓词(动词+名词)
  • 类名首字母大写,使用驼峰原则

变量赋值及运算

变量赋值

  • 使用=为变量赋值

  • python变量首次使用不需要声明变量类型,但必须初始化,初始化时将定义变量类型

变量运算

标准运算符

  • +-*///%**

/:除号表示除法运算,整型整型运算结果数据类型为整型整型浮型运算结果数据类型为浮点型
//地板除表示整除运算。结果为保留小数的结果产生的两个相近似整数较小的一个整数,结果数据类型根据被除数决定是整数型还是浮点型
%:求模运算,结果为两数相除的余数
**:幂运算,结果为两数的乘方

  • python还支持+=-=*=/=
  • 但python不支持++--操作,++--放在变量前表示两次正负号运算操作,放在变量后会报错

比较运算符

  • <<=>>===!=<>

!=<>均为不等号,但常用!=表示不等号

连续比较
  • python支持连续比较

  • A < B > C等价于A < B and B > C

逻辑运算符

  • 根据优先级排列分别是:notandor

  • 结果为TrueFalse(首字母大写)

数据类型

数字类型

int:整型
long:长整型
bool:布尔值,值为TrueFalse,分别对应10
float:浮点型

complex:复数,通常只作数学运算使用

进制表示

  • python默认以10进制数显示
  • 数字以0开头表示8进制数
  • 数字以0x0X开头表示16进制数
  • 数字以0b0B开头表示2进制数

字符串

  • 引号之间的字符集合组成字符串(''""都可以)

  • 一对三个(单或双)引号的组合之间的字符集合组成可以保留格式的字符串

  • python不区分字符和字符串

字符串切片

1
str = "python"
正序编号
  • 字符串第一个字符下标为0
  • 表示为:str[0]
  • 结果为:p
倒序编号
  • 字符串最后一个字符下标为-1
  • 表示为:str[-1]
  • 结果为:n
区间编号
闭区间
  • 第一个字符到第二个字符下标区间为[0,1]
  • 表示为:str[0:1]
  • 结果为:py
开区间
  • 从头开始到第二个字符下标区间为[0,1]
  • 表示为:str[:1]
  • 结果为:py
根据步长取值
  • 从下标为1的字符开始,步长为2
  • 表示为:str[1::2]
  • 结果为:yhn

字符串拼接

  • 使用+相连的多个字符串,拼接为一个字符串
按倍数拼接
  • 使用*指定拼接次数,拼接为一个字符串

字符串长度

<string>:字符串

1
<string>.len()

字符串查找

判断是否存在

<string>:原字符串
<value>:查找的关键字

1
<value> in <string>
判断是否不存在
1
<value> not in <string>

列表

  • 列表是存放多个数据的集合,数据类型可以为任意类型
  • 列表用[]定义,用,隔开多个数据
  • 列表也可以使用下标切片
  • 列表可以包含列表,子列表切片用[][]取出数据
  • 列表数据可以修改

追加数据

  • 在列表末尾追加数据

<list>:列表名
<value>:追加的数据

1
<list>.append(<value>)

元组

  • 元组类似于列表,用()定义
  • 元组数据不可以修改

字典

  • 字典是由键值对(key-value)构成的映射数据类型,用{}定义
  • 字典不是顺序类型,不支持下标操作

查看字典长度

<dict>:字典

1
<dict>.len()

字典查找

  • 字典只能查找

<key>:键值对的键

1
<key> in <dict>
通过键查找值
1
<dict>[<key>]

添加或修改键值对

  • 如果<key>:存在,则为修改键值对,如果<key>:不存在,则为修改键值对
1
<dict>[<key>] = <value>

数据类型的总结

数据类型的分类

按存储模型分类
标量类型
  • 数值、字符串
容器类型
  • 列表、元组、字典
按更新模型分类
可更新类型
  • 列表、字典
不可更新类型
  • 数字、字符串、元组
按访问模型分类
直接访问
  • 数字
顺序访问
  • 字符串、列表、元组
映射访问
  • 字典

判断语句

语法

<expression>:布尔表达式或布尔值
<suite>:代码块

1
2
3
4
if <expression>:
<suite>
else:
<suite>

特殊布尔值

  • 非零数字、非空对象值为True
  • None、数字零、空对象(空字符串、空列表、空元组、空字典)值为False

多分支

语法
1
2
3
4
5
6
if <expression>:
<suite>
elif <expression>:
<suite>
else:
<suite>
  • python没有switch case这样的替代品

while 循环

语法结构

1
2
while <expression>
<suite>

break 语句

  • 跳出循环
1
2
3
while <expression>
<suite>
break

continue 语句

  • 退出当前循环
1
2
3
while <expression>:
<suite>
continue

else 语句

  • else子句只在循环完成后执行
  • break语句也跳过else块
1
2
3
4
while <expression>:
<suite>
else:
<suite>

for 循环

语法结构

<var>:变量
<string>:任何可切片数据

  • 重复len(<string>)次循环,按从头到尾顺序,每次循环取出一个切片,赋值给变量<var>
1
2
for <var> in <string>
<suite>
  • for循环也支持breakcontinueelse语句

range 函数

  • range函数配合的语句,组成可以实现指定循环次数的for循环语句

<start>:表示开始值,默认值为0
<end>:表示结束值
<step>:表示步长值,默认值为1

  • 开始值开始循环,每次增加步长值,增加到结束值结束跳出结束循环(不包含)
1
2
for <var> in range():
<suite>

参数列表

一个参数:range(<end>)
两个参数:range(<start>, <end>)
三个参数:range(<start>, <end>, <step>)

xrange 函数
  • xrange()类似range(),不过当你有一个很大的范围列表时,xrange()可能更为适合,因为它不会在内存里创建列表的完整拷贝
  • 它只被用在for循环中,在for循环外使用它没有意义
  • 它的性能远高出range(),因为它不生成整个列表

列表解析

  • 用来动态创建列表

语法结构

<value>:需要存放到列表的数据
<for_in>不含语句块的for循环
<for_range>range函数配合不含语句块的for循环

1
2
[<value> <for_in>]
[<value> <for_range>]

完成