Python-typing: 类型标注与支持 Any类型

Python typing模块(类型标注)(type hints)(一) —— NewType & Callable可调/回调 & Union或 & Any & Optional Python typing模块(类型标注)(type hints)(一) —— (NewType & Callable可调/回调 & Union或 & Any & Optional) 阅读详情
AI摘要

本文详细探讨了Python中Any与object类型的区别与联系,解释了它们如何影响静态类型检查,以及在混合动态与静态类型代码时的作用。

Any docs

Any 是一种特殊的类型。静态类型检查器将所有类型视为与 Any 兼容,反之亦然, Any 也与所有类型相兼容。

这意味着可对类型为 Any 的值执行任何操作或方法调用,并将其赋值给任何变量:

from typing import Any

a = None    # type: Any
a = []      # OK
a = 2       # OK

s = ''      # type: str
s = a       # OK

def foo(item: Any) -> int:
    # Typechecks; 'item' could be any type,
    # and that type might have a 'bar' method
    item.bar()
    ...

需要注意的是,将 Any 类型的值赋值给另一个更具体的类型时,Python不会执行类型检查。例如,当把 a 赋值给 s 时,即使 s 被声明为 str 类型,在运行时接收到的是 int 值,静态类型检查器也不会报错。

此外,所有返回值无类型或形参无类型的函数将隐式地默认使用 Any 类型:

def legacy_parser(text):
    ...
    return data

# A static type checker will treat the above
# as having the same signature as:
def legacy_parser(text: Any) -> Any:
    ...
    return data

当需要混用动态类型和静态类型的代码时,上述行为可以让 Any 被用作 应急出口 。

Any 和 object 的行为对比。与 Any 相似,所有的类型都是 object 的子类型。然而不同于 Any,反之并不成立: object 不是 其他所有类型的子类型。

这意味着当一个值的类型是 object 的时候,类型检查器会拒绝对它的几乎所有的操作。把它赋值给一个指定了类型的变量(或者当作返回值)是一个类型错误。比如说:

def hash_a(item: object) -> int:
    # Fails; an object does not have a 'magic' method.
    item.magic()
    ...

def hash_b(item: Any) -> int:
    # Typechecks
    item.magic()
    ...

# Typechecks, since ints and strs are subclasses of object
hash_a(42)
hash_a("foo")

# Typechecks, since Any is compatible with all types
hash_b(42)
hash_b("foo")

使用 object 示意一个值可以类型安全地兼容任何类型。使用 Any 示意一个值地类型是动态定义的。

手把手教你在Keil/IAR中移植SEGGER_RTT组件(避坑指南+性能对比) 本文详细介绍了在Keil/IAR开发环境中移植SEGGER RTT调试组件的完整流程与优化技巧。通过对比传统串口调试,SEGGER RTT凭借零硬件占用、高速传输和双向交互等优势,显著提升嵌入式开发效率。文章包含配置步骤、性能调优方案及常见问题解决方案,是嵌入式开发者必备的实用指南。 阅读详情

相关推荐

铭飞MCMS源码部署

文章目录前言一、下载铭飞源码二、部署源码1.使用IDEA打开源码2.配置tomcat环境2.1下载tomcat并测试是否可以成功启动(此处不赘述)2.2在IDEA中安装tomcat环境并配置3.添加数据库,并配置3.1新建数据库3.2 导入sql配置三、启动测试 前言 铭飞MCMS基于IDEA、tomcat和mysql的环境搭建。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载铭飞源码 gitee:https://gitee.com/mingSoft/MCMS/releases(各种版本按需下

MARS_ZORO的博客 4066

Python - typing 模块 —— Any Type

前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 https://www.cnblogs.com/poloyy/p/15150315.html 类型别名 https://www.cnblogs.com/poloyy/p/15153883.html...

qq_33801641的博客 852

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

python内置模块之typing模块,类型提示

typing 是 Python 标准库中的一个模块,用于支持类型提示(Type Hints)。类型提示是一种在代码中指定变量、函数参数和返回值的类型的方法,它可以提供代码的可读性、可维护性和工具支持。

老衲爱洗头的博客 2385

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

量化策略分享之ST股弱转强,回测年化123%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强,弱转强的认定标准是前日涨停但昨日不涨停,昨日收盘价大于前一日最低价,昨日收盘价大于10日线,昨日成交量大于前一日的成交量但小于前一日成交量的10倍,股价大于1;这类股票强势,有资金介入,能获得超额收益。

qq_29301281的博客 1268

【python】python指南(四):typing静态类型注解综述

本文使用简单的例子讲解函数注解的基本用法,后面几篇会讲一些常用的注解类型。

人工智能领域博客 958

Arduino四足开源机器猫-Opencat(导航贴)

本内容由我和小伙伴共同编写,未经授权,谢绝转载! 1.项目介绍 2.组装调试教程 (一)Opencat-F (1)资料地址(包含程序代码&&3D打印图纸): 链接:https://pan.baidu.com/s/1AcVA5jSiOSzRKqEQAomrTA 提取码:szfx (2) (二)Opencat-B (1)组装调试 (2)组装调试注意事项 (3)添加新技能 3.编程 ...

qqliuzhitong的博客 4172

chatgpt赋能Python-python_怎么赋值

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

「 虚幻私塾」 468

YOLO26全新改进 | 最全损失函数改进篇 | SIoU 、WIoU、GIoU、DIoU、EIOU、CIoU, InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

🔥本文详细介绍了如何修改YOLO26中的损失函数。首先提供了完整的损失函数核心代码,包括WIoU_Scale类和各种IoU计算方法。然后分三步指导修改:1)替换metrics.py中的bbox_iou方法;2)修改loss.py中的iou计算代码;3)更新tal.py中的相关代码。文中特别强调了修改损失函数应在模型结构调整后使用,并提供了多种IoU损失函数的参数配置建议,包括SIoU、WIoU、GIoU等,可根据实际需求灵活选择搭配使用。

Ai缝合怪、助力小伙伴高效发论文 450

手把手教你学Simulink——基于经典滤波器设计的场景:低通滤波器(LPF)的设计与频率响应仿真

滤波器是信号处理领域中非常重要的组件,用于去除不需要的频率成分或者提取有用的频率信息。低通滤波器(Low-Pass Filter, LPF)允许低于某个特定截止频率的信号通过,同时衰减高于该截止频率的信号。在本教程中,我们将学习如何使用设计一个简单的模拟低通滤波器,并对其频率响应进行仿真分析。本文介绍了如何使用设计一个简单的模拟低通滤波器,并通过仿真展示了其应用效果。通过这样的实践,您不仅能够加深对滤波器工作原理的理解,还能掌握利用Simulink进行滤波器设计与仿真的基本技能。

MHD0815的博客 5720

Python数据类型(五):序列操作(all、any、sort、sorted、reserver

sortedTuple=sorted(tup,reverse=True) # 元组类型排序后返回List类型。print(list(enumerate(list1,start=4))) #索引值从4开始。sortedList2=sorted(li,reverse=True) # 降序排序。

2401_84003941的博客 829

基于ESP32的智能无线广播系统开发博客

通过本项目的开发,我们成功地实现了基于ESP32的智能无线广播系统。该系统不仅具备传统广播的功能,还实现了通过Wi-Fi无线传输音频、实时广播和智能控制等多种先进功能。未来,随着技术的进一步发展,我们还可以扩展更多功能,如智能推荐广播内容、支持语音识别和控制等。希望本项目能够为嵌入式开发人员提供一些思路和参考,帮助大家在实际开发中更好地应用ESP32平台,开发出更加智能和实用的无线广播系统。

2201_76125393的博客 423

Python 类型提示模块 typing 详解

Python的typing模块提供了类型提示功能,用于标注变量、函数参数和返回值的预期类型。主要作用包括提高代码可读性、支持IDE静态检查以及促进团队协作。基础用法涵盖变量类型标注、函数参数/返回值标注,以及Optional、Union、Any等常用类型。高级功能如TypedDict、Literal适合大型项目。示例展示了一个类型标注完整的学生成绩管理系统,演示了Dict、List、Optional等类型在实际代码中的应用。类型提示不影响运行时行为,仅作为开发辅助工具。

尽日寻春不见春,芒鞋踏遍陇头云。归来笑拈梅花嗅,春在枝头已十分。 844

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python类型提示(typing)详解与实战应用

类型系统是现代编程语言的核心概念,通过静态类型检查可以在编译期发现潜在错误。Python作为动态语言,通过typing模块实现了渐进式类型提示,既保留了动态特性又获得了类型安全优势。其核心原理是基于PEP 484的类型注解语法,配合mypy等工具实现静态验证。在工程实践中,类型提示能提升代码可维护性65%、减少类型相关bug,特别适合大型项目与团队协作场景。本文以Python typing模块为例,详解基础类型标注、泛型容器、Protocol等高级特性,并演示如何构建类型安全的数据库操作层。通过Option

weixin_30582943的博客 215

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python 标准库之 typing (类型标注)

PEP 3107引入了功能注释的语法,PEP 484 加入了类型检查 标准库 typing 为类型提示指定的运行时提供支持,包含类型有Any,Union, Tuple,Callable,TypeVar,和 Generic。 示例: def f(a: str, b:int) -> str: return a * b 但是,Python运行时不强制执行函数和变量类型注释。使用类型检查...

Jairo的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python Any类型注解(Ptyhon typing.Any、Python类型提示、万能类型提示、typing模块、Any陷阱、# type: ignore)

AnyAny是Python类型提示生态中的重要工具,但它绝不是“类型提示的终点”。真正的类型安全,源于对数据流动的清晰理解。当你在代码中看到Any时,问问自己:“这个类型是否真的无法确定?还是我还没想清楚?用好Any,你能让类型检查器真正成为代码质量的守护者,而不是被它“绕过”的借口。📌小贴士:在项目中搜索或Any,能快速定位需要优化的代码。(别让 Any 成为你的“类型提示拖延症”)延伸阅读Python官方文档:Typing Modulemypy 官方文档:Any Type。

Dontla的博客 1380

yuzu Switch 模拟器安装教程:密钥配置到首次启动半小时搞定

yuzu 是一款用 C++ 写的任天堂 Switch 模拟器安装教程的主角:它能把卡带和数字版游戏搬上 Windows、Linux、Android 三端。这篇带你从"没听过"走到"第一个游戏跑起来",顺利的话半小时。适合终端用得熟、装过 apt 或 Homebrew 级别东西的人;显卡连 Vulkan 1.1 都过不了的机器,建议先读完再决定要不要动手。 ## 先过一遍筛子 | 档位 | 处理

gitblog_00079的博客 500

python代码类型注解(typing)

python代码类型注解(typing)

IT之一小佬的博客 4281

python3 类型标注_Python类型标注

机器学习越来越火,大量的机器学习包都支持Python,导致了Python近几年非常火爆,入手门槛低,编程简单,概念非常少。越来越多的新手小白加入到Python编程。Python虽然简单,但也带来很多问题。尤其是弱类型一直被诟病,平时在写代码时,经常也会模糊参数的类型,导致debug难度增加。自从Python3.5以来,发布了typing包,推荐标注类型,并且IDE会检查类型,让Python看起来有...

weixin_42518480的博客 768

python进阶(21)typing模块--类型提示支持

typing介绍   Python是一门弱类型的语言,很多时候我们可能不清楚函数参数的类型或者返回值的类型,这样会导致我们在写完代码一段时间后回过头再看代码,忘记了自己写的函数需要传什么类型的参数,返回什么类型的结果,这样就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题 注意:typing模块只有在python3.5以上的版本中才可以使用,pycharm目前...

weixin_43880991的博客 781

python中的typing_python中typing模块使用

简介​ Python是一门弱类型的语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题。​ Python 运行时并不强制标注函数和变量类型。类型标注可被用于第三方工具,比如类型检查器...

weixin_39535349的博客 3138

Python 学会typing的类型注解面向泛型编程

一文通晓Python的typing模块,学会优雅标记类型注解,为泛型编程奠定坚实基础,彻底告别鸭子类型的困扰,文中更有各中类型注解示例。

weixin_54217348的博客 1501

NumPy 类型标注完全指南:numpy.typing 模块的 ArrayLike、DTypeLike 与 NDArray 深度解析

本文基于 NumPy 官方文档 [doc/source/reference/typing.rst](https://link.gitcode.com/i/35d84c10ec12d1ae9ff622131dab9493) 及其背后的 [numpy/typing/__init__.py](https://link.gitcode.com/i/8cdb2a9c4968dc0291ded7333fcb2

gitblog_00675的博客 817

KBEngine 内置 Python 的 typing 模块详解:从类型别名到泛型的完整实战指南

本文以 KBEngine 开源项目内置的 Python 标准库文档 [typing.rst](https://link.gitcode.com/i/6f05487547725951ef67e0d2b75c9ee9) 为蓝本,系统讲解 Python 类型提示(Type Hints)体系——从 `Any`、`Union`、`Tuple`、`Callable` 等基础类型,到 `TypeVar`、`Ge

gitblog_00039的博客 949

list所有元素相加 python_Python类型标注

机器学习越来越火,大量的机器学习包都支持Python,导致了Python近几年非常火爆,入手门槛低,编程简单,概念非常少。越来越多的新手小白加入到Python编程。Python虽然简单,但也带来很多问题。尤其是弱类型一直被诟病,平时在写代码时,经常也会模糊参数的类型,导致debug难度增加。自从Python3.5以来,发布了typing包,推荐标注类型,并且IDE会检查类型,让Python看起来有...

weixin_39634443的博客 841
上一篇: Python-pythonic积累
下一篇: Python-如何测试异步数据库代码
G____G
博客等级 码龄10年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值