python-13-运算符和表达式

部署运行你感兴趣的模型镜像

python运算符和表达式

一.说明

运算符和表达式 是基本的编程构建模块,但是还是有点语法的细节问题需要思考,请大家跟随我的文章,我会带大家详细解释清楚这章的内容并快速掌握他。

二.运算符

1.算术运算符
  • +:加法
  • -:减法
  • *:乘法
  • /:除法(返回浮点数)
  • //:地板除(返回整数)
  • %:取模(返回余数)
  • **:幂(指数)
a = 10
b = 3
print(a + b)  # 13
print(a // b) # 3
print(a ** b) # 1000
2.比较运算符
  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
a = 10
b = 3
print(a == b) # False
print(a > b)  # True

注:常用比较运算我们都知道,下面我来介绍下字符串比较,主要注意以下2点

  1. 逐个字符进行比较,直到找到不同的字符。
  2. 字符串中的字符是按其 Unicode 编码值进行比较。
#注意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
3.逻辑运算符
  • 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"
4.位运算符(基本可以忽略)

位运算符在Python中用于处理整数的二进制位。它们直接对数字的二进制表示进行操作。

主要应用场景:位运算在低级编程、图像处理、加密算法、网络协议等场景中非常有用。它们可以提高性能,减少内存使用,并允许开发者对数据的每一位进行精确控制。

所以还是算了吧。。没啥必要 太过底层 底层很重要,但是我们很少搞底层的东西。。。

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移
  • >>:右移
a = 5  # 0b0101
b = 3  # 0b0011
print(a & b)  # 1 (0b0001)
print(a | b)  # 7 (0b0111)
5.赋值运算符
  • =:赋值
  • +=:加并赋值
  • -=:减并赋值
  • *=:乘并赋值
  • /=:除并赋值
  • %=:取模并赋值
c = 10
c += 5  # 相当于 c = c + 5
print(c)  # 15

这里有一个隐藏概念,在其他语言中 有自增和自减 概念 但是在python中没有

  • 自增: a++或++a
  • 自减:a-- 或 --a
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']
6.身份运算符
  • is:判断两个对象是否为同一个对象
  • is not:判断两个对象是否不是同一个对象
a = [1, 2, 3]
b = a
c = a[:]
print(a is b)   # True
print(a is c)   # False
7.成员运算符
  • in:判断一个值是否在序列中
  • not in:判断一个值是否不在序列中
lst = [1, 2, 3]
print(1 in lst)   # True
print(4 not in lst) # True

三.表达式

表达式是由运算符和操作数组成的,运算符用于对操作数执行某种操作并返回结果。表达式可以是简单的,也可以是复杂的。

  1. 算术表达式
    • 例如:3 + 5 * 2。此表达式将根据运算符优先级计算为13
  2. 比较表达式
    • 例如:a > b。此表达式将返回布尔值TrueFalse
  3. 逻辑表达式
    • 例如:(a > b) and (b > 0)。此表达式结合了多个布尔条件。
  4. 组合表达式
    • 表达式可以嵌套和组合使用,例如:(a + b) * (c - d)

四.运算优先级

在复杂的表达式中,运算符的优先级决定了计算的顺序。常见的优先级顺序(从高到低)如下:

  1. 括号 ()
  2. 指数 **
  3. 一元运算符(正负号 + -
  4. 乘法、除法、取模 * / // %
  5. 加法、减法 + -
  6. 位运算 << >>
  7. 比较运算 == != < <= > >=
  8. 逻辑运算 not
  9. 逻辑运算 and
  10. 逻辑运算 or

在现实开发中,如果你将表达式写的很复杂那么你绝对会被批!!!!所以不是必要情况下尽量减少运算优先级,如果你是准备学python来考八股文 嗯。。那随你。。。

五.python中的数据类型转换

python 虽然类型相对宽松,但别忘记了 python也是一门强类型语言,要求运算符两边的操作数必须是同一类型的,否则必须进行转换,下面我一个个进行说明,这一节是重点!!

1.隐式转换

当Python遇到需要不同类型的操作数进行运算时,它会自动将某些类型转换为另一种类型,而无需显式地调用转换函数。这通常遵循以下规则:

  1. 优先级:在数值运算中,Python会优先将整数(int)转换为浮点数(float),以保证结果的精确性。因为浮点数的范围更大,能够容纳更复杂的计算结果。
  2. 布尔类型:在逻辑运算中,布尔值(TrueFalse)也会被转换为整数(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")  # 会执行


2.显示转换

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.数据类型转换!这也是重点,掌握对各种类型的转换,会让你代码得心应手!事半功倍!

这一章虽然简单,但是极其重要!我就整理到这!

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们正在讨论Python语言的数据类型、运算符表达式。根据用户要求,我们需要详细解释这些内容,并遵循特定的格式要求(如数学表达式用LaTeX格式,引用标注等)。同时,我们需要生成相关问题。 首先,我们回顾一下引用内容: 引用[2]提到:Python语法由语句表达式组成。表达式处理对象并嵌套在语句中。语句实现更大的逻辑关系,并且是对象生成的地方。 引用[3]列出了运算符的种类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、成员运算符、同一运算符、下标运算符等。 因此,我们的回答应包括: 1. 数据类型:Python中常见的数据类型(数字、字符串、列表、元组、字典、集合等)。 2. 运算符:详细说明各类运算符,并举例。 3. 表达式:由运算符操作数构成的式子。 回答结构: 一、数据类型 二、运算符 三、表达式 四、相关问题 注意:对于数学表达式,如算术运算,使用LaTeX格式。例如,加法:$a+b$,乘法:$a \times b$。 具体内容如下: </think>### Python 语言数据类型、运算符表达式详解 #### 一、数据类型 Python 是强类型动态语言,常见数据类型包括: 1. **数值类型** - `int`:整数($x = 10$) - `float`:浮点数($y = 3.14$) - `complex`:复数($z = 1 + 2j$) 2. **序列类型** - `str`:字符串($s = \text{"Hello"}$) - `list`:可变序列($lst = [1, \text{"a"}, \text{True}]$) - `tuple`:不可变序列($tpl = (2, \text{"b"}, \text{False})$) 3. **映射类型** - `dict`:键值对集合($dct = \{\text{"name"}: \text{"Alice"}, \text{"age"}: 25\}$) 4. **集合类型** - `set`:无序唯一元素($st = \{1, 2, 3\}$) 5. **布尔类型** - `bool`:逻辑值($\text{True}$ 或 $\text{False}$) 变量本质是对象的引用,赋值语句 $a = 5$ 在内存中创建整数对象,变量 $a$ 指向其地址[^2]。 #### 二、运算符 运算符分类及表达式示例: | 类别 | 运算符 | 表达式示例 | 说明 | |-------------------|-----------------------------|------------------------------|----------------------------------------| | **算术运算符** | `+, -, *, /, //, %, **` | $7 // 3 = 2$ | 整数除法取整[^1] | | **比较运算符** | `==, !=, >, <, >=, <=` | $\text{"a"} < \text{"b"}$ | 字符串按字典序比较 | | **逻辑运算符** | `and, or, not` | $x > 0 \text{ and } x < 10$ | 短路运算(`False and ...` 不计算后半) | | **位运算符** | `&, \|, ^, ~, <<, >>` | $5 \& 3 = 1$ (二进制 101 & 011) | 按位操作 | | **成员运算符** | `in, not in` | $3 \text{ in } [1,2,3]$ | 元素是否在容器中[^3] | | **同一运算符** | `is, is not` | $\text{[] is []} \to \text{False}$ | 检查内存地址是否相同 | | **赋值运算符** | `=, +=, -=, *=` 等 | $x \mathrel{+}= 5$ | 等价于 $x = x + 5$ | > **表达式本质**:由运算符操作数构成的求值单元(如 $(a*2 + b**3)$),嵌套在语句中实现程序逻辑[^2]。 #### 三、类型转换与运算规则 1. **隐式类型转换** 数值运算时自动向上转换: $$ \text{int} \to \text{float} \to \text{complex} $$ 示例:$3 + 4.5 = 7.5$(int→float) 2. **显式类型转换函数** ```python int("10") # 字符串→整数: 10 str([1,2]) # 列表→字符串: "[1,2]" tuple({1,2}) # 集合→元组: (1,2) ``` 3. **运算符优先级** 从高到低: **括号** → **幂运算** ($**$) → **乘除** → **加减** → **比较** → **逻辑非** ($\text{not}$) → **逻辑与** ($\text{and}$) → **逻辑或** ($\text{or}$) 示例: $$ 5 + 2 * 3 ** 2 = 5 + (2 \times 9) = 23 $$ #### 四、关键特性示例 1. **同一性 vs 相等性** ```python a = [1,2]; b = [1,2] print(a == b) # True(值相等) print(a is b) # False(不同内存对象) ``` 2. **复合赋值优化** ```python # 比普通赋值更高效 s = "" for i in range(10): s += str(i) # 等价 s = s + str(i) ``` 3. **成员运算符性能** | 容器类型 | `in` 时间复杂度 | 适用场景 | |----------|----------------|------------------| | `list` | $O(n)$ | 小型数据集 | | `set` | $O(1)$ | 大型数据查重[^3] | ```python # 表达式实际应用 radius = 5 area = 3.14 * (radius ** 2) # 计算圆面积 print(f"面积: {area}") # 输出: 面积: 78.5 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SEEONTIME

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值