当前位置: 首页 > article >正文

03 - 变量与数据类型

03 - 变量与数据类型变量是编程里最基础的概念相当于你往电脑里存东西的容器。这章我们把变量的命名规则、Python 的几种基本数据类型都过一遍。变量是什么说白了变量就是一个有名字的盒子。你往里面放个东西以后想用这个名字就能取出来。name小明age25print(name,今年,age,岁)这里name和age就是变量。不是等于的意思而是把右边的东西放进左边的盒子里。跟数学里的等号不一样别搞混了。x10x20# 重新赋值原来的 10 就没了print(x)# 20变量可以随时重新赋值新值会覆盖旧值。命名规则变量名不是随便起的有几条硬性规则只能包含字母、数字、下划线不能以数字开头不能用 Python 的保留字比如if、for、class这些# 合法的user_name小明age230_privateTrue# 不合法的2nd_place银牌# 不能数字开头user-name小明# 不能用横杠for10# for 是保留字规则之外还有习惯。Python 社区约定变量名用小写字母加下划线# 推荐first_name小明total_price99.9# 不推荐虽然不会报错firstName小明# 驼峰命名是 Java/JS 的习惯FirstName小明# 大写字母开头一般留给类名起名字的时候尽量起有意义的。a 10; b 20这种写完了过两天你自己都不知道是什么。Python 的基本数据类型Python 里有几种基本的数据类型我们一个个来。整数int就是没有小数点的数字正数负数都行age25temperature-10population1_400_000_000# 可以用下划线分隔提高可读性1_400_000_000这个写法可能你没见过——Python 允许在数字中间加下划线当分隔符纯粹是为了好读跟1400000000完全等价。浮点数float就是带小数点的数字price19.99pi3.14159weight0.5注意一个坑浮点数运算可能不精确。print(0.10.2)# 0.30000000000000004不是 Python 的 bug几乎所有编程语言都有这个问题。因为电脑用二进制存小数有些十进制小数没法精确用二进制表示。就像 1/3 用十进制只能写成 0.333… 一样。如果真要做精确的小数运算比如算钱用DecimalfromdecimalimportDecimal price1Decimal(0.1)price2Decimal(0.2)print(price1price2)# 0.3精确的字符串str用引号包起来的文字单引号双引号都行name小明city北京两种引号没什么区别只是方便你在字符串里面用另一种引号# 字符串里有双引号外面就用单引号sentence他说你好# 反过来也行sentence2Its a good day如果两种引号都不够用可以用反斜杠转义sentence3他说\你好\不过说实话这种写法看着别扭能避免就避免。布尔值bool只有两个值True真和False假。注意首字母大写。is_studentTrueis_adultFalse布尔值经常用在条件判断里后面会详细讲age20is_adultage18# 20 18 是 Trueprint(is_adult)# True有意思的是True和False在 Python 里本质上就是1和0print(TrueTrue)# 2print(False*10)# 0虽然一般不会这么用但知道这个特性有时候能帮你理解一些代码。空值NoneTypeNone表示什么都没有“空”“不存在”。resultNoneprint(result)# None什么时候用呢比如一个函数暂时没有结果或者一个变量还没确定值可以先给它赋None。注意None不是0不是空字符串不是False。它就是None独一无二的无。类型转换有时候你需要把一种类型变成另一种类型。Python 提供了几个内置函数来干这事# 字符串转整数numint(42)print(num8)# 50# 字符串转浮点数pricefloat(19.99)print(price*2)# 39.98# 数字转字符串age25message我今年str(age)岁print(message)# 转布尔值print(bool(1))# Trueprint(bool(0))# Falseprint(bool())# False空字符串print(bool(hello))# True非空字符串关于bool()有个规律0、空字符串、None、[]空列表、{}空字典这些空的东西转成布尔值都是False其他的基本都是True。这个规律以后写条件判断的时候特别有用。类型检查不确定一个变量是什么类型用type()print(type(42))# class intprint(type(3.14))# class floatprint(type(hello))# class strprint(type(True))# class boolprint(type(None))# class NoneType还有一个更实用的方法isinstance()用来判断某个变量是不是指定类型age25print(isinstance(age,int))# Trueprint(isinstance(age,str))# Falseprint(isinstance(age,float))# False这个在做参数校验的时候会经常用到。多重赋值Python 有几个比较骚的赋值方式其他语言里不一定有# 同时给多个变量赋不同的值name,age,city小明,25,北京# 同时给多个变量赋相同的值xyz0# 交换两个变量的值不用临时变量a10b20a,bb,aprint(a,b)# 20 10最后那个交换操作我第一次看到的时候觉得挺神奇的。在其他语言里你得用一个临时变量才能交换Python 一行搞定。一个综合例子写个小程序把今天的知识串起来。新建profile.py# 用户信息卡片name小明age25height1.75is_studentTruehobbiesNone# 打印信息print( 个人信息 )print(姓名name)print(年龄str(age))print(身高str(height)米)print(是否学生str(is_student))print(爱好str(hobbies))# 算一下出生年份current_year2024birth_yearcurrent_year-ageprint(大约出生于str(birth_year)年)跑一下看看效果。注意里面用了好几次str()来把数字转成字符串因为字符串和数字不能直接用拼接。解包操作符* 和 **解包就是把一个容器拆开把里面的元素一个个取出来。这个特性在 Python 里用得非常频繁。* 解包列表/元组# 把列表拆成单独的变量first,*rest[1,2,3,4,5]print(first)# 1print(rest)# [2, 3, 4, 5]# 取头尾first,*middle,last[1,2,3,4,5]print(first)# 1print(middle)# [2, 3, 4]print(last)# 5# 只取最后几个*init,last_two,last_one[1,2,3,4,5]print(init)# [1, 2, 3]print(last_two)# 4print(last_one)# 5带*的变量会吃掉剩余的所有元素组成一个列表。* 解包用于合并a[1,2,3]b[4,5,6]# 合并列表merged[*a,*b]print(merged)# [1, 2, 3, 4, 5, 6]# 在中间插入result[0,*a,99,*b]print(result)# [0, 1, 2, 3, 99, 4, 5, 6]** 解包字典config1{host:localhost,port:8080}config2{debug:True,port:9090}# 合并字典后面的覆盖前面的merged{**config1,**config2}print(merged)# {host: localhost, port: 9090, debug: True}解包用于函数调用defadd(a,b,c):returnabc nums[1,2,3]print(add(*nums))# 6把列表拆成三个参数传入kwargs{a:1,b:2,c:3}print(add(**kwargs))# 6把字典拆成关键字参数传入第 10 章讲函数的时候会更详细地讲*args和**kwargs到时候你就明白它们和解包的关系了。本章小结变量是存数据的容器命名用小写字母加下划线Python 基本数据类型int整数、float浮点数、str字符串、bool布尔值、None空值浮点数运算可能不精确这是通用问题不是 Python 的锅int()、float()、str()、bool()可以做类型转换type()查看类型isinstance()判断类型Python 支持多重赋值和一行交换变量*和**可以解包列表和字典在赋值、合并、函数调用中都很常用面试题Q1is和有什么区别点击查看答案比较的是值是否相等is比较的是身份是不是同一个对象。a[1,2,3]b[1,2,3]print(ab)# True值一样print(aisb)# False不是同一个对象简单说问的是你俩长一样吗is问的是你俩是同一个人吗。实际开发中判断是否为 None 的时候推荐用isif x is None。Q2为什么0.1 0.2不等于0.3点击查看答案这不是 Python 的 bug是几乎所有编程语言的通用问题。电脑内部用二进制表示数字而0.1和0.2在二进制下是无限循环小数存储时会有微小的精度损失。类似十进制里1/3 0.333...没法精确表示。如果需要精确的小数运算比如金融场景应该用decimal模块的Decimal类型。Q3Python 的变量是值传递还是引用传递点击查看答案严格来说 Python 是对象引用传递也有人叫传对象。变量本身存的是对象的引用类似指针而不是值本身。但对于不可变类型int、float、str、bool、tuple你修改时实际上是创建了新对象所以表现得像值传递x10yx x20print(y)# 还是 10不受影响对于可变类型list、dict、set修改会影响所有引用它的变量a[1,2,3]ba a.append(4)print(b)# [1, 2, 3, 4]b 也变了Q4bool()的结果是什么为什么点击查看答案bool()返回False。Python 有一个truthiness规则空字符串、0、None、空列表、空字典、空集合等空的值都被视为False。非空的值被视为True。这个设计很实用比如判断字符串是否为空时不用写if s 直接写if s或if not s就行。上一章 | 下一章运算符与表达式 →

相关文章:

03 - 变量与数据类型

03 - 变量与数据类型 变量是编程里最基础的概念,相当于你往电脑里存东西的"容器"。这章我们把变量的命名规则、Python 的几种基本数据类型都过一遍。 变量是什么 说白了,变量就是一个有名字的盒子。你往里面放个东西,以后想用这个…...

DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪?

DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪? 当技术团队着手开发面向中国道路的自动驾驶系统时,数据集的选择往往成为第一个关键决策点。过去十年间,KITTI和nuScenes等国际数据集一直是行业标杆&…...

用Python复现Nature论文:仅需100次循环数据,提前预测锂电池寿命(附完整代码与数据集)

用Python实战预测锂电池寿命:从数据特征到模型部署全解析锂电池作为现代能源存储的核心组件,其寿命预测一直是工业界和学术界关注的焦点。传统方法往往需要等待电池出现明显容量衰减才能进行判断,而最新研究表明,通过分析早期循环…...

实战对比:用直方图均衡化与CLAHE拯救你的背光/过曝照片(附Python完整代码)

拯救逆光废片:直方图均衡化与CLAHE的实战效果对比每次旅行回来整理照片时,总会有几张因为光线问题几乎要删除的废片——要么是逆光下的人脸黑得看不清五官,要么是天空过曝失去所有云层细节。这些照片往往记录着重要时刻,直接删除实…...

OpenRASP原理与实战:Java应用层实时防护技术详解

1. 为什么我宁愿花三天部署OpenRASP,也不愿再写第五个自定义WAF过滤器去年冬天,我在给一家做在线教育SaaS平台做安全加固时,连续踩了三个坑:第一次用NginxLua写了套SQL注入规则,结果学生提交的“SELECT * FROM courses…...

在模型广场灵活选型让我找到了更适合代码生成的Taotoken模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在模型广场灵活选型让我找到了更适合代码生成的Taotoken模型 开发代码辅助工具时,选择合适的模型是平衡效果与成本的关…...

Claude端到端测试设计终极清单:覆盖17类非功能需求(含延迟敏感度分级、幻觉熔断阈值、多轮对话状态持久化验证)

更多请点击: https://kaifayun.com 第一章:Claude端到端测试设计的演进逻辑与核心范式 Claude端到端测试并非静态产物,而是随模型能力边界拓展、交互场景复杂化及可靠性要求升级而持续演化的工程实践。其演进逻辑根植于三个关键张力&#xf…...

从模糊到电影级景深:Midjourney + Topaz Gigapixel联调方案(含LUT预设包+PSD分层模板)

更多请点击: https://codechina.net 第一章:从模糊到电影级景深:Midjourney Topaz Gigapixel联调方案(含LUT预设包PSD分层模板) 当Midjourney生成的图像存在主体边缘柔化、背景层次缺失或分辨率不足等问题时&#xf…...

用图神经网络做缺陷定位,准确率比传统方法高出30%

在现代软件工程的复杂迷宫中,缺陷定位始终是测试团队面临的核心挑战。想象这样一个场景:一个电商系统在特定压力条件下偶发订单丢失,日志中只留下泛泛的超时错误,问题可能深藏在上百个微服务的调用链、分布式事务的竞态条件或某个…...

工业云脑:06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例

06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例 今天第九篇06小节——现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例。新手照着做10分钟就能跑起来,老手一看就知道这玩意儿省了多少钱。以前想上AI检测,得花几万块买专业边缘盒子;现在?树莓派5(RPi 5)…...

多模型聚合平台如何助力网站AIB测试与选型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 多模型聚合平台如何助力网站AIB测试与选型 对于网站产品经理而言,首页文案的生成质量直接影响用户的第一印象和转化率。…...

Android Root检测绕过:从逆向分析到Frida分层Hook实战

1. 这不是“绕过root检测”,而是理解检测逻辑后的精准干预在安卓逆向工程的实际工作中,“过root检测”这个说法本身就容易引发误解——它听起来像某种黑箱魔法,仿佛只要套用某个脚本、加载某个插件,就能让App对设备状态“视而不见…...

HiveWE终极指南:快速掌握魔兽争霸III现代化地图编辑器

HiveWE终极指南:快速掌握魔兽争霸III现代化地图编辑器 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为传统魔兽争霸III地图编辑器缓慢的加载速度和复杂的操作界面而烦恼吗?Hiv…...

JWT弱密钥爆破实战:从HS256签名原理到CTF权限提升

1. 这不是密码学考试,而是一场“密钥猜谜”实战JWT(JSON Web Token)在现代Web系统中早已不是可选项,而是默认配置。登录成功后返回一串形如eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjMsIm5hbWUiOiLnlKjliYkiLCJpYX…...

万星easy-vibe:描述需求即发布 零基础无需学语法

开源Easy-Vibe是一套开源AI编程学习方案,把学习顺序从先学语法再做项目翻转为直接做项目。文章拆解了项目驱动、提示词编写、AI编辑器和多Agent协作的完整流程,解释了为什么想法比语法更重要。 github上datawhalechina/easy-vibe:它在GitHub…...

LoRa物联网与动态基线算法在养殖体温监测中的实战应用

1. 项目概述:为什么我们需要一个智能体温监测系统?在规模化养殖场里干了十几年,我见过太多因为体温异常没被及时发现而导致的损失。一头育肥猪突然不吃食,等饲养员第二天巡栏发现时,可能已经高烧好几天,继发…...

因果推断与机器学习融合:量化分析社会运动中镇压与抗议的动态关系

1. 项目概述:当数据科学遇见社会运动如果你研究过社会运动,尤其是那些看似突然爆发、席卷全国的抗议浪潮,你可能会被一个核心问题困扰:国家机器的镇压,究竟是浇灭火焰的冷水,还是火上浇油的催化剂&#xff…...

NanaZip:现代Windows文件压缩问题的终极解决方案

NanaZip:现代Windows文件压缩问题的终极解决方案 【免费下载链接】NanaZip The 7-Zip derivative intended for the modern Windows experience 项目地址: https://gitcode.com/gh_mirrors/na/NanaZip 还在为Windows文件压缩工具界面老旧、功能单一而烦恼吗&…...

总线式智能提示灯系统设计:从恒流驱动到模块化架构

1. 项目概述:从传统到智能的剧场提示灯系统革新在剧场、演播室或者大型活动现场的后台,如果你待过,一定对那套“红灯停,绿灯行”的提示灯系统不陌生。导演或舞台监督通过对讲机喊“Standby”(准备)&#xf…...

Elden Ring帧率解锁终极指南:从60帧到144+的完整教程

Elden Ring帧率解锁终极指南:从60帧到144的完整教程 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/Elden…...

LeagueAkari:英雄联盟终极自动化助手革命性指南

LeagueAkari:英雄联盟终极自动化助手革命性指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否在英雄联盟游戏中反复经历这…...

通过Taotoken实现Hermes Agent自定义模型供应商接入

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken实现Hermes Agent自定义模型供应商接入 Hermes Agent是一个流行的AI智能体开发框架,它支持通过配置自定义…...

PvZ Toolkit终极指南:三步掌握植物大战僵尸最强修改器

PvZ Toolkit终极指南:三步掌握植物大战僵尸最强修改器 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为植物大战僵尸PC版设计的综合修改器工具,能够让你…...

微信小程序项目实战:从npm安装Vant Weapp到解决样式冲突的完整避坑指南

微信小程序工程化实战:Vant Weapp集成与样式冲突解决方案全解析 第一次在小程序里引入Vant Weapp时,我对着满屏错位的组件样式发呆了半小时——原本优雅的按钮变成了扭曲的色块,表单元素叠在一起像抽象画。这不是个例,根据社区反…...

DeepSeek代码风格检查避坑指南(内部审计报告首次披露:37个被忽略的合规红线)

更多请点击: https://intelliparadigm.com 第一章:DeepSeek代码风格检查的合规性本质与审计背景 DeepSeek代码风格检查并非单纯的技术偏好约束,而是嵌入研发治理链条中的合规性控制节点。其本质是将编程实践与组织级安全策略、行业监管要求&…...

网飞成立 AI 动画工作室,开启流媒体“原生 AI 制片时代”,中外布局逻辑有何不同?

1. Netflix“偷跑”在影视巨头关于 AIGC 的军备竞赛中,Netflix 再次加速。据外媒 TheVerge 报道,网飞于今年 3 月成立了名为 "INKubator" 的工作室,这是全球流媒体巨头中首个以生成式人工智能为核心的动画制作部门。此动作引发全球…...

yuzu模拟器完整指南:在电脑上畅玩Switch游戏的终极解决方案

yuzu模拟器完整指南:在电脑上畅玩Switch游戏的终极解决方案 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在电脑上体验任天堂Switch游戏的魅力吗?yuzu模拟器正是你寻找的完美答案。作为…...

Keil µVision反汇编窗口内容导出方案与调试技巧

1. 问题背景与需求解析在嵌入式开发过程中,调试环节往往占据大量时间。Keil Vision作为业界广泛使用的集成开发环境(IDE),其调试器功能强大但某些细节功能仍有提升空间。最近我在使用C251架构开发汽车电子控制单元时,就遇到了一个看似简单却影…...

三步让小爱音箱秒变AI语音助手:MiGPT深度配置指南

三步让小爱音箱秒变AI语音助手:MiGPT深度配置指南 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的"人工智障&q…...

Windows开机自动全屏打开指定网页?一个快捷方式参数就搞定(Chrome/Edge/Firefox教程)

Windows开机自动全屏展示网页的终极方案每次开机都要手动打开浏览器、输入网址、切换全屏模式?这种重复操作不仅浪费时间,还容易在重要演示时手忙脚乱。想象一下:电脑启动后自动全屏显示你的仪表盘、会议日程或是监控大屏,整个过程…...