52_Python变量与数据类型 Python变量与数据类型文章目录Python变量与数据类型前言一、认识Python变量1.1 什么是变量1.2 Python的变量命名规则1.3 推荐的命名风格二、核心数据类型详解2.1 数字类型Numeric Types2.2 字符串类型String2.3 布尔类型Boolean2.4 None类型三、Python的动态类型3.1 变量可以随时改变类型3.2 动态类型的优势与注意事项四、类型转换4.1 显式类型转换4.2 类型转换的常见陷阱4.3 实战用户输入处理五、实战练习个人信息卡片总结✅ 亮点总结适用场景扩展方向前言编程的本质是对数据的处理而变量和数据类型正是数据处理的基石。在上一篇文章中我们搭建了Python环境并运行了第一个程序今天我们将深入Python的数据世界系统学习数字、字符串、布尔值等核心数据类型理解Python动态类型的独特魅力以及如何进行类型之间的灵活转换。很多初学者对Python声明变量无需指定类型感到新奇但这既是Python灵活性的来源也是新手容易踩坑的地方——动态类型带来的运行时错误往往比编译期错误更难排查。本文不仅会讲解各数据类型的基础用法还会重点分析动态类型的优势和陷阱、类型转换的常见坑点以及在面试中经常被问到的假值判定规则。掌握这些基础知识后你将能自如地使用Python存储和操作各种形式的数据为后续流程控制和数据处理打下坚实基础。一、认识Python变量1.1 什么是变量变量可以理解为一个带标签的容器用来存储数据。在Python中变量不需要提前声明类型直接赋值即可使用nameAlice# 字符串变量age25# 整数变量height1.68# 浮点数变量is_studentTrue# 布尔变量1.2 Python的变量命名规则Python的变量命名需要遵循以下规则规则正确示例错误示例只能包含字母、数字、下划线user_name、count2user-name、count!不能以数字开头name1、_data1name、2data不能使用保留字my_classclass、if、for区分大小写Name和name是不同的变量—Python的保留字可以通过以下方式查看importkeywordprint(keyword.kwlist)# 输出[False, None, True, and, as, assert, async, ...不建议背保留字列表但开发中遇到命名报错时能快速意识到这个词可能是保留字并用keyword.kwlist验证即可。常见的踩坑保留字有class、type、list、dict、str、sum——这些词虽然在技术上可以覆盖Python不强制阻止但会覆盖内置函数导致难以排查的bug。1.3 推荐的命名风格Python社区遵循PEP 8命名规范# 变量和函数小写字母下划线snake_caseuser_nameBobtotal_count100# 常量全大写下划线MAX_SIZE1024PI3.14159# 类名大驼峰PascalCaseclassMyCustomClass:pass二、核心数据类型详解Python内置的核心数据类型分为以下几类2.1 数字类型Numeric TypesPython支持三种数字类型# 整数int—— 任意精度无需担心溢出a42b-10c0xFF# 十六进制值为255d0b1010# 二进制值为10# 浮点数float—— 双精度约15位有效数字pi3.14159sci1.5e-3# 科学计数法值为0.0015# 复数complexz34jprint(z.real)# 3.0print(z.imag)# 4.0算术运算符print(103)# 13加法print(10-3)# 7减法print(10*3)# 30乘法print(10/3)# 3.333...除法始终返回floatprint(10//3)# 3整除/地板除print(10%3)# 1取余print(10**3)# 1000幂运算2.2 字符串类型String字符串是Python中最常用的数据类型之一使用单引号或双引号定义s1Hellos2Pythons3这是一个 多行字符串s4也支持双引号的多行转义字符print(他说\你好\)# 双引号嵌套print(第一行\n第二行)# 换行print(列1\t列2\t列3)# 制表符Tabprint(C:\\Users\\Desktop)# 反斜杠自身使用原始字符串raw string可以忽略转义pathrC:\Users\Desktop\new_folder# 无需双写反斜杠print(path)# C:\Users\Desktop\new_folder2.3 布尔类型Boolean布尔类型只有两个值True和False注意首字母大写is_activeTrueis_emptyFalse# 布尔运算print(TrueandFalse)# Falseprint(TrueorFalse)# Trueprint(notTrue)# False# 比较运算产生布尔值print(105)# Trueprint(105)# Falseprint(10!5)# TruePython中下列值被视为False假值# 以下所有值在条件判断中都被视为Falseprint(bool(0))# Falseprint(bool(0.0))# Falseprint(bool())# False空字符串print(bool([]))# False空列表print(bool({}))# False空字典print(bool(None))# Falseprint(bool(set()))# False空集合其余值均被视为True。这一特性在条件判断中非常实用可以写出while items:代替while len(items) 0:代码更简洁。面试中常考的一个点是自己定义的类的实例默认是True还是False答案是True除非该类实现了__bool__或__len__方法并返回False/0。2.4 None类型None是Python中的空值表示没有值或未知常用于初始化和默认参数resultNone# 表示还没有结果ifresultisNone:print(暂无数据)三、Python的动态类型这是Python区别于Java、C等静态类型语言的一个重要特性。3.1 变量可以随时改变类型x100# x是int类型print(type(x))# class intxhello# 同一个x现在变成了str类型print(type(x))# class strx[1,2,3]# x又变成了list类型print(type(x))# class list3.2 动态类型的优势与注意事项优势代码简洁灵活无需大量类型声明开发效率高。注意事项动态类型也意味着类型错误要到运行时才能发现# 这种代码在静态语言中编译时就会报错但Python要到运行时a10b二十print(ab)# TypeError: unsupported operand type(s) for : int and str最佳实践使用isinstance()进行运行时类型检查defadd(a,b):ifnotisinstance(a,(int,float))ornotisinstance(b,(int,float)):raiseTypeError(参数必须是数字类型)returnabprint(add(10,20))# 30print(add(10,20))# TypeError: 参数必须是数字类型四、类型转换Python提供了丰富的内置函数用于数据类型之间转换。4.1 显式类型转换# 转整数print(int(3.14))# 3print(int(42))# 42print(int(1010,2))# 10将二进制字符串转为十进制整数# 转浮点数print(float(5))# 5.0print(float(3.14))# 3.14# 转字符串print(str(100))# 100print(str(True))# Trueprint(str([1,2,3]))# [1, 2, 3]# 转布尔值print(bool(1))# Trueprint(bool(0))# Falseprint(bool(hello))# Trueprint(bool())# False4.2 类型转换的常见陷阱# int()不能转换带小数点的字符串# int(3.14) # ValueError!# 正确做法先转float再转intprint(int(float(3.14)))# 3# 空字符串转bool为Falseifnot:print(空字符串被视为False)此外浮点数转整数是直接截断而非四舍五入int(3.9)的结果是3而不是4。如果需要四舍五入应使用round(3.9)。而bool类型实际上是int的子类True 1和False 0在Python中是成立的这意味着True True的结果是2——虽然这看起来有点奇怪但在某些计数场景中确有用处。4.3 实战用户输入处理用户输入始终是字符串类型需要转换后才能进行数学运算# 简单计算器num1input(请输入第一个数字)num2input(请输入第二个数字)# 必须转换为数字类型resultfloat(num1)float(num2)print(f{num1}{num2}{result})五、实战练习个人信息卡片综合运用变量和数据类型编写一个信息卡片程序defcreate_profile():创建个人信息卡片# 基本信息nameinput(姓名)ageint(input(年龄))heightfloat(input(身高(m)))weightfloat(input(体重(kg)))# 计算BMIbmiweight/(height**2)is_healthy18.5bmi24.9# 学历信息列表education[高中,本科,硕士,博士]edu_indexint(input(f最高学历{education}(0~3)))highest_edueducation[edu_index]# 输出信息卡片print(\n*30)print(f 个人信息卡片)print(*30)print(f 姓名{name})print(f 年龄{age}岁)print(f 身高{height}m)print(f 体重{weight}kg)print(f BMI{bmi:.1f})print(f 健康状况{良好ifis_healthyelse需要注意})print(f 学历{highest_edu})print(*30)if__name____main__:create_profile()总结本文我们系统学习了Python的变量与数据类型核心要点回顾变量命名遵循蛇形命名法snake_case区分大小写不能与保留字冲突数字类型包括int、float、complex整数具有任意精度字符串用引号定义支持转义字符和原始字符串raw string布尔类型只有True和False空值、0、空容器均被视为FalseNone表示空值常用于初始化和默认参数动态类型让Python灵活高效但也需要谨慎处理类型安全问题类型转换使用int()、float()、str()、bool()等内置函数变量和数据类型是编程世界的基本粒子理解它们是将复杂问题分解为可计算步骤的前提。下一篇文章我们将学习条件判断与循环掌握程序的流程控制让代码具备决策和重复执行的能力。✅ 亮点总结动态类型机制Python无需声明变量类型赋值即定义灵活高效但需要谨防类型相关的运行时错误数字类型全解析int任意精度整数、float浮点数、complex复数以及二进制/八进制/十六进制表示字符串与转义字符单/双/三引号用法\n、\t等转义序列raw string忽略转义的场景布尔与None类型True/False的真值判定规则空值、0、空容器均为FalseNone的初始化与默认参数用法类型转换体系int()、float()、str()、bool()等内置函数理解隐式转换与显式转换的区别适用场景编写数据处理脚本时合理选择数据类型避免类型不匹配导致的bug解析API接口返回的JSON数据正确进行类型转换和校验读取配置文件/环境变量时确保数据类型正确如端口号应为int而非str扩展方向深入学习Python内存管理与对象引用机制理解id()和is运算符掌握typing模块的类型注解体系配合 mypy 实现静态类型检查推荐继续阅读下一篇Python条件判断与循环赋予程序决策能力