内置函数

Python SELF ZH
第 13 级 , 课程 1
可用

1.1 常用内置函数列表

我们已经了解了很多内置函数,但我想再介绍几个对你近期有帮助的:

  • id()
  • hash()
  • dir()

下面是它们的详细介绍:

函数 id()

id() 函数返回对象的唯一 标识符(数字)。这个标识符是一个整数,并且在对象的生命周期内保持唯一。通常标识符对应对象的内存地址,虽然Python的规范中没有保证这一点。

可以用这个唯一标识符来更好地理解许多操作,比如为了更好地了解对象在哪里被复制,或者我们有相同对象的引用。同样的对象会有不同的标识符,但对同一对象的引用会显示相同的标识符。

可以在调试程序和理解Python如何管理内存中的对象时使用。


a = [1, 2, 3]
b = a
print(id(a))  # 输出对象 'a' 的标识符
print(id(b))  # 输出相同的标识符,因为 'b' 引用了同一对象

函数 hash()

hash() 函数返回指定对象的哈希值(数字),如果它是可哈希的。Python中的可哈希对象必须是不可变的,并在其生命周期内具有恒定的哈希值。

这样的对象例如数字、字符串和元组(如果元组的所有元素也可哈希)。哈希值用于字典和集合中进行快速查找。用于优化数据查找和存储,进行快速相等性和唯一性检查。


print(hash("hello"))  # 返回字符串 "hello" 的哈希值
print(hash(42))       # 返回数字 42 的哈希值
print(hash((1, 2, 3)))  # 返回元组 (1, 2, 3) 的哈希值

重要! 不可变对象的哈希值在其生命周期内保持恒定。然而,可变对象如列表和字典是不可哈希的,不能作为字典的键或集合的元素。

函数 dir()

dir() 函数返回对象的属性和方法列表。如果未指定对象,dir() 返回当前局部作用域中的名称列表。这个函数对探索对象的结构及其属性非常有用。

用于获取对象的所有属性和方法的列表,有助于更好地理解其结构和可用的功能。特别是在文档有限或不可用时经常用于调试和探索对象。


class MyClass:
    def __init__(self):
        self.name = "Alice"
            
    def greet(self):
        print("Hello, " + self.name)
        
obj = MyClass()
print(dir(obj))  # 输出对象 'obj' 的属性和方法列表
print(dir())     # 输出当前局部作用域中的名称列表

1.2 操作集合

还有一些用于操作集合的有用函数。可能在早期的讲座中提到过它们,但现在我想详细谈一下。

  • zip()
  • min()
  • max()
  • sum()
  • count()

函数 zip()

zip() 函数将多个可迭代对象(例如列表、元组、字符串)组合成一个迭代器,返回元组的迭代器。每个元组包含从所有可迭代对象中相同索引位置收集的元素。

经常用于合并多个可迭代对象的数据,方便同时迭代。也可用于从两个列表中创建字典,一个用作键,另一个用作值。


names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined))  # 输出: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

函数 max()

max() 函数返回传入的可迭代对象或多个参数中最大的元素。还可以指定关键函数以定义比较规则。


numbers = [1, 2, 3, 4, 5]
print(max(numbers))  # 输出: 5
            
# 使用关键函数
words = ["apple", "banana", "cherry"]
print(max(words, key=len))  # 输出: 'banana'

函数 min()

min() 函数返回传入的可迭代对象或多个参数中最小的元素。还可以指定关键函数以定义比较规则。


numbers = [1, 2, 3, 4, 5]
print(min(numbers))  # 输出: 1
        
# 使用关键函数
words = ["apple", "banana", "cherry"]
print(min(words, key=len))  # 输出: 'apple'

函数 count()

count() 函数用于计算元素在可迭代对象(如列表或字符串)中出现的次数。在列表、集合或迭代器上调用。


numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2))  # 输出: 3
    
text = "hello world"
print(text.count("o"))  # 输出: 2

函数 sum()

sum() 函数返回可迭代对象中所有元素的和。可以选择指定一个初始值,该值会被加到总和中。


numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # 输出: 15
    
# 使用初始值
print(sum(numbers, 10))  # 输出: 25
    

1.3 执行代码

还有两个函数,作为初学者可能对你有用:

  • eval()
  • exec()

它们功能强大,但由于潜在的安全风险,需要谨慎使用。以下是关于每个函数的详细信息:

函数 eval()

eval(expression) 函数接受一个字符串并将其作为Python表达式执行。它返回该表达式的执行结果。用于将字符串表达式计算为Python代码。

示例:


x = 10
result = eval("x + 5")
print(result)  # 输出: 15

函数 exec()

exec() 函数接受一个字符串并将其作为Python代码执行。与仅能执行表达式的 eval() 不同,exec() 可以执行任何Python语句,包括函数定义、循环和模块导入。此函数不返回值。

用于执行动态脚本和在程序运行时定义新函数或类。


code = """
def greet(name):
    print(f"Hello, {name}!")
        
greet("Alice")
"""
exec(code)
# 输出: Hello, Alice!

重要!eval() 一样,exec() 在处理不信任的输入数据时可能会很危险。请小心,避免在生产环境中使用 exec() 执行代码。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION