Như chúng ta đã biết, mọi thứ trong python đều là đối tượng, ngay cả hàm chúng ta định nghĩa cũng là đối tượng trong Python. Là một lập trình viên, chúng tôi viết rất nhiều hàm và cũng sử dụng các hàm do người khác viết
Khi chúng tôi xác định chức năng, chúng tôi biết những gì được viết trong chức năng và chính xác nó hoạt động như thế nào, nhưng khi chúng tôi sử dụng các chức năng của mô-đun khác, chúng tôi không biết mã nguồn của nó là gì
Trong bài viết ngắn này, bạn sẽ tìm hiểu phương pháp lấy mã nguồn của hàm trong python
Để lấy mã nguồn của các hàm trong python, hãy sử dụng mô-đun kiểm tra. Mô-đun kiểm tra có một tập hợp các hàm sử dụng để bạn có thể lấy mã nguồn, chuỗi tài liệu và đường dẫn của tệp nơi phương thức được xác định
Hãy hiểu nó với ví dụ đơn giản
import inspect
import random
print[inspect.getsource[random.randint]]
đầu ra
def randint[self, a, b]:
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
Nhưng một điều cần lưu ý, kiểm tra sẽ không trả lại mã nguồn của các đối tượng tích hợp và đối tượng được xác định tương tác
Để lấy mã của đối tượng được xác định một cách tương tác, bạn có thể sử dụng thì là. nguồn. hàm getsource
Các phương thức tích hợp sẵn của python được viết bằng C và chỉ có thể được truy cập bằng cách xem trực tiếp mã nguồn python
Trả về văn bản của mã nguồn cho một đối tượng. Đối số có thể là một mô-đun, lớp, phương thức, hàm, truy nguyên, khung hoặc đối tượng mã. Mã nguồn được trả về dưới dạng một chuỗi. Một IOError được nâng lên nếu không thể truy xuất mã nguồn
Nếu hàm được biên dịch từ chuỗi, luồng hoặc được nhập từ tệp đã biên dịch, thì bạn không thể truy xuất mã nguồn của hàm đó
Đôi khi chúng ta muốn biết mã nguồn của một số chức năng trông như thế nào hoặc chúng ở đâu hoặc chúng ta cần thao tác mã nguồn dưới dạng chuỗi ký tự. Trong những trường hợp như vậy, chúng ta cần có một cách thuận tiện để truy xuất mã nguồn của các hàm Python
Thêm tài nguyên Python
- IDE là gì?
- bảng ăn gian. Trăn 3. 7 cho người mới bắt đầu
- Khung GUI Python hàng đầu
- Tải xuống. 7 thư viện PyPI thiết yếu
- Nhà phát triển mũ đỏ
- Nội dung Python mới nhất
Có hai thư viện Python có thể giúp
0 là một thư viện tiêu chuẩn được tích hợp sẵnsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
1 là thư viện của bên thứ basource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
quan sát
0 là thư viện tích hợp sẵn. Nó đã có sẵn sau khi bạn cài đặt Python trên máy tính của mình. Mô-đunsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
0 cung cấp một số chức năng hữu ích để giúp bạn lấy thông tin về các đối tượng trực tiếp, chẳng hạn như mô-đun, lớp, phương thức, hàm, truy nguyên, đối tượng khung và đối tượng mã. Trong số nhiều tính năng của nó, nổi bật là khả năng truy xuất mã nguồn của các chức năngsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
4source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
____25import pandas
import inspect
source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
6source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
7____12source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
8source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
9source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:5
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:20
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:21
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:22
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:23
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:24
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:25
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:26
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
3source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:27
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:28
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
6source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:29
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
Trong IPython hoặc Jupyter, chúng ta cũng có thể sử dụng phương thức này để lấy mã nguồn của các hàm mà chúng ta đã định nghĩa trong bảng điều khiển
def randint[self, a, b]:50
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
9source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:51
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:52
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
2source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:53
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
def randint[self, a, b]:54
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
5source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:55
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
Lưu ý rằng việc truy xuất mã nguồn của các hàm tự xác định chỉ hoạt động trong IPython hoặc Jupyter. Nếu chúng tôi đang sử dụng Python đơn giản và định nghĩa một hàm theo cách tương tác, chúng tôi sẽ gặp phải lỗi
def randint[self, a, b]:56 và sẽ không thể truy xuất mã nguồn. Điều này là do cài đặt của nó chỉ hỗ trợ các đối tượng được tải từ tệp chứ không phải phiên tương tác
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
rau thì là
1 mở rộng mô-đunsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:58 của Python để tuần tự hóa và giải tuần tự hóa các đối tượng Python cho phần lớn các loại Python tích hợp. Đồng thời, nó cũng có thể truy xuất mã nguồn của các đối tượng Python của bạn. Xin lưu ý
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
1 không phải là thư viện chuẩn nên bạn phải cài đặt riêngsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
API của nó khá giống với của
0source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
def randint[self, a, b]:26
"""Return random integer in range [a, b], including both end points.
""" return self.randrange[a, b+1]
3source_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
Tuy nhiên, một điểm khác biệt lớn giữa
1 vàsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
0 là tính năng truy xuất củasource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
1 hỗ trợ các đối tượng tự xác định trong bảng điều khiển Python đơn giảnsource_DF = inspect.getsource[pandas.DataFrame]
print[type[source_DF]]
Đọc gì tiếp theo
Thẻ
con trăn
lập trình
Xiaodong Deng
Từ Trung Quốc và hiện đang ở Singapore. Tôi học chuyên ngành toán học trong cả thời gian học cử nhân và thạc sĩ. Nhưng sau đó tôi thấy việc viết mã thú vị hơn. Suy nghĩ từ quan điểm kỹ thuật thực sự giúp tôi rất nhiều. Để biết thêm thông tin, vui lòng tham khảo trang web của tôi XD-DENG. com