• 2-Python3从入门到实战—基础之运算符


    Python从入门到实战系列——目录

    Python语言支持以下类型的运算符:

    • 算术运算符
    • 比较(关系)运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 成员运算符
    • 身份运算符
    • 运算符优先级

    算术运算符

    • Python中算术运算符包含:+,-,*,/,%,**,//
    a = 10
    b = 5
    a + b  返回结果 15
    a - 5  返回结果 5
    a * b  返回结果 50
    a / b  返回结果 2.0			# / 总是返回浮点数
    a % b  返回结果 0			# % 表示a除以b取余数
    a ** b 返回结果 100000		# ** 表示 a 的 b 次方
    a // b 返回结果 2			# // 表示 a 除以 b 的商的整数部分
    10.0 // 5.0 返回结果 2
    

    比较运算符

    • Python中比较运算符包含:>,<,>=,<=,==,!=
    a = 10
    b = 5
    ( a > b )   返回结果    True
    ( a < b )   返回结果    False
    ( a >= b )  返回结果 	True
    ( a <= b )  返回结果 	False
    ( a == b )  返回结果 	False
    ( a != b )  返回结果    True
    

    赋值运算符

    • Python中赋值运算符包含:=,+=,-=,*=,/=,%=,**=,//=
    a = 10
    b = 20
    c = a + b		# 将 a + b 的值赋值给c
    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中逻辑运算符包含:and,or,not
    • and: 布尔"与"; x and y 表示如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值;
    a = 10
    b = 20
    print( a and b )		# 输出:20
    
    • or: 布尔"或"; x or y 表示 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值;
    a = 10
    b = 20
    print( a or b )			# 输出:10
    
    • not: 布尔"非"; not x 表示如果 x 为 True,返回 False 。如果 x 为 False,它返回 True;
    a = 10
    b = 20
    print(not(a==10))		# 输出:False
    print(not(b==10))		# 输出:True
    

    位运算符

    • Python中位运算符包含:&,|,^,~,<<,>>;按位运算符是把数字看作二进制来进行计算的;
    • & (按位与运算符):参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0;
    a = 0b0011 1100
    b = 0b0000 1101
    a & b = 0000 1100
    
    • | (按位或运算符):只要对应的二个二进位有一个为1时,结果位就为1;
    a = 0b0011 1100
    b = 0b0000 1101
    a | b = 0011 1101
    
    • ^ (按位异或运算符):当两对应的二进位相异时,结果为1;
    a = 0b0011 1100
    b = 0b0000 1101
    a ^ b = 0011 0001
    
    • ~ (按位取反运算符):对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1;
    a = 0b0011 1100
    ~a = 1100 0011
    
    • << (左移动运算符):运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0;
    a = 0b0011 1100
    a << 2	# a 左移两位,即结果:1111 0000
    
    • “>>” (右移动运算符):把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数;
    a = 0b0011 1100
    a >> 2	# a 右移两位,即结果:0000 1111
    

    成员运算符

    • Python中成员运算符包含:in,not in;
    • in:如果在指定的序列中找到值返回 True,否则返回 False;
    a = 10
    list = [1, 2, 3, 4, 5 ];
    if ( a in list ):
        print ("变量 a 在列表中 list 中")
    else:
        print("变量 a 不在列表 list 中")
    
    • not in:如果在指定的序列中没有找到值返回 True,否则返回 False;
    a = 10
    list = [1, 2, 3, 4, 5 ];
    if ( a not in list ):
        print ("变量 a 不在列表中 list 中")
    else:
        print("变量 a 在列表 list 中")
    

    身份运算符

    • Python中身份运算符包含:is,is not;身份运算符用于比较两个对象的存储单元
    • is 判断两个标识符是不是引用自一个对象,x is y, 类似 id(x) == id(y);
    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 没有相同的标识")
    # 输出结果均为: a 和 b 有相同的标识
    # 修改 b 的值
    b = 30
    if ( a is b ):
        print (" a 和 b 有相同的标识")
    else:
        print (" a 和 b 没有相同的标识")
    # 输出结果: a 和 b 没有相同的标识
    
    • is not 判断两个标识符是不是引用自不同对象,x is not y , 类似 id(a) != id(b)
    a = 20
    b = 30
    if ( a is not b ):
        print (" a 和 b 没有相同的标识")
    else:
        print (" a 和 b 有相同的标识")
    if ( id(a) != id(b) ):
        print (" a 和 b 没有相同的标识")
    else:
        print (" a 和 b 有相同的标识")
    # 输出结果均为: a 和 b 没有相同的标识
    # 修改 b 的值
    b = 20
    if ( a is not b ):
        print (" a 和 b 没有相同的标识")
    else:
        print (" a 和 b 有相同的标识")
    # 输出结果: a 和 b 有相同的标识
    

    运算符优先级

    • 运算符优先级从高到底如下:
    **          指数 (最高优先级)
    ~ + -       按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
    * / % //    乘,除,取模和取整除
    + -	        加法减法
    >> <<       右移,左移运算符
    &           位 'AND'
    ^ |         位运算符
    <= < > >=   比较运算符
    <> == !=    等于运算符
    = %= /= //= -= += *= **=    赋值运算符
    is is not                   身份运算符
    in not in                   成员运算符
    not or and                  逻辑运算符
    
  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/shen-hua/p/8408624.html
Copyright © 2020-2023  润新知