Python3中typing模块

Python类型注解是Python 3.5版本之后引入的新特性,它可以让开发者在函数、变量等声明时为其指定类型。typing模型能够声明类型,防止运行时出现参数和返回值类型不符合的问题。

### 1. 基本类型注解
def hello(name: str) -> str:return ('Hello, ' + name)print(hello("张三"))### typing包 ###
### 2. 复合类型
from typing import List, Tuple, Dictmy_list = List[Tuple[str, int]] 
my_dict = Dict[str, str]my_list= [('a',1),('b',2)]
print(my_list)my_dict = {'name':"aa","addr":"xxx"}
print(my_dict)### 3. 类型别名
from typing import List# ector和List[float]将被视为可互换的同义词
Vector = List[float]vec = [1,2,3]
print(type(Vector))
print(List[float])
print(type(vec))def scale(scalar: float, vector: Vector) -> Vector:return [scalar * num for num in vector]# a list of floats qualifies as a Vector.
new_vector = scale(2.0, [1.0, -4.2, 5.4])
print(new_vector) # [2.0, -8.4, 10.8]### 3. 创建不同的类型
from typing import NewType,Tuple
UserInfo = NewType('UserInfo', Tuple[str,int])
user1 = UserInfo(("张三",20))
print(type(user1))
print(user1)### 4. Any类型
a: Any = None
a = [] # OK
a = 2 # OKs: str = ""
s = a # OK
print(s) # 2#Optional:可选类型
#Callable:可调用类型
#Literal:字面类型### 5. 用户定义的泛型类型
from typing import TypeVar, Generic
from logging import Logger
T = TypeVar('T')
class LoggedVar(Generic[T]):def __init__(self, value: T, name: str, logger: Logger) -> None:self.name = nameself.logger = loggerself.value = valuedef set(self, new: T) -> None:self.log('Set ' + repr(self.value))self.value = newdef get(self) -> T:self.log('Get ' + repr(self.value))return self.valuedef log(self, message: str) -> None:self.logger.info('%s: %s', self.name, message)

参考:

https://www.bookstack.cn/read/python-3.10.0-zh/e133648b02fa6d6d.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自建机房还是选择云服务器?以腾讯云为例

大企业是选择自购服务器自建机房还是使用腾讯云服务器?都说企业上云是趋势,自建机房是一次性支出,上云租赁云服务器等产品需要年年续费,大型企业有必要把数据中心迁移上云吗?腾讯云服务器网想说,自建机房购…

28 玻尔兹曼机

文章目录 28 玻尔兹曼机28.1 模型定义28.2 梯度推导28.3 梯度上升28.4 基于VI[平均场理论]求解后验概率 28 玻尔兹曼机 28.1 模型定义 玻尔兹曼机是一张无向图,其中的隐节点和观测节点可以有任意连接如下图: 我们给其中的节点、连线做出一些定义&#…

Vue 转 React 指南

JSX 先介绍 React 唯一的一个语法糖&#xff1a;JSX。 理解 JSX 语法并不困难&#xff0c;简单记住一句话&#xff0c;遇到 {} 符号内部解析为 JS 代码&#xff0c;遇到成对的 <> 符号内部解析为 HTML 代码。 当你写下这个 React 组件时&#xff1a; import React fr…

软件功能测试有什么注意事项?功能测试报告起到什么作用?

软件功能测试是软件开发过程中至关重要的一环&#xff0c;它用于评估软件功能的质量和稳定性&#xff0c;并确保软件能够按照预期进行工作。然而&#xff0c;在进行功能测试时&#xff0c;有一些注意事项需要特别关注&#xff0c;以确保测试的准确性和有效性。 一、软件功能测…

Java8 Stream 之groupingBy 分组讲解

本文主要讲解&#xff1a;Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /** * 使用java8 stream groupingBy操作,按城市分组list */ public void groupingByCity() { Map<String, List<Em…

c++继承总结

一 继承的由来 我使用类也有一段时间了&#xff0c;慢慢觉得我们做一件事时&#xff0c;就是要先描述&#xff0c;例如写一个管理系统登记学校成员的信息&#xff0c;我们就要先对在学校内的老师和学生做描述&#xff0c;学生要有年龄&#xff0c;班级&#xff0c;姓名&#xf…

使用C#加载TOOLBLOCK

前言 因为Vpp文件类型包含了以下三种 QuickBuidJobToolBlock 不同类型的打开方式不同&#xff0c;需要提前知道vpp是什么类型 例如 这个TB.vpp文件是TOOLBLOCK&#xff0c;就不能直接在visionpro中打开&#xff08;直接打开需要QuickBuid文件&#xff09;&#xff0c; 可以…

在centos7下通过docker 安装onlyoffice

因为需要调试网盘&#xff0c;所以今天安装一下centos7的onlyoffice 官方介绍如下&#xff1a; 为了方便&#xff0c;还是通过docker方式来安装onlyoffice了&#xff0c;这里我们采用社区版本了。 1、下载docker安装包 如下&#xff1a; docker pull onlyoffice/documentserv…

uniapp 将标题背景更换背景图片 完美解决(附加源码+实现效果图)

问题描述 今天拿到小程序的设计效果图后&#xff0c;标题部分背景需要加背景图片&#xff0c;以往我做的都是标题背景更换颜色等&#xff0c;加背景图片还是第一次遇到&#xff0c;大家可以先看下我的效果图是否与你遇到的问题一致&#xff01; 首页标题的背景是个背景图片。 …

构建高性能的MongoDB数据迁移工具:Java的开发实践

随着大数据时代的到来&#xff0c;数据迁移成为许多企业和组织必须面对的挑战之一。作为一种非关系型数据库&#xff0c;MongoDB在应用开发中得到了广泛的应用。为了满足数据迁移的需求&#xff0c;我们需要一个高性能、稳定可靠的MongoDB数据迁移工具。下面将分享使用Java开发…

Leetcode 977. 有序数组的平方

题目&#xff1a; Leetcode 977. 有序数组的平方 描述&#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序 思路&#xff1a; 双指针法 数组其实是有序的&#xff0c; 只不过负数平方之…

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能&#xff0c;如下为Visual Studio 2022的该功能界面&#xff1a; 图 1 图 2 当在Visual Studio 2022打开很多文件时&#xff0c;可以按照图1、图2所示找到自…

基于Selenium技术方案的爬虫入门实践

通过爬虫技术抓取网页&#xff0c;动态加载的数据或包含 JavaScript 的页面&#xff0c;需要使用一些特殊的技术和工具。以下是一些常用的技术方法&#xff1a; 使用浏览器模拟器&#xff1a;使用像 Selenium、PhantomJS 或其他类似工具可以模拟一个完整的浏览器环境&#xff0…

Redis实战案例27-UV统计

1. Redis的HyperLogLog的统计功能 示例&#xff1a; 表明HyperLogLog不管加入重复元素多少次都不会让count&#xff0c;不会计数重复元素&#xff0c;所以适合做UV计数 2. 简单实现UV测试 通过单元测试&#xff0c;向 HyperLogLog 中添加 100 万条数据&#xff0c;看看内存占…

python3.6 安装pillow失败

问题描述 python3 安装 pillow 失败 错误原因 python3.6 不支持 pillow9.0 以上的版本 解决方法&#xff1a; 指定版本安装 e.g., pillow8.0 pip3 install pillow8.0

看漫画学python!一天一个小惊喜有趣好用(全彩版)?

新手如何&#xff1a; 搭建Python开发环境 我们在Python官网可以下载Python安装包&#xff0c;在这个安装包里有Python解释器、Python运行所需要的基础库&#xff0c;以及交互式运行工具——Python 在下载完成后就可以安装Python了&#xff0c;在安装过程中会弹出内容选择对话…

水库大坝安全监测系统实施方案

一、方案概述 水库大坝作为特殊的建筑&#xff0c;其安全性质与房屋等建筑物完全不同&#xff0c;并且建造在地质构造复杂、岩土特性不均匀的地基上&#xff0c;目前对于大坝监测多采用人工巡查的方法&#xff0c;存在一定的系统误差&#xff0c;其工作性态和安全状况随时都在变…

怎么学习机械学习相关的技术? - 易智编译EaseEditing

学习DOM&#xff08;文档对象模型&#xff09;相关技术是成为前端开发者的关键一步&#xff0c;因为DOM是用于操作和控制网页内容的基础。以下是学习DOM相关技术的步骤和方法&#xff1a; 了解基础知识&#xff1a; 首先&#xff0c;了解什么是DOM&#xff0c;它如何表示HTML…

刘汉清:从生活到画布,宠物成为灵感源泉

出生于中国镇江的艺术家刘汉清&#xff0c;其作品展现出他对日常生活的深入洞察力&#xff0c;以及对美的独特理解。他的作品通常没有视觉参考&#xff0c;而是通过对他周围环境的理解&#xff0c;尤其是他的宠物&#xff0c;来进行创作。 在刘汉清的创作过程中&#xff0c;他…

从零实战SLAM-第一课(SLAM概览)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c; 课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…