13个你可能未使用过的Python特性分享
本文介绍了13个Python中实用但常被忽视的特性,涵盖列表步进切片、字符串查找、迭代器使用、文档测试、Yield生成器、字典安全访问、循环Else子句、命名字符串格式化、递归限制设置、条件赋值、参数解包、内置模块调用及多行字符串拼接。通过具体代码示例,帮助开发者提升编码效率与代码质量。
1. 列表步进切片
利用步长(step)参数,你可以对列表进行间隔选取。此外,该参数还可用于反转整数列表。参考以下代码示例:
# 列表Stepping data = [10, 20, 30, 40, 50] print(data[::2]) # [10, 30, 50] print(data[::3]) # [10, 40] # 使用 stepping 翻转列表 print(data[::-1]) # [50, 40, 30, 20, 10]
2. find() 方法
find() 方法是一个实用的功能,用于查找字符串中指定字符或子串首次出现的起始索引:
# 查找方法
x = "Python"
y = "Hello From Python"
print(x.find("Python")) # 0
print(y.find("From")) # 6
print(y.find("From Python")) #6
3. iter() 函数
iter() 方法在处理无需循环辅助的列表迭代时非常有用。作为内置方法,它无需导入额外模块:
# Iter() values = [1, 3, 4, 6] values = iter(values) print(next(values)) # 1 print(next(values)) # 3 print(next(values)) # 4 print(next(values)) # 6
4. Python 中的文档测试
Doctest 功能允许你测试函数并生成测试报告。如示例所示,你需要在三引号字符串中编写测试用例:
# Doctest
from doctest import testmod
def Mul(x, y) -> int:
"""
这个函数返回 x 和 y 参数的 mul
调用函数,然后是预期的输出:
>>> Mul(4, 5)
20
>> > Mul(19, 20)
39
"""
return x * y
# 调用 testmod 函数
testmod(name='Mul', verbose=True)
输出:
Trying:
Mul(4, 5)
Expecting:
20
ok
Trying:
Mul(19, 20)
Expecting:
39
**********************************************************************
File "__main__", line 10, in Mul.Mul
Failed example:
Mul(19, 20)
Expected:
39
Got:
380
1 items had no tests:
Mul
**********************************************************************
1 items had failures:
1 of 2 in Mul.Mul
2 tests in 2 items.
1 passed and 1 failed.
***Test Failed*** 1 failures.
5. Yield 声明
Yield 语句是 Python 的另一项出色特性,其工作方式类似 return,但不会终止函数,而是暂停执行并返回到调用者处:
# Yield声明
def func():
print(1)
yield 1
print(2)
yield 2
print(3)
yield 3
for call in func():
pass# 输出
# 1
# 2
# 3
6. 处理字典缺失键
访问字典中不存在的键会引发 KeyError。为避免此错误,推荐使用 get() 方法替代方括号访问:
# 处理字典中的缺失值
dict_1 = {1:"x",2:"y"}
# 不要使用get
print(dict_1[3]) # key error
# 使用get
print(dict_1.get(3)) # None
7. For/Else 和 While/Else
Python 支持在 For 和 While 循环后使用 Else 子句。当循环正常结束(未触发 break)时,Else 块将执行。
以下 For 循环示例中的 Else 会执行,而 While 循环中因包含 break 语句,Else 不会触发:
# 为/否则
for x in range(5):
print(x)
else:
print("Loop Completed") # 执行# While / Else
i = 0
while i < 5:
break
else:
print("Loop Completed") # 未执行
8. 命名字符串格式化
此功能用于替换字符串占位符中的值。当需要在字符串的不同位置插入多个值时,该方法尤为实用:
# 命名格式化字符串
a = "Python"
b = "工作"# Way 1
string = "I looking for a {} Programming {}".format(a, b)
print(string) # I looking for a Python Programming Job
#Way 2
string = f"I looking for a {a} Programming {b}"
print(string) # I looking for a Python Programming Job
9. 设置递归限制
这是 Python 的一项有用特性,允许你调整程序的递归深度限制。请参考以下代码示例:
# 设置递归限制 import sys sys.setrecursionlimit = 2000 print(sys.getrecursionlimit) # 2000
10. 条件参数
条件赋值使用三元运算符,可根据特定条件为变量赋值。参考以下代码示例:
# 条件参数 x = 5 if 2 > 4 else 2 print(x) # 2 y = 10 if 32 > 41 else 24 print(y) # 24
11. 参数拆包
你可以解包函数中的任何可迭代数据参数。参考以下代码示例:
# 参数解包
def func(x, y):
print(x, y)
list_1 = [100, 200]
dict_1 = {'x':300, 'y':400}
func(*list_1)
func(**dict_1)
# 输出
# 100 200
# 300 400
12. Hello World!
运行以下代码是一个有趣的功能。Python 会用两个著名的词来迎接你。试试看。
import __hello__
13. 多行字符串
此功能展示了如何在不使用三引号的情况下编写多行字符串。参考以下代码示例:
# 多行字符串
str1= "你是否正在寻找Python学习材料" \
"欢迎来到 " \
"本公众号"
print(str1)
# 你是否正在寻找Python学习材料,欢迎来到 本公众号到此这篇关于13个你可能未使用过的Python特性分享的文章就介绍到这了,更多相关Python特性内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













