返回顶部
首页 > 资讯 > 后端开发 > Python >python类型注解
  • 574
分享到

python类型注解

注解类型python 2023-01-31 01:01:34 574人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

函数注解Function Annotations函数注解    python 3.5引入    对函数的参数进行类型注解    对函数的返回值进行类型注解    只对函数参数做一个辅助的说明,并不对函数参数进行类型检查    提供给第三方

函数注解Function Annotations
函数注解
    python 3.5引入
    对函数的参数进行类型注解
    对函数的返回值进行类型注解
    只对函数参数做一个辅助的说明,并不对函数参数进行类型检查
    提供给第三方工具,做代码分析,发现隐藏bug
    函数注解的信息,保存在__annotations__属性中


业务应用
函数参数类型检查
思路
    函数参数的检查,一定是在函数外
    函数作为参数,传入到检查函数中
    检查函数拿到函数传入的实际参数,与形参声明对比
    __annotations__属性是一个字典,其中包括返回值类型的声明。假设要做位置参数的判断,无法和字典中的声明对应。使用inspect模块
inspect模块
提供获取对象信息的函数,可以检查函数的类、类型检查

signature(callable),获取签名(函数签名包括了一个函数的信息,包括函数名、它的参数类型、他所在的类和名称空间及其他信息)

import inspect
def add(x:int,y:int,*args,**kwargs) -> int:
    return x + y
sig = inspect.signature(add)
print(sig,type(sig))
print('params:',sig.parameters)
print(sig.parameters['y'],type(sig.parameters['y']))
print(sig.parameters['x'].annotation)
print(sig.parameters['args'])
print(sig.parameters['args'].annotation)
print(sig.parameters['kwargs'])
print(sig.parameters['kwargs'].annotation)
sig.parameters 是一个OrderedDict 


inspect模块
inspect.isfunction(add),是否是函数
inspect.isfunction(add),是否是函数 inspect.ismethod(add)),是否是类的方法 inspect.isgenerator(add)),是否是生成器对象 inspect.isgeneratorfunction(add)),是否是生成器函数  inspect.isclass(add)),是否是类 
inspect.ismodule(inspect)),是否是模块 inspect.isbuiltin(print)),是否是内建对象


inspect模块
Parameter对象
    保存在元组中,是只读的
    name,参数的名字
    annotation,参数的注解,可能没有定义
    default,参数的缺省值,可能没有定义
    empty,特殊的类,用来标记default属性或者注释annotation属性的空值
kind,实参如何绑定到形参,就是形参的类型




业务应用练习
有函数add
请检查用户输入是否符合参数注解的要求


import inspect
def check(fn):
    def wrapper(*args,**kwargs):
        sig = inspect.signature(fn)
        param = sig.parameters
        values = list(param.values())
        for i,v in enumerate(args):
            if values[i].annotation is not inspect._empty  and not isinstance(v,values[i].annotation):
                print('!==')
        for k,t in kwargs.items():
            if param[k].annotation is not inspect._empty   and not isinstance(t,param[k].annotation):
                print('!===')
        ret = fn(*args,**kwargs)
        return ret
    return wrapper

@check
def add(x:int,y:int=7)-> int:
    return x + y
print(add(1.1,y=1.0))

--结束END--

本文标题: python类型注解

本文链接: https://lsjlt.com/news/184346.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python类型注解
    函数注解Function Annotations函数注解    Python 3.5引入    对函数的参数进行类型注解    对函数的返回值进行类型注解    只对函数参数做一个辅助的说明,并不对函数参数进行类型检查    提供给第三方...
    99+
    2023-01-31
    注解 类型 python
  • Python-typing: 类型标注与支持 Any类型详解
    Any docs Any 是一种特殊的类型。 静态类型检查器将所有类型视为与 Any 兼容,反之亦然, Any 也与所有类型相兼容。 这意味着可对类型为 Any 的值执行任何操作或方法调用,并将其赋值给任何变量: ...
    99+
    2022-06-02
    Python typing 类型标注 支持Any类型
  • Java 8 - 类型注解
    理解Java 8 类型注解需理解几个问题: @pdai注解在JDK哪个版本中出现的,可以在哪些地方用注解什么是类型注解类型注解的作用是什么为什么会出现类型注解(JSR308)Java 8 - 类型注解什么是类型注解类型注解的作用类型注解向下...
    99+
    2022-12-02
    java框架 java全栈 java学习路线 java全栈知识 java面试 知识体系 java技术体系 java编程
  • 【Python】类型注解 ⑤ ( Union 联合类型注解 | Union 联合类型语法 | 普通 / 容器 变量设置 Union 联合类型注解 | 函数设置 Unio&
    文章目录 一、Union 联合类型1、数据容器的类型注解问题2、Union 联合类型语法3、代码示例 - 普通变量设置 Union 联合类型注解4、代码示例 - ...
    99+
    2023-09-02
    python 开发语言 Union 联合类型 类型注解 原力计划
  • python 编码中为什么要写类型注解?
    1、背景 我们先谈谈为什么在Python编码过程中强烈推荐使用类型注解 ? Python对于初学者来说是非常好上手,原因是在于对计算机底层原理的高度封装和动态语言的特性使得Pyth...
    99+
    2024-04-02
  • 深入了解Python中的变量类型标注
    目录一、概述1、描述2、常用的数据类型3、mypy模块二、使用1、基本使用2、函数参数返回值添加类型标注3、混合类型检查改进4、类型别名更改一、概述 1、描述 变量类型注解是用来对变...
    99+
    2023-05-15
    Python变量类型标注 Python 类型标注 Python标注
  • 003 python 注释/数据类型/运
    集成开发环境 pycharm 工欲善其事,必先利其器 pycharm是具备一般的python ide的功能,同时呢支持调试,语法高亮,代码管理,智能提示 加快快发的速度,提高开发效率 注释 what ?字面意思就是标注解释 Why ?...
    99+
    2023-01-31
    注释 数据类型 python
  • 介绍java的注解类型
    这篇文章主要介绍“介绍java的注解类型”,在日常操作中,相信很多人在介绍java的注解类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”介绍java的注解类型”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-06
  • java中注解有哪些类型
    java中注解有哪些类型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发...
    99+
    2023-06-14
  • 如何使用TypeScript类型注解
    小编给大家分享一下如何使用TypeScript类型注解,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类型注解TypeScript提供了很多数据类型,通过类型对变量进行限制,称之为类型注解,使用类型注解后,就不能够随意变更变...
    99+
    2023-06-29
  • Python 代码智能感知类型标注与特殊注释详解
    目录一、代码智能感知二、类型标注函数返回值的类型标注变量的类型标注三、特殊的注释四、特殊的类型一个不会写好的类型标注和注释的Python程序员,是让使用TA的代码的人都痛苦无比的事情...
    99+
    2024-04-02
  • Java8新特性之重复注解与类型注解详解
    目录Java8新特性重复注解与类型注解一、JDK5中的注解1.注解(@)2.作用3.如何理解注解?4.关于注解5.注解分为三个阶段6.注解的属性类型7.为注解增加属性二、Java8中...
    99+
    2024-04-02
  • 如何在中Python添加类型标注
    今天就跟大家聊聊有关如何在中Python添加类型标注,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python 添加类型标注Python 如此简洁,书写者在声明变量时甚至无需考虑类型...
    99+
    2023-06-15
  • 使用TypeScript类型注解的方法详解
    目录类型注解类型推导TS和JS共有的数据类型TS独有的数据类型anyunknownvoidnevertuple函数参数和返回值类型断言非空类型断言字面量类型缩小总结类型注解 Type...
    99+
    2024-04-02
  • PHP注释类型详解:单行注释与多行注释
    PHP是一种流行的服务器端脚本语言,广泛应用于Web开发领域。在代码编写过程中,注释是一个非常重要的元素,可以帮助开发者更好地理解代码,提高代码的可读性和可维护性。本文将详细介绍PHP...
    99+
    2024-03-15
    php注释 单行注释 多行注释
  • 浅谈怎么给Python添加类型标注
    Python 添加类型标注 Python 如此简洁,书写者在声明变量时甚至无需考虑类型。 但是简洁与复杂间,是存在一个平衡点的。当我们书写较为复杂的项目时,还是希望可以拥有「静态类型...
    99+
    2024-04-02
  • Python中的变量类型标注怎么用
    这篇文章主要讲解了“Python中的变量类型标注怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量类型标注怎么用”吧!一、概述1、描述变量类型注解是用来对变量和函数的参...
    99+
    2023-07-06
  • Python中不可变类型和可变类型详解
    ...
    99+
    2023-06-02
  • Python数据类型概述:深入了解Python的数据类型
    Python基本数据类型简介:探索Python的数据类型,需要具体代码示例 Python是一种高级编程语言,它提供了丰富的数据类型,使得程序员可以更轻松地处理各种数据。在本文中,我们将探索Python中的几种基本数据类型,并提供...
    99+
    2024-01-20
    基本数据类型 Python简介
  • Python3新特性 类型注解 以及 点
    Python3新特性 类型注解 以及 点点点 ... Python3 的新特性 Python 是一种动态语言,变量以及函数的参数是 不区分类型 的 在 函数中使用类型注解 相当于 给 形参的 类型 设置了一个备注 # 使用类型注解 ...
    99+
    2023-01-30
    注解 新特性 类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作