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

今天,我们将一起揭开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.mfbz.cn/a/777825.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python人形机踊跃跨栏举重投篮高维数动作算法模型

🎯要点 🎯运动功能: 1 m / s 1 m / s 1m/s上台阶、站立平衡、 1 m / s 1 m / s 1m/s行走、坐椅子、 5 m / s 5 m / s 5m/s跑步、 1 m / s 1 m / s 1m/s爬行、穿越森林、取物、穿越迷宫、 1 m / s 1 m / s 1m/s上滑梯、 5 m / s 5 m / s 5m/s…

iOS多target时怎么对InfoPlist进行国际化

由于不同target要显示不同的App名称、不同的权限提示语,国际化InfoPlist文件必须创建名称为InfoPlist.strings的文件,那么多个target时怎么进行国际化呢?步骤如下: 一、首先我们在项目根目录创建不同的文件夹对应多个不同的targe…

自然之美无需雕琢

《自然之美,无需雕琢 ”》在这个颜值至上的时代,但在温馨氛围中,单依纯以一种意想不到的方式,为我们诠释了自然之美的真谛。而医生的回答,如同一股清流耳目一新。“我说医生你看我这张脸,有没有哪里要动的。…

09 docker 安装tomcat 详解

目录 一、安装tomcat 1. tomcat镜像的获取 2. docker创建容器实列 3. 访问测试 404错误 4. 解决方案 5. 使用免修改版容器镜像 5.1. 运行实列的创建 5.2. 出现问题及解决: 6. 验证 OK 一、安装tomcat 1. tomcat镜像的获取 docker search tomcat #docker …

最灵活且易用的C++开源串口通信调试软件

这款C开源串口调试软件,集成了丰富的功能,为用户提供高效、便捷的串口通信调试体验。以下是其核心功能亮点: 基础功能: 数据交互自如:支持串口数据的轻松读取与发送,让数据交换变得简单直接。 灵活配置参…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化3(拆分、嵌入文档,操作系统)

拆分大文档 很常见的一种优化手段,在一些特定的业务场景中,会有一些很大的文档,这些文档有很多字段,而且有一些特定的字段还特别的大。可以考虑拆分这些文档 大文档对MongoDB的性能影响还是很大的,就我个人经验而言&…

【TB作品】基于ATmega48的开机登录程序设计

使用Proteus仿真软件设计一个开机登录程序,单片机选用ATmegga48. 基础要求: 1.程序启动后在LCD1602液晶屏上提示用户通过独立按键输入密码(6位)。 2.密码输入错误则在屏幕上提示密码错误,密码输入正确则在屏幕上提示密 码正确后等待约3秒后进入主界面,在屏幕中央显示HelloWorld…

基于RK3588的8路摄像头实时全景拼接

基于RK3588的8路摄像头实时全景拼接 输入:2路csi转8路mpi的ahd摄像头,分辨率1920 * 1080 8路拼接结果: 6路拼接结果: UI界面: UI节目设计原理

数字时代如果你的企业还未上线B端系统助力则后果很严重

**数字时代如果你的企业还未上线B端系统助力则后果很严重** 数字化浪潮席卷全球,企业对于数字化转型的重视程度日益提高。B端系统,作为企业数字化转型的核心组成部分,其重要性不言而喻。如果你的企业还未上线B端系统助力,那么后果…

异步主从复制

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术,通过将一个数据库服务器(主服务器)上的数据变更自动同步到一个或多个数据库服务器(从服务器)上,以此来实现数据的冗余备份、读…

2024年6月后2周重要的大语言模型论文总结:LLM进展、微调、推理和对齐

本文总结了2024年6月后两周发表的一些最重要的大语言模型论文。这些论文涵盖了塑造下一代语言模型的各种主题,从模型优化和缩放到推理、基准测试和增强性能。 LLM进展与基准 1、 BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Com…

图文识别0难度上手~基于飞浆对pdf简易ocr并转txt

前言 本篇pdf适用windows对视觉识别0基础的的纯小白用户。大佬请绕道~~ 注意: 本项目pdf的ocr对于表格、画图文字,水印等干扰没做任何处理,因此希望各位使用该功能的pdf尽量不要含有这些干扰项,以免影响翻译效果。 流程 1.构建…

收银系统源码-收银台副屏广告

1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…

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

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

SpringBoot 启动流程四

SpringBoot启动流程四 前面这个创建对象是初始化SpringApplication对象 是加载了SpringBoot程序的所有相关配置 我们接下来要将这个run方法 run过程是一个运行 初始化容器 我们看我们的运行结果是得到一个ConfigurableApplicationContext对象 package com.bigdata1421.star…

MySQL 集群

MySQL 集群有多种类型,每种类型都有其特定的用途和优势。以下是一些常见的 MySQL 集群解决方案: 1. MySQL Replication 描述:MySQL 复制是一种异步复制机制,允许将一个 MySQL 数据库的数据复制到一个或多个从服务器。 用途&…

医疗器械企业CRM系统推荐清单(2024版)

近年来,我国医疗器械行业在国家政策支持、医改深入、人口老龄化和消费能力提升等因素推动下,得到了快速发展,正日益成为创新能力增强、市场需求旺盛的朝阳产业。然而,行业也面临价格压力、市场份额重新分配、合规风险以及产品和服…

mac 安装nvm的教程

在macOS上切换Node.js版本,可以使用nvm(Node Version Manager)。以下是安装nvm和切换Node.js版本的步骤: 安装nvm 下载方式 终端复制输入: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.…

Odoo14使用hiPrint实现打印功能

使用hiPrint代替odoo原生的打印功能 可以实现快速自定义修改打印模板,无需每次都调整打印模板 无论是表单分页还是各种需求,都能满足 目录 1 使用命令创建新的模块,无用的demo文件可以删除掉 2 新建“打印模板”,用于保存打印…