如果你是 Python 爱好者,你可能听说过一些内置函数。
老实说,我真希望在我开始编码的时候,有人能把这份清单交给我。
1. 带有end和sep的print()-- 自定义输出
当然,你每天都在使用 print()
。但你探索过它的额外功能吗?
end
:默认情况下,print()
会在每次调用后添加一个换行 (\n
)。使用 end
可以改变这一点。sep
:如果你要打印多个项目,这决定了它们之间的分隔符(默认为空格)。
示例
print("Hello", "World", sep=", ", end="!!!")
# Output: Hello, World!!!
- 它非常适合创建更简洁的输出,而无需额外的字符串格式化。
2. divmod() -- 更聪明地除法
你曾分别计算过商和余数吗?
divmod()
可以一步完成。
result = divmod(10, 3)
print(result) # 输出: (3, 1)
它可以节省时间,减少错误,让你的代码看起来更聪明。
它非常适合数学运算,尤其是算法。
3. any() 和 all() -- 简化逻辑
这两个函数将成为你最好的朋友。
any()
:如果至少有一个元素是 True
,则返回 True
。all()
:只有当所有元素都是 True
时才返回 True
。
print(any([0, 0, 1])) # Output: True (because 1 is True)
print(all([1, 2, 3])) # Output: True (because all are non-zero)
告别冗长的 if
条件或嵌套循环。这些程序优雅而简洁。
4.enumerate() -- 索引和值合二为一
你经常写这样的东西吗?
for i in range(len(my_list)):
print(i, my_list[i])
有了 enumerate()
,情况就简单多了:
for i, value in enumerate(["Python", "Rocks", "Always"]):
print(i, value)
# Output:
# 0 Python
# 1 Rocks
# 2 Always
它能毫不费力地跟踪指数和价值。另外,它更符合 Pythonic。
5.zip() -- 很强的组合
如果你要将多个列表中的元素配对,可以使用 zip()
。
示例
names = ["Alice", "Bob"]
scores = [95, 85]
combined = list(zip(names, scores))
print(combined) # Output: [('Alice', 95), ('Bob', 85)]
它消除了手动配对逻辑。是处理数据集或循环的理想选择。
6. map() --轻松实现函数式编程
假设你想对列表中的每个元素应用一个函数。使用 map()
代替循环。
示例
nums = [1, 2, 3]
squared = list(map(lambda x: x**2, nums))
print(squared) # Output: [1, 4, 9]
它高效、简洁。尤其适用于数据转换。
7. filter() --只保留需要的内容
filter()
就像是数据的筛子。它只保留满足条件的元素。
示例
nums = [1, 2, 3, 4]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # Output: [2, 4]
它简化了基于条件的过滤。与lambda 函数配合使用,就像变魔术一样。
8.sorted() vs .sort() --知道什么时候该用什么
在 Python 中排序很简单,但你知道 sorted()
和 .sort()
之间的区别吗?
sorted()
:创建一个新的排序列表,而不改变原来的列表。
nums = [3, 1, 4]
print(sorted(nums)) # Output: [1, 3, 4]
print(nums) # Output: [3, 1, 4]
nums.sort()
print(nums) # Output: [1, 3, 4]
需要临时排序版本时使用 sorted()
,永久更改时使用 .sort()
。
9. getattr()、setattr()、hasattr() 和 delattr() -- 对象向导
这四个函数让处理对象和属性变得轻而易举。
示例
class Person:
name = "Alice"
person = Person()
print(getattr(person, "name")) # Output: Alice
setattr(person, "age", 25)
print(person.age) # Output: 25
print(hasattr(person, "name")) # Output: True
delattr(person, "name")
print(hasattr(person, "name")) # Output: False
在处理动态属性或未知对象时,这些函数非常方便。
10.type()-- 不仅用于类型检查
我们大多数人都使用 type()
来检查变量的类型。但你知道可以用它来动态创建类吗?
示例
MyClass = type("MyClass", (object,), {"x": 10})
obj = MyClass()
print(obj.x) # Output: 10
它可以动态创建类,而无需显式编写。非常适合元编程。
11. globals()和locals() -- 范围检查器
这些函数为你提供特定作用域中所有变量的快照。
示例
x = 42
def test():
y = 10
print("Global:", globals())
print("Local:", locals())
test()
它是调试和检查代码中变量状态的完美工具。
12. 数值转换器int()-- 数学变得简单
int()
函数不仅可以将字符串转换为整数,还支持基数转换。它还支持基数转换。
binary = "1010"
print(int(binary, 2)) # Output: 10 (binary to decimal)
hex_num = "A"
print(int(hex_num, 16)) # Output: 10 (hex to decimal)
它简化了二进制和十六进制等不同数字系统的操作。
13. 带有key的min()和max()
min()
和 max()
都可以接受一个 key
参数,以自定义查找最小或最大值的标准。
fruits = ["apple", "banana", "cherry"]
print(min(fruits, key=lambda x: len(x))) # Output: apple
print(max(fruits, key=lambda x: len(x))) # Output: banana
它让根据自定义规则查找特定值变得超级简单。
14.round()-- 精确度控制
round()
函数不仅可以将数字四舍五入到最接近的整数。你还可以控制精度。
例如
print(round(3.14159, 2)) # Output: 3.14
print(round(123.456, -1)) # Output: 120
它可以处理各种四舍五入需求,无论是小数还是整数。
15. eval() -- 动态运行 Python 代码
有没有想过运行存储在字符串中的 Python 代码?eval()
可以做到这一点。
code = "3 + 5"
print(eval(code)) # Output: 8
它非常适合快速计算或动态脚本。