python之变量的使用

简介: Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
  1. 变量的本质 - 引用
    在 Python 里,变量更像是一个标签或者引用,而不是传统意义上存储数据的容器。当你创建一个变量并给它赋值时,实际上是将这个变量名指向了内存中存储该数据的对象。
a=10

2 . 内存分配
当你创建一个对象时,Python 解释器会在内存中为该对象分配空间。对象的类型决定了所需内存的大小和布局。

b = [1, 2, 3]

3 . 引用计数
Python 使用引用计数来管理内存。每个对象都有一个引用计数器,记录了有多少个变量引用了该对象。当引用计数为 0 时,说明没有变量再引用这个对象,Python 解释器会自动回收该对象所占用的内存。

c = [4, 5, 6]  # 列表对象 [4, 5, 6] 的引用计数为 1
d = c         # 引用计数变为 2
del c         # 引用计数变为 1
del d         # 引用计数变为 0,对象被回收

4 . 动态类型
Python 是一种动态类型语言,这意味着变量的类型在运行时确定,而不是在编译时确定。你可以在程序的不同阶段将不同类型的值赋给同一个变量。

e = 10       # e 是整数类型
e = "hello"  # e 现在是字符串类型

5 . 可变对象和不可变对象
在 Python 中,对象可以分为可变对象和不可变对象。可变对象在创建后可以修改其内部状态,而不可变对象一旦创建就不能修改。
不可变对象
常见的不可变对象有整数、浮点数、字符串、元组等。当对不可变对象进行操作时,实际上是创建了一个新的对象。

f = 20
g = f
f = f + 10
print(f)  # 输出 30
print(g)  # 输出 20

可变对象
常见的可变对象有列表、字典、集合等。对可变对象进行操作时,是直接修改对象的内部状态,而不会创建新的对象。

h = [1, 2, 3]
i = h
h.append(4)
print(h)  # 输出 [1, 2, 3, 4]
print(i)  # 输出 [1, 2, 3, 4]

6 . 命名空间
Python 使用命名空间来管理变量的作用域。命名空间是一个从变量名到对象的映射,不同的命名空间是相互独立的。Python 中有全局命名空间、局部命名空间等。

# 全局命名空间
x = 100

def func():
    # 局部命名空间
    y = 200
    print(y)

func()
print(x)
相关文章
|
8天前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
157 82
|
9月前
|
开发者
社区积分过期公告:2023年-2024年未兑换积分即将过期
社区用户2021-2022年未兑换积分将于2024年2月29日过期,同时用户等级权益内容将进行调整。
2225 11
|
17天前
|
Ubuntu Linux 网络安全
Linux磁盘挂接教程
Linux磁盘挂接教程
48 14
|
27天前
|
网络协议 应用服务中间件 网络安全
免费IP地址SSL证书在哪里申请
免费IP地址SSL证书的申请需通过特定的证书颁发机构(CA)或平台。JoySSL提供针对IP地址的免费SSL证书,Let's Encrypt则主要面向网站。申请步骤包括:访问官网注册账号(JoySSL需填写注册码230922),选择证书类型,填写信息并验证IP地址所有权,提交审核,下载部署证书。注意事项:确保IP地址有效、服务器支持HTTPS,并定期续签证书以保持有效性。
|
15小时前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
33 21
|
18小时前
|
人工智能 自然语言处理 JavaScript
宜搭上线 DeepSeek Chat 页面模板,一键启用 DS 对话
当低代码平台与 AI 技术相遇,二者的融合为企业带来了更多的创新空间和发展机遇。这种融合不仅能够进一步简化开发流程,还能为应用赋予更强大的智能化能力。在这样的背景下,宜搭低代码平台陆续上线了 DeepSeek 插件、DeepSeek 连接器等工具,今天,更是推出了「DeepSeek Chat」页面模板,方便大家一键启用 DS 对话能力。
124 6
|
1月前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:5.本地镜像发布到阿里云》
《docker基础篇:5.本地镜像发布到阿里云》
181 79
|
4天前
|
Linux 开发工具 git
Docker 101
Docker is a practical tool for everyday use, and like `Git`, you can learn it in just 30 minutes.
54 35
Docker 101
|
1月前
|
人工智能 运维 Prometheus
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
AIOpsLab 是微软等机构推出的开源框架,支持云服务自动化运维,涵盖故障检测、根本原因分析等完整生命周期。
124 13
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
|
1月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
133 11

热门文章

最新文章