iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >深入了解Python中的变量类型标注
  • 573
分享到

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

Python变量类型标注Python 类型标注Python标注 2023-05-15 08:05:25 573人浏览 安东尼

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

摘要

目录一、概述1、描述2、常用的数据类型3、mypy模块二、使用1、基本使用2、函数参数返回值添加类型标注3、混合类型检查改进4、类型别名更改一、概述 1、描述 变量类型注解是用来对变

一、概述

1、描述

变量类型注解是用来对变量和函数的参数返回值类型做注解,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。

但是,变量类型注解语法传入的类型表述能力有限,不能说明复杂的类型组成情况,因此引用了typing模块,来实现复杂的类型表达。

2、常用的数据类型

TypeDescription
int整型 integer
float浮点数字
bool布尔(int 的子类)
str字符 (unicode)
bytes8 位字符
object任意对象(公共基类)
List[str]字符组成的列表
Tuple[int, int]两个int对象的元组
Tuple[int, ...]任意数量的 int 对象的元组
Dict[str, int]键是 str 值是 int 的字典
Iterable[int]包含 int 的可迭代对象
Sequence[bool]布尔值序列(只读)
Mapping[str, int]从 str 键到 int 值的映射(只读)
Any具有任意类型的动态类型值
UNIOn联合类型
Optional参数可以为空或已经声明的类型
Mapping映射,是 collections.abc.Mapping 的泛型
MutableMappingMapping 对象的子类,可变
Generator生成器类型, Generator[YieldType、SendType、ReturnType]
NoReturn函数没有返回结果
Set集合 set 的泛型, 推荐用于注解返回类型
AbstractSetcollections.abc.Set 的泛型,推荐用于注解参数
Sequencecollections.abc.Sequence 的泛型,list、tuple 等的泛化类型
TypeVar自定义兼容特定类型的变量
Generic自定义泛型类型
NewType声明一些具有特殊含义的类型
Callable可调用类型, Callable[[参数类型], 返回类型]
NoReturn没法返回值

3、mypy模块

mypy是python的可选静态类型检查器

安装mypy模块 pip3 install mypy

使用mypy进行静态类型检查 mypy 执行 Python 文件

二、使用

1、基本使用

from typing import List, Set, Dict, Tuple
#对于简单的 Python 内置类型,只需使用类型的名称
x1: int = 1
x2: float = 1.0
x3: bool = True
x4: str = "test"
x5: bytes = b"test"
 
# 对于 collections ,类型名称用大写字母表示,并且
# collections 内类型的名称在方括号中
x6: List[int] = [1]
x7: Set[int] = {6, 7}
#对于映射,需要键和值的类型
x8: Dict[str, float] = {'field': 2.0}
#对于固定大小的元祖,指定所有元素的类型
x9: Tuple[int, str, float] = (3, "yes", 7.5)
#对于可变大小的元祖,使用一种类型和省略号
x10: Tuple[int, ...] = (1, 2, 3)
 
'''在终端执行检查
(venv) D:\python>mypy .\01.py
Success: no issues found in 1 source file
'''

2、函数参数返回值添加类型标注

1. 指定多个参数的方式

'''
定义一个函数   参数 num int类型
返回值 字符串类型
使用mypy检测
'''
def num_fun(num: int) -> str:
    return str(num)
 
num_fun(100)
print(num_fun(100))
 
# 指定多个参数的方式
def plus(num1: int, num2: int) -> int:
    return num1 + num2
 
# 在类型注释后为参数添加默认值,默认值需要添加在末尾
'''
声明函数参数时,所有带有默认值的参数必须放在非默认参数的后面。
这是因为 Python 解释器需要确定参数传递的顺序,
如果默认参数放在非默认参数前面,解释器就无法确定哪个参数是哪个
'''
def func1(num1: int, my_float: float = 3.5)-> float:
    return num1 + my_float
print(func1(10,20))
f = func1
print(f(10))

2. Callable

Callable 是一个抽象类,用于描述可调用对象的基本行为,例如函数、方法和类。当你声明一个函数变量并将其分配给一个变量时,这个变量只是一个普通的 Python 对象,并不是一个可调用对象,因此它没有默认值

带有默认值的参数可以放在任何位置,但是在声明函数参数时,所有带有默认值的参数必须放在非默认参数的后面。这是因为 Python 解释器需要确定参数传递的顺序,如果默认参数放在非默认参数前面,解释器就无法确定哪个参数是哪个。

from typing import  Callable
#定义变量  指向一个函数
def func2(num1:int, my_float=3.5) -> str:
    return f'返回结果{num1 + my_float}'
print(func2(10))
#Callable指向可调用(函数)值的方式
x: Callable[[int, float], str] = func2
print(x(10, 3.5))
 
'''
执行结果
返回结果13.5
返回结果13.5
'''

3. Iterator

#定义函数,产生整数的生成器,每次返回一个
from typing import Iterator
# 产生整数的生成器函数安全地返回只是一个 整数迭代器的函数
#,因此这就是我们对其进行注释的方式
def g(n: int) -> Iterator[int]:
    i = 0
    while i < n:
        yield i #下次迭代时,代码从 yield 的下一条语句(不是下一行)开始执行
        i += 1
 
print(g(10))
for i in g(10):
    print(i)
 
'''执行结果
<generator object g at 0x00000000014E88E0>
0
1
2
3
4
5
6
7
8
9
'''

3、混合类型检查改进

1.联合运算符

联合运算符使用 " | "  线来替代了旧版本中Union[] 方法,使得程序更简洁

#新版本
def get_name(user: str | dict) -> str:
    if isinstance(user, str):
        return user
    elif isinstance(user, dict):
        return user.get('name', '')
print(get_name({'name':'Bob'}))
print(get_name("Alice"))

在这个例子中,函数get_name接受一个参数user,它可以是一个字符串或一个字典。如果user是一个字符串,函数会直接返回这个字符串;如果user是一个字典,函数会尝试从字典中获取name字段的值,并返回它。

在这个例子中,我们使用联合运算符将str和dict类型组合起来,表示user可以是这两种类型之一。

#旧版本,Union方法来实现相同的功能
from typing import Union
def get_name2(user: Union[str, dict]) -> str:
    if isinstance(user, str):
        return user
    elif isinstance(user, dict):
        return user.get('name', '')
 
print(get_name2({'name':'Bob'}))
print(get_name2("Alice"))
'''执行结果
Bob
Alice
'''

4、类型别名更改

#旧版本
oldname = str
def oldFunc(param:oldname) -> oldname:
    return param + param
oldFunc('oldFunc:花非人陌')
 
 
#新版本,从3.10后开始支持
from typing import TypeAlias
 
newstr :TypeAlias = str    #定义类型别名
newint :TypeAlias = int
def func_test(num:newint, msg:newstr)->newstr:
    return str(num) + msg
print(func_test(100,"类型名称更改"))

到此这篇关于深入了解Python中的变量类型标注的文章就介绍到这了,更多相关Python变量类型标注内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 深入了解Python中的变量类型标注

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 深入了解Python中的变量类型标注
    目录一、概述1、描述2、常用的数据类型3、mypy模块二、使用1、基本使用2、函数参数返回值添加类型标注3、混合类型检查改进4、类型别名更改一、概述 1、描述 变量类型注解是用来对变...
    99+
    2023-05-15
    Python变量类型标注 Python 类型标注 Python标注
  • 深入了解Python中的变量
    目录1 Python变量概述2 Python变量的命名3 Python变量赋值3.1 Python赋值概述3.2 Python变量的基本格式3.3 Python变量的其他赋值格式3....
    99+
    2024-04-02
  • Python中的变量类型标注怎么用
    这篇文章主要讲解了“Python中的变量类型标注怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量类型标注怎么用”吧!一、概述1、描述变量类型注解是用来对变量和函数的参...
    99+
    2023-07-06
  • 深入理解python类的实例变量和类变量
    本python是python 3.5版本~!!!class aa:       w = 10       def __init__(self):            self.x = 11            self.y = 12  ...
    99+
    2023-01-31
    变量 实例 python
  • 深入了解Python中常见的数据类型
    Python数据类型详解:探索Python中的常见数据类型 引言:在Python编程语言中,数据类型是非常重要的概念。了解数据类型的特性以及如何正确使用它们,可以在编写Python程序时提高效率,减少错误。本文将详细探索Pyth...
    99+
    2024-01-20
    Python编程 常见数据类型
  • 深入浅析Java8中的类型注解
    这篇文章将为大家详细讲解有关深入浅析Java8中的类型注解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是类型注解在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;j...
    99+
    2023-05-31
    java8 类型注解 ava
  • Python数据类型概述:深入了解Python的数据类型
    Python基本数据类型简介:探索Python的数据类型,需要具体代码示例 Python是一种高级编程语言,它提供了丰富的数据类型,使得程序员可以更轻松地处理各种数据。在本文中,我们将探索Python中的几种基本数据类型,并提供...
    99+
    2024-01-20
    基本数据类型 Python简介
  • 深入了解TypeScript中的映射类型
    目录1. 基本概念(1)索引访问类型(2)索引签名(3)联合类型(4)keyof 类型运算符(5)元组类型(6)条件类型2. 映射类型(1)初体验(2)概念(3)实例3. 实用程序中...
    99+
    2022-11-13
    TypeScript映射类型 TypeScript映射
  • 深入了解Golang中的数据类型
    目录1. 基本数据类型1.1 整数型1.2 Golang 提供了两种浮点型数据类型:1.3 布尔型1.4 字符型1.5 字符串型2. 复合数据类型2.1 数组2.2 切片2.3 字符...
    99+
    2023-05-18
    Golang数据类型使用 Golang数据类型 Go 数据类型
  • 深入了解Python中的基本数据类型:详解Python各种数据类型
    Python基本数据类型详解:了解Python中的各种数据类型,需要具体代码示例 引言:在Python编程语言中,数据类型是程序中最基本也最常用的概念之一。了解Python的基本数据类型,对于编写高质量的代码和有效地处理数据至关...
    99+
    2024-01-20
    数字 变量 字符串
  • 深入了解Go语言中的变量概念
    Go语言是一种开发效率高、性能优越的现代编程语言,在Go语言中,变量是一个非常重要的概念。本文将深入探讨Go语言中的变量概念,通过具体的代码示例来帮助读者更好地理解和掌握变量的使用。 ...
    99+
    2024-04-02
  • Python入门变量的定义及类型理解
    变量的定义 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后...
    99+
    2024-04-02
  • 深入了解TypeScript中常用类型的使用
    目录原始类型:string,number,boolean数组(Arrays)Any类型在变量上使用类型注释函数(Functions)返回类型注释(Return Type Annota...
    99+
    2024-04-02
  • 深入了解PHP中常见的错误类型
    标题:深入了解PHP中常见的错误类型,需要具体代码示例 在编写PHP程序时,我们经常会遇到各种各样的错误。了解这些错误类型及其产生的原因,可以帮助我们更好地调试和优化代码。本文将深入探...
    99+
    2024-04-02
  • 怎么深入理解Python中的ThreadLocal变量
    怎么深入理解Python中的ThreadLocal变量,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在上篇我们看到了 ThreadLocal ...
    99+
    2024-04-02
  • 深入了解Go语言中的引用类型
    引用类型在Go语言中是一种特殊的数据类型,它们的值并非直接存储数据本身,而是存储数据的地址。在Go语言中,引用类型包括slices、maps、channels和指针。深入了解引用类型对...
    99+
    2024-02-22
    数据结构 内存管理 指针 go语言 键值对
  • 深入了解python全局变量,局部变量和命名空间
    目录函数中的全局和局部变量嵌套函数中的全局变量非局部变量Python 使用全局和局部变量的方式是特立独行的。虽然在许多或大多数其他编程语言中,如果未另行声明,变量将被视为全局变量,而...
    99+
    2024-04-02
  • 深入解析 ASP 变量:揭秘其类型与作用
    ...
    99+
    2024-04-02
  • 深入了解JavaScript中let/var/function的变量提升
    目录前言1. let存在提升2. var/function的变量提升2.1 var的变量提升2.2 function的变量提升3. 总结前言 在我们的印象中,当提到JavaScrip...
    99+
    2024-04-02
  • 深入了解go语言的关键变量
    在 go 语言中,变量是重要的数据存储容器。基本数据类型包括布尔型、整数型、浮点型、複数字和字符串型。通过 var 关键字声明变量,并可通过短变量声明在局部范围内使用。掌握关键变量的用法...
    99+
    2024-04-08
    go语言 关键变量
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作