zoukankan      html  css  js  c++  java
  • 小白学 Python(6):基础运算符(下)

    人生苦短,我选Python

    前文传送门

    小白学 Python(1):开篇

    小白学 Python(2):基础数据类型(上)

    小白学 Python(3):基础数据类型(下)

    小白学 Python(4):变量基础操作

    小白学 Python(5):基础运算符(上)

    前言

    上一篇文章我们介绍了算术运算符和比较运算符。本篇我们继续介绍其余的几个:

    • 赋值运算符
    • 逻辑运算符
    • 成员运算符
    • 身份运算符

    赋值运算符

    Python 中,使用 = 号表示赋值。当然,Python 还提供了其他赋值方式,直接帮我们简化了写法,如 +=-= ,没有编程经验的同学可能会比较懵逼。

    其实小编当年在学 Java 的时候第一次接触也是很懵的,这里其实无需懵逼,简单理解 a += 1 其实就是 a = a + 1 。这只是一种简化写法。

    题外话(建:有编程经验人士阅读,无编程经验可以跳过):

    在很多编程语言中如 Java ,都会有自增 i++ 这种写法,但是 Python 并没有,这是因为 += 是代表改变了变量,相当于重新生成了一个变量,把操作后的结果赋予这个新生成的变量。但是在 Python 中,变量是以内容为基准而不是像 Java 中以变量名为基准,所以只要你的数字内容是 5 ,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 Python 中一个变量可以以多个名称访问。这样的设计逻辑决定了 Python 中数字类型的值是不可变的,例如:a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的。

    Python 中的赋值表达式可见下表:

    运算符 描述
    = 赋值运算符
    += 加法赋值运算符,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

    上面的表格光看描述总感觉有点干巴巴的,下面我们还是来举几个栗子给各位同学演示一下:

    a = 10
    b = 20
    
    c = a + b
    print("c = a + b 的值为:", c)
    
    c += a
    print("c += a 的值为:", c)
    
    c *= a
    print("c *= a 的值为:", c)
    
    c /= a
    print("c /= a 的值为:", c)
    
    c = 2
    c %= a
    print("c %= a 的值为:", c)
    
    c **= a
    print("c **= a 的值为:", c)
    
    c //= a
    print("c //= a 的值为:", c)
    

    运行结果如下:

    c = a + b 的值为: 30
    c += a 的值为: 40
    c *= a 的值为: 400
    c /= a 的值为: 40.0
    c %= a 的值为: 2
    c **= a 的值为: 1024
    c //= a 的值为: 102
    

    逻辑运算符

    逻辑运算符有三种,分别是与、或、非。

    这个其实是离散数学中的概念,不知道其他专业的同学有没有学,反正学计算机的肯定有这门课。emmmmmmmmmmmmm 我们其实是 Python 教程,就不扯离散数学了,有兴趣的同学请自行百度吧。

    • and :逻辑“与”运算符,只有当and两边都是真,结果才是真
    • or :逻辑“或”运算符,只要当or一边的是真的,结果就是真
    • not :逻辑“非”运算符,反转逻辑值

    这么看介绍有点抽象,我们直接上栗子,看了栗子大家就懂了,其实很简单。

    print(True and True)
    # True
    print(True and False)
    # False
    print(True or True)
    # True
    print(True or False)
    # True
    print(False or False)
    # False
    print(not True)
    # False
    print(not False)
    # True
    

    成员运算符

    成员运算符用来判断在指定的序列中有没有找到目标值,这个序列可以是字符串、列表和元祖。

    • in : 如果在指定的序列中找到值返回 True,否则返回 False。
    • not in : 如果在指定的序列中没有找到值返回 True,否则返回 False。

    前面的文章尚未介绍列表和元祖,下面的示例仅使用字符串来做演示:

    str = "asdfghjkl"
    
    if 'a' in str:
        print('a 在字符串 str 中')
    else:
        print('a 不在字符串 str 中')
    
    if 'a' not in str:
        print('a 不在字符串 str 中')
    else:
        print('a 在字符串 str 中')
    

    输出结果:

    a 在字符串 str 中
    a 在字符串 str 中
    

    身份运算符

    身份运算符用于比较两个对象的存储单元。

    • is : is 是判断两个标识符是不是引用自一个对象
    • is not : is not 是判断两个标识符是不是引用自不同对象

    示例如下:

    a = 20
    b = 20
    
    if a is b:
        print("a 和 b 有相同的标识")
    else:
        print("a 和 b 没有相同的标识")
    
    if id(a) == id(b):
        print("a 和 b 有相同的标识")
    else:
        print("a 和 b 没有相同的标识")
    
    # 修改变量 b 的值
    b = 30
    if a is b:
        print("a 和 b 有相同的标识")
    else:
        print("a 和 b 没有相同的标识")
    
    if a is not b:
        print("a 和 b 没有相同的标识")
    else:
        print("a 和 b 有相同的标识")
    

    注意: id() 函数用于获取对象内存地址。

    输出结果如下:

    a 和 b 有相同的标识
    a 和 b 有相同的标识
    a 和 b 没有相同的标识
    a 和 b 没有相同的标识
    

    其实这个输出结果可以看出来,在 Python ,如果两个数值一样的变量, Python 并不会在内存中重新开辟内存空间,而是会复用已有的内存空间。

    示例代码

    本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

    示例代码-Github

    示例代码-Gitee

  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/babycomeon/p/11736146.html
Copyright © 2011-2022 走看看