Python 参数类型和函数方法的注解

这篇具有很好参考价值的文章主要介绍了Python 参数类型和函数方法的注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python的注解(Annotations)是在函数定义中给参数和返回值添加元数据的一种方式。注解不会影响程序的运行结果,但可以为函数的调用者和维护者提供更多的信息和文档。

下面以几个简单的例子来说明Python的注解和注解函数运行时参数的传递过程。

例子1:给函数参数添加注解
下面是一个简单的函数,用来计算两个数的和:

def add(a, b):
    return a + b



我们可以使用注解来说明参数的类型:

def add(a: int, b: int) -> int:
    return a + b



在这个例子中,注解a: int和b: int表示a和b应该是整数类型。而注解-> int表示函数的返回值应该是整数类型。这样做的好处是可以帮助调用者理解这个函数应该传入什么类型的参数,以及返回值的类型是什么。

当调用add函数时,可以传入任意类型的参数,Python不会检查参数的类型是否与注解匹配,但我们可以通过__annotations__属性来查看函数的注解信息:

>>> add.__annotations__

{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

例子2:给函数返回值添加注解
我们可以给函数的返回值添加注解,来说明函数应该返回什么类型的值:

def add(a: int, b: int) -> int:
    return a + b



在这个例子中,注解-> int表示函数的返回值应该是整数类型。这样做的好处是可以帮助调用者理解这个函数应该返回什么类型的值。

当调用add函数时,返回的值可以是任意类型,Python不会检查返回值的类型是否与注解匹配。但我们可以通过__annotations__属性来查看函数的注解信息:

>>> add.__annotations__

{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

例子3:注解函数的参数
有时候,我们需要在函数执行前或执行后对参数进行检查或处理。可以使用注解来实现这个功能:

def check_args(func):
    def wrapper(*args: int, **kwargs: int):
        for arg in args:
            if not isinstance(arg, int):
                raise TypeError(f"{arg} should be int")
        for arg in kwargs.values():
            if not isinstance(arg, int):
                raise TypeError(f"{arg} should be int")
        return func(*args, **kwargs)
    return wrapper

@check_args
def add(a, b):
    return a + b



在这个例子中,我们定义了一个名为check_args的装饰器函数,它接受一个函数作为参数,并返回一个新的函数wrapper

新函数wrapper使用了注解args: int和**kwargs: int,表示args和**kwargs中的所有参数都应该是整数类型。

在wrapper函数中,我们使用了循环来遍历args和kwargs中的所有参数,并检查它们的类型是否为整数。如果发现有不是整数类型的参数,就抛出一个TypeError异常。

最后,我们调用原函数func并将args和kwargs作为参数传递给它。这样就保证了函数执行前所有参数都是整数类型。

当我们使用@check_args装饰器来装饰add函数时,实际上是将add函数替换为wrapper函数。这样,在调用add函数时,wrapper函数会先执行参数检查,然后再调用原函数add。

下面是一个使用check_args装饰器的例子:

>>> add(1, 2)
3

>>> add(1, '2')

Traceback (most recent call last):

TypeError: 2 should be int
在这个例子中,我们调用add(1, 2)时,由于参数都是整数类型,因此可以正常计算并返回结果。而当我们调用add(1, ‘2’)时,由于第二个参数不是整数类型,因此会抛出一个TypeError异常。
 文章来源地址https://www.toymoban.com/news/detail-801000.html

到了这里,关于Python 参数类型和函数方法的注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )

    除了使用 变量: 类型 的语法格式 设置 类型注解 之外 , 还可以 使用 注释语法 为 Python 变量 设置 类型注解 , 语法如下 : 类型注解 不是 强制性的 , 只是提示性的 ; 不按照 类型注解进行 赋值 , 代码也不会报错 ; 为 基础类型变量 设置 \\\" 类型注解 \\\" : 为 类 的 对象类型变量 设置

    2024年02月17日
    浏览(38)
  • 🔥🔥Java开发者的Python快速进修指南:函数进阶

    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。 在Python中,匿名函数

    2024年02月05日
    浏览(57)
  • 🔥🔥Java开发者的Python快速进修指南:函数基础

    话不多说,今天我们要介绍的是函数。本系列文章追求短而精,今天我们将重点讨论函数以及与Java方法的区别。与Java方法不同,函数不需要像Java方法一样讲究修饰符等其他特性,它只需要使用\\\"def\\\"进行声明。另外,函数的参数也与Java方法有所不同,Java方法中不存在默

    2024年02月05日
    浏览(64)
  • Python教程(25)——Python中参数类型详解

    当我们在编写函数时,会定义一些占位符,这些占位符就是参数,参数是函数定义中用于接收外部传递值的占位符,这个会帮助我们在函数被调用时接收外部传递的值。在Python当中,有各种各样类型的参数,主要有位置参数、默认参数、参数、可变位置参数、可变关键

    2024年01月18日
    浏览(42)
  • Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量

    2023年04月09日
    浏览(50)
  • Java 方法中参数类型后写了三个点?什么意思?

    4、两个list,一个新的,一个旧的,旧列表中可能有新列表中存在的数据,也可能存在新列表中不存在的数据(注:新旧列表中都不存在重复元素) 需要将新旧列表中数据区分成三部分:1、只存在旧列表中的2、只存在新列表中的3、新旧列表中都存在的 可以将旧列表中的元素

    2024年01月18日
    浏览(41)
  • Python初学者友好丨详解参数传递类型

    摘要:  本文清晰地解释了Python中的不同参数传递类型,并提供了示例代码来说明每种类型的用法。对于初学者或不清楚Python传参的读者们来说是非常有益的,文中提供了足够的信息来理解和使用Python中的函数参数传递。 本文分享自华为云社区《提升Python函数调用灵活性:参

    2024年02月09日
    浏览(45)
  • Python类型转换,数据类型转换函数大全 与 strip()函数介绍

    虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 height 的值,如果在交互式解释器中执行如下代码: 会发

    2024年01月24日
    浏览(53)
  • 【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句,Python函数,Python的数据容器等。 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 函数:是组织好的

    2024年02月08日
    浏览(82)
  • Java开发者的Python快速进修指南:探索15种独特的Python特殊方法

    在Python中,特殊方法(也称为魔术方法)是由Python解释器自动调用的,我们不需要手动调用它们,而是使用内置函数来间接地使用它们。举个例子,我们可以实现特殊方法 __len__() ,然后通过使用内置函数len()来获取对象的长度。同样地,一些特殊方法的调用是隐式的,比如在

    2024年01月24日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包