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() 使用不信任的輸入數據時可能是危險的。 請謹慎使用,避免在 production 上使用 exec() 來執行代碼。
GO TO FULL VERSION