Python学习从0到1 day21 第二阶段 面向对象 ④ 类型注解

news2024/12/28 18:27:35

仗剑红尘已是癫,有酒平步上青天

                                    —— 24.4.7

一、变量的类型注解

学习目标

1.理解为什么使用类型注解

2.掌握变量的类型注解语法

为什么使用类型注解

tip:CTRL+P,可以提示函数中传入的参数

        当我们需要使用pycharm的自动补全功能,又或者说我们在调用方法函数的时候,对参数的类型进行提示,当我们需要使用这些功能时,我们都需要使用类型注解才能完成

类型注解

Python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)。

主要功能:
        帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
        帮助开发者自身对变量进行类型注释
支持:
        变量的类型注解
        函数(方法)形参列表和返回值的类型注解

类型注解的语法

基础语法:变量:类型

        基础数据类型注解

                var1: int = 10

                var2: float = 3.1415926

                var3: bool = True

                var4: str = "itheima"

        类对象类型注解

                class Student:

                        pass

                stu:Student = Student()

        基础容器类型注解

                my_list: list = [1,2,3]

                mt_tuple: tuple = (1,2,3)

                my_set: set = {1,2,3}

                my_dict: dict = {"itheima":666}

                my_str: str = "itheima"

        容器类型详细注解

                my_list: list[int] = [1,2,3]

                my_tuple: tuple[str,int,bool] = ("itheima",666,True)

                mt_set: set[int] = {1,2,3}

                my_dict: dict[str,int] = {"itheima":666}

        注意:

                元组类型设置类型详细注释,需要将每一个元素都标记出来

                字典类型设置类型详细注解,需要两个类型,第一个是key,第二个是value

                冒号左边是变量,右边是对该变量类型的解释

除了使用 变量:类型,这种语法做注解外,也可以在注释中进行类型注解

        语法:

                #type:类型

在注释中进行类型注解:

一般无需注解,在无法直接看出变量类型之时会添加变量的类型注解

'''
演示变量的类型注解
'''
import json
import random

# 基础数据类型注解
var_1: int = 10
var_2: str = "一切都会好的"
var_3: bool = True

# 类对象类型注解
class Student:
    pass
stu: Student = Student()

# 基础容器类型注解
my_list: list = [1,2,3]
my_tuple: tuple = (1,2,3)
my_dict: dict = {"age":18}

# 容器类型详细注解
my_list: list[int] = [1,2,3]
my_tuple: tuple[int,str,str,bool] = (1,"一切都会好的","我一直相信",True)
my_dict: dict[str:int] = {"age":18}

# 在注释中进行类型注解
class Student:
    pass

var_1 = random.randint(1,10)    # type: int
var_2 = json.load('{"name":"zhangsan"}')    # type: dict[str,str]
def func():
    pass
var_3 = func()  # type:int
# 类型注解的限制

类型注解的限制

        帮助第三方IDE工具对代码进行类型推断,协助做代码提示

        帮助开发者自身对变量进行类型注释(备注)

        并不会真正对类型做验证和判断

        也就是说,类型注解仅仅是提示性的,不是决定性的

总结

        1.什么是类型注解,有什么作用?

                在代码中涉及数据交互之时,对数据类型进行显示的说明,可以帮助:

                        Pycharm等开发工具对代码做类型判断协助做代码提示

                        开发者自身做类型的备注

        2.类型注解支持:

                变量的类型注解

                函数(方法)的形参和返回值的类型注解

        3.变量的类型注解语法:

                语法1:变量:类型

                语法2:在注释中,#type: 类型

        4.注意事项

                类型注解只是提示性的,不是决定性的,数据类型和注解类型无法对应也不会导致错误

二、函数(方法)的类型注解

学习目标

1.掌握为函数(方法)形参进行类型注解

2.掌握为函数(方法)返回值进行类型注解

函数(方法)的类型注解 - 形参注解

函数和方法的形参类型注解语法

def 函数方法名(形参名:类型,形参名:类型,……):

        pass

def add(x: int,y: int):
    return x + y

def func(data:list):
    pass

函数(方法)的类型注解 - 返回值注解

同时,函数(方法)的返回值也是可以添加类型注解的

语法如下:

def 函数方法名(形参:类型,……,形参:类型) -> 返回值类型:
    pass

# 对返回值进行类型注解
def func(data: list) -> list:
    return data

总结

        1.函数(方法)可以为哪里添加注解?

                形参的类型注解

                返回值的类型注解

        2.函数(方法)的类型注解语法?

                def 函数方法名(形参:类型,……,形参:类型) -> 返回值类型:
                    pass

                注意:返回值类型注解的符号使用: ->

三、Union类型

学习目标

1.理解Union类型

2.掌握使用Union进行联合类型注解

Union类型

使用Union[类型,……,类型]

可以定义联合类型注解

Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用

'''
演示Union联合类型注解
'''

# 使用Union类型,必须先导包
from typing import  Union

my_list: list[Union[int,str]] = [1,2,"一切会好的","我一直相信"]

def func(data: Union[int,str]) -> Union[int,str]:
    pass

func()

总结

        1.什么是Union类型?

                使用Union可以定义联合类型注解

        2.Union的使用方式

                导包:from typing import Union

                使用:Union[类型,……,类型]

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

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

相关文章

论如何在小程序展示超链接在线网页

在工作中遇到一个需求&#xff0c;就是在小程序中展示超链接网页&#xff0c;起初我是直接使用web-view标签 <web-view src"https://www.baidu.com/"/>但是web-view只能在开发阶段手机上展示&#xff0c;一旦小程序发布线上&#xff0c;就会出现下面这种情况“…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

如何通过跨网软件,实现网络隔离后的文件安全收发摆渡?

随着企业数字化转型的逐步深入&#xff0c;企业投入了大量资源进行信息系统建设&#xff0c;信息化程度日益提升。绝大多数企业为了防止内部核心数据泄露&#xff0c;会实施网络隔离&#xff0c;比如内外网隔离&#xff0c;或者在内部网络中又划分出研发网、办公网、生产网等。…

三、SpringBoot3 整合 SpringMVC

本章概要 实现过程web 相关配置静态资源处理自定义拦截器(SpringMVC 配置) 3.1 实现过程 创建程序引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www…

【数据结构与算法】力扣 142. 环形链表 II

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

安卓远离手机app

软件介绍 远离手机是专门为防止年轻人上瘾而打造的生活管理类的软件,适度用手机&#xff0c;保护眼睛&#xff0c;节约时间。 下载 安卓远离手机app

Codeforces CROC 2016 - Final Round B. Graph Coloring【2-SAT、二分图染色】

B. Graph Coloring 题意 有 n n n 个节点和 m m m 条边&#xff0c;起初每条边都有具有颜色 0 0 0 或 1 1 1 其中一种&#xff0c;可以选择一个节点&#xff0c;并将所有与这个点直接相连的边的颜色都翻转&#xff0c;问最少需要选择多少节点才能使所有边的颜色都一样&…

Pycharm2024安装

Pycharm2024安装 1.解压文件 获取方式在最后&#xff01;&#xff01;&#xff01;安装方式一样&#xff01; 2.双击安装 2.1.点击下一步 2.2.根据情况选择安装路径 最好不要使用中文。 2.3.勾选安装配置项 只选择创建桌面快捷方式就行了&#xff0c;其他选项可以不用。…

第一部分 Vue讲解(代码版)

1.第一个vue实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

【Java面试题】MySQL上篇(索引)

文章目录 索引1.索引的分类&#xff1f;2.B树和B树的区别&#xff1f;2.1B树2.2B树 3.为什么使用索引会加快查询&#xff1f;4.创建索引的注意点&#xff1f;5.索引在哪些情况下会失效&#xff1f;6.聚簇索引和非聚簇索引的区别&#xff1f;7.回表查询是什么&#xff1f;8.什么…

思迈特:“人工智能+”浪潮里,国产BI到了关键时刻

作为首个“AI程序员”&#xff0c;Devin最近参与了一系列工作&#xff0c;包括在人力资源外包平台Upwork完成编程工作&#xff1b;潜入一家明星创业公司内部群交流&#xff0c;为公司CTO调整代码方案等。这让整个软件工程行业大受震撼&#xff0c;程序员留言“刷屏”。 “AI…

TinyMPC 使用教程(二)

系列文章目录 前言 一、如何使用 TinyMPC 1.1 加载程序库 import tinympc import numpy as nptinympc_python_dir "/path/to/tinympc-python" tinympc_dir tinympc_python_dir "/tinympc/TinyMPC"prob tinympc.TinyMPC() prob.compile_lib(tinympc_d…

计算机网络:数据链路层 - CSMA/CD协议

计算机网络&#xff1a;数据链路层 - CSMA/CD协议 媒体接入控制CSMA/CD协议截断二进制指数退避算法帧长与帧间间隔信道利用率 媒体接入控制 如图所示&#xff0c;这是一根同轴电缆&#xff0c;有多台主机连接到这根同轴电缆上&#xff0c;他们共享这根传输媒体&#xff0c;形成…

又整新活,新版 IntelliJ IDEA 2024.1 有点东西!

就在上周&#xff0c;Jetbrains 又迎来了一波大版本更新&#xff0c;这也是 JetBrains 2024首个大动作&#xff01; JetBrains 为其多款 IDE 发布了 2024 年度首个大版本更新 (2024.1)。 作为旗下重要的产品之一&#xff0c;IntelliJ IDEA当然也不例外。这不&#xff0c;现如今…

使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅

作者&#xff1a;来自 Elastic Dmitrii Burlutskii 在 Elastic 的搜索团队中&#xff0c;我们一直在探索不同的 ETL 工具以及如何利用它们将数据传输到 Elasticsearch&#xff0c;并在传输的数据上实现 AI 助力搜索。今天&#xff0c;我想与大家分享我们与 Meltano 生态系统以及…

矩阵链乘法问题

描述 输入 输入共n1行 第一行输入矩阵的总个数n[2,1000] 后n行分别输入矩阵的维数[1,100] 输出 最后一行输出少乘法次数 输入样例 1 6 30 35 35 15 15 5 5 10 10 20 20 25 输出样例1 15125 代码实现 #include<iostream> #include<vector> #include<…

设计模式之观察者模式讲解

概念&#xff1a;定义对象间一种一对多的依赖关系&#xff0c;使得当每一个对象改变状态&#xff0c;则所有依赖于它的对象都会得到通知并被自动更新。 抽象主题&#xff1a;或者叫被观察者&#xff0c;可以持有、增加、删除观察者对象。具体主题&#xff1a;实现抽象主题定义的…

yolov5旋转目标检测遥感图像检测-无人机旋转目标检测(代码和原理)

YOLOv5&#xff08;You Only Look Once version 5&#xff09;是一个流行且高效的实时目标检测深度学习模型&#xff0c;最初设计用于处理图像中的水平矩形边界框目标。然而&#xff0c;对于旋转目标检测&#xff0c;通常需要对原始YOLOv5架构进行扩展或修改&#xff0c;以便能…

【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)

目录 题目思路及实现方式一&#xff1a;迭代模拟&#xff08;用链表模拟这个游戏&#xff09;思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二&#xff1a;数学迭代思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式三&#xff1a;递归思路代码实现Java版…

数字化智慧养老:引领老年人融入科技时代新生活

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 人类社会已经步入了一个全新的数字时代。在这个时代&#xff0c;互联网、大数据、人工智…