CodeGym /Khóa học Java /Python SELF VI /Các hàm tích hợp

Các hàm tích hợp

Python SELF VI
Mức độ , Bài học
Có sẵn

1.1 Danh sách các hàm tích hợp phổ biến

Chúng ta đã làm quen với rất nhiều hàm tích hợp, nhưng mình muốn nói thêm về một vài hàm khác sẽ hữu ích cho bạn trong thời gian tới:

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

Dưới đây là chút thông tin chi tiết về chúng:

Hàm id()

Hàm id() trả lại định danh duy nhất (số) cho một đối tượng. Định danh này là một số nguyên và vẫn duy nhất cho đối tượng trong suốt thời gian tồn tại của nó. Thông thường, định danh tương ứng với địa chỉ của đối tượng trong bộ nhớ, dù điều này không được đảm bảo trong đặc tả của Python.

Định danh duy nhất của đối tượng có thể được sử dụng để hiểu rõ hơn nhiều thao tác, ví dụ, để hiểu rõ hơn về nơi các đối tượng được sao chép và nơi chúng ta có tham chiếu đến cùng một đối tượng. Các đối tượng giống nhau sẽ có các định danh khác nhau, nhưng tham chiếu đến cùng một đối tượng sẽ cho thấy cùng một định danh.

Có thể sử dụng trong quá trình gỡ lỗi chương trình và hiểu cách Python quản lý các đối tượng trong bộ nhớ.


a = [1, 2, 3]
b = a
print(id(a))  # Xuất ra định danh của đối tượng 'a'
print(id(b))  # Xuất ra cùng định danh, vì 'b' tham chiếu đến cùng một đối tượng

Hàm hash()

Hàm hash() trả lại giá trị hash (số) cho một đối tượng chỉ định, nếu nó có thể băm được. Các đối tượng có thể băm được trong Python phải là bất biến và có giá trị hash không đổi trong suốt vòng đời của chúng.

Ví dụ các đối tượng như số, chuỗi và tuple (nếu tất cả các phần tử của chúng cũng có thể băm được). Giá trị hash được sử dụng trong dictionary và set để tìm kiếm nhanh. Dùng để tối ưu hóa việc tìm kiếm và lưu trữ dữ liệu, khi việc kiểm tra sự bằng nhau và tính duy nhất cần nhanh chóng.


print(hash("hello"))  # Trả lại giá trị hash của chuỗi "hello"
print(hash(42))       # Trả lại giá trị hash của số 42
print(hash((1, 2, 3)))  # Trả lại giá trị hash của tuple (1, 2, 3)

Lưu ý! Giá trị hash của các đối tượng bất biến giữ nguyên trong suốt vòng đời của chúng. Tuy nhiên, các đối tượng có thể thay đổi, như danh sách và dictionary, không có thể băm được và không thể được sử dụng làm khóa trong dictionary hoặc phần tử của set.

Hàm dir()

Hàm dir() trả lại danh sách các thuộc tính và phương thức của một đối tượng. Nếu đối tượng không được chỉ định, dir() trả lại danhsách tên trong phạm vi cục bộ hiện tại. Hàm này hữu ích để nghiên cứu cấu trúc của các đối tượng và thuộc tính của chúng.

Được sử dụng để thu thập danh sách tất cả các thuộc tính và phương thức của một đối tượng, giúp hiểu rõ hơn về cấu trúc và chức năng có sẵn của nó. Thường được sử dụng cho gỡ lỗi và nghiên cứu đối tượng, đặc biệt khi tài liệu bị giới hạn hoặc không có sẵn.


class MyClass:
    def __init__(self):
        self.name = "Alice"
            
    def greet(self):
        print("Hello, " + self.name)
        
obj = MyClass()
print(dir(obj))  # Xuất ra danh sách thuộc tính và phương thức của đối tượng 'obj'
print(dir())     # Xuất ra danh sách tên trong phạm vi cục bộ hiện tại

1.2 Làm việc với bộ sưu tập

Còn một vài hàm hữu ích khác để làm việc với các bộ sưu tập. Có lẽ chúng đã được đề cập ở các bài giảng trước, nhưng bây giờ mình muốn đi sâu hơn một chút.

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

Hàm zip()

Hàm zip() kết hợp nhiều đối tượng có thể lặp lại (như danh sách, tuple, chuỗi) và trả lại một iterator của các tuple. Mỗi tuple chứa các phần tử được lấy từ các vị trí có cùng chỉ số từ tất cả các đối tượng có thể lặp lại.

Thường được sử dụng để kết hợp dữ liệu từ nhiều đối tượng có thể lặp lại, cho phép dễ dàng lặp qua chúng cùng lúc. Và cũng được dùng để tạo dictionary từ hai danh sách – một cho khóa, một cho giá trị.


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

Hàm max()

Hàm max() trả lại phần tử lớn nhất từ đối tượng có thể lặp lại được truyền vào hoặc từ nhiều đối số được truyền vào. Cũng có thể chỉ định hàm khóa để xác định quy tắc so sánh.


numbers = [1, 2, 3, 4, 5]
print(max(numbers))  # Xuất: 5
            
# Với hàm khóa
words = ["apple", "banana", "cherry"]
print(max(words, key=len))  # Xuất: 'banana'

Hàm min()

Hàm min() trả lại phần tử nhỏ nhất từ đối tượng có thể lặp lại được truyền vào hoặc từ nhiều đối số được truyền vào. Cũng có thể chỉ định hàm khóa để xác định quy tắc so sánh.


numbers = [1, 2, 3, 4, 5]
print(min(numbers))  # Xuất: 1
        
# Với hàm khóa
words = ["apple", "banana", "cherry"]
print(min(words, key=len))  # Xuất: 'apple'

Hàm count()

Hàm count() được sử dụng để đếm số lần xuất hiện của một phần tử trong đối tượng có thể lặp lại, như danh sách hoặc chuỗi. Được gọi từ một danh sách, một bộ sưu tập hoặc một iterator.


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

Hàm sum()

Hàm sum() trả lại tổng của tất cả các phần tử trong đối tượng có thể lặp lại. Có thể chỉ định giá trị ban đầu, giá trị này sẽ được cộng thêm vào tổng.


numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # Xuất: 15
    
# Với giá trị ban đầu
print(sum(numbers, 10))  # Xuất: 25
    

1.3 Thực thi mã

Và còn hai hàm nữa có thể hữu ích cho bạn khi mới bắt đầu:

  • eval()
  • exec()

Chúng có khả năng mạnh mẽ, nhưng đòi hỏi sự cẩn trọng khi sử dụng do những rủi ro bảo mật tiềm tàng. Dưới đây là thông tin chi tiết về mỗi hàm này:

Hàm eval()

Hàm eval(expression) nhận một chuỗi và thực thi nó như một biểu thức Python. Nó trả lại kết quả của việc thực thi biểu thức này. Được sử dụng để tính toán các biểu thức chuỗi như mã Python.

Ví dụ:


x = 10
result = eval("x + 5")
print(result)  # Xuất: 15

Hàm exec()

Hàm exec() nhận một chuỗi và thực thi nó như mã Python. Khác với eval(), chỉ thực thi các biểu thức, exec() có thể thực thi bất kỳ lệnh Python nào, bao gồm định nghĩa hàm, vòng lặp và import module. Hàm này không trả lại giá trị.

Được sử dụng để thực thi các script động và định nghĩa hàm mới hoặc lớp mới trong quá trình thực thi chương trình.


code = """
def greet(name):
    print(f"Hello, {name}!")
        
greet("Alice")
"""
exec(code)
# Xuất: Hello, Alice!

Lưu ý! Cũng như eval(), exec() có thể nguy hiểm khi sử dụng với dữ liệu đầu vào không tin cậy. Hãy cẩn thận và tránh sử dụng exec() để thực thi mã trên production.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION