从零开始详解Python的变量类型注解

作者:

文章目录
  • 先看一个常见问题: # 不明确的写法 age = “18” # 看起来是数字,其实是字符串 result = age + 5 # 这里会出错! 如果一开始就明确age的类型,就可以有效减少这种错误: # 明确的写法 age: int = 18 # 明确告诉Python:age是整数 result = age + 5 # 正确:18 + 5 = 23 好处: 代码更容易理解 避免类型错误 IDE能给出更好的提示
  • 列表是存放多个数据的有序集合,可以重复元素。在定义列表时也可以通过:变量名:list = [元素1,元素2,元素3…] 这样的方式来定义。
  • 元组是不可变的有序序列,一旦创建就不能修改。以下是常用于固定数据组合和配置信息的两个实例。
  • 集合是无序的不重复元素序列,适合去重和集合运算。我们通过集合变量名:set = {元素1,元素2…}来实现。
  • 字典用来存储"键值对",就像现实中的字典一样。可以通过字典变量名:dict = {键名:键值}这种形式来定义。
  • 类型 特点 使用场景 格式 字符(str) 有序、可重复、不可修改 学生姓名 变量名: str = 值 列表(list) 有序、可重复、可修改 学生名单、成绩列表 变量名: list = 值 元组(tuple) 有序、可重复、不可修改 坐标、配置信息 变量名: tuple = 值 集合(set) 无序、不重复 标签、权限、去重数据 变量名: set = 值 字典(dict) 键值对、无序 学生信息、配置参数 变量名: dict = 值
  • 让我们用一个完整的例子来看看类型定义的实际价值,定义时虽然有点儿麻烦,但是后期引用时就非常的方便,而且能够更好地与其它编程语言兼容: # 基础信息 class_name: str = “三年级二班” student_count: int = 30 average_score: float = 87.5 is_excellent_class: bool = True # 列表 – 有序可重复数据 student_list: list = [“小明”, “小红”, “小刚”, “小丽”] score_list: list = [95, 92, 88, 90, 85] # 元组 – 不可变配置数据 class_config: tuple = (2024, “A班”, “张老师”) color_scheme: tuple = (255, 255, 255) # 白色 # 集合 – 不重复数据 subject_set: set = {“数学”, “语文”, “英语”, “物理”, “数学”} # 自动去重 permission_set: set = {“read”, “write”} # 字典 – 键值对数据 student_dict: dict = { “小明”: {“age”: 18, “score”: 95}, “小红”: {“age”: 17, “score”: 92} } subject_average: dict = { “math”: 89.5, “chinese”: 87.0, “english”: 91.2 } # 使用这些变量 print(f”班级:{class_name}”) print(f”学生名单:{student_list}”) print(f”唯一科目:{subject_set}”) print(f”班级配置:{class_config}”) # 集合的去重特性演示 duplicate_numbers = [1, 2, 2, 3, 4, 4, 5] unique_numbers: set = set(duplicate_numbers) print(f”去重前:{duplicate_numbers}”) print(f”去重后:{unique_numbers}”)
  • 学习了如何规范地自定义变量,下面我们根据下面几道题来巩固一下已经学习的知识吧。 请试着定义以下变量(记得加上类型): 你的个人信息(使用字典) 你的爱好列表(使用列表) 你的技能集合(使用集合,自动去重) 你的出生日期(使用元组) 示例答案: # 个人信息字典 personal_info: dict = { “name”: “张三”, “age”: 20, “city”: “北京” } # 爱好列表 hobbies: list = [“读书”, “编程”, “运动”, “音乐”] # 技能集合(自动去重) skills: set = {“Python”, “Java”, “SQL”, “Python”} # 结果:{‘Python’, ‘Java’, ‘SQL’} # 出生日期元组(年,月,日) birth_date: tuple = (2000, 5, 15)
  • 1.类型注解是可选但推荐的,它可以提高代码质量, 请记住这几个要点: 基础类型:int, float, str, bool 列表(list):有序可重复,用方括号 [] 元组(tuple):有序不可变,用圆括号 () 集合(set):无序不重复,用花括号 {} 字典(dict):键值对,用花括号 {key: value} 2. 类型注解方法是:变量名: 类型 = 值, 记住这个模板,不同类型的数据可以依次类推。 3. 从简单开始 – 先掌握基础类型,再学习集合类型数据。 4. 注意版本兼容性 – 根据Python版本选择合适的写法,Python3.9以上版本建议使用。 5. 保持一致性 – 在整个项目中保持统一的注解风格,便于识别bug和程序维护。 到此这篇关于从零开始详解Python的变量类型注解的文章就介绍到这了,更多相关Python变量类型内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python变量与数据类型全解析(最新整理) Python中的变量和数据类型使用方式 Python之变量类型详解 深入了解Python中的变量类型标注 Python中的变量及简单数据类型应用 Python 变量类型实例详解 Python变量和数据类型详解
  • 目录
    • 一、为什么要在定义时明确类型
    • 二、基础变量的类型定义
      • 数字类型
      • 文本类型
      • 布尔类型
    • 三、列表的类型定义
      • 数字列表
      • 字符串列表
    • 四、元组的类型定义
      • 固定数据组合
      • 配置信息
    • 五、集合的类型定义
      • 去重数据
      • 权限集合
    • 六、字典的类型定义
      • 学生信息字典
      • 成绩字典
    • 七、各种数据结构的对比
      • 八、实际应用案例
        • 九、类型定义的好处
          • 1. 代码更清晰,便于识别类型
          • 2. 避免错误,减少变量类型错误
          • 3. 利用集合特性
        • 十、练习时间
          • 总结

            我发现很多初学者在使用变量时很随意,这容易导致各种bug。Python的维护者们早就发现了这个问题,于是在 Python 3.6 版本引入了PEP 526,支持变量类型注解,不过集合类型注解(需要从typing导入)即:from typing import List, Dict, Set。Python 3.9 开始可以使用内置集合类型,无需typing导入,一直发展到现在Pyhon3.14的最新版,也一直支持这项功能。

            今天,我来教大家如何在定义变量时就明确类型,让代码更加通俗易懂、规范可靠、维护方便。

            先看一个常见问题:

            # 不明确的写法
            age = "18"      # 看起来是数字,其实是字符串
            result = age + 5  # 这里会出错!

            如果一开始就明确age的类型,就可以有效减少这种错误:

            # 明确的写法
            age: int = 18    # 明确告诉Python:age是整数
            result = age + 5  # 正确:18 + 5 = 23

            好处

            • 代码更容易理解
            • 避免类型错误
            • IDE能给出更好的提示

            # 整数
            student_age: int = 18
            student_count: int = 45
            
            # 小数
            student_height: float = 175.5
            average_score: float = 87.5

            # 字符串
            student_name: str = "小明"
            school_name: str = "第一中学"

            # 布尔值
            is_student: bool = True
            is_graduated: bool = False

            列表是存放多个数据的有序集合,可以重复元素。在定义列表时也可以通过:变量名:list = [元素1,元素2,元素3…] 这样的方式来定义。

            # 整数列表
            score_list: list = [90, 85, 78, 92]
            age_list: list = [18, 19, 17, 18]
            
            # 小数列表
            temperature_list: list = [36.5, 37.0, 36.8]
            price_list: list = [12.5, 8.9, 15.0]

            # 字符串列表
            student_list: list = ["小明", "小红", "小刚"]
            subject_list: list = ["数学", "语文", "英语"]

            元组是不可变的有序序列,一旦创建就不能修改。以下是常用于固定数据组合和配置信息的两个实例。

            # 学生基本信息(姓名,年龄,身高)
            student_info: tuple = ("小明", 18, 175.5)
            coordinates: tuple = (39.9, 116.4)  # 经纬度
            
            # 颜色RGB值
            color_red: tuple = (255, 0, 0)
            color_white: tuple = (255, 255, 255)

            # 数据库配置(主机,端口,用户名,密码)
            db_config: tuple = ("localhost", 3306, "admin", "password")
            app_settings: tuple = ("MyApp", "1.0.0", True)

            集合是无序的不重复元素序列,适合去重和集合运算。我们通过集合变量名:set = {元素1,元素2…}来实现。

            # 学生ID集合(自动去重)
            student_ids: set = {1001, 1002, 1003, 1001, 1004}
            unique_tags: set = {"python", "programming", "tutorial", "python"}
            
            # 课程标签
            course_tags: set = {"基础", "进阶", "实战", "项目"}

            # 用户权限
            user_permissions: set = {"read", "write", "execute"}
            admin_roles: set = {"super_admin", "content_admin", "user_admin"}

            字典用来存储"键值对",就像现实中的字典一样。可以通过字典变量名:dict = {键名:键值}这种形式来定义。

            # 定义学生信息
            student: dict = {
                "name": "小明",
                "age": 18,
                "score": 95,
                "is_monitor": True
            }
            
            class_info: dict = {
                "class_name": "三年级二班",
                "student_count": 45,
                "teacher": "张老师"
            }

            # 各科成绩
            score_dict: dict = {
                "math": 95,
                "chinese": 88,
                "english": 92,
                "physics": 85
            }

            类型 特点 使用场景 格式
            字符(str) 有序、可重复、不可修改 学生姓名 变量名: str = 值
            列表(list) 有序、可重复、可修改 学生名单、成绩列表 变量名: list = 值
            元组(tuple) 有序、可重复、不可修改 坐标、配置信息 变量名: tuple = 值
            集合(set) 无序、不重复 标签、权限、去重数据 变量名: set = 值
            字典(dict) 键值对、无序 学生信息、配置参数 变量名: dict = 值

            让我们用一个完整的例子来看看类型定义的实际价值,定义时虽然有点儿麻烦,但是后期引用时就非常的方便,而且能够更好地与其它编程语言兼容:

            # 基础信息
            class_name: str = "三年级二班"
            student_count: int = 30
            average_score: float = 87.5
            is_excellent_class: bool = True
            
            # 列表 - 有序可重复数据
            student_list: list = ["小明", "小红", "小刚", "小丽"]
            score_list: list = [95, 92, 88, 90, 85]
            
            # 元组 - 不可变配置数据
            class_config: tuple = (2024, "A班", "张老师")
            color_scheme: tuple = (255, 255, 255)  # 白色
            
            # 集合 - 不重复数据
            subject_set: set = {"数学", "语文", "英语", "物理", "数学"}  # 自动去重
            permission_set: set = {"read", "write"}
            
            # 字典 - 键值对数据
            student_dict: dict = {
                "小明": {"age": 18, "score": 95},
                "小红": {"age": 17, "score": 92}
            }
            
            subject_average: dict = {
                "math": 89.5,
                "chinese": 87.0,
                "english": 91.2
            }
            
            # 使用这些变量
            print(f"班级:{class_name}")
            print(f"学生名单:{student_list}")
            print(f"唯一科目:{subject_set}")
            print(f"班级配置:{class_config}")
            
            # 集合的去重特性演示
            duplicate_numbers = [1, 2, 2, 3, 4, 4, 5]
            unique_numbers: set = set(duplicate_numbers)
            print(f"去重前:{duplicate_numbers}")
            print(f"去重后:{unique_numbers}")

            # 没有类型定义 - 需要猜
            data1 = ["小明", 18, 95]
            data2 = (39.9, 116.4)
            data3 = {1, 2, 3}
            
            # 有类型定义 - 一目了然
            student_data: list = ["小明", 18, 95]
            coordinates: tuple = (39.9, 116.4)
            number_set: set = {1, 2, 3}

            # 元组不可修改的特性
            colors: tuple = ("red", "green", "blue")
            # colors[0] = "yellow"  # 这会报错!
            
            # 正确做法是创建新的元组
            new_colors: tuple = ("yellow", "green", "blue")

            # 自动去重
            tags: set = {"python", "编程", "教程", "python", "编程"}
            print(tags)  # 输出:{'python', '编程', '教程'} 自动去重

            学习了如何规范地自定义变量,下面我们根据下面几道题来巩固一下已经学习的知识吧。

            请试着定义以下变量(记得加上类型):

            • 你的个人信息(使用字典)
            • 你的爱好列表(使用列表)
            • 你的技能集合(使用集合,自动去重)
            • 你的出生日期(使用元组)

            示例答案:

            # 个人信息字典
            personal_info: dict = {
                "name": "张三",
                "age": 20,
                "city": "北京"
            }
            
            # 爱好列表
            hobbies: list = ["读书", "编程", "运动", "音乐"]
            
            # 技能集合(自动去重)
            skills: set = {"Python", "Java", "SQL", "Python"}  # 结果:{'Python', 'Java', 'SQL'}
            
            # 出生日期元组(年,月,日)
            birth_date: tuple = (2000, 5, 15)

            1.类型注解是可选但推荐的,它可以提高代码质量, 请记住这几个要点:

            • 基础类型:int, float, str, bool
            • 列表(list):有序可重复,用方括号 []
            • 元组(tuple):有序不可变,用圆括号 ()
            • 集合(set):无序不重复,用花括号 {}
            • 字典(dict):键值对,用花括号 {key: value}

            2. 类型注解方法是:变量名: 类型 = 值, 记住这个模板,不同类型的数据可以依次类推。

            3. 从简单开始 – 先掌握基础类型,再学习集合类型数据。

            4. 注意版本兼容性 – 根据Python版本选择合适的写法,Python3.9以上版本建议使用。

            5. 保持一致性 – 在整个项目中保持统一的注解风格,便于识别bug和程序维护。

            到此这篇关于从零开始详解Python的变量类型注解的文章就介绍到这了,更多相关Python变量类型内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • Python变量与数据类型全解析(最新整理)
            • Python中的变量和数据类型使用方式
            • Python之变量类型详解
            • 深入了解Python中的变量类型标注
            • Python中的变量及简单数据类型应用
            • Python 变量类型实例详解
            • Python变量和数据类型详解

            站内搜索