《Python 3.x入门到应用实践》 — 3.2 赋值运算符

举报
华章计算机 发表于 2020/02/08 23:13:13 2020/02/08
【摘要】 本节书摘来自华章计算机《Python 3.x入门到应用实践》 一书中第3章,第3.2节,作者是赵 军 等。

  3.2  赋值运算符

赋值运算符“=”至少由两个操作数组成,功能是将“=”号右边的值赋给等号左边的变量。许多程序设计语言的初学者最不能理解的就是等号“=”在程序设计语言中的含义,很容易将它和数学上的等于功能混淆。在程序设计语言中,“=”号主要用于赋值,而我们从数学角度来理解,“=”以往都认为是“等于”的概念。例如下面的程序语句:

sum = 0;

sum = sum + 1;

上述程序语句中的sum = 0还容易理解其所代表的意义,但是对于sum = sum + 1这条语句,许多初学者往往无法想通这条语句所代表的含义。

其实Python程序设计语言中的“=”主要用于“赋值”(assignment),我们可以想象:当声明变量时会分配内存并安排好内存的地址,等到使用赋值运算符“=”把具体的数值设置给这个变量时,才会让这个内存地址对应的内存空间来存储这个具体的数值。也就是说,sum = sum + 1可以看成是将sum内存地址中存储的原数据值加1后的结果,再重新赋值给sum内存地址对应的内存空间。

在赋值运算符“=”的右侧可以是常数、变量或表达式,最终都将把值赋给左侧的变量;而运算符左侧只能是变量,不能是数值、函数或表达式等。例如,表达式X-Y=Z就是不合法的程序语句。

Python赋值运算符有两种赋值方式,即单一赋值和复合赋值。

1. 单一赋值

将赋值运算符“=”右侧的值赋给左侧的变量,例如:

a = 10

赋值运算符除了一次赋一个数值给变量外,还能够同时将同一个数值赋给多个变量。如果要让多个变量同时具有相同的变量值,我们就可以一起赋予变量值。例如,想让变量x、y、z的值都为100,赋值语句可以如下编写:

x = y = z = 100

当我们想要在同一行程序语句中给多个变量赋值时,可以使用“,”分隔变量。例如,要让变量x的值为10,变量y的值为20,变量z的值为30,编写赋值语句如下:

x, y, z =10, 20, 30

Python还允许在一行里以“;”来连续编写几条不同的程序语句,分隔不同的表达式。例如以下两行程序代码:

sum = 10

index = 12

可以使用“;”将上述两行语句写在同一行。请看以下示范:

Sum = 10; index = 12    #在一行里以分号串接两条程序语句或表达式

2. 复合赋值

复合赋值运算符是由赋值运算符“=”与其他运算符结合而成的。先决条件是“=”右侧的源操作数必须有一个和左边接收赋值的操作数相同,如果一个表达式含有多个复合赋值运算符,那么运算过程必须从右侧开始,逐步进行到左侧,例如:

a += 1     #相当于a = a + 1

a -= 1      #相当于a = a - 1

以“A += B;”复合赋值语句为例,它是赋值语句“A = A + B;”的精简写法,也就是先执行A+B的计算,接着将计算结果赋值给变量A。表3-2中除了第一个“=”运算符以外,其他赋值运算符都是复合赋值运算符。

表3-2

image.png

在Python中,单个等号“=”表示赋值,连续两个等号“==”才是关系比较运算符的“相等”,不可混用。

注意,使用赋值运算符时,如果要将一个变量赋值给另一个变量,第一个变量必须先设置初值,否则就会出现错误。例如num = num*10,因为还没为num变量赋初值,如果直接使用赋值运算符,就会出现错误,因为num变量没有被设置过任何初值。接下来是赋值运算符综合应用的范例程序。

  【范例程序:assign_operator.py】 赋值运算符的综合应用

01  # -*- coding: utf-8 -*-

02  """

03  赋值运算符练习

04  """

05 

06  a = 1

07  b = 2

08  c = 3

09 

10  x = a + b * c

11  print("{}".format(x))

12  a += c

13  print("a={0}".format(a,b))  #a=1+3=4

14  a -= b 

15  print("a={0}".format(a,b))  #a=4-2=2

16  a *= b

17  print("a={0}".format(a,b))  #a=2*2=4

18  a **= b

19  print("a={0}".format(a,b))  #a=4**2=16

20  a /= b

21  print("a={0}".format(a,b))  #a=16/2=8

22  a //= b

23  print("a={0}".format(a,b))  #a=8//2=4

24  a %= c

25  print("a={0}".format(a,b))  #a=4%3=1

26  s = "Python" + "很好玩"

27  print(s)

程序的执行结果如图3-2所示。

 image.png

图3-2

程序代码解析:

      第12、13行:将a与c相加后的结果赋值给变量a,再将a的结果值输出。

      第14、15行:将a与b相减后的结果赋值给变量a,再将a的结果值输出。

      第16、17行:将a与b相乘后的结果赋值给变量a,再将a的结果值输出。

      第18、19行:将a与b进行乘幂后的结果赋值给变量a,再将a的结果值输出。

      第20、21行:将a与b相除后的结果赋值给变量a,再将a的结果值输出。

      第22、23行:将a与b整数相除的结果赋值给变量a,再将a的结果值输出。

      第24、25行:将a与b取余数的结果赋值给变量a,再将a的结果值输出。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。