运算符和表达式 是基本的编程构建模块,但是还是有点语法的细节问题需要思考,请大家跟随我的文章,我会带大家详细解释清楚这章的内容并快速掌握他。
+
:加法-
:减法*
:乘法/
:除法(返回浮点数)//
:地板除(返回整数)%
:取模(返回余数)**
:幂(指数)a = 10
b = 3
print(a + b) # 13
print(a // b) # 3
print(a ** b) # 1000
==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于a = 10
b = 3
print(a == b) # False
print(a > b) # True
注:常用比较运算我们都知道,下面我来介绍下字符串比较,主要注意以下2点
#注意Unicode 和字符相互转换
print(ord('a')) #97
print(chr(97)) #a
print(ord('b')) #98
print(chr(98)) #b
######字符串比较就是根据Unicode 编码值进行比较
c = '你好a'
d = '你好b'
print(c>d) #False
print(c<d) #True
c = '你好a1'
d = '你好b'
print(c>d) #False
print(c<d) #True
c = '你好100'
d = '你好b'
print(c>d) #False
print(c<d) #True
and
:与or
:或not
:非x = True
y = False
print(x and y) # False
print(x or y) # True
print(not x) # False
这里也有隐藏概念,在现实开发中 经常存在短路运算 来简化代码?那么这些是利用什么原理呢?
短路运算
and: 当左边计算为真则计算右边,让后返回右边计算结果;
当左边为假则返回左边计算结果,不再计算右边;
a = True
b = False
result = a and b # result 为 False
a = True
b = False
result = a or b # result 为 True
def func():
print("Function called")
return True
result = False and func() # 不会打印 "Function called"
or: 当左边计算结果为真则返回左边计算结果,不再计算右边
当左边计算结果为假,则计算右边,并返回右边计算结果
a = True
b = False
result = a or b # result 为 True
def func():
print("Function called")
return False
result = True or func() # 不会打印 "Function called"
位运算符在Python中用于处理整数的二进制位。它们直接对数字的二进制表示进行操作。
主要应用场景:位运算在低级编程、图像处理、加密算法、网络协议等场景中非常有用。它们可以提高性能,减少内存使用,并允许开发者对数据的每一位进行精确控制。
所以还是算了吧。。没啥必要 太过底层 底层很重要,但是我们很少搞底层的东西。。。
&
:按位与|
:按位或^
:按位异或~
:按位取反<<
:左移>>
:右移a = 5 # 0b0101
b = 3 # 0b0011
print(a & b) # 1 (0b0001)
print(a | b) # 7 (0b0111)
=
:赋值+=
:加并赋值-=
:减并赋值*=
:乘并赋值/=
:除并赋值%=
:取模并赋值c = 10
c += 5 # 相当于 c = c + 5
print(c) # 15
这里有一个隐藏概念,在其他语言中 有自增和自减 概念 但是在python中没有
a = 10
b= a++ #报错
print(b)
#########
a = 10
b= ++a
print(b) #10
那么在上面这段代码中为什么 一个报错 一个 结果却没有变?
你直接写 b = ++a
,Python 会将 ++a
解释为 + (+a)
,实际上没有改变 a
的值,所以 b
将会是 10
。同样,--a
会被解释为 - (-a)
,也不会改变 a
的值
关于赋值运算符,在python中还有几个隐藏概念
运算 | 解释 |
---|---|
a,b = 100,200 | 元组赋值 |
[a, b] = [100, 200] | 列表赋值(位置性) |
a,b,c = ‘ABC’ | 序列赋值(通用性) |
a,b = [10,20] | 序列赋值(通用性) |
a,*b = ‘hello’ | 扩展的序列解包(python3中特有) |
a = b = c = 10 | 多目标赋值 |
a,*b = 'hello'
print(a) #h
print(b) #['e', 'l', 'l', 'o']
is
:判断两个对象是否为同一个对象is not
:判断两个对象是否不是同一个对象a = [1, 2, 3]
b = a
c = a[:]
print(a is b) # True
print(a is c) # False
in
:判断一个值是否在序列中not in
:判断一个值是否不在序列中lst = [1, 2, 3]
print(1 in lst) # True
print(4 not in lst) # True
表达式是由运算符和操作数组成的,运算符用于对操作数执行某种操作并返回结果。表达式可以是简单的,也可以是复杂的。
3 + 5 * 2
。此表达式将根据运算符优先级计算为13
。a > b
。此表达式将返回布尔值True
或False
。(a > b) and (b > 0)
。此表达式结合了多个布尔条件。(a + b) * (c - d)
。在复杂的表达式中,运算符的优先级决定了计算的顺序。常见的优先级顺序(从高到低)如下:
()
**
+ -
)* / // %
+ -
<< >>
== != < <= > >=
not
and
or
在现实开发中,如果你将表达式写的很复杂那么你绝对会被批!!!!所以不是必要情况下尽量减少运算优先级,如果你是准备学python来考八股文 嗯。。那随你。。。
python 虽然类型相对宽松,但别忘记了 python也是一门强类型语言,要求运算符两边的操作数必须是同一类型的,否则必须进行转换,下面我一个个进行说明,这一节是重点!!
当Python遇到需要不同类型的操作数进行运算时,它会自动将某些类型转换为另一种类型,而无需显式地调用转换函数。这通常遵循以下规则:
int
)转换为浮点数(float
),以保证结果的精确性。因为浮点数的范围更大,能够容纳更复杂的计算结果。True
和False
)也会被转换为整数(True
转为1,False
转为0)。# 整数与浮点数的运算
x = 5 # 整数
y = 2.0 # 浮点数
result = x + y # result 自动转换为浮点数 7.0
print(result) # 输出: 7.0
#整数与布尔值的运算:
a = 3 # 整数
b = True # 布尔值,隐式转换为 1
result = a + b # result 为 4
print(result) # 输出: 4
#字符串与其他类型的运算 注意这和其他语言不同
x = "Hello"
y = 5
# result = x + y # 这会引发 TypeError
#在逻辑运算中的隐式转换
x = 0
y = 1
if x:
print("x is True") # 不会执行,因为 x 隐式转换为 False
else:
print("x is False") # 会执行
int(x,[基 数]):将数字或字符串转换为整数,如果x为浮点数,则自动截断小数部分
float(x):将x转换成浮点型
str(x):将x转换成字符串
bool(x):转换成bool类型 的True或 False
repr(x):返回一个对象的String格式
eval(str):执行一个字符串表达式,返回计算的结果
tuple(seq):参数可以是元组、列表或者字典,为字典时,返回字典的key组成的集合
list(s):将序列转变成一个列表,参数可为元组、字典、列表,为字典时,返回字典的key组成的集合
set(s):将一个可以迭代对象转变为可变集合,并且去重复,返回结果可以用来计算差集x - y、并集x | y、交集x & y
dict():将其他可迭代对象转换为集合
chr(x):输入一个ASCII码(0-255),返回一个对应的字符。返回值是当前整数对应的ascii字符。
ord(x):返回一个字符所对应的码值
注意:eval(str)
eval()
是Python的一个内置函数,用于执行一个字符串表达式并返回结果
# 变量调用
x = 10
result = eval("x + 5") # 结果为 15
print(result)
#字符串调用
result = eval("'Hello ' + 'World!'") # 结果为 'Hello World!'
print(result)
#函数调用
def square(x):
return x * x
result = eval("square(4)") # 结果为 16
print(result)
这一章是python 基础系列中的关于 运算符和表达式,这里要理解几个重点!
1.运算优先级,这很重要!在现实开发中尤其要注意!
2.数据类型转换!这也是重点,掌握对各种类型的转换,会让你代码得心应手!事半功倍!
这一章虽然简单,但是极其重要!我就整理到这!
创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!