Python中赋值的含义及说明

 更新时间:2022年11月30日 08:50:18   作者:vanlywang  
这篇文章主要介绍了Python中赋值的含义及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python中赋值的含义

在C++中,变量就是对象本身,对变量赋值就改变了它代表的对象。

而在Python中,赋值的含义却是关联变量名字和实际对象,即变量指向了实际对象,当对变量再次赋值时,变量原来指向的对象并不会改变(其实对象的reference count会减1),而是变量指向了新的对象而已。

所以这还导致了一个后果,当多个变量指向同一个对象时,那么用其中一个变量修改对象后,其它指向同一对象的变量也“被改变”了。

下面的代码清楚地显示了这一点:

>>> a = [0, 1, 2, 3]
>>> b = a
>>> a
[0, 1, 2, 3]
>>> b
[0, 1, 2, 3]
>>> a[0] = 99
>>> a
[99, 1, 2, 3]
>>> b
[99, 1, 2, 3]
>>> a = [5, 6, 7, 8]
>>> a
[5, 6, 7, 8]
>>> b
[99, 1, 2, 3]      

Python赋值语句的多种形式

Python语言本身有许多独特之处, 入门易难精通(另一个角度看,简单但强劲的语法背后隐藏了许多复杂的实现),现以Python赋值语句的多种形式为例说明。

赋值语句的特性

赋值语句创建对象引用,而不是对象复制;

变量在首次赋值时会被创建,不必提前预声明变量名;

变量在引用前必须先赋值;

执行隐式赋值的一些操作,如: 模块导入、函数和类的定义、函数参数、for循环变量。

运算

解释

spam = 'Spam'

基础(basic)形式

spam, ham = 'yum', 'YUM'

元组赋值(基于位置)

[spam, ham] = ['yun', 'YUM']

列表赋值(基于位置)

a, b, c, d = 'Spam'

推广的(generalized)序列赋值

a, *b = 'Spam'

扩展序列解包(Unpacking:解包、拆包)

spam = ham = 'lunch'

多目标(multiple target)赋值

spam += 42

增强(augmented)赋值

上表取自《Python学习手册》表 11-1

基础(basic)形式

常见,如:

a=123

元组赋值(元组解包赋值)

a, b, c= 1, 2, "john"

等同于 (a, b, c) = (1, 2, "john")

两个整型对象1和2的分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。元组可以省略括号。

也是一种交换两个变量的值,却不需要自行创建临时变量的方式,见后边“Python中交换两个变量的值”法二。

列表赋值(列表解包赋值)

[x, y, z] = [10, 20, 30]

推广的(generalized)序列赋值

可以为多个对象指定多个变量。任何序列或其它可迭代的值可以付给长度相同的名称序列。如:

a, b, c = 'xyz'

参见下图:

扩展序列解包(Extended sequence unpacking)

带星号前缀的变量名字,可以收集未被匹配的元素项。如:

a, *b, c = [1, 2, 3, 4]

参见下图:

多目标(multiple target)赋值

Python允许你同时为多个变量赋值。例如:

a = b = c = 2

以上实例,创建一个整型对象,值为2,三个变量被分配到相同的内存空间上。

增强(augmented)赋值

除+=外,还有-=、*=、/=、%=、**=、//=

【简要说明】

运算符

描述

功效

+=

加法赋值运算符

c += a 等效于 c = c + a

-=

减法赋值运算符

c -= a 等效于 c = c - a

*=

乘法赋值运算符

c *= a 等效于 c = c * a

/=

除法赋值运算符

c /= a 等效于 c = c / a

%=

取模赋值运算符

c %= a 等效于 c = c % a

**=

幂赋值运算符

c **= a 等效于 c = c ** a

//=

取整除赋值运算符

c //= a 等效于 c = c // a

Python中交换两个变量的值

假设

x = 10

y = 20

法一: 创建临时变量,并交换

临时变量 temp ,将 x 的值存储在 temp 变量中,接着将 y 值赋给 x,最后将 temp 赋值给 y 变量。

temp = x

x = y

y = temp

法二:不使用临时变量,python特有的,利用元组赋值

x, y = y, x

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python爬虫将爬取的图片写入world文档的方法

    Python爬虫将爬取的图片写入world文档的方法

    今天小编就为大家分享一篇Python爬虫将爬取的图片写入world文档的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Pydantic中BaseConfig的具体使用

    Pydantic中BaseConfig的具体使用

    本文主要介绍了Pydantic中BaseConfig的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • pytorch中index_select()的用法详解

    pytorch中index_select()的用法详解

    这篇文章主要介绍了pytorch中index_select()的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python list列表删除元素的4种方法

    Python list列表删除元素的4种方法

    本文主要介绍了Python list列表删除元素的4种方法,主要包括del、pop、remove、clear,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • python提取具有某种特定字符串的行数据方法

    python提取具有某种特定字符串的行数据方法

    今天小编就为大家分享一篇python提取具有某种特定字符串的行数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python中[[]] * (n)和[[] for _ in range(n)]的区别详解

    python中[[]] * (n)和[[] for _ in 

    本文主要介绍了python中[[]] * (n)和[[] for _ in range(n)]的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • python神经网络MobileNet模型的复现详解

    python神经网络MobileNet模型的复现详解

    这篇文章主要为大家介绍了python神经网络MobileNet模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python 调试器pdb的简单使用

    python 调试器pdb的简单使用

    这篇文章主要介绍了python 调试器pdb的简单使用,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • python定位xpath 节点位置的方法

    python定位xpath 节点位置的方法

    今天小编就为大家分享一篇python定位xpath 节点位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 一行Python代码过滤标点符号等特殊字符

    一行Python代码过滤标点符号等特殊字符

    这篇文章主要介绍了一行Python代码过滤标点符号等特殊字符的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论