Python 基础语法 - 变量

1. 变量存在的意义

  • 变量在程序中是用来保存数据

优点:

  • 提高可读性
    • 变量使代码更易于理解。通过使用有意义的变量名,其他开发者(或自己在未来)能够更快地理解代码的意图。
  • 简化维护
    • 如果需要更改某个值,只需修改变量的定义,而不是在代码中查找所有出现该值的地方。这减少了出错的可能性,并提高了维护效率。
  • 便于重复利用
    • 变量可以在多个地方使用,而不必重复编写相同的值。这提高了代码的可重用性,减少了冗余。
  • 动态性
    • 变量可以根据程序的运行状态动态地存储和修改值,使得程序能够应对变化的条件或输入。
  • 节省内存
    • 通过使用变量,可以更有效地管理内存。只需在需要时分配内存,使用完毕后再释放。
  • 便于调试
    • 通过使用变量,可以轻松地插入打印语句(或使用调试工具)来检查变量的值,帮助找出代码中的问题。

问题:

        如果程序中的某个位置需要一个数据,那么在程序中应该如何来提供这个数据?

# 做法1:在需要数据的地方直接提供数据
print(25)
print(90 + 5)# 做法2:在需要数据的时候,先将数据保存到变量中,再通过这个变量来提供对应的数据
age = 25
print(age)score = 90
print(score + 5)

总结:

        在程序中需要数据的时候,应该先将数据存储到变量中,然后再通过这个变量来使用数据(不要直接使用数据)

2. 定义变量

  • 语法
    • 变量名 = 数据

a = 123
name = '小明'
age = 18
  • 说明
    • 变量名 - 由程序员自己命名
      • 两个要求:
        • 是标识符
        • 不是关键字
      • 三个规范:
        • 见名知义(看到变量名就大概知道这个变量中保存的是什么数据)
        • 名字如果由多个单词构成,单词和单词之前用_隔开(目前python也支持驼峰试命名)
        • 不适用系统函数名(print、input、type....)、类名(int、float、str、bool)和模块名
    • = - 赋值符号;固定写法
    • 数据 - 需要保存到变量中的内容

#变量名 赋值符号 存放数据
a       =      123
name    =      '小明'
age     =      18

3. 使用变量/重新赋值

# 在程序中需要数据的时候就直接提供保存数据的变量就可以了num = 23
print(num)print(num + 100)
print(type(num))# 重新给变量赋值
num = 100
print(num)

4. 同时定义多个变量

4.1 同时定义多个变量赋相同的值:

  • 格式:变量1 = 变量名2 = 变量名3 = ... = 数据
a = b = c = 100
print(a, b, c)#三个变量的值都为 100

4.2 同时定义多个变量赋不同的值

  • 格式:变量1, 变量名2, 变量名3 = ... = 数据1, 数据2, 数据3, …

#注意: 变量名的数量必须与数据的数量一致
x, y, z = 10, 20, 30
print(x, z, y)

4.3 应用:快速交换两个变量中的数据

# 方法1
# 先定义一个空的容器a,存储m的值,然后定义m = n 的值,然后再将 n 的值定义为 a(m)
m = '6'
n = 11
a = ''
print(m, n)
a = m
m = n
n = a
print(m, n)# 方法2
# 直接使用python定义多个变量的概念,直接给m,n重新赋值如下:
m = '6'
n = 11
m, n = n, m
print(m,n)

5. 变量存储底层逻辑

5.1 计算机内存单位

bit(位) - 计算机最小单位

1 bytes(字节) = 8 bit - 程序员申请内存的最小单位

1 Mb = 1024 bytes

5.2 python定义变量和重新给变量赋值的底层逻辑

  • 定义变量的时候会先计算需要保存的数据需要多大的内存,然后再按照计算结果去申请指定大小的内存,将数据保存到内存中,最后让变量和这个内存进行关联;
  • 重新赋值的时候会根据新的数据申请新的内存,新的内存的大小由新的数据决定,然后将新的数据保存到新的内存中,最后让变量和新的内存进行关联

总结:

  • python在定义变量或给变量重新赋值的时候都会根据数据的实际大小来重新申请内存
    • 优点:不会有过度浪费内存及数据溢出的情况
    • 缺点:效率低,不管是新定义还是重新赋值都需要重新申请内存等一系列操作,导致效率低

5.3 c、c++ 定义变量和重新给变量赋值的底层逻辑

  • C 在定义变量的时候是程序员来考虑这个变量现在及以后占用的数据会是多大,是由程序员来设定的。
  • C 在重新赋值的时候,直接将之前的值删除,将新的值填到里面。

总结:

  • C语言在效率方面确实提高了很多,它是将计算变量数据大小的工作交给了程序员,而释放了设备的资源。
    • 优点:
      • 效率高
        • 因为将计算变量数据大小的工作交给了程序员,相当于C语言少了一个工作步骤
        • 且在重新赋值的时候也不需要修改内存大小,直接将旧的删除,填写新的数据
    • 缺点:
      • 程序编写复杂,程序员需要考虑变量数据存储大小
      • 会有内存过度浪费及数据溢出的情况
        • 比如:
          • int 数字类型,就直接占用 4个字节内存,如果只是存储 100 这个数字,则会导致严重的内存浪费
          • 如果存储 超过4个字节内存的数据,则会导致数据溢出

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

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

相关文章

【动手学强化学习】part6-策略梯度算法

阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、REINFORCE算法2.1 必要说明softmax()函数交叉熵策略更新思想 2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明…

LSTM(Long Short-Term Memory,长短期记忆网络)在高端局效果如何

lstm 杂乱数据分析 LSTM(Long Short-Term Memory,长短期记忆网络)在高端局,即复杂的机器学习和深度学习应用中,展现出了其独特的优势和广泛的应用价值。以下是对LSTM在高端局中的详细解析: 一、LSTM的优势…

大语言模型驱动的跨域属性级情感分析——论文阅读笔记

前言 论文PDF下载地址:7156 最近想搜一下基于大语言模型的情感分析论文,搜到了这篇在今年发表的论文,于是简单阅读之后在这里记一下笔记。 如图1所示,在餐厅领域中的"快"是上菜快,属于正面情感,但…

jfif图片怎么改成jpg?几种非常简单的jfif转jpg方法

jfif图片怎么改成jpg?随着图像技术的日新月异,用户在图像的编辑、处理与分享过程中,常常需要根据实际需求,灵活转换图像格式,以适应多样化的应用场景。正是这一需求,催生了将jfif格式向jpg格式转换的广泛实…

一些剪视频需要下载视频、chatTTS文字转语音的相关代码

可以在YouTube下载视频,下载字幕,以及需要文字转音频的一些代码,自己写的,目前也是能实现一点小需求~ 是需要下载FFmpeg、yt-dlp.exe、chrome_cookies插件,需要下载的自行search,不再赘述 人机验证 需要…

电能表预付费系统-标准传输规范(STS)(22)

6.5.2.3 DecoderKey classification 6.5.2.3.1 Classification of decoder keys STS DecoderKeys are classified according to the KT values given in Table 32 and inherit their type from that of the VendingKey, from which they are derived. STS decoderkey根据表32…

msvcr100.dll丢失怎么办,总结六种解决msvcr100.dll丢失的方法

​msvcr100.dll是Microsoft Visual C 2010 Redistributable Package中的一个关键动态链接库文件。它包含了运行由Visual C 2010编译的应用程序所需的一系列函数和类。简单来说,许多使用 Visual C 2010 编译的应用程序在启动或运行过程中会依赖 msvcr100.dll 文件。如…

Java基础 —— IO流详解

IO流 在Java中,IO(输入/输出)流是用于在程序与外部世界(如文件、网络、内存等)之间传输数据的机制。IO流分为两大类:输入流(InputStream/Reader)和输出流(OutputStream/…

软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答(代码规范与生态管理)

软硬件开发,对于编码规范、生态管理等等综合问题的考察尤为重要。 阐述下环形缓冲区的用途 环形缓冲区(Ring Buffer)是一种固定大小的数据结构,常用于实现数据的流式传输或临时存储。在环形缓冲区中,当到达缓冲区的末尾…

计算机网络:数据链路层 —— 虚拟局域网 VLAN

文章目录 局域网虚拟局域网 VLAN虚拟局域网 VLAN 概述实现机制IEEE 802.1Q帧以太网交换机的接口类型Access 接口Trunk 接口Hybrid 接口不进行人为的VLAN划分划分两个不同VLANTrunk接口去标签后进行转发Trunk接口直接转发 局域网 局域网(Local Area Network&#xf…

【Vulnhub靶场】DC-6

DC-6靶场下载地址:https://download.vulnhub.com/dc/DC-6.zip​​​​​​ 目标 本机IP:192.168.118.128 靶机IP:192.168.118.0/24 信息收集 主机发现 arp-scan 192.168.118.0/24 根据上图得出目标主机为192.168.118.143 扫描端口&#x…

深入理解Java基础概念的高级应用(1/5)

目录 1. Java内存模型:堆、栈与方法区 示例代码:对象存储位置 2. 类加载器的工作原理 示例代码:自定义类加载器 3. JVM如何执行字节码 字节码指令示例 4. Java基础数据类型的存储与操作 自动装箱与拆箱 示例代码:基础类型…

Python小游戏14——雷霆战机

首先,你需要确保安装了Pygame库。如果你还没有安装,可以使用pip来安装: bash pip install pygame 代码如下: python import pygame import sys import random # 初始化Pygame pygame.init() # 设置屏幕大小 screen_width 800 scr…

Android在kts中使用navigation及Args

Android在kts中使用navigation及Args 前言: ​ 之前在项目中使用过navigation,但都是以Groory的方式,最近一年多使用kts后忍不住把项目都改成kts的方式,不过其中也遇到不少坑,今天就讲解一下如何在kts中使用navigati…

解决蓝牙键盘按键错乱的问题

最近发现我的蓝牙键盘按下的键盘与实际不符,于是就上网搜索答案,网上的方法都试了一遍 最后想着准备退货,没想到客服直接给我解决了 原因很简单,就是之前误触了键盘的某些按键导致的 每个键盘品牌的按键因该都不同的,可…

VBA技术资料MF220:删除模块内容

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

英伟达GPU算力【自用】

GPU(图形处理单元)算力的提升是驱动当代科技革命的核心力量之一,尤其在人工智能、深度学习、科学计算和超级计算机领域展现出了前所未有的影响力。2024年的GPU技术发展,不仅体现在游戏和图形处理的传统优势上,更在跨行…

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…

qt 滚动条 美化

qt QScrollBar 滚动条分为竖直与水平滚动条,两者设置上类似,但也有一些不同,下面主要讲述美化及注意事项。 一、竖直滚动条 竖直滚动条分为7个部分: sub-line、 up-arrow 、sub-page、 hanle、 add-line、 dow-arrow、 add-pag…

线性回归模型与检验 6个适用条件

当因变量与自变量间存在线性相关关系时,可以使用线性回归分析方法确定它们之间的相互依赖的定量关系。此处所说的定量关系,并非严格的因果关系,而是自变量X对因变量Y的影响或预测的作用。 例如分析广告费、产品单价、产品满意度、服务满意度…