首页 > 编程问答 >Python - 检查签名注释是否属于特定类

Python - 检查签名注释是否属于特定类

时间:2024-07-23 16:12:46浏览次数:8  
标签:python python-typing

使用

for sig in inspect.signature.parameters.items():
    if isinstance(sig[1].annotation, inspect._empty):
        print("empty")

时,我从来没有让控制台说打印“空”。即使在 if 子句之前使用

print(sig[1].annotation)

时给出的输出是: <class 'inspect._empty'> 我也尝试过使用这样的字符串比较:

if sig[1].annotation == "<class 'inspect._empty'>":
    print("empty")

这里的问题出在哪里?


你几乎答对了!问题在于你试图将一个类型( inspect._empty )与它的字符串表示形式进行比较。

以下是修复方法:

你不应该将 sig[1].annotation 与字符串 " <class 'inspect._empty'> " 进行比较,而应该检查它是否是 inspect._empty 类型

以下是更新后的代码:

import inspect

def my_function(a: int, b, c: str = "default"):
    pass

for name, param in inspect.signature(my_function).parameters.items():
    if param.annotation is inspect._empty:
        print(f"参数 '{name}' 没有类型注释。")

在此代码中:

  • 我们使用 is 运算符来检查 param.annotation 是否与 inspect._empty 同一个 对象。
  • 我们遍历函数签名的参数并打印出那些没有类型提示的参数。

这种方法提供了更可靠和 Pythonic 的方式来检查空的类型注释。

标签:python,python-typing
From: 62010367

相关文章

  • 从代码调用 alembic 命令后,Python 记录器不再记录
    我在代码中使用alembic在应用程序启动时应用数据库迁移。我还使用Python的内置logginglib来登录终端。应用迁移后(或运行任何打印到alembic的命令),我的记录器停止工作。stdout代码:预期输出:importloggingimportalembic.commandfr......
  • python 使用 random模块生成随机测试数据
    前言python中可以使用random模块生成随机测试数据常用函数说明random.seed(a)设置初始化随机种子,可输出相同随机数序列;a取整数或浮点数,不设置时默认以系统时间为种子random.random()生成一个0.0到1.0之间的随机浮点数random.uniform(a,b)生成一个[a,b]之间......
  • Python 上债券的内部收益率
    在Excel中,有一个公式(IRR.Payment:https://support.microsoft.com/fr-fr/office/fonction-tri-paiements-de1242ec-6477-445b-b11b-a303ad9adc9d)计算债券的IRR。我正在尝试在python算法上重现这一点,以便能够在我的代码中计算它。我在网上找到了这段代码:importnumpy......
  • 使用Python连接ftps服务器时nlst返回错误
    我可以使用TotalCommander登录服务器:ftps://publishedprices.co.il用户名:“奥舍拉德”密码为空并带有lftp-uosherad:publishedprices.co.il但是当我尝试登录并使用Python获取文件列表时nlst函数返回超时代码:fromftplibimportFTP_TLS......
  • 在我的 python 代码中,我无法使用 slixmpp 连接到 Openfire 服务器
    在我的python代码中,我无法连接到Openfire服务器。我想连接到OpenFire服务器我的代码是importthreadingimporttkinterastkfromtkinterimportsimpledialog,scrolledtextimportjsonimportloggingimportasynciofromslixmppimportClientXMPPcla......
  • 如何在Python中获取字符的unicode?
    想要获取中文或越南语的汉名和日文字符的unicode我已经尝试过这些代码text="......
  • 三种语言实现计算逆序对的数量(C++/Python/Java)
    题目给定一个长度为......
  • python项目中__init__.py是什么文件有什么作用
    __init__.py 文件在Python项目中的作用主要是将目录标识为一个Python包。它在包的初始化过程中起到了重要作用。具体来说,__init__.py 文件有以下几个功能:1.标识包:-当一个目录中包含 __init__.py 文件时,这个目录就被视为一个Python包。这样,Python解释器就能够识别......
  • 从零开始构建你的第一个Python Web应用
    在本文中,我们将带领你从零开始构建一个简单的PythonWeb应用。不需要任何先验知识,我们会一步步地指导你完成设置、框架选择、代码编写到部署的整个过程。无论你是Web开发新手还是希望扩展技能的老手,这篇文章都将为你提供一个实践操作的起点。一、前言随着互联网技术的飞速......
  • Python中的global关键字是如何工作的?
    在Python中,global关键字扮演着特殊而重要的角色,它主要用于在函数内部声明全局变量。理解global关键字的工作原理,首先需要明确Python中变量作用域的概念,以及为什么需要global关键字。下面,我将详细解释global关键字的工作机制,包括其作用、使用场景、注意事项,以及它在Python编......