Python 变量与运算符



抽时间把之前写的不好的一篇文章改成使用 markdown 语法重新梳理一下, 简单粗暴梳理

学习链接:适用于喜欢看文档学习的童鞋

一、变量

1.1 变量使用要求


  • 使用变量之前需要赋值
  • 变量名可以包括字母、数字、下划线、但变量名称不能以数字开头
  • Ptrhon 变量是大小写敏感的

1.2 变量示例

a = "123"
print(a) # 123
b = 2
c = 3
a = b + c
print(a) # 5

二、运算符

2.1 注释

很多语言都支持注释,Python 也不例外

Python 中的注释包含


  1. 单行注释
  2. 多行注释

# 我是单行注释,单行注释使用 # 即可
print("Hello World")

# Hello World

Python 中多行注释

‘’’ ‘’’ or “”" “”"

'''
我是多行注释
'''

"""
我是多行注释
"""

2.2 算数运算符

操作符

名称

示例

+

1+1

-

3-4

*

4*5

/

9/3

//

整除

3//4 (不保留小数点)

%

取余

3%4

**

2**3 (2的三次幂)

print(1+1)
print(3-2)
print(4*5)
print(3/4)
print(3//4)
print(4%3)
print(5**3)

# 2
# 1
# 20
# 0.75
# 0
# 1
# 125

2.3 比较运算符

操作符

名称

示例

​>​

大于

​2 > 1​

​>=​

大于等于

​2 >= 4​

​<​

小于

​1 < 2​

​<=​

小于等于

​5 <= 2​

​==​

等于

​3 == 4​

​!=​

不等于

​3 != 5​

print(2 > 1)  # True
print(2 >= 4) # False
print(1 < 2) # True
print(5 <= 2) # False
print(3 == 4) # False
print(3 != 5) # True

2.4 逻辑运算符


  • and 同真与为真
  • or 同假或为假
  • not 取反

操作符

名称

示例

​and​

​(3 > 2) and (3 < 5)​

​or​

​(1 > 3) or (9 < 2)​

​not​

​not (2 > 1)​

print((3>2) and (3<5)) # True
print((2<1) or (2>4)) # False
print(not (2>3)) # True

2.5 位运算符

操作符

名称

示例

​~​

按位取反

​~4​

​&​

按位与

​4 & 5​

​|​

按位或

​4 | 5​

​^​

按位异或

​4 ^ 5​

​<<​

左移

​4 << 2​

​>>​

右移

​4 >> 2​

'''
按位取反的操作是在原数字的基础加1,然后取反
比如 4 -> 5 再去取反 得到 -5
比如 -4 -> -3 再去取反 得到 3
'''
a = 4
b = 5
print(bin(a),bin(b)) # 0b100 0b101
print(bin(~a),~a) # -0b101 -5
print(~4,~(-4)) # -5 3

'''
按位与:
将数字转换为 二进制,然后每一位进行对比,只有同为 1 的时候,当前位置的值不会变化
'''

a = 4
b = 5
print(bin(a),bin(b)) # 0b100 0b101 => 0b100
print(a&b) # 4

'''
按位或 |
和按位与相反,只有不同的时候,数字才保留
'''

a = 7
b = 3

print(bin(a),bin(b)) # 0b111 0b11 => 0b100
print(a|b) # 7


'''
按位异或 ^
只有 相同位置对应的不一样,结果才为 1
'''
a = 6
b = 3

print(bin(a),bin(b)) # 0b110 0b11
print(a^b) # 5

a^=b
b^=a
a^=b

print(a,b) # 3 6


'''
移位:对二进制操作
<<

>>
'''

a = 3

print(a<<1) # 3 * 2 = 6
print(a<<2) # 3 * (2**2) = 3 * 4 = 12
print(a<<3) # 3 * (2**3) = 3 * 8 = 24


b = 8
print(8>>1) # 8/2 = 4
print(8>>2) # 8/(2**2) = 2
print(8>>3) # 8/(2**3) = 1

2.6 三元运算符

Python 中的三元运算符有一点点不一样哦

a = 123
b = 321

# if a<b:
# small = a
# else:
# small = b

# 三元运算符
small = a if a<b else b

print(small)

2.7 其他运算符

操作符

名称

示例

​in​

存在

​'A' in ['A', 'B', 'C']​

​not in​

不存在

​'h' not in ['A', 'B', 'C']​

​is​

​"hello" is "hello"​

​not is​

不是

​"hello" is not "hello"​

  • in 、not in 的使用
words = ['A','B','C']
if 'A' in words:
print('A' + ' exists')
if 'D' not in words:
print('D'+ ' exists')

A exists
D exists
  • is、not is 的使用


比较两个变量均指向不可变类型


a = "hello"
b = "hello"
print(a is b, a == b) # True True
print(a is not b, a != b) # False False


比较两个变量指向可变类型


a = ["hello"]
b = ["hello"]
print(a is b, a == b) # False True
print(a is not b, a != b) # True False

解答


  • is,is not 对比两个变量的内存地址
  • ==, != 对比的是两个白那辆的值
  • 对比两个变量,指向的都是地址不可变类型(str 等),那么is,is not 和 ==,!= 是完全等价的
  • 对比的两个变量,指向的是地址可变类型(list,dict,tuple等),则两者是有区别的。

2.8 运算符优先级


  • 一元运算符优于二元运算符,例如 ​​2** -3​​​ 等价于 ​​3 ** (-2)​
  • 先算数运算,后移位运算符,最后位运算,例如 ​​1<<3 + 2&7​​​ 等价于 ​​1<<(3+2))&7​
  • 逻辑运算符后结合,例如 ​​3<4 and 4<5​​​ 等价于 ​​(3<4) and (4<5)​