摘自:Python 类型提示简介 - FastAPI (tiangolo.com)

快速入门

类型提示用于声明一个变量的类型,在Python 3.6+版本的时候引入。

示例:

def get_full_name(first_name: str, last_name: str):
full_name = first_name.title() + " " + last_name.title()
return full_name print(get_full_name("peter","park"))

注意,类型提示用的是冒号,不是设置默认参数的等号。

这样编写的好处在于,编辑器知道参数类型后,比如vs code,输完 first_name. 后按一下 Ctrl + Space,会自动显示字符串支持的方法。

嵌套类型

有些容器数据结构可以包含其他的值,比如 dictlistsettuple。它们内部的值也会拥有自己的类型。

你可以使用 Python 的 typing 标准库来声明这些类型以及子类型。

它专门用来支持这些类型提示。

列表

例如,让我们来定义一个由 str 组成的 list 变量。

typing 模块导入 List(注意是大写的 L):

from typing import List

def process_items(items: List[str]):
for item in items:
print(item)

这表示:"变量 items 是一个 list,并且这个列表里的每一个元素都是 str"。

这样,即使在处理列表中的元素时,编辑器也可以提供支持。

元组和集合

声明 tupleset 的方法也是一样的:

from typing import Set, Tuple

def process_items(items_t: Tuple[int, int, str], items_s: Set[bytes]):
return items_t, items_s

这表示:

  • 变量 items_t 是一个 tuple,其中的每个元素都是 int 类型。
  • 变量 items_s 是一个 set,其中的每个元素都是 bytes 类型。

字典

定义 dict 时,需要传入两个子类型,用逗号进行分隔。

第一个子类型声明 dict 的所有键。

第二个子类型声明 dict 的所有值:

from typing import Dict

def process_items(prices: Dict[str, float]):
for item_name, item_price in prices.items():
print(item_name)
print(item_price)

这表示:

  • 变量prices是一个dict:

    • 键都是str类型
    • 值都是float类型

类作为类型

你也可以将类声明为变量的类型。

假设你有一个名为 Person 的类,拥有 name 属性:

class Person:
def __init__(self, name: str):
self.name = name def get_person_name(one_person: Person):
return one_person.name

接下来,你可以将一个变量声明为 Person 类型:

class Person:
def __init__(self, name: str):
self.name = name def get_person_name(one_person: Person):
return one_person.name

然后,你将再次获得所有的编辑器支持。

Python类型提示的更多相关文章

  1. Python -类型提示 Type Hints

    为什么会有类型提示 Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,运行时不需要指定变量类型 但是与此同时 IDE 无法像静态类型语言那样分析代码,及时给我们相应的提示,比如字符 ...

  2. Python 类型提示简介

    Python 3.6+ 版本加入了对"类型提示"的支持. 这些"类型提示"是一种新的语法(在 Python 3.6 版本加入)用来声明一个变量的类型. 通过声明 ...

  3. Python - typing 模块 —— 常用类型提示

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  4. 全面理解Python中的类型提示(Type Hints)

    众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...

  5. python进阶(21)typing模块--类型提示支持

    typing介绍   Python是一门弱类型的语言,很多时候我们可能不清楚函数参数的类型或者返回值的类型,这样会导致我们在写完代码一段时间后回过头再看代码,忘记了自己写的函数需要传什么类型的参数,返 ...

  6. 类型提示和python函数中'->'的用法

    一.类型提示 在python中,我们定义一个有参函数,调用该函数时需要传入参数,如下所示: # 定义一个简单的函数 def get_full_name(first_name, last_name): ...

  7. python def函数总结(格式、参数类型、传参方式、全局变量/局部变量、参数类型提示(Type Hints))

    简单无参函数 编写脚本test1.py def register_user(): #函数名称只使用小写字母和下划线 """docstring""&qu ...

  8. Python Type Hints(类型提示)

    在做自动化测试的时候,改进测试框架,类型提示会让你写代码时更加流程,当你在一个模块定义了类型,而其他模块没有提示的时候,是相当不方便.

  9. python类型检测最终指南--Typing模块的使用

    正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...

  10. 深入理解PHP内核(十)变量及数据类型-类型提示的实现

    原文链接:http://www.orlion.ga/253/ PHP是弱类型语言,向方法传递参数时也并不严格检查数据类型.不过有时候需要判断传递到方法中的参数,为此PHP中提供了一些函数来判断数据的类 ...

随机推荐

  1. 2020-08-31:描述HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别。

    福哥答案2020-08-31: HTTP1.0与HTTP1.1的主要区别 1.长连接HTTP1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接.HTTP1.1:默认支持长连接.2. ...

  2. 2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的。

    2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的. ...

  3. 2022-03-01:k8s安装phpmyadmin,yaml如何写?

    2022-03-01:k8s安装phpmyadmin,yaml如何写? 答案2022-03-01: yaml如下: apiVersion: apps/v1 kind: Deployment metad ...

  4. 2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆

    2021-04-29:给定一个数组 arr,代表一排有分数的气球.每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆 ...

  5. ABP - 初识 ABP

    ABP框架 ABP是用于创建现代化Web应用程序的完整体系结构和强大的基础架构,以模块化的方式进行开发,所有模块以nuget包的方式提供,开箱即用,遵循最佳实践和约定,提供SOLID开发经验. 缩写 ...

  6. Redis数据结构三之压缩列表

    本文首发于公众号:Hunter后端 原文链接:Redis数据结构三之压缩列表 本篇笔记介绍压缩列表. 在 Redis 3.2 版本之前,压缩列表是列表对象.哈希对象.有序集合对象的的底层实现之一. 因 ...

  7. Flutter编写的数独游戏

    一个使用Flutter编写的每日数独小游戏,支持Android和ios.代码已上传到github:https://github.com/huhx/flutter_sudoku Library 状态管理 ...

  8. 代码随想录算法训练营Day6 哈希表|242.有效的字母异位词 349.两个数组的交集 202.快乐数 1.两数之和

    哈希表理论基础 哈希表 哈希表(Hash tble)是根据关键码的值而进行直接访问的数据结构. 哈希表简单来说是数组,当我们遇到了要快速判断一个元素是否出现在集合里的时候,就要考虑哈希表. 哈希表中的 ...

  9. Tomcat请求处理流程与源码浅析

    系列文章目录和关于我 一丶Connector 在tomcat中,Connector负责开启socket并且监听客户端请求,返回响应数据. 其中: Endpoint:tomcat中没有这个接口,只有Ab ...

  10. python 学习之----time模块

    # timeimport time# # #1 获取时间戳# # print(time.time())# # #2 获取格式化时间对象# # #获取默认参数是当前系统时间戳# # print(time ...