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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd