写在前面
关于Python,是我除Shell外学习的第一门编程语言,是我的入门语言。而Python的所有笔记均为2021年记录,距我写下这篇文章(2022-11-18)已经过去整整一年。这一年间,我用Python编写了爬虫、自动化测试及各类监控脚本,也学习了强类型语言诸如Go,两相对比发现编程最重要的还是思想,语言只是实现思想的工具。Python系列的文章也仅限于自我记录,不具备对外教学的水平。
简介
解释器
计算机不能直接理解任何除机器语言外的语言,必须要将程序员所便编写的程序翻译成机器语言计算机才能执行。将其他语言翻译成机器语言的工具,被称为编译器。
编译器翻译的方式有两种,一种是编译,另一种是翻译。两种方式之间的区别在于翻译时间点的不同。当编译器以解释方式运行的时候,也称之为解释器。
编译型语言:统一编译,执行效率高,但不支持跨平台,例如Java
解释型语言:逐行解释执行,效率相对低,但支持跨平台,例如Python
Python的设计目标
- 一门简单直观的语言并与主要竞争者一样强大;
- 开源以便任何人都可以为它做贡献;
- 代码像纯英语那样容易理解;
- 适用于短期开发的日常任务;
设计哲学(优雅、明确、简单)
- 用一种方法,最好是只用一种方法来做一件事;
- 如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法;
Python的特点
- Python是完全面向对象的语言;
- 函数、模块、数字、字符串都是对象,在Python中一切皆对象;
- 完全支持继承、重载、多重继承;
- 支持重载运算符,也支持泛型设计;
- Python拥有一个强大的标准库,Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能;
- Python社区提供了大量的第三方模块,使用方式与标准库类似。他们的功能覆盖科学计算、人工智能、机器学习、web开发、数据库接口、图形系统等多个领域;
面向对象的思维方式
- 面向对象是一种思维方式,也是一门程序设计艺术;
- 要解决一个问题,首先考虑由谁(对象)来做,怎么做事情是谁(对象)的职责,最后把事情做好就行;
- 要解决复杂的问题,就可以找多个不同的对象,各司其职,共同实现,最终完成需求;
优缺点
- 优点:简单、易学;免费、开源;面向对象;丰富的库;可扩展性(希望运行更快或者算法不公开);
- 缺点:运行速度较慢;
Python是动态语言,变量赋值时不会强制声明类型,且能随时重新赋值。
第一个程序
python2默认不支持中文,python3默认支持中文(新开发的程序建议使用python3版本语法);
print("hello world") #第一个函数
print python test.py #执行python脚本,python脚本的后缀为.py
集成开发环境
集成开发环境(IDE,integrated Development Environment)集成了开发软件需要的所有工具,一般包括以下工具:
- 图形用户界面;
- 代码编辑器(支持代码补全、自动缩进);
- 编译器、解释器;
- 调试器(断点、单步执行)
Python开发推荐使用两种IDE工具(pycharm和vscode,若有其他语言需求时建议使用vscode)
删除pycharm的配置信息目录即可恢复初始设置;因为启动pycharm时,会在家目录下创建一个.PyCharmxxx
的隐藏目录
项目所保存的目录包含一个.idea的目录,该目录保存该项目所有的配置文件,例如解释器版本、项目包含的文件等等,使用pycharm打开该项目会自动生成该目录。
注释
print('1') # 单行注释,在代码后添加两个空格,在#后添加一个空格
# 多行注释
print('1')
""""""
多行注释 这边全部都是注释
""""""
print('2')
算数运算符
// | 取整除 | 例如9 // 2 = 4 |
---|---|---|
% | 取余数 | 例如9 % 2 = 1、9 % 3 = 0 |
** | 幂 | 次方或者乘方,例如8 ** 2 = 64、8 ** 3 = 512 |
* 运算符还可用于字符串,例如"对不起" * 100
赋值运算符
除非特殊需求,否则循环计数都从0开始。
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 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,具体可看算术运算符 |
变量的基本使用
定义
变量名只有在第一次出现时才是定义变量。多次调用只能说明对该变量多次赋值。
类型
定义变量时,不需要指定变量的类型;在运行时,Python解释器会根据语句等号右侧的数据自动推导出变量中保存数据的类型;利用单步调试确认变量中数据的类型;
name = '豪锐' # str表示字符串类型
age = 23 # int表示整数类型
gender = True # bool表示布尔类型,'真'还是'假'
height = 1.64 # float表示浮点数类型
命名
标识符
函数名称需符合标识符的命名规范;推荐默认使用驼峰命名法。
- 标识符可以由字母、下划线和数字组成;
- 不能以数字开头;
- 不能与关键字重名;
关键字
- python内部已经使用的标识符;
- 具有特殊的功能和含义;
- 不允许定义和关键字相同名字的标识符;
命令
type() # 查看变量的类型
input("请输入密码:") # input函数实现键盘输入
请输入密码:123456 # 输入123456,任何内容都认为是一个字符串
Out '123456' # 输出,常用作变量赋值;例如password = input("请输入密码:")
int(x) # 转换为int类型,可配合input使用; float()也是
格式化字符(在输出文字信息的同时,输出变量)
格式化字符 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制整数,%06d表示输出的整数包含的位数,不足的地方用0补全 |
%f | 浮点数,%.2f表示小数点后只显示两位 |
%% | 输出% |
name = "戴豪锐"
age = 22.255
number = 1
life = 0.35
print("我的名字叫%s,%.2f岁,学号是%06d,已经走完人生%.2f%%的路程,请多多关照" % (name,age,number,(life*100)))
我的名字叫戴豪锐,22.25岁,学号是000001,已经走完人生35.00%的路程,请多多关照 #运行输出
制表符的功能是在不使用表格的情况下在垂直方向按列对齐文本
转义字符 | 描述 |
---|---|
\ | 反斜杠 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
包含三个知识点
- 使用
%
当作变量,在字符串后使用%
将变量赋进字符串中; - 多个变量使用
()
包含,且用,
进行分割; - 格式化字符中的数字,其中
%xd
表示包含的位数;%.xf
表示显示的小数位数;
虚拟环境
虚拟环境有自己的安装目录,且不与其他虚拟环境共享库。venv
在python3.3
以上版本默认可用。
虚拟环境文档:https://blog.csdn.net/qq_44643484/article/details/123251333
虚拟环境管理pipenv使用文档:https://www.cnblogs.com/xingxia/p/python_pipenv.html
虚拟环境管理pipenv使用文档:https://zhuanlan.zhihu.com/p/349919589
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/ # 通用源
常用的pipenv管理模块和包命令
pip install pipenv # 安装
pipenv install # 创建虚拟环境
# 在虚拟环境中安装模块或者包,在安装时指定 --dev参数,则只安装到[dev-package]中
pipenv install --dev request # 如果没有指定 --dev ,那么就会安装到 [package]中
pipenv uninstall [package name] # 卸载虚拟环境模块包
pipenv graph # 查看安装包及依赖关系
pipenv lock -r --dev > requirements.txt
pip freeze > requirements.txt # 生成requirements.txt 文件
# 通过requestments.txt 安装环境 pipenv install -r requirements.txt
# 虚拟环境安装requirements.txt列出的所有安装包
python -m pip install -r requirements.txt # 安装requirements.txt列出的的所有软件包
pipenv --rm # 删除虚拟环境
pipenv --where # 列出本地工程路径
pipenv --venv # 列出虚拟环境路径
pipenv --py # 列出虚拟环境的Python可执行文件
pipenv lock # 生成lock文件
pipenv shell # 激活虚拟环境
exit # 退出虚拟环境