zoukankan      html  css  js  c++  java
  • 22.Python赋值运算符(入门必读)

    赋值运算符主要用来为变量(或常量)赋值,在使用时,既可以直接用基本赋值运算符“=”将右侧的值赋给左侧的变量,右侧也可以在进行某些运算后再赋值给左侧的变量。

    = 基本赋值运算符

    Python 使用“=”作为赋值运算符,常用于将表达式的值赋给另一个变量。例如如下代码:

    1. # 为变量st赋值为Python
    2. st = "Python"
    3. # 为变量pi赋值为3.14
    4. pi = 3.14
    5. # 为变量visited赋值为True
    6. visited = True

    除此之外,也可使用赋值运算利将一个变量的值赋给另一个变量。例如,如下代码也是正确的:

    1. # 将变量st的值赋给st2
    2. st2 = st
    3. print(st2)

    值得指出的是,Python 的赋值表达式是有值的,赋值表达式的值就是被赋的值,因此 Python 支持连续赋值。例如,如下代码也是正确的:

    a = b = c = 20

    上面程序将 c=20。这个表达式的值赋给变量 b,由于赋值表达式本身也有值,就是被赋的值,因此 c=20 这个表达式的值就是 20,故 b 也被赋值为 20;依此类推,变量 a 也被赋值为 20。

    赋值运算符还可用于将表达式的值赋给变量。例如,如下代码也是正确的:

    1. d1 = 12.34
    2. # 将表达式的值赋给d2
    3. d2 = d1 + 5
    4. # 输出d2的值
    5. print("d2的值为:%g" % d2 ) # 17.34


    需要初学者特别注意的是,= 和 == 的含义完全不同,前者是赋值号,后者是等号,千万不要混淆。

    扩展后的赋值运算符

    = 赋值运算符还可与其他运算符(算术运算符、位运算符等)结合,成为功能更强大的赋值运算符,如表 1 所示。

    表 1 Python 常用赋值运算符
    运算符 说 明 举 例 展开形式
    = 最基本的赋值运算 x = y x = y
    += 加赋值 x += y x = x + y
    -= 减赋值 x -= y x = x - y
    *= 乘赋值 x *= y x = x * y
    /= 除赋值 x /= y x = x / y
    %= 取余数赋值 x %= y x = x % y
    **= 幂赋值 x **= y x = x ** y
    //= 取整数赋值 x //= y x = x // y
    &= 按位与赋值 x &= y x = x & y
    |= 按位或赋值 x |= y x = x | y
    ^= 按位异或赋值 x ^= y x = x ^ y
    <<= 左移赋值 x <<= y x = x << y,这里的 y 指的是左移的位数
    >>= 右移赋值 x >>= y x = x >> y,这里的 y 指的是右移的位数

    这里举几个简单的例子:

    1. a = 1
    2. b = 2
    3. a += b
    4. print("a+b=",a)#1+2=3
    5. a -= b
    6. print("a-b=",a)#3-2=1
    7. a *= b
    8. print("a*b=",a)#1*2=2
    9. a /= b
    10. print("a/b=",a)#2/2=1.0
    11. a %= b
    12. print("a%b=",a)#1%2=1.0
    13. c = 0
    14. d = 2
    15. c &= d
    16. print("c&d=",c)#0&2=0
    17. c |= d
    18. print("c|d=",c)#0|2=2

    运行结果为:

    a+b= 3
    a-b= 1
    a*b= 2
    a/b= 1.0
    a%b= 1.0
    c&d= 0
    c|d= 2

    需要注意的是,程序中 a 的值通过 /= 和 %= 运算后,类型隐式改变成了浮点型,而浮点数是不能进行 &、|、^、<< 和 >> 运算的,否则 Python 解释器会报错(这些都属于位运算符,具体用法后续文章会详细介绍)。

    通常情况下,只要能使用扩展后的赋值运算符,都推荐使用这种赋值运算符。

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/youqc/p/12067854.html
Copyright © 2011-2022 走看看