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 示意一个值地类型是动态定义的。

03 Aras Innovator二次开发-服务端方法(二) Aras Innovator二次开发-服务端方法书写 阅读详情

相关推荐

把“思考”塞进 1 KB:我用纯 C 语言给单片机手搓了一个微型 Transformer 推理引擎

摘要:本文探讨了在64KB SRAM的MCU(如STM32H743)上部署精简Transformer模型的技术方案。通过将6层Transformer压缩至1层(隐藏维度128)、4-bit KV-Cache量化等优化手段,实现了240KB Flash占用和59KB RAM峰值,推理延迟184ms(400MHz Cortex-M7),准确率96.1%。关键创新包括:手工优化矩阵乘(CMSIS-NN)、查表法Softmax/LayerNorm、权重按Tile重排提升Cache命中率(60%→94%)。

qq_74383080的博客 2923

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

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 569

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

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

老衲爱洗头的博客 2385

在C++中,NULL和nullptr有什么区别?

这两个定义导致了冲突,C++中的NULL如果和C语言一样也是(void *)0指针,而C++不允许void*隐式转换成其它指针类型,那NULL就无法表示空指针了。因此,使用 nullptr可以增加代码的清晰性,避免类型安全问题。即使在混合C++和C代码时,nullptr也提供了一个明确无误的空指针表示,达到兼容的目的。C++11 引入 nullptr 彻底解决了这些问题,提高语言的安全性、清晰性和现代性。在了解NULL和nullptr背后的故事之后,相信大家以后再也不会用NULL了。

hebhljdx的博客 678

CCS软件仿真插件移植避坑指南:从CCS5.5到7.4的完整流程

本文详细介绍了将CCS软件仿真插件从CCS5.5迁移至CCS7.4的完整流程与避坑指南。针对TMS320F28335等C2000系列芯片,重点解析了仿真核心文件、配置数据库、连接定义及驱动文件的移植步骤,并通过两个实战Demo验证了移植后仿真环境的可用性,帮助开发者在无硬件条件下继续高效进行算法验证与调试。

defi6farmer的博客 460

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

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

人工智能领域博客 958

Win11专业版破解RDP限制:实现多用户远程桌面协同办公

本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。

weixin_33806300的博客 467

chatgpt赋能Python-python_怎么赋值

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

「 虚幻私塾」 468

一次HTTP完整得请求过程

一次HTTP完整的请求过程 一,大致流程: 根据域名和DNS解析到服务器的IP地址(DNS+CDN) 通过ARP协议获得IP地址对应的物理机器得MAC地址 浏览器对服务器发起三次握手 建立TCP连接后发起HTTP请求报文 服务器响应HTTP请求,将响应报文返回浏览器 短连接情况下,请求结束通过TCP四次挥手关闭连接,长连接在没有访问服务器得若干时间后,进行连接关闭 浏览器得到响应信...

qq_40760617的博客 344

Unet++改进33:添加ConvolutionalGLU(2024最新改进方法)|紧凑的网络结构和高效的运算

由于残差连接的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉变形模型往往不能形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,在本文中,我们提出了聚合注意力,这是一种基于仿生设计的令牌混合器,它模拟生物中央凹视觉和连续眼运动,同时使特征映射上的每个令牌具有全局感知。此外,我们结合了可学习的令牌,与传统的查询和键交互,这进一步多样化了亲和矩阵的生成,而不仅仅依赖于查询和键之间的相似性。我们的方法不依赖于堆叠进行信息交换,从而有效地避免了深度退化,实现了自然的视觉感知。

AIcurator的博客 684

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

vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)

vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK

✅ 精选推荐文章 6366

Python 类型提示模块 typing 详解

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

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

weixin_30582943的博客 215

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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、付费专栏及课程。

余额充值