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"
  }
]
复制代码

 

posted @   PiaYie  阅读(78)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)群
点击右上角即可分享
微信分享提示