2016-07-14 22 views
11

Tôi muốn xem cách chức năng math.py được triển khai, nhưng khi tôi mở tệp, tôi thấy rằng tất cả các chức năng đều trống và có một đơn giản pass. Ví dụ:Tại sao một số python xây dựng trong các chức năng chỉ có vượt qua?

def ceil(x): # real signature unknown; restored from __doc__ 
    """ 
    ceil(x) 

    Return the ceiling of x as a float. 
    This is the smallest integral value >= x. 
    """ 
    pass 

Tôi đoán đó là do các chức năng đang được sử dụng thực sự là từ thư viện chuẩn C. Làm thế nào nó hoạt động ?

+1

'math.py'? 'Math.py' là gì? Tôi không nghĩ rằng Python đi kèm với một tập tin như vậy. Mô-đun 'math' được thực hiện trong [' Modules/mathmodule.c'] (https://hg.python.org/cpython/file/2.7/Modules/mathmodule.c), một tệp có thể không thực hiện cách cài đặt Python của bạn. – user2357112

+1

Googling "Python chữ ký thực không rõ" cho thấy rằng đây là một số loại chức năng PyCharm và PyCharm đang nói dối bạn. – user2357112

+0

Chính xác, pycharm nói với tôi rằng 'math.py' tồn tại. Và một tệp của nó với tất cả các hàm toán học trống rỗng như 'ceil' mà tôi đặt trong câu hỏi của mình. – edgarstack

Trả lời

11

PyCharm đang nói dối bạn. Mã nguồn bạn đang xem là giả mạo mà PyCharm đã tạo ra. PyCharm biết những chức năng nào nên có ở đó, và nó có thể đoán được ở chữ ký của họ bằng cách sử dụng các docstrings chức năng, nhưng nó không có ý tưởng gì về các cơ quan chức năng sẽ trông như thế nào.

Nếu bạn muốn xem mã nguồn thực, bạn có thể xem mã nguồn trong kho Mercurial chính thức trong Modules/mathmodule.c. Mã nguồn C định nghĩa một vài hàm và macro để tạo trình bao bọc xung quanh các hàm toán học thư viện chuẩn C, sau đó sử dụng các macro để xác định math.ceil của Python và các hàm khác.

Các vấn đề liên quan