看完这篇文章,你的Python基础就差不多了

前言

本文是基于黑马程序员2018年的Python基础班的内容编写的,以2018年的资料为蓝本,2016年的资料为补充,还参考了一些网上的教程,旨在更好地总结Python基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点。学一门语言贵在坚持用它,不用就淡忘了,而记录下一篇文章也有助于日后快速回忆。全文分为两大部分,分别是Python基础语法和面向对象。

第一部分 Python基础语法

第一部分 Python基础语法

1. 认识Python

1.1 Python 简介

Python 的创始人为吉多·范罗苏姆(Guido van Rossum)。

Python 的设计目标:

  • 一门简单直观的语言并与主要竞争者一样强大
  • 开源,以便任何人都可以为它做贡献
  • 代码像纯英语那样容易理解
  • 适用于短期开发的日常任务

Python 的设计哲学:

  • 优雅、明确、简单

Python 开发者的哲学是:用一种方法,最好是只有一种方法来做一件事

Python 是完全面向对象的语言,在 Python 中一切皆对象。

可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把这部分程序用 CC++ 编写,然后在 Python 程序中使用它们。

1.2. 第一个Python程序

执行 Python 程序的三种方式:
解释器、交互式运行、IDE运行

Python 是一个格式非常严格的程序设计语言。
python 2.x 默认不支持中文

  • ASCII 字符只包含 256 个字符,不支持中文
  • Python 2.x 的解释器名称是 python
  • Python 3.x 的解释器名称是 python3

为了照顾现有的程序,官方提供了一个过渡版本 —— Python 2.6

提示:如果开发时,无法立即使用 Python 3.0(还有极少的第三方库不支持 3.0 的语法),建议

  • 先使用 Python 3.0 版本进行开发
  • 然后使用 Python 2.6Python 2.7 来执行,并且做一些兼容性的处理

IPython 是一个 python 的 交互式 shell,比默认的 python shell 好用得多,它支持 bash shell 命令,适合于学习/验证 Python 语法或者局部代码。

集成开发环境(IDE,Integrated Development Environment)—— 集成了开发软件需要的所有工具,一般包括以下工具:

  • 图形用户界面
  • 代码编辑器(支持 代码补全自动缩进
  • 编译器/解释器
  • 调试器(断点单步执行
  • ……

PyCharm 是 Python 的一款非常优秀的集成开发环境

PyCharm运行工具栏

1.3. PyCharm 的设置

PyCharm 的 配置信息 是保存在 用户家目录下.PyCharmxxxx.x 目录下的,xxxx.x 表示当前使用的 PyCharm 的版本号

1.3.1 恢复 PyCharm 的初始设置:

    1. 关闭正在运行的 PyCharm
    1. 在终端中执行以下终端命令,删除 PyCharm 的配置信息目录:
$ rm -r ~/.PyCharm2016.3
    1. 重新启动 PyCharm

1.3.2 PyCharm 安装和启动步骤:

    1. 执行以下终端命令,解压缩下载后的安装包
$ tar -zxvf pycharm-professional-2017.1.3.tar.gz
    1. 将解压缩后的目录移动到 /opt 目录下,可以方便其他用户使用

/opt 目录用户存放给主机额外安装的软件

$ sudo mv pycharm-2017.1.3/ /opt/
    1. 切换工作目录
$ cd /opt/pycharm-2017.1.3/bin
    1. 启动 PyCharm
$ ./pycharm.sh

1.3.3 设置启动图标

  • 在专业版中,选择菜单 Tools / Create Desktop Entry... 可以设置任务栏启动图标
  • 注意:设置图标时,需要勾选 Create the entry for all users
    快捷方式文件
    /usr/share/applications/jetbrains-pycharm.desktop

ubuntu 中,应用程序启动的快捷方式通常都保存在 /usr/share/applications 目录下

1.3.4 卸载之前版本的 PyCharm

要卸载 PyCharm 只需要做以下两步工作:

    1. 删除解压缩目录
$ sudo rm -r /opt/pycharm-2016.3.1/
    1. 删除家目录下用于保存配置信息的隐藏目录
$ rm -r ~/.PyCharm2016.3/

如果不再使用 PyCharm 还需要将 /usr/share/applications/ 下的 jetbrains-pycharm.desktop 删掉

1.4. 多文件项目的演练

  • 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件
  • 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件
  • PyCharm 中,要想让哪一个 Python 程序能够执行,必须首先通过 鼠标右键的方式执行 一下
  • 对于初学者而言,在一个项目中设置多个程序可以执行,是非常方便的,可以方便对不同知识点的练习和测试
  • 对于商业项目而言,通常在一个项目中,只有一个 可以直接执行的 Python 源程序

让选中的程序可以执行

2. 注释

  • 注释的作用
    使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性

2.1 单行注释(行注释)

  • # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用
print("hello python")  # 输出 `hello python`

为了保证代码的可读性,# 后面建议先添加一个空格,然后再编写相应的说明文字;为了保证代码的可读性,注释和代码之间 至少要有 两个空格。

2.2 多行注释(块注释)

  • 要在 Python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以)
"""
这是一个多行注释

在多行注释之间,可以写很多很多的内容……
""" 
print("hello python")

提示:

  1. 注释不是越多越好,对于一目了然的代码,不需要添加注释
  2. 对于 复杂的操作,应该在操作开始前写上若干行注释
  3. 对于 不是一目了然的代码,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码 2 个空格)
  4. 绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么

2.3 代码规范:

  • Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档,其中第 8 篇文档专门针对 Python 的代码格式 给出了建议,也就是俗称的 PEP 8
    • 文档地址:https://www.python.org/dev/peps/pep-0008/
    • 谷歌有对应的中文文档:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

3. 运算符

3.1 算数运算符

是完成基本的算术运算使用的符号,用来处理四则运算,而“+”和“*”还可以用来处理字符串。

运算符 描述 实例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
// 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4
% 取余数 返回除法的余数 9 % 2 = 1
** 又称次方、乘方,2 ** 3 = 8

3.2 比较(关系)运算符

运算符 描述
== 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True
!= 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True
> 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True
< 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True
>= 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True
<= 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True
  • Python 2.x 中判断 不等于 还可以使用 <> 运算符
  • != 在 Python 2.x 中同样可以用来判断 不等于

3.3 赋值运算符

  • 在 Python 中,使用 = 可以给变量赋值。在算术运算时,为了简化代码的编写,Python 还提供了一系列的 与 算术运算符 对应的 赋值运算符,注意:赋值运算符中间不能使用空格
运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
%= (余数)赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a

3.4 身份运算符

身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述:

运算符 描述 示例
is 判断两个标识符是不是引用同一个对象 x is y,类似 id(x) == id(y)
is not 判断两个标识符是不是引用不同对象 x is not y,类似 id(a) != id(b)

辨析

  • is 用于判断 两个变量引用的对象是否为同一个
  • == 用于判断 引用变量的 是否相等

3.5 成员运算符

Python成员运算符测试给定值是否为序列中的成员。 有两个成员运算符,如下所述:

运算符 描述
in 如果在指定的序列中找到一个变量的值,则返回true,否则返回false。
not in 如果在指定序列中找不到变量的值,则返回true,否则返回false。

3.6 逻辑运算符

运算符 逻辑表达式 描述
and x and y 只有 x 和 y 的值都为 True,才会返回 True
否则只要 x 或者 y 有一个值为 False,就返回 False
or x or y 只要 x 或者 y 有一个值为 True,就返回 True
只有 x 和 y 的值都为 False,才会返回 False
not not x 如果 x 为 True,返回 False
如果 x 为 False,返回 True

3.7 运算符优先级

  • 以下表格的算数优先级由高到最低顺序排列:
运算符 描述
** 幂 (最高优先级)
* / % // 乘、除、取余数、取整除
+ - 加法、减法
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

<补>程序执行原理

Python程序执行示意图

  1. 操作系统会首先让 CPUPython 解释器 的程序复制到 内存
  2. Python 解释器 根据语法规则,从上向下CPU 翻译 Python 程序中的代码
  3. CPU 负责执行翻译完成的代码

Python 的解释器有多大?

  • 执行以下终端命令可以查看 Python 解释器的大小
# 1. 确认解释器所在位置
$ which python

# 2. 查看 python 文件大小(只是一个软链接)
$ ls -lh /usr/bin/python

# 3. 查看具体文件大小
$ ls -lh /usr/bin/python2.7

4. 变量

4.1 变量定义

  • 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
  • 可以用 其他变量的计算结果 来定义变量
  • 变量名 只有在 第一次出现 才是 定义变量
变量名 = 值

使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用 print 函数
使用解释器执行,如果要输出变量的内容,必须要要使用 print 函数

4.2 变量的类型

  • Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要),Python 可以根据 = 等号右侧的值,自动推导出变量中存储数据的类型
  • 数据类型可以分为 数字型非数字型
    • 数字型
      • 整型 (int):Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。
      • 浮点型(float
      • 布尔型(bool) :真 True 非 0 数 —— 非零即真,假 False 0
      • 复数型 (complex):复数是由x + yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。
    • 非数字型:有些运算符还支持这些数据类型,详见4.4.5.3 运算符。
      • 字符串(str):加号(+)是字符串连接运算符,星号(*)是重复运算符。
      • 列表(list
      • 元组(tuple
      • 字典(dict

提示:在 Python 2.x 中,整数 根据保存数值的长度还分为:

  • int(整数)
  • long(长整数)
  • 使用 type 函数可以查看一个变量的类型
In [1]: type(name)

<补>不同类型变量之间的计算

  1. 数字型变量 之间可以直接计算
  • 在 Python 中,两个数字型变量是可以直接进行 算数运算的
  • 如果变量是 bool 型,在计算时
    • True 对应的数字是 1
    • False 对应的数字是 0
  1. 字符串变量 之间使用 + 拼接字符串
  2. 字符串变量 可以和 整数 使用 * 重复拼接相同的字符串
  3. 数字型变量字符串 之间 不能进行其他计算

<补>从键盘获取输入信息:input

  • 在 Python 中可以使用 input 函数从键盘等待用户的输入
  • 用户输入的 任何内容 Python 都认为是一个 字符串
字符串变量 = input("提示信息:")

<补>类型转换函数

函数 说明
int(x) 将 x 转换为一个整数
float(x) 将 x 转换到一个浮点数
str(x) 将对象x转换为字符串表示形式
tuple(s) 将s转换为元组
list(s) 将s转换为列表
price = float(input("请输入价格:"))

<补>格式化输出:print

  • 如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符
  • % 被称为 格式化操作符,专门用于处理字符串中的格式
    • 包含 % 的字符串,被称为 格式化字符串
    • % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
格式化字符 含义
%s 字符串
%d 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全
%f 浮点数,%.2f 表示小数点后只显示两位
%% 输出 %
  • 语法格式如下:
print("格式化字符串" % 变量1)

print("格式化字符串" % (变量1, 变量2...))

4.3 变量的命名

4.3.1 标识符和关键字

标示符就是程序员定义的 变量名函数名

  • 标示符可以由 字母下划线数字 组成
  • 不能以数字开头
  • 不能与关键字重名

关键字 就是在 Python 内部已经使用的标识符

  • 关键字 具有特殊的功能和含义
  • 开发者 不允许定义和关键字相同的名字的标识符
  • 通过以下命令可以查看 Python 中的关键字
In [1]: import keyword
In [2]: print(keyword.kwlist)

4.3.2 变量的命名规则

命名规则 可以被视为一种 惯例,并无绝对与强制
目的是为了 增加代码的识别和可读性
注意 Python 中的 标识符区分大小写的

  1. 在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格
  2. 在 Python 中,如果 变量名 需要由 二个 或 多个单词 组成时,可以按照以下方式命名:每个单词都使用小写字母,单词与单词之间使用 _下划线 连接,例如:first_namelast_nameqq_numberqq_password

当然,还有驼峰命名法:
小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写,例如:firstNamelastName
大驼峰式命名法,每一个单词的首字母都采用大写字母,例如:FirstNameLastNameCamelCase

4.4 高级变量类型

Python 中,所有 非数字型变量 都支持以下特点:
1. 都是一个 序列 sequence,也可以理解为 容器
2. 取值 []
3. 遍历 for in
4. 计算长度len最大/最小值max/min比较删除del
5. 链接 +重复 *
6. 切片

4.4.1 列表(list)

  • List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组,专门用于存储 一串 信息,列表用 [] 定义,数据 之间使用 , 分隔,列表的 索引0 开始。

索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
注意:从列表中取值时,如果 超出索引范围,程序会报错

name_list = ["zhangsan", "lisi", "wangwu"]

列表示意图

<补>del 关键字

  • 使用 del 关键字(delete) 同样可以删除列表中元素
  • del 关键字本质上是用来 将一个变量从内存中删除的
  • 如果使用 del 关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
In [1]: l = [1,2,3,4]
In [2]: del l[1]
In [3]: l[1]
Out[3]: 3

在日常开发中,要从列表删除数据,建议 使用列表提供的方法

<补>函数与方法

  • 函数 封装了独立功能,可以直接调用
函数名(参数)

函数需要死记硬背

  • 方法 和函数类似,同样是封装了独立的功能
  • 方法 需要通过 对象 来调用,表示针对这个 对象 要做的操作
对象.方法名(参数)

在变量后面输入 .

你可能感兴趣的:(Python3,python)