我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python类型注解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python类型注解

函数注解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))

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python类型注解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python类型注解

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

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

Any docs Any 是一种特殊的类型。 静态类型检查器将所有类型视为与 Any 兼容,反之亦然, Any 也与所有类型相兼容。 这意味着可对类型为 Any 的值执行任何操作或方法调用,并将其赋值给任何变量:from typing im
2022-06-02

Java 8 - 类型注解

理解Java 8 类型注解需理解几个问题: @pdai注解在JDK哪个版本中出现的,可以在哪些地方用注解?什么是类型注解?类型注解的作用是什么?为什么会出现类型注解(JSR308)?Java 8 - 类型注解什么是类型注解类型注解的作用类型
2022-12-02

深入了解Python中的变量类型标注

变量类型注解是用来对变量和函数的参数返回值类型做注解,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。本文就来和大家聊聊Python中的变量类型标注吧
2023-05-15

003 python 注释/数据类型/运

集成开发环境 pycharm工欲善其事,必先利其器 pycharm是具备一般的python ide的功能,同时呢支持调试,语法高亮,代码管理,智能提示 加快快发的速度,提高开发效率注释what ?字面意思就是标注解释Why ?通常的情况下,
2023-01-31

介绍java的注解类型

这篇文章主要介绍“介绍java的注解类型”,在日常操作中,相信很多人在介绍java的注解类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”介绍java的注解类型”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-06

如何使用TypeScript类型注解

小编给大家分享一下如何使用TypeScript类型注解,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类型注解TypeScript提供了很多数据类型,通过类型对变量进行限制,称之为类型注解,使用类型注解后,就不能够随意变更变
2023-06-29

java中注解有哪些类型

java中注解有哪些类型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发
2023-06-14

如何在中Python添加类型标注

今天就跟大家聊聊有关如何在中Python添加类型标注,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python 添加类型标注Python 如此简洁,书写者在声明变量时甚至无需考虑类型
2023-06-15

PHP注释类型详解:单行注释与多行注释

PHP是一种流行的服务器端脚本语言,广泛应用于Web开发领域。在代码编写过程中,注释是一个非常重要的元素,可以帮助开发者更好地理解代码,提高代码的可读性和可维护性。本文将详细介绍PHP中的注释类型,包括单行注释与多行注释,同时提供具体的代码
PHP注释类型详解:单行注释与多行注释
2024-03-15

Python数据类型概述:深入了解Python的数据类型

Python基本数据类型简介:探索Python的数据类型,需要具体代码示例Python是一种高级编程语言,它提供了丰富的数据类型,使得程序员可以更轻松地处理各种数据。在本文中,我们将探索Python中的几种基本数据类型,并提供代码示例来说
Python数据类型概述:深入了解Python的数据类型
2024-01-20

Python3新特性 类型注解 以及 点

Python3新特性 类型注解 以及 点点点 ...Python3 的新特性Python 是一种动态语言,变量以及函数的参数是 不区分类型 的在 函数中使用类型注解 相当于 给 形参的 类型 设置了一个备注# 使用类型注解 a b 参
2023-01-30
2023-06-02

Python中的变量类型标注怎么用

这篇文章主要讲解了“Python中的变量类型标注怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量类型标注怎么用”吧!一、概述1、描述变量类型注解是用来对变量和函数的参
2023-07-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录