Python类型提示
摘自: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,会自动显示字符串支持的方法。
嵌套类型
有些容器数据结构可以包含其他的值,比如 dict
、list
、set
和 tuple
。它们内部的值也会拥有自己的类型。
你可以使用 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
"。
这样,即使在处理列表中的元素时,编辑器也可以提供支持。
元组和集合
声明 tuple
和 set
的方法也是一样的:
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类型提示的更多相关文章
- Python -类型提示 Type Hints
为什么会有类型提示 Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,运行时不需要指定变量类型 但是与此同时 IDE 无法像静态类型语言那样分析代码,及时给我们相应的提示,比如字符 ...
- Python 类型提示简介
Python 3.6+ 版本加入了对"类型提示"的支持. 这些"类型提示"是一种新的语法(在 Python 3.6 版本加入)用来声明一个变量的类型. 通过声明 ...
- Python - typing 模块 —— 常用类型提示
前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
- python进阶(21)typing模块--类型提示支持
typing介绍 Python是一门弱类型的语言,很多时候我们可能不清楚函数参数的类型或者返回值的类型,这样会导致我们在写完代码一段时间后回过头再看代码,忘记了自己写的函数需要传什么类型的参数,返 ...
- 类型提示和python函数中'->'的用法
一.类型提示 在python中,我们定义一个有参函数,调用该函数时需要传入参数,如下所示: # 定义一个简单的函数 def get_full_name(first_name, last_name): ...
- python def函数总结(格式、参数类型、传参方式、全局变量/局部变量、参数类型提示(Type Hints))
简单无参函数 编写脚本test1.py def register_user(): #函数名称只使用小写字母和下划线 """docstring""&qu ...
- Python Type Hints(类型提示)
在做自动化测试的时候,改进测试框架,类型提示会让你写代码时更加流程,当你在一个模块定义了类型,而其他模块没有提示的时候,是相当不方便.
- python类型检测最终指南--Typing模块的使用
正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...
- 深入理解PHP内核(十)变量及数据类型-类型提示的实现
原文链接:http://www.orlion.ga/253/ PHP是弱类型语言,向方法传递参数时也并不严格检查数据类型.不过有时候需要判断传递到方法中的参数,为此PHP中提供了一些函数来判断数据的类 ...
随机推荐
- 【CSS】使元素在父元素中居中显示的几种方法
在页面元素布局时经常会有把元素居中的需求,大多都是用弹性盒或者定位,下面来说一下使用方法 一.使用边距进行固定位置 这种方法需要把父元素和子元素的宽度固定,然后利用二者宽高之差添加边距移动元素的位置 ...
- 基于ORB-SLAM3库搭建SLAM系统
参考资料 ORB-SLAM3配置及安装教程 ORB-SLAM3配置安装及运行 环境配置 Win 11pro VMware 17Pro Ubuntu 18.04 Eigen3 Pangolin Open ...
- 2022-02-19:安装栅栏。 在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。
2022-02-19:安装栅栏. 在一个二维的花园中,有一些用 (x, y) 坐标表示的树.由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树.只有当所有的树都被绳子包围时,花园才能围好栅栏. ...
- docker安装rabbitmq:management
1.拉取镜像 docker pull rabbitmq:management 2.安装 docker run -dit --name rabitmq -e RABBITMQ_DEFAULT_USER= ...
- GIT多场景下使用
git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree这样牛X的客户端工具,使得合并代码变的很方便.但找工作面试和一些需彰显个人实力的场景, ...
- js 之三 鼠标和键盘事件处理
鼠标和键盘事件 鼠标常见的事件,按下onmousedown,拖动onmounsemove,松开onmousevtup,滚轮等事件: 开发需求: 当鼠标点击控件,进行拖拽,控件跟随鼠标移动: 拖拽事件需 ...
- 生信服务器 | 更改 CentOS/RHEL 6/7 中的时区
这几天在学习折腾 docker 的时候遇到一个很常见的问题,就是 run container 的时候发现大部分 image 默认使用的时间都是 UTC (Universal Time Coordin ...
- R 包 optparse 之命令行参数传递
对于经常与 Linux 打交道的生物信息分析童鞋们,我们今天分享一下怎么在命令行下通过传递参数(类似perl.python) 的方式执行 R 脚本. 一般来说,命令行下使用 Rscript 执行 R ...
- Python异步编程之web框架 异步vs同步 数据库IO任务压测对比
测试基本信息 主题:比较异步框架和同步框架在数据库IO操作的性能差异 python版本:python 3.8 数据库:mysql 8.0.27 (docker部署) 压测工具:locust web框架 ...
- Kubernetes 集群管理:Kurator or Kubespray
摘要:Kubespray 和 Kurator 就是这类开源工具的典型代表.本文将对这两款工具进行比较. 本文分享自华为云社区<Kubernetes 集群管理:Kurator or Kubespr ...