首页 > 编程语言 >关于Python类型注解的几个实用小技巧

关于Python类型注解的几个实用小技巧

时间:2023-11-28 23:45:38浏览次数:34  
标签:Python 实用 类型 导入 模块 import Test 注解

虽然python是动态类型语言, 但是python3.5引入的类型注解特性却很有用. 不但有助于源码阅读, 而且在类型提示和代码自动补全上也很方便. 但是它毕竟不是静态类型编译型语言, 有一些特殊的情况, 需要一些小技巧才能够处理.

引用后面定义的类型

由于python不是编译型语言, 如果在前面直接引用后面定义的类型是不行的. 如下所示:
image
会提示未定义的类.

此时有两种处理办法:

  • 使用字符串类型注解
test:'Test' = None
class Test:pass
  • 引入支持后向类型注解的特性
from __future__ import annotations
test:Test = None
class Test:pass

引用其他模块的类型, 但是又不真正导入此模块

有时候需要引用其他模块中定义的类型, 但是又不能真正导入此模块(不能真正导入的原因往往是避免循环的问题), 此时可以采用如下的技巧:

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from xxx import Yyy

其中TYPE_CHECKING变量在真正执行时是False, 并不会真正导入模块; 但是在类型检查时为True, 这样就可以享受类型注解的好处了.

标签:Python,实用,类型,导入,模块,import,Test,注解
From: https://www.cnblogs.com/huzhongqiang/p/17863425.html

相关文章

  • python变量 sys.path和import导入
    一前言:sys.path是一个重要的变量数据,在使用import导入包和模块时就会从sys.path里面去寻找包和模块二sys.path用python命令运行相关py文件或者目录时,会添加一些路径到sys.path的开头,还会添加环境变量到里面,看看官网的介绍有的时候添加的是工作目录,有的时候添加的是py文......
  • python异步迭代器和普通迭代器的区别
    正常迭代器:在Python中,我们可以通过定义__iter__和__next__方法来创建迭代器。在每次调用__next__方法时,迭代器会返回下一个值,直到没有更多的值可以返回,然后它将引发StopIteration异常。这种迭代方式是同步的,意味着每次迭代操作都会等待前一个操作完成。这种方式适合处理大量数据......
  • pyc逆向以及DASCTF里的ezpython复现
    pyc文件结构分析pyc文件是Python在解释执行源代码时生成的字节码文件,可以直接由Python虚拟机执行。重点了解了下文件头,还不太了解其他部分怎么出题。参考pythonpyc加花指令pyc文件头参考深入理解python虚拟机:pyc文件结构Python代码保护|pyc混淆从入门到工具实现mag......
  • DataFrame数据框的Python操作
    探索和清理数据听起来很无聊,而且不像训练最先进的AI模型那么酷。但如果你想成为一名专业的数据科学家,探索性数据分析和数据预处理也是必不可少的技能。幸运的是,有许多很棒的工具可以帮助您了解数据集。著名的Python数据处理模块Pandas就是其中之一。DataFrame是一个二维的表......
  • 聪明办法学python-11.27——11.29笔记打卡
    一、python中条件语句的应用总体代码结构为:ifTrue:dosomethingelse:doother简单描述为“True”为条件,当条件为真的时候,执行“dosomething”,否则就执行“doother”。例如:任务:实现一个函数,返......
  • 【Python】【OpenCV】傅里叶变换
    之前的随笔中使用了C++来编写算法底层逻辑,这次我们直接使用OpenCV和Numpy和Scipy所提供的方法直接调用实现1importcv22importnumpy3fromscipyimportndimage45kernel_3=numpy.array([6[-1,-1,-1],7[-1,8,-1],8[-1,-1,-1]9])......
  • 聪明办法学Python_task3_11.27-11.28
    聪明办法学Python_task3_11.27-11.28聪明办法学Python_task3_11.27-11.281.task05条件1.1if-else语句1.2if-else推导式1.3match-case语句2.talk01代码风格1.task05条件1.1if-else语句分为if、if-else、if-elif-elseif条件1:语句1elif条件2:......
  • 聪明办法学Python Task05&选学01
    条件CONDITIONALSif语句语法为:if条件:选择执行的语句#要有缩进,一般为四个空格“如果”条件为True,就会去执行接下来的内容。“如果”条件为False,就跳过。*注意:*1.条件后面有冒号​2.if内部的语句需要有一个统一的*缩进*,一般为四个空格,特别注......
  • python基础_05_python基础【1】
    【一】注释语法【1】什么是注释注释就是就是对代码的解释说明,注释的内容不会被当作代码运行【2】为什么要注释增强代码的可读性【3】如何使用注释代码注释分单行和多行注释1、单行注释用#号,可以跟在代码的正上方或者正后方#这是一段通过“#+注释内容”创造的......
  • 【聪明办法学Python条件与判断】
    【聪明办法学Python条件与判断】if语句if-else推导式是Python中一种简洁而强大的语法,用于创建新的序列(如列表、集合、字典)的一种方法。Python中有三种主要的推导式:列表推导式、集合推导式和字典推导式。列表推导式:A=[list(map(int,input().split()))foriinrange(n)......