python

python相关知识点

python入门

python入门

安装指导

注释

1
2
3
4
#这里是注释内容
"""
这里是注释内容
"""

多行文本一并打印:

1
2
3
4
print("""你好
世界
""")
#python中的每个print都会自动另起一行

变量不需要定义类型

次方

1
2
3**5#表示3的5次方
9**#9的平方

导入库和使用库

1
2
import math
math.函数名([参数])
  • 字符串 str
  • 整数 int
  • 浮点数 float
  • 布尔类型 bool
  • 空值类型 NoneType
1
2
3
4
s = "hello world"
len(s)#返回字符串的长度,这里是11
s[0]#取字符串第一个字符
type(变量名)#返回该变量的类型名

python的交互模式

区别与命令行模式,命令行模式是保存整个文件然后一行一行执行

交互模式是输入一行执行一行,关闭后代码全部消失。

交互模式可以不用print直接看到执行结果。

可以在下图位置打开python的交互模式,或者在终端输入python进入

image-20211218134815095

输入quit()或control+d可以退出交互模式。

用户输入

1
2
3
4
input("请输入:")#让用户输入,返回字符串类型
类型名(xxx)#将xxx转换为类型名类型
int("156")#将"156"字符串类型转换成156整数类型
str(156)#将156整数类型转换成"156"字符串类型

条件语句

1
2
3
4
5
6
7
  if [条件]:
[执行语句]
[执行语句]
else :
[执行语句]
[执行语句]
#语句可以不止一句,但每一行前面都要带有缩进,因为python会根据缩进来评断这行语句是归谁管

pybind11 是用来将c++的函数\类等封装为python模块的。从而在python中就可以调用C++的header-only的库。

https://chunleili.github.io/pybind11/first

python爬虫相关

简单案例:

1
2
3
4
5
6
7
8
from urllib.request import urlopen
url = "http://www.baidu.com"
resp = urlopen(url)
print(resp)
#写入到mybaidu.html文件
with open("mybaidu.html",mode="w") as f:
f.write(resp.read().decode("utf-8")) #读取到网页的页面源代码
print("over!")

requests库

需要安装requests库:pip install requests

1
2
3
4
5
6
7
8
9
import requests
query=input("请输入一个喜欢的明星:")
url=f'https://www.sogou.com/web?query={query}'
dic={
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
}
resp = requests.get(url,headers=dic)
print(resp)
print(resp.text)

图表库:Streamlit

PyAutoGUI python键鼠模拟库

pip命令详解

使用pip安装的程序,可以使用pip show xxx确认是否安装好了,如果bin文件夹没有添加到系统的PATH路径下,没法全局执行安装的可执行文件,那么可以通过python -m xxxx执行xxxx可执行文件

永久更换镜像源

更换为官方镜像源:pip config set global.index-url https://pypi.org/simple

不同版本的python通过python3.13,python3.10等指令可以直接调用

python vscode环境

需要的拓展

python拓展

代码检查,测试,调试,环境切换,一些重构等

python Extended

提供大量代码自动完成选项

python Docstring Generator

注释生成

Python Test Explorer for Visual Studio Code

python单元测试侧边栏显示

Python Preview

可视化调试过程

Jupyter

在VS Code中完美使用Jupyter Notebooks

Python Indent

纠正vscode里对python的自动缩进

python虚拟环境

维度 [venv](#Virtual Environment 模块) virtualenv conda pipenv poetry
推出时间 2016 (Python 3.3+) 2007 2012 2017 2018
依赖 Python 内置 需安装 独立发行版 需安装 需安装
包管理 配合 pip 配合 pip 自带包管理 整合 pip 自带包管理
锁定文件 environment.yml Pipfile.lock poetry.lock
依赖解析 有(较慢) 有(快速)
虚拟环境位置 项目内 可配置 集中存储 集中存储 集中存储
跨平台
活跃度 高(官方) 中(官方不再推荐)

Virtual Environment 模块

python3.3+内置的标准模块,用于创建虚拟环境

1
2
python3 -m venv .venv      # Linux/Mac
python -3.9 -m venv .venv # Windows 指定 Python 3.9
  • -m用于指定模块执行模式,相当于在代码中执行import venv

  • .venv 目标目录名称(可修改)

    1
    2
    3
    4
    5
    #下面是盘点一些约定俗成的命名
    .venv # 隐藏文件夹,最常见
    venv # 非隐藏,也很常见
    env # 简短版本
    project_env # 项目特定名称

会在指定目录下生成一个完成目录(以mac为例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.venv/
├── bin/ # 可执行文件
│ ├── activate # bash 激活脚本
│ ├── activate.csh # csh/tcsh 激活脚本
│ ├── activate.fish # fish 激活脚本
│ ├── python -> python3.x # Python 软链接
│ ├── pip # pip 脚本
│ └── pip3 # pip3 脚本
├── include/ # C 头文件
├── lib/ # 库文件
│ └── python3.x/
│ └── site-packages/ # 第三方包
├── pyvenv.cfg # 配置文件
└── .gitignore

其中包含一个pyvenv.cfg文件

1
2
3
4
5
6
7
home = /usr/bin                # 基础解释器位置
implementation = CPython # Python 实现
version_info = 3.9.0.final.0 # 版本信息
virtualenv = 20.0.0 # venv 版本
include-system-site-packages = false # 是否包含系统包
executable = /usr/bin/python3.9
command = /usr/bin/python3.9 -m venv .venv

核心原理

路径重定向

  • 激活时,将 $PATH%PATH%的开头设为虚拟环境的 bin/Scripts/
  • Python 会优先从虚拟环境的 site-packages查找包

隔离机制

1
2
3
4
5
6
7
8
# 激活前
import sys
print(sys.prefix) # 系统 Python 路径
print(sys.executable) # 系统 Python 解释器

# 激活后
print(sys.prefix) # .venv 路径
print(sys.executable) # .venv/bin/python

符号链接/副本

  • 创建轻量级的 Python 解释器副本
  • 在 Windows 上是真实副本(约 25MB)
  • 在 Unix 上是软链接

最佳实践

  1. 版本控制:始终将 .venv/加入 .gitignore
  2. 环境命名:使用 .venv保持一致性
  3. requirements.txt:每次安装包后更新
  4. 文档说明:在 README 中注明 Python 版本
  5. 跨平台考虑:注意路径分隔符差异
  6. IDE 集成:大部分 IDE 能自动检测虚拟环境

这个命令是现代 Python 开发的基石,掌握它能让你更好地管理项目依赖和环境隔离。