Day12+ Day13+Day14: python再认识(三合一)
python的IDE(Integrated Development Environment 集成开发环境)
例如PyCharm,但它本身无法执行python代码,执行代码是由python解释器负责。即python的不同版本,可以在官网下载。
Anaconda:组装 Python 常用包和环境在一起,开发者使用 Conda 命令,可以非常方便地安装各种 Python 包。
Conda 安装:安装 Anaconda 软件后,能够使用 Conda 命令下载。Anaconda 源,常用的清华、中科大镜像源。Conda 安装不仅能装 Python 相关的包,还能安装 C++ 相关的包。
pip 安装:也是一种类似于 Conda 安装的 Python 安装方法,用于从 Python Package Index 安装包的工具,只能安装 Python 相关的包。
Jupyter NoteBook
Jupyter NoteBook 是一个交互式笔记本,提供随时可运行代码的交互式环境。
安装jupyter拓展包 -- jupyter_contrib_nbextension扩展功能
3 个有用的插件:
- Autopep 8:安装 Autopep 8 库,实现自动格式化代码。
- Highlighter:选中的文字高亮显示。
- Hinterland:代码自动提示,无需按下 Tab 键。
IPython
IPython 是一个增强的可交互式 Python 编程工具。基于它衍生出的 Jupyter NoteBook,其 Python 内核正是 IPython。
IPython 提供便捷的 Shell 特性,命令历史查询机制,输出结果缓存功能。
安装:
D:\>pip install ipython
D:\>ipython
In [1]:
In [2]: quit
IPython 的一个主要使用场景,在拿不准某个函数使用时,可立即启动 ipython
验证。总比打开jupyter方便吧。
VS Code
全称为 Visual Studio Code,一款轻量级,但功能强大的源代码编辑器,跨 Windows、macOS 和 Linux。
调试编辑运行等,安装插件很方便
安装 Autopep8 插件,实现代码自动格式化;
PyCharm
PyCharm 是一款专业的 Python IDE 工具,官网:https://www.jetbrains.com/pycharm/
python强大的工具包满足多场景使用需求(8 个 Web、爬虫和打包相关的包和框架)
Django(https://www.djangoproject.com/)
Django 是最通用的 Web 开发框架之一
Flask(https://palletsprojects.com/p/flask/)
Flask 是一个轻量级的 WSGI Web 应用框架,适合搭建轻量级的 Web 应用程序
FastAPI
FastAPI 是一个现代、高性能 Web 框架,用于构建 APIs,基于 Python 3.6 及以上版本。
最大特点:快!性能极高,可与 Node.js、Go 媲美。
Requests(https://2.python-requests.org/en/master/)
Requests 生成、接受、解析一个 HTTP 请求,使用 Requests 做这些事情都非常简单。
lxml(https://lxml.de/)
lxml 是 Python 很好用的处理 XML 和 HTML 数据的库。
D:\>ipython Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32 bit (Intel)] Type 'copyright', 'credits' or 'license' for more information IPython 7.22.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: import requests ...: from lxml import etree ...: import pandas as pd ...: import re ...: url = 'http://www.weather.com.cn/weather1d/101010100.shtml#input' ...: with requests.get(url) as res: ...: content = res.content ...: html = etree.HTML(content) ...: In [2]: In [2]: location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()') ...: ...: temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()') In [3]: location Out[3]: ['香河', '涿州', '唐山', '沧州', '天津', '廊坊', '太原', '石家庄', '涿鹿', '张家口', '保定', '三河', '北京孔庙', '北京国子监', '中国地质博物馆', '月坛公园', '明城墙遗址公园', '北京市规划展览馆', '什刹海', '南锣鼓巷', '天坛公园', '北海公园', '景山公园', '北京海洋馆'] In [4]: temperature Out[4]: ['27/20°C', '28/22°C', '25/20°C', '28/20°C', '26/21°C', '28/21°C', '31/17°C', '31/22°C', '26/17°C', '25/16°C', '28/20°C', '27/21°C', '28/20°C', '28/20°C', '28/20°C', '28/19°C', '28/20°C', '27/18°C', '28/19°C', '28/19°C', '27/18°C', '28/19°C', '28/19°C', '28/20°C']
Pillow(https://pillow.readthedocs.io/en/stable/)
Pillow 是一个编辑图像的处理库。可用来创建复合图像、应用过滤器、修改透明度、转换图像文件类型等。
PyInstaller(http://www.pyinstaller.org/)
PyInstaller 能将一个应用程序打包为独立可执行的文件。比如 Windows 下打包为 EXE 文件。
Pydantic
FastAPI 基于 Pydantic,Pydantic 主要用来做类型强制检查。参数赋值,不符合类型要求,就会抛出异常。
对于 API 服务,支持类型检查非常有用,会让服务更加健壮,也会加快开发速度。开发者再也不用自己写一行一行的代码,去做类型检查。
例子:
from pydantic import ValidationError from datetime import datetime from typing import List from pydantic import BaseModel class User(BaseModel): id:int name='jack guo' signup_timestamp: datetime = None friends: List[int] = [] '''
观察到:
- id 要求必须为 int
- name 要求必须为 str,且有默认值
- signup_timestamp 要求为 datetime,默认值为 None
- friends 要求为 List,元素类型要求 int,默认值为 []
''' try: User(signup_timestamp='not datetime',friends=[1,2,3,'not number']) except ValidationError as e: print(e.json())
分析:
- id 没有默认值,按照预期会报缺失的异常
- signup_timestamp 被赋为非 datetime 类型值,按照预期会报异常
- friends 索引为 3 的元素被赋值为 str,按照预期也会报异常
执行代码,验证是否符合预期。执行结果显示,符合预期:
output: [ { "loc": [ "id" ], "msg": "field required", "type": "value_error.missing" }, { "loc": [ "signup_timestamp" ], "msg": "invalid datetime format", "type": "value_error.datetime" }, { "loc": [ "friends", 3 ], "msg": "value is not a valid integer", "type": "type_error.integer" } ]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2020-07-03 (01)群