Python青少年简明教程:赋值语句

2024-08-24 00:36

本文主要是介绍Python青少年简明教程:赋值语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python青少年简明教程:赋值语句

变量赋值是指将一个值分配给变量的过程。Python 支持多种形式的赋值(assignment),包括基本赋值、多重赋值、链式赋值和解包赋值等。

为了深入理解Python赋值语句机制,先了解一下id()函数。

在Python中,id()函数用于获取对象的唯一标识符(即内存地址)。每个对象(Python语言中,所有的 数据 都被称之为 对象)在内存中都有一个唯一的标识符,可以通过id()函数来获取。

例如id(8.53),它会返回8.53的唯一标识符(内存地址)。这个标识符是一个整数值,用于唯一标识该对象在内存中的位置,类似如2200635092656,注意,这样的值在不同的运行时环境中可能会有所不同,因为它取决于内存管理和对象分配的具体实现。Python的内存管理和对象分配模型是自动的,由Python的内存管理器负责。

看下面情况

解释:在Python中,id()函数返回对象的内存地址,这是每个对象的唯一标识符。

首先,当调用id(21.37)时,Python创建了一个浮点数对象21.37并返回了它的内存地址,即2491682696880。如下图所示:

然后,创建了一个变量a并将其赋值为21.37。此时,Python再次创建了一个新的浮点数对象21.37(因为浮点数是不可变的),并将a指向这个新对象。因此,当调用id(a)时,它返回的是这个新对象的内存地址,即2491682692176。如下图所示:

接下来,创建了一个新的变量b并将其赋值为a。在这种情况下,Python并没有创建新的对象,而是让b指向了a所指向的那个对象。因此,a和b实际上是指向同一个对象,所以id(b)返回的也是同一个内存地址2491682692176。如下图所示:

最后,当打印b时,它显示的是b所指向的那个对象的值,即21.37。

Python中变量赋值语句variable = expression的机制:

1.计算表达式(expression)的值:Python首先会计算等号右边的表达式的值。

2.创建新对象:如果表达式的结果不是已存在的对象,Python会在内存中创建一个新的对象来存储这个结果。

3.变量(variable)绑定:Python会将变量名绑定到新创建的对象,或者说变量指向这个对象。变量实际上是一个引用(或名称),它被绑定到这个对象上。这个过程也被称为“名称绑定”。

这是Python变量赋值的基本机制。

需要注意的是,对于某些特定类型的对象——如小整数(-5到256之间的整数),和特定短字符串,如比较短的只包含ASCII字符,不包含空格,数字或者特殊字符的字面量字符串。当Python解释器启动时,它会预先创建并缓存一定范围内的整数和一些常用的短字符串对象。当你在代码中使用这些值时,Python并不会创建新的对象,而是直接引用已经存在的对象。这就是所谓的"interning"机制。这种机制可以提高Python的运行效率,因为对于这些常用的小整数和短字符串,Python可以避免反复创建和销毁对象,从而节省内存和CPU资源。

下面通过一些代码示例来更好地理解这个过程。

Python 中变量再赋值情况

创建了一个名为 dollars 的变量,并将 2.75 赋值给它

Dollars = 2.75

给变量 dollars 赋以一个新值99.95,当给变量 dollars 赋以一个新值99.95时,虽然旧值 2.75 依然保存在计算机的存储器中,但是因为没有变量引用它,所以这个值已不能再被使用。参见下图:

注意,当存储器中的值,不再被变量引用时,Python 解释器将通过所谓的垃圾收集机制来进行处理,自动地将它们移出存储器。【Python使用引用计数来进行内存管理。Python的引用计数是其内存管理的基础机制之一。每个对象都维护一个计数器,记录有多少引用指向它。这个机制的主要目的是确定何时可以安全地删除一个对象并回收其占用的内存。Python的垃圾回收机制会自动清理不再被用到的值,所以不用担心计算机内存中充满被“丢弃”的无效的值。】

在python中,变量保存的是对象(值)的引用,id()函数可以获取变量在内存中的地址。在Python中,值可以放在内存的某个位置(地址),变量用于引用它们,给变量赋一个新值,原值不会被新值覆盖,变量只是引用了新值。

一定要牢记:在 Python 语言中,变量仅仅是引用存储器中某个数据的名字,并且可以引用任何类型的数据项。

x = 99 语句创建了名为 x 的变量,并赋给它 int 型的值 99。

将一个字符串 'Take me to your leader'赋值给变量 x时,变量 x 不再引用一个 int 型数据,而是引用字符串 'Take me to your leader'。

下面再看看这种情况:

a = 10

b = a

在上述的例子中,我们声明了一个变量 a,其值为 10,然后将 b 也指向 a,这是在内存中的布局是这样的,变量 a 和 b 会指向同一个对象 10,而不是给 b 重新生成一个新的对象。

当执行完 a = a + 10 后,因为整数是不可变对象,所以并不会将 10 变成 20,而是生成一个新的对象 20 ,然后 a 会指向这个新的对象。b 还是指向旧对象 10。

赋值说明

☆基本赋值

最简单的赋值使用符号(=)操作符,将一个值赋给一个变量:

x = 5

name = "Alice"

这里,x被赋值为整数5,name被赋值为字符串"Alice"。

初学者需要注意,符号=在编程中作为赋值操作符的意义和数学中作为等号的意义不同。编程中的赋值表示将右侧的值或表达式的结果赋给左侧的变量。

☆多重赋值

Python允许在一行中对多个变量进行赋值:

a, b, c = 1, 2, 3

☆交换变量赋值

Python提供了一种简洁的方法来交换两个变量的值,而无需借助临时变量,格式:

x, y = y, x

例如:

a = 5
b = 10
a, b = b, a

在上述示例中,a和b的值被交换,a变成10,b变成5。

☆链式赋值

可以在一行中给多个变量赋相同的值:

x = y = z = 0

在上述示例中,整数0被赋值给变量x、y和z。

☆解包赋值

解包赋值允许将一个序列解包并赋值给多个变量。

var = [1, 2, 3]
a, b, c = var

在上述示例中,列表numbers中的元素分别被赋值给变量a、b和c。

☆增强赋值

增强赋值(也称为复合赋值)是一种将操作符与赋值结合在一起的语法,它可以让你更简洁地修改变量的值。Python支持增量赋值运算符,如+=、-=、*=、/=等。如:

x = 5
x += 3  # 等同于 x = x + 3

y = 10
y *= 2  # 等同于 y = y * 2

☆类型推断

Python是动态类型语言,不需要显式声明变量类型:

x = 5  # Python自动将x识别为整数

x = "hello"  # 现在x变成了字符串类型

☆条件赋值

条件赋值(也称为条件表达式或三元运算符)是一种简洁的方式来基于条件来赋值。它允许你在一行代码中完成if-else语句的功能。基本语法是:

value = true_expression if condition else false_expression

工作原理是:

如果condition为True,则value被赋予true_expression的值

如果condition为False,则value被赋予false_expression的值

例如:

x = 10
y = 20
max_value = x if x > y else y
print(max_value)  # 输出: 20

☆变量引用

“变量引用”(variable reference)也称为“变量绑定”(variable binding),它描述了变量和对象之间的关系。是指变量实际上并不存储数据本身,而是存储了指向存储数据的对象的引用(即内存地址)。这意味着变量是对象的“标签”,你可以通过这个标签来访问和操作对象。Python中的每个数据(例如数字、字符串、列表等)都是一个对象,当你给变量赋值时,实际上是创建了一个从变量到对象的引用。多个变量可以引用同一个对象。

对于不可变对象(如整数、字符串),"修改"实际上是创建新对象并重新赋值。

对于可变对象(如列表、字典),可以通过引用直接修改对象。

重要的是要理解,Python中的变量赋值实际上是创建了对象的引用,示例:

# 整数(不可变对象)
a = 5
b = a  # b和a引用同一个对象
print(id(a), id(b))  # 输出相同的IDa = 6  # a引用新的对象
print(id(a), id(b))  # a和b现在引用不同的对象# 列表(可变对象)
list1 = [1, 2, 3]
list2 = list1  # list2和list1引用同一个列表对象
list2.append(4)  # 通过list2修改对象
print(list1)  # 输出 [1, 2, 3, 4],list1也被修改

☆常量约定

Python中并没有内置的常量类型,或者说,Python没有真正的常量,,但有一些广泛接受的约定来表示和使用常量。这些约定主要是编程习惯和风格指南,而不是语言强制执行的规则。常量通常使用全大写字母命名,多个单词之间用下划线分隔。例如:

PI = 3.14159
MAX_SIZE = 100

这些约定主要依赖于程序员的自律。Python不会阻止你修改这些“常量”的值。例如:

PI = 3.14159
PI = 3  # 这是合法的,但违反了常量约定

这篇关于Python青少年简明教程:赋值语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100943

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地