1. 链式赋值
(1)基本语法
x = y = z = value
value
是一个表达式或具体的值。- 从右到左依次赋值:
z
先被赋值为value
,然后y
和x
被赋值为z
的值
a = b = c = 10
print(a, b, c)
c
被赋值为10
。- 然后
b
被赋值为c
的值。 - 最后
a
被赋值为b
的值
(2) 链式赋值的工作原理
在链式赋值中,Python 会为右侧的表达式求值一次,并将结果赋给左侧的变量。赋值操作会依次从右到左进行。
x = y = [1, 2, 3]
x.append(4)
print(y) # [1, 2, 3, 4]
(3)链式赋值的常见场景
# 1. 同时初始化多大变量
x = y = 0
print(x, y) # 输出: 0 0
# 2. 配合条件表达式
x = y = 5 if 10 > 3 else 0
print(x, y) # 输出: 5 5
# 3. 用于多层嵌套赋值
x = y = z = {'a': 1, 'b': 2}
x['c'] = 3
print(z) # 输出: {'a': 1, 'b': 2, 'c': 3}
(4)链式赋值与解构赋值的区别
# 链式赋值 所有变量被赋值为同一个值
x = y = z = 5
# 解构赋值 为不同的变量赋值不同的值
x, y, z = 1, 2, 3
print(x, y, z) # 输出: 1 2 3
# 使用系列解包赋值实现变量交换
a,b = 1,2
a,b = b,a
(5)链式赋值的性能
链式赋值只对右侧的表达式求值一次,因此在某些场景下比重复赋值更高效。例如:
x = y = some_function()
相比于:
x = some_function()
y = some_function()
第一种写法更高效,因为 some_function()
只执行了一次。
2. 基本运算符
运算符 | 说明 | 示例 | 结果 |
+ | 加法 | 3+2 | 5 |
- | 减法 | 5-2 | 3 |
* | 乘法 | 3*2 | 6 |
/ | 浮点数除法 | 6/2 | 3.0 |
// | 整数除法 | 7//2 | 3 |
% | 模(取余) | 7/4 | 3 |
** | 幂 | 2**3 | 8 |
divmod函数使用
divmod()
是 Python 中的一个内置函数,用于同时计算两个数的商和余数。它结合了 整数除法 (//
) 和 取余操作 (%
) 的功能,并以一个包含商和余数的元组返回结果。
# 整数运算 注意:除数不能为0
result = divmod(10, 3)
print(result) # 输出: (3, 1)
# 负数运算 向下取整的商
result = divmod(-10, 3)
print(result) # 输出: (-4, 2)
# 余数满足公式 a = b * quotient + remainder,即 -10 = 3 * (-4) + 2
# 浮点数运算
result = divmod(10.5, 3)
print(result) # 输出: (3.0, 1.5)
3. 常见内置函数使用
函数 | 说明 | 示例 | 结果 |
id() | id()返回唯一标识符,象在内存中的地址 | id(5) | 140032782903728 |
bin() | bin()可以将数字转成二进制表示 | bin(2) | '0b10' |
ord() | ord()可以把字符转换成对应的Unicode码 | ord('A') | 65 |
chr() | chr()可以把十进制数字转换成对应的字符。 | chr(66) | 'B' |
len() | len()用于计算字符串含有多少字符 | len('abcv') | 4 |
str() | str()可以帮助我们将其他数据类型转换为字符串。 | str(5.20) | '5.20' |
replace() | replace()实现字符串替换 | 'abcv'.replace('v','d') | 'abcd' |
split() | split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中),。如果不指定分隔 符,则默认使用空白字符(换行符/空格/制表符)。 | a="to be or not to be a.split() | ['to', 'be', 'or', 'not', 'to', 'be'] |
join() | join()用于将一系列子字符串连接起来。 | a = ['a', 'b', 'c'] '-'.join(a) | 'a-b-c' |
startswith() | 以指定字符串开头 | a = 'abcv' a.startswith('a') | True |
endswith() | 以指定字符串结尾 | b = 'test.txt' b.endswith('txt') | True |
find() | 第一次出现指定字符串的位置 | a = 'abdcd' a.find('c') | 3 |
rfind() | 最后一次出现指定字符串的位置 | a = 'abcava' a.rfind('a') | 5 |
count() | 指定字符串出现了几次 | a = 'abcava' a.count('a') | 3 |
isalnum() | 所有字符全是字母或数字 | a = 'abc123' a.isalnum() | True |
abs() | 返回数字的绝对值。 | abs(-5) | 5 |
all() | 如果可迭代对象中的所有元素都为 True ,则返回 True 。 | all([0, 1, 2]) all([1, 2, 3]) | False True |
any() | 如果可迭代对象中至少有一个元素为 True ,则返回 True 。 | all([0, 1, 2]) all([0, 0, 0]) | True False |
eval() | 执行一个字符串表达式并返回结果。 | eval('2+3') | 5 |
isinstance() | 检查对象是否是指定类的实例。 | isinstance(10, int) | True |
... | ... | ... | ... |
持续更新!!!