本文是基于黑马程序员2018年的Python基础班的内容编写的,以2018年的资料为蓝本,2016年的资料为补充,还参考了一些网上的教程,旨在更好地总结Python基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点。学一门语言贵在坚持用它,不用就淡忘了,而记录下一篇文章也有助于日后快速回忆。全文分为两大部分,分别是Python基础语法和面向对象。
第一部分 Python基础语法
Python 的创始人为吉多·范罗苏姆(Guido van Rossum)。
Python 的设计目标:
- 一门简单直观的语言并与主要竞争者一样强大
- 开源,以便任何人都可以为它做贡献
- 代码像纯英语那样容易理解
- 适用于短期开发的日常任务
Python 的设计哲学:
- 优雅、明确、简单
Python 开发者的哲学是:用一种方法,最好是只有一种方法来做一件事
Python 是完全面向对象的语言,在 Python 中一切皆对象。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把这部分程序用
C
或C++
编写,然后在Python
程序中使用它们。
执行 Python 程序的三种方式:
解释器、交互式运行、IDE运行
Python 是一个格式非常严格的程序设计语言。
python 2.x 默认不支持中文。
ASCII
字符只包含256
个字符,不支持中文
为了照顾现有的程序,官方提供了一个过渡版本 —— Python 2.6。
提示:如果开发时,无法立即使用 Python 3.0(还有极少的第三方库不支持 3.0 的语法),建议
- 先使用
Python 3.0
版本进行开发- 然后使用
Python 2.6
、Python 2.7
来执行,并且做一些兼容性的处理
IPython 是一个 python 的 交互式 shell,比默认的 python shell
好用得多,它支持 bash shell
命令,适合于学习/验证 Python 语法或者局部代码。
集成开发环境(IDE
,Integrated Development Environment)—— 集成了开发软件需要的所有工具,一般包括以下工具:
PyCharm 是 Python 的一款非常优秀的集成开发环境
PyCharm运行工具栏
PyCharm 的 配置信息 是保存在 用户家目录下 的 .PyCharmxxxx.x
目录下的,xxxx.x
表示当前使用的 PyCharm 的版本号
1.3.1 恢复 PyCharm 的初始设置:
$ rm -r ~/.PyCharm2016.3
1.3.2 PyCharm 安装和启动步骤:
$ tar -zxvf pycharm-professional-2017.1.3.tar.gz
/opt
目录下,可以方便其他用户使用
/opt
目录用户存放给主机额外安装的软件
$ sudo mv pycharm-2017.1.3/ /opt/
$ cd /opt/pycharm-2017.1.3/bin
$ ./pycharm.sh
1.3.3 设置启动图标
Create the entry for all users
/usr/share/applications/jetbrains-pycharm.desktop
在
ubuntu
中,应用程序启动的快捷方式通常都保存在/usr/share/applications
目录下
1.3.4 卸载之前版本的 PyCharm
要卸载 PyCharm 只需要做以下两步工作:
$ sudo rm -r /opt/pycharm-2016.3.1/
$ rm -r ~/.PyCharm2016.3/
如果不再使用 PyCharm 还需要将
/usr/share/applications/
下的jetbrains-pycharm.desktop
删掉
PyCharm
中,要想让哪一个 Python
程序能够执行,必须首先通过 鼠标右键的方式执行 一下让选中的程序可以执行
#
开头,#
右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用print("hello python") # 输出 `hello python`
为了保证代码的可读性,
#
后面建议先添加一个空格,然后再编写相应的说明文字;为了保证代码的可读性,注释和代码之间 至少要有 两个空格。
"""
这是一个多行注释
在多行注释之间,可以写很多很多的内容……
"""
print("hello python")
提示:
Python
官方提供有一系列 PEP(Python Enhancement Proposals) 文档,其中第 8 篇文档专门针对 Python 的代码格式 给出了建议,也就是俗称的 PEP 8:
是完成基本的算术运算使用的符号,用来处理四则运算,而“+”和“*”还可以用来处理字符串。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 20 = 30 |
- | 减 | 10 - 20 = -10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
// | 取整除 | 返回除法的整数部分(商) 9 // 2 输出结果 4 |
% | 取余数 | 返回除法的余数 9 % 2 = 1 |
** | 幂 | 又称次方、乘方,2 ** 3 = 8 |
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True |
!= | 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True |
> | 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True |
< | 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True |
>= | 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True |
<= | 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True |
- Python 2.x 中判断 不等于 还可以使用
<>
运算符!=
在 Python 2.x 中同样可以用来判断 不等于
=
可以给变量赋值。在算术运算时,为了简化代码的编写,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 |
身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述:
运算符 | 描述 | 示例 |
---|---|---|
is | 判断两个标识符是不是引用同一个对象 | x is y,类似 id(x) == id(y) |
is not | 判断两个标识符是不是引用不同对象 | x is not y,类似 id(a) != id(b) |
辨析
Python成员运算符测试给定值是否为序列中的成员。 有两个成员运算符,如下所述:
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到一个变量的值,则返回true,否则返回false。 |
not in | 如果在指定序列中找不到变量的值,则返回true,否则返回false。 |
运算符 | 逻辑表达式 | 描述 |
---|---|---|
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 |
运算符 | 描述 |
---|---|
** | 幂 (最高优先级) |
* / % // | 乘、除、取余数、取整除 |
+ - | 加法、减法 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
Python程序执行示意图
Python 的解释器有多大?
# 1. 确认解释器所在位置
$ which python
# 2. 查看 python 文件大小(只是一个软链接)
$ ls -lh /usr/bin/python
# 3. 查看具体文件大小
$ ls -lh /usr/bin/python2.7
变量名 = 值
使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用
使用解释器执行,如果要输出变量的内容,必须要要使用
Python
中定义变量是 不需要指定类型(在其他很多高级语言中都需要),Python 可以根据 =
等号右侧的值,自动推导出变量中存储数据的类型int
):Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。float
)bool
) :真 True
非 0 数
—— 非零即真,假 False
0
。complex
):复数是由x + yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。str
):加号(+
)是字符串连接运算符,星号(*
)是重复运算符。list
)tuple
)dict
)提示:在 Python 2.x 中,整数 根据保存数值的长度还分为:
int
(整数)long
(长整数)
type
函数可以查看一个变量的类型In [1]: type(name)
<补>不同类型变量之间的计算
bool
型,在计算时
True
对应的数字是 1
False
对应的数字是 0
+
拼接字符串*
重复拼接相同的字符串<补>从键盘获取输入信息:input
input
函数从键盘等待用户的输入字符串变量 = 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.1 标识符和关键字
标示符就是程序员定义的 变量名、函数名
- 标示符可以由 字母、下划线 和 数字 组成
- 不能以数字开头
- 不能与关键字重名
关键字 就是在
Python
内部已经使用的标识符
- 关键字 具有特殊的功能和含义
- 开发者 不允许定义和关键字相同的名字的标识符
- 通过以下命令可以查看
Python
中的关键字In [1]: import keyword In [2]: print(keyword.kwlist)
4.3.2 变量的命名规则
命名规则 可以被视为一种 惯例,并无绝对与强制
目的是为了 增加代码的识别和可读性
注意Python
中的 标识符 是 区分大小写的
=
的左右应该各保留一个空格_
下划线 连接,例如:first_name
、last_name
、qq_number
、qq_password
。当然,还有驼峰命名法:
小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写,例如:firstName
、lastName
。
大驼峰式命名法,每一个单词的首字母都采用大写字母,例如:FirstName
、LastName
、CamelCase
。
在 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
在日常开发中,要从列表删除数据,建议 使用列表提供的方法
<补>函数与方法
函数名(参数)
函数需要死记硬背
对象.方法名(参数)
在变量后面输入
.