Nói chung, các hàm python được gọi bằng tên của chúng dưới dạng chữ. Nhưng đôi khi bạn có thể cần gọi hàm python bằng biến chuỗi. Trong bài viết này, chúng ta sẽ tìm hiểu cách gọi các hàm python bằng cách sử dụng tên của chúng dưới dạng chuỗi Show
Gọi hàm Python theo tên chuỗiVí dụ: giả sử bạn có một hàm abc(), thì đây là cách bạn thường gọi hàm này, bằng cách nhập tên của nó theo nghĩa đen abc() Nhưng đôi khi, bạn có thể có một biến chuỗi với tên hàm là giá trị của nó d="abc" và bạn có thể muốn gọi hàm bằng biến chuỗi này Nếu bạn sử dụng cú pháp sau, bạn sẽ gặp lỗi d() OR "abc"() Vì vậy, chúng tôi sẽ xem xét làm thế nào để khắc phục vấn đề này. Có nhiều cách khác nhau để gọi một hàm bằng cách sử dụng biến chuỗi. Chúng tôi sẽ xem xét các trường hợp sử dụng khác nhau cho việc này. Đầu tiên, nếu hàm được gọi nằm trong cùng một mô-đun từ nơi bạn đang gọi nó, thì bạn có thể sử dụng locals() hoặc globals() để gọi hàm theo chuỗi của nó. locals() chứa bảng ký hiệu cục bộ trong khi globals() chứa bảng ký hiệu toàn cầu. Các bảng biểu tượng này chứa tên hàm cũng như vị trí tham chiếu của chúng. Vì vậy, chúng có thể được sử dụng để gọi các chức năng. Dưới đây là các cách khác nhau để gọi hàm abc() sử dụng chuỗi “abc” hoặc biến chuỗi d đã xác định trước đó locals()["abc"]() OR locals()[d]() OR globals()["abc"]() OR globals()[d]() Nếu hàm abc() của bạn nằm trong một lớp E khác, thì bạn cần sửa đổi lệnh gọi hàm của mình như hình bên dưới. Giả sử bạn có lớp E với hàm abc() class E: def __init__(self): pass def abc(self, arg): print('you called abc({})'.format(arg)) m = globals()['E']() func = getattr(m, 'abc') func('sample arg') # Sample, all on one line getattr(globals()['E'](), 'abc')('sample arg') Trong đoạn mã trên, chúng ta đã tạo một lớp E với hàm abc() chấp nhận các đối số và hiển thị chúng. Chúng tôi sử dụng globals() để chỉ lớp E trước. Sau đó, chúng tôi sử dụng hàm getattr() để tham chiếu đến hàm abc() trong lớp E và lưu trữ tham chiếu trong một biến func. Sau đó, sử dụng tham chiếu này, chúng tôi gọi nó và truyền đối số 'sample arg' cho nó Cách tiếp cận này cũng có thể được sử dụng để gọi các chức năng từ bên trong các mô-đun. Dưới đây là một ví dụ để nhập mô-đun foo và gọi thanh chức năng trong mô-đun này bằng tên chuỗi của nó module = __import__('foo') func = getattr(module, 'bar') func() Trong bài viết này, chúng ta đã biết một số cách gọi hàm python theo chuỗi. Bạn có thể sử dụng bất kỳ trong số họ theo yêu cầu của bạn Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách lấy tên hàm dưới dạng chuỗi trong Python với sự trợ giúp của một ví dụ Hãy xem xét, chúng tôi có một chức năng sau
Bây giờ, chúng ta cần lấy tên hàm trên Sử dụng tài sản __name__Trong python, mọi hàm đều có thuộc tính dấu gạch dưới Nếu bạn cần gọi một hàm được cung cấp một tên chuỗi và hàm này được xác định trong một mô-đun khác, trước tiên bạn phải nhập mô-đun đó Mẫu mã giả định rằng có một mô-đun tên là
Khi chúng ta có mô-đun xác định hàm đã nhập, chúng ta có thể sử dụng hàm Hàm trả về giá trị của thuộc tính được cung cấp của đối tượng Hàm nhận các tham số sau TênMô tảđối tượngđối tượng có thuộc tính sẽ được truy xuấttên của giá trị mặc định được gán cho giá trị mặc định khi thuộc tính không tồn tại trên đối tượngHàm Nếu chức năng được xác định trong cùng một mô-đun, hãy sử dụng chức năng Gọi một hàm bằng tên Chuỗi bằng cách sử dụng globals()Để gọi một chức năng bằng một tên chuỗi
Hàm trả về một từ điển thực hiện không gian tên mô-đun hiện tại Bạn có thể sử dụng chuỗi để truy cập khóa cụ thể trong từ điển Có một khóa với tên của chức năng trỏ đến chức năng thực tế Nếu một chức năng với tên đã cho không tồn tại trong mô-đun, bạn sẽ nhận được một ngoại lệ Bước cuối cùng là sử dụng dấu ngoặc đơn để gọi hàm cung cấp cho nó bất kỳ đối số nào mà nó yêu cầu Ngoài ra, bạn có thể xác định một từ điển ánh xạ tên hàm với các hàm thực tế Từ điển Câu lệnh if 0 kiểm tra xem chuỗi đã chỉ định có trong từ điển hay không trước khi gọi hàmBạn có thể sử dụng hàm Gọi một phương thức bằng tên Chuỗi trong PythonĐể gọi một phương thức bằng một tên chuỗi
Nếu bạn phải gọi một phương thức bằng một tên chuỗi từ bên trong một phương thức lớp khác, bạn sẽ chuyển 3 làm đối số đầu tiên cho hàm getattr() Nếu lớp được định nghĩa trong một mô-đun khác, bạn sẽ phải nhập nó Bạn có thể nhập lớp trực tiếp hoặc sử dụng phương thức 5Đây là một ví dụ nhập lớp trực tiếp và gọi một phương thức bằng tên chuỗi Mẫu mã giả định rằng có một mô-đun tên là ________số 8_______ Chúng tôi đã sử dụng hàm Bước cuối cùng là gọi phương thức Đây là một ví dụ sử dụng phương thức 5 để nhập mô-đun trước khi gọi một phương thức cụ thể với tên chuỗiMẫu mã giả định rằng có một mô-đun tên là Phương thức lấy tên của một mô-đun và nhập nó Đối số Nếu bạn sử dụng tên gói tương đối, e. g. Bạn có thể gọi một hàm trong chuỗi Python không?Hàm Python thường được gọi bằng tên của chúng. Tuy nhiên, bạn cũng có thể sử dụng chuỗi để gọi hàm . Đối với điều đó, hãy sử dụng locals() và globals().
Các hàm Python nên được đặt tên như thế nào?Tên hàm phải là chữ thường, với các từ được phân tách bằng dấu gạch dưới nếu cần để dễ đọc hơn . Tên biến tuân theo quy ước giống như tên hàm. mixCase chỉ được phép trong các ngữ cảnh mà đó đã là phong cách phổ biến (e. g. xâu chuỗi. py), để duy trì khả năng tương thích ngược.
Bạn có thể gọi một hàm là một biến trong Python không?Trong Python, chúng ta có thể gán một hàm cho một biến . Và sử dụng biến đó, chúng ta có thể gọi hàm bao nhiêu lần chúng ta muốn. Qua đó, tăng khả năng tái sử dụng code. Chỉ cần gán một hàm cho biến mong muốn nhưng không có () i. e. chỉ với tên của chức năng.
Bạn có thể đặt một hàm làm đối số Python không?Vì hàm là đối tượng nên chúng ta có thể chuyển chúng làm đối số cho các hàm khác . Các hàm có thể nhận các hàm khác làm đối số còn được gọi là hàm bậc cao. Trong ví dụ bên dưới, một hàm hello được tạo lấy một hàm làm đối số. |