Python常量与变量的终极指南:从基础到进阶的15个要点

news2024/10/5 13:17:27

今天,我们将一起揭开Python中最基本但也极其重要的概念——常量与变量的神秘面纱。别担心,我会用最简单直白的语言,让你从入门到略有小成,一步步掌握这些核心知识。准备好你的笔记本,让我们开始这场Python之旅吧!

1. 常量:不变的真理

在Python中,常量是指那些一旦被赋值后就不再改变的值。虽然Python没有严格意义上的常量关键字,但习惯上我们用大写字母表示常量,比如 PI = 3.14159。记住,这更多是一种约定,而不是强制。

# 示例:定义一个常量  
PI = 3.14159  

2. 变量:灵活的存储空间

变量则是存储数据的容器,它的值可以改变。命名变量时,要保持简洁且描述性强,比如用 student_name 而不是 sn

# 示例:定义并改变变量的值  
student_name = "Alice"  
print(student_name)  
student_name = "Bob"  # 变量值可以改变  
print(student_name)  

3. 数据类型:了解你的存储对象

Python有多种数据类型,如整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。知道这些类型能帮助你更好地管理变量。

age = 25  # 整型  
height = 1.78  # 浮点型  
greeting = "Hello, World!"  # 字符串  
is_student = True  # 布尔型  

4. 变量赋值的魔法:多重赋值

Python允许你一次性给多个变量赋相同的值,或者同时给多个变量赋不同的值。

x, y, z = 1, 2, 3  # 同时赋不同值  
a = b = c = 42  # 同一值赋给多个变量  

5. 类型转换:让数据流动起来

有时你需要将一种类型的数据转换为另一种类型,这可以通过类型转换函数实现,如 int(), float(), str()

age_str = "25"  
age_int = int(age_str)  # 将字符串转换为整数  

6. 静态类型与动态类型:Python的灵活性

Python是动态类型语言,这意味着你在声明变量时不需要指定类型,它会自动推断。相比Java等静态类型语言,这提供了很大的便利性。

7. 全局变量与局部变量

在函数内部定义的变量是局部变量,只在该函数内部有效。全局变量则在整个文件范围内有效,但如果你想在函数内部修改全局变量,需要使用 global 关键字。

# 全局变量  
total = 0  
  
def add_to_total(value):  
    global total  
    total += value  
  
add_to_total(10)  
print(total)  # 输出:10  

8. 变量作用域:哪里能访问我?

理解变量的作用域对于避免错误至关重要。局部变量在函数内定义,只能在该函数内访问;而全局变量可以在整个脚本中访问。

9. 不可变与可变对象:深浅拷贝的秘密

字符串和数字是不可变对象,一旦创建就不能改变其值。列表和字典是可变对象,可以修改它们的内容。这在处理数据时尤为重要。

10. 隐式类型转换:小心的惊喜

Python在某些操作中会自动进行类型转换,比如加法操作,但这可能带来预期之外的结果,所以要小心。

print("10" + str(20))  # 结果:"1020"  

11. 空值:None的含义

None 是Python中的一个特殊类型,表示没有值或空状态,常用于初始化变量或函数返回值。

result = None  

12. 变量命名规范:让代码自解释

遵循驼峰命名法或下划线命名法,避免使用Python关键字作为变量名,这样可以提高代码的可读性。

13. 实战案例:变量的应用

假设我们要编写一个简单的程序来计算一个人的年龄到100岁还需要多少年。

current_age = 25  
age_to_reach = 100  
years_left = age_to_reach - current_age  
print(f"You have {years_left} years until you reach 100.")  

14. 练习技巧:动手实践

  • 练习1:编写一个程序,询问用户的名字和年龄,然后计算并显示他们将在哪一年达到100岁。

  • 练习2:理解并演示变量作用域,创建一个函数,在不使用 global 关键字的情况下,尝试改变一个全局变量的值,观察结果。

15. 注意事项:避免常见的陷阱

  • 在给变量赋值前确保它没有被定义为其他类型的值,尤其是当涉及数字和字符串操作时。

  • 注意不要过度使用全局变量,以减少潜在的命名冲突和代码的维护难度。


接下来让我们探索一些高级概念和实用技巧,这将帮助你更加熟练地运用这些基础知识。

16. 变量的生命周期

变量的生命周期是从它被定义时开始,到程序执行结束或者变量被重新赋值覆盖时结束。理解这一点对于优化内存使用至关重要。

17. 使用del删除变量

当你不再需要某个变量时,可以使用del语句删除它,释放相关内存。

my_var = "Hello"  
print(my_var)  # 输出: Hello  
del my_var  
print(my_var)  # 这里会引发NameError,因为变量已被删除  

18. 变量与引用:深入了解对象

在Python中,复杂数据类型(如列表、字典)的变量实际上是对象的引用。这意味着当你“赋值”给另一个变量时,你实际上是在共享这个对象的引用,而非复制其内容。

list1 = [1, 2, 3]  
list2 = list1  
list2.append(4)  
print(list1)  # 输出: [1, 2, 3, 4],说明list1和list2指向同一个列表对象  

19. 深拷贝与浅拷贝

为了真正复制一个复杂对象而不共享引用,可以使用深拷贝。Python标准库中的copy模块提供了这一功能。

import copy  
list1 = [1, 2, [3, 4]]  
list2 = copy.deepcopy(list1)  
list2[2][0] = 5  
print(list1)  # 输出: [1, 2, [3, 4]],说明深拷贝后的修改不会影响原列表  

20. 性能考虑:变量使用效率

虽然Python自动管理内存,但在处理大量数据时,明智地使用变量和数据结构可以显著影响程序的性能。例如,尽量减少全局变量的使用,避免不必要的数据复制。

结语

掌握了这些关于常量与变量的高级概念,你就拥有了更强大的工具来构建复杂的Python程序。

好了,今天的分享就到这里了,我们下期见。欢迎大家留言讨论任何技术及相关问题_如果本文对你有帮助,请点赞、转发、点个在看吧!

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

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

相关文章

轻预压:滚珠丝杆精度与刚性的平衡点!

预压是指在所需的工作负荷下,使滚珠丝杆预先承受一定的负荷,从而使滚珠丝杆的轴向向心度和侧向偏差达到较小的偏差范围,保证了滚珠丝杆的准确性和稳定性,也确保机器的高精度和长期运作的可靠性。 预压是滚珠丝杆设计中的一个重要参…

基于Java技术的人事管理系统

你好,我是专注于计算机科学领域的小野。如果你对人事管理系统感兴趣或有相关需求,欢迎私信交流。 开发语言: Java 数据库: MySQL 技术: B/S模式、Java技术、SpringBoot 工具: Eclipse、MySQL、浏览…

Selenium 切换 frame/iframe

环境: Python 3.8 selenium3.141.0 urllib31.26.19说明: driver.switch_to.frame() # 将当前定位的主体切换为frame/iframe表单的内嵌页面中 driver.switch_to.default_content() # 跳回最外层的页面# 判断元素是否在 frame/ifame 中 # 126 邮箱为例 # …

基于若依的文件上传、下载

基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了,但是我是自己改造封装了一下,再次迈向全栈…

vofa+:一款超级好用的可视化串口调试软件

目录 一、软件配置 1、先配置好usart1串口 2、重定向printf: 3&#xff0c;勾选魔术棒中的LIB 二、vofa的使用 1、RawData模式 2、FireWater 一、软件配置 1、先配置好usart1串口 2、重定向printf: 在 stm32f4xx_hal.c中添加&#xff1a; #include <stdio.h> e…

加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?

根据最新消息&#xff0c;美国9月降息的概率已经突破70%&#xff0c;这对加密货币市场来说是个利好消息。与此同时&#xff0c;美国经济表现疲软&#xff0c;可能会陷入衰退&#xff0c;联邦储备系统(Fed)接下来会不会果断采取大幅降息措施备受关注。 美国劳工统计局7月5日公布…

VBA初学:零件成本统计之一(任务汇总)

经过前期一年多对金蝶K3生产任务流程和操作的改造和优化&#xff0c;现在总算可以将零件加工各个环节的成本进行归集了。 原本想写存储过程&#xff0c;通过直接SQL报表做到K3中去的&#xff0c;但财务原本就是用EXCEL&#xff0c;可以方便调整和保存&#xff0c;加上还有一部分…

Java对象比对工具

背景 前段时间的任务中&#xff0c;遇到了需要识别两个对象不同属性的场景&#xff0c;如果使用传统的一个个属性比对equals方法&#xff0c;会存在大量的重复工作&#xff0c;而且为对象新增了属性后&#xff0c;比对方法也需要同步修改&#xff0c;不方便维护&#xff0c;于是…

76 4G模组 境外拨号入网注意

1 引言 最近朋友把国内的设备拿到新加坡了&#xff0c;然后发现原本国内可以使用的设备无法在异国他乡联网&#xff0c;所以就叫我来看看&#xff0c;发现是附网返回状态、入网APN发生了改变导致的。另外&#xff0c;如果在境外使用国产4G模组拨号入网&#xff0c;也需要关注4G…

Nginx实战:nginx性能压测(ab)

在nginx的生产实践中,不管是服务上线,还是性能优化,都会遇到需要对nginx的性能压测,本文介绍一个简单的压测工具:ab命令 ab(Apache Bench)是一个常用的HTTP压力测试工具,可以用来测试Nginx的性能和压力。ab命令可以指定并发请求数、请求数、请求类型等参数,并输出测试…

MySQL第三次作业--DML语句(INSERT)

目录 一、在数据库中创建一个表student&#xff0c;用于存储学生信息 二、向student表中添加一条新记录&#xff0c;记录中id字段的值为1&#xff0c;name字段的值为"monkey"&#xff0c;grade字段的值为98.5 三、向student表中添加多条新记录&#xff1a; 2,&qu…

G1.【C语言】EasyX初步了解

1.介绍 EasyX 是针对 C/C 的图形库&#xff0c;可以帮助使用C/C语言的程序员快速上手图形和游戏编程。 2.安装 EasyX Graphics Library for CEasyX Graphics Library 是针对 Visual C 的绘图库&#xff0c;支持 VC6.0 ~ VC2019&#xff0c;简单易用&#xff0c;学习成本极低…

使用WinSCP工具连接Windows电脑与Ubuntu虚拟机实现文件共享传输

一。环境配置 1.首先你的Windows电脑上安装了VMware虚拟机&#xff0c;虚拟机装有Ubuntu系统&#xff1b; 2.在你的windows电脑安装了WinSCP工具&#xff1b; 3.打开WinSCP工具默认是这样 二。设置WinSCP连接 打开WinSCP&#xff0c;点击新标签页&#xff0c;进入到如下图的…

编码与加密

编码与加密在爬虫中经常涉及&#xff0c;常见的编码有base64, unicode, urlencode&#xff0c;常见的加密有MD5, SHA1, HMAC, DES, AES, RSA。 下面逐一介绍&#xff1a; 一&#xff0c;编码 1.1 常规编码 常规编码约定了字符集中字符与一定长度二进制的映射关系&#xff0…

leetcode刷题(51-60)

算法是码农的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就可以啦…

BES 平台 SDK之ANC 参数调整

前言: 最近项目开发进入到DV 阶段,客户临时提了一个需求,希望在ota升级的时候,保留ANC 参数下的total_gain 值,ota只更新滤波器相关参数。total_gain 继续使用产线校准好的值。 一:ANC 参数 1.首先需要找到代码对应ANC 加载的函数: best1502x_ibrt_anc_…

TeXstudio对已加载宏包的命令标记为暗红色未知命令

宏包已正常加载&#xff0c;编译也正常&#xff0c;但却将某些命令标记为暗红色。 具体的原因可参考 https://sourceforge.net/p/texstudio/wiki/Frequently%20Asked%20Questions/#how-does-txs-know-about-valid-commandshttps://sourceforge.net/p/texstudio/wiki/Frequent…

Vue 3集成krpano 全景图展示

Vue 3集成krpano 全景图展示 星光云全景系统源码 VR全景体验地址 星光云全景VR系统 将全景krpano静态资源文件vtour放入vue项目中 导入vue之前需要自己制作一个全景图 需要借助官方工具进行制作 工具下载地址&#xff1a;krpano工具下载地址 注意事项&#xff1a;vuecli…

(软件06)串口屏的应用,让你的产品显得高级一点(下篇)

本文目录 学习前言 单片机代码实现 学习前言 目前市面上我记得好像有IIC的屏幕、SPI的屏幕、并口屏幕、还有就是今天我们介绍的这个串口屏了&#xff0c;串口屏&#xff0c;就是用串口进行通讯的&#xff0c;上篇我们已经介绍了屏幕供应商提供的上位机软件进行配置好了&#…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术的个人学习心得、作业及bug记录 Day1

黑马程序员前端AJAX入门到实战全套教程&#xff0c;包含学前端框架必会的&#xff08;ajaxnode.jswebpackgit&#xff09;&#xff0c;一套全覆盖 Day1 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​…