Đối tượng mã python vào nguồn
Đây là một kỹ thuật để trích xuất tất cả các mô-đun đã nhập từ ứng dụng Python được đóng gói dưới dạng tệp gdb target_application148, sau đó giải mã chúng. Chương trình đích cần được chạy từ đầu, nhưng không cần biểu tượng gỡ lỗi (giả sử đang sử dụng bản dựng Python chưa sửa đổi) Show
Điều này ban đầu được thực hiện trên Linux 64 bit với Python 3. 6 mục tiêu. Kể từ đó, các tập lệnh Python đã được cập nhật để xử lý các tệp pyc cho Python 2. 7 - 3. 9 Học thuyếtTrong Python, chúng ta có thể tận dụng thực tế là bất kỳ quá trình nhập mô-đun nào liên quan đến tệp gdb target_application149 cuối cùng sẽ đến dưới dạng đối tượng mã Python sẵn sàng thực thi tại chức năng này PyObject* PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals); Nếu một điểm ngắt được đặt ở đây trong gdb, thì có thể gọi triển khai C cho gdb target_application150 để kết xuất mã byte vào tệp. Thuận tiện là định dạng gdb target_application148 chỉ đơn giản là một gdb target_application152 được sắp xếp theo thứ tự với một tiêu đề nhỏ Tập lệnh gdb target_application0 bên dưới có thể được sử dụng để chuyển đổi các đối tượng mã sắp xếp thô này thành. pyc và dịch ngược chúng nếu muốn Tập lệnh gdb target_application1 có thể được sử dụng để tạo các tệp soái ca thô từ các tệp nguồn Python để chứng minh hoặc kiểm tra điều này mà không cần trích xuất mã soái ca từ thời gian chạy Tiêu đề tệp gdb target_application2Định dạng của tiêu đề pyc đã thay đổi giữa các phiên bản. Các tập lệnh xử lý việc này, nhưng để hoàn thiện (vì tôi không tìm thấy nó được ghi lại ở bất kỳ nơi nào khác cùng một lúc), đây là định dạng tiêu đề cho mỗi phiên bản Tất cả các trường tại thời điểm viết được viết dưới dạng giá trị 32-bit nhỏ
Những chi tiết này cũng được ghi chú trong các bình luận mã Triển khai trong GDBBắt đầu trình gỡ lỗi ở trạng thái đã dừng gdb target_application Sau đó, trong bảng điều khiển GDB ________số 8Giờ đây, GDB có thể được tự động kết xuất mọi gdb target_application152 được đánh giá trong thời gian chạy vào đĩa. Bạn có thể muốn kiểm tra và xác thực một kết xuất theo cách thủ công trước khi tiếp tục với phiên bản tự động của gdb target_application7 gdb target_application0 Đối số đầu tiên của gdb target_application8 phải nằm trong sổ đăng ký gdb target_application9 trên x86_64 Linux, nhưng nó có thể khác trên nền tảng của bạn. Bạn có thể cần phải tự tìm vị trí của đối số đầu tiên, nhưng khi bạn biết vị trí đó, nó có thể được thay thế ở trên thử nghiệmTập lệnh gdb target_application1 có thể được sử dụng để tạo đối tượng mã được sắp xếp theo thứ tự từ tệp nguồn Python để thử nghiệm gdb target_application4 Tiêu đề cho tệp gdb target_application2 đã thay đổi nhiều lần cho đến nay. Nếu bạn đang gặp lỗi về 2, hãy sử dụng bài kiểm tra này để xác nhận tập lệnh hoạt động trên phiên bản Python của bạn Có phần nào của Python có vẻ kỳ diệu không? . Làm thế nào để một trình tạo ghi nhớ trạng thái của các biến mỗi khi nó mang lại một giá trị và tại sao bạn không bao giờ phải cấp phát bộ nhớ như các ngôn ngữ khác? . Hướng dẫn này sẽ hướng dẫn bạn qua mã nguồn CPython Bạn sẽ bao gồm tất cả các khái niệm đằng sau phần bên trong của CPython, cách chúng hoạt động và giải thích trực quan khi bạn tiếp tục Bạn sẽ học cách
Vâng, đây là một bài viết rất dài. Nếu bạn vừa pha cho mình một tách trà, cà phê hoặc đồ uống yêu thích của mình, trời sẽ lạnh vào cuối Phần 1 Hướng dẫn này được chia thành năm phần. Dành thời gian của bạn cho từng phần và đảm bảo rằng bạn đã thử các bản trình diễn và các thành phần tương tác. Bạn có thể cảm nhận được thành tích mà bạn nắm bắt được các khái niệm cốt lõi của Python có thể giúp bạn trở thành một lập trình viên Python giỏi hơn Tải xuống miễn phí. Nhận một chương mẫu từ CPython Internals. Hướng dẫn về Trình thông dịch Python 3 chỉ cho bạn cách mở khóa hoạt động bên trong của ngôn ngữ Python, biên dịch trình thông dịch Python từ mã nguồn và tham gia phát triển CPython Phần 1. Giới thiệu về CPythonKhi bạn gõ gdb target_application757 tại bàn điều khiển hoặc cài đặt bản phân phối Python từ python. org, bạn đang chạy CPython. CPython là một trong nhiều thời gian chạy Python, được duy trì và viết bởi các nhóm nhà phát triển khác nhau. Một số thời gian chạy khác mà bạn có thể đã nghe là PyPy, Cython và Jython Điều độc đáo về CPython là nó chứa cả thời gian chạy và đặc tả ngôn ngữ dùng chung mà tất cả thời gian chạy Python sử dụng. CPython là triển khai "chính thức" hoặc tham chiếu của Python Đặc tả ngôn ngữ Python là tài liệu mô tả ngôn ngữ Python. Ví dụ: nó nói rằng gdb target_application758 là từ khóa dành riêng và gdb target_application759 được sử dụng để lập chỉ mục, cắt và tạo danh sách trống Hãy suy nghĩ về những gì bạn mong đợi bên trong bản phân phối Python trên máy tính của bạn
Đây đều là một phần của bản phân phối CPython. Có nhiều thứ hơn là một trình biên dịch Ghi chú. Bài viết này được viết chống lại phiên bản 3. 8. 0b4 của mã nguồn CPython Loại bỏ các quảng cáoCó gì trong Mã nguồn?Bản phân phối nguồn CPython đi kèm với một loạt các công cụ, thư viện và thành phần. Chúng ta sẽ khám phá những điều đó trong bài viết này. Đầu tiên chúng ta sẽ tập trung vào trình biên dịch Để tải xuống bản sao của mã nguồn CPython, bạn có thể sử dụng gdb target_application764 để kéo phiên bản mới nhất về bản sao đang hoạt động cục bộ gdb target_application5 Ghi chú. Nếu bạn không có sẵn Git, bạn có thể tải xuống nguồn trong tệp ZIP trực tiếp từ trang web GitHub Bên trong thư mục gdb target_application765 mới được tải xuống, bạn sẽ tìm thấy các thư mục con sau gdb target_application7 Tiếp theo, chúng tôi sẽ biên dịch CPython từ mã nguồn. Bước này yêu cầu trình biên dịch C và một số công cụ xây dựng, phụ thuộc vào hệ điều hành bạn đang sử dụng Biên dịch CPython (macOS)Biên dịch CPython trên macOS rất đơn giản. Trước tiên, bạn sẽ cần bộ công cụ biên dịch C thiết yếu. Công cụ phát triển dòng lệnh là một ứng dụng mà bạn có thể cập nhật trong macOS thông qua App Store. Bạn cần thực hiện cài đặt ban đầu trên thiết bị đầu cuối Để mở một thiết bị đầu cuối trong macOS, hãy chuyển đến Launchpad, sau đó chọn Khác rồi chọn ứng dụng Terminal. Bạn sẽ muốn lưu ứng dụng này vào Dock của mình, vì vậy hãy nhấp chuột phải vào Biểu tượng và chọn Keep in Dock Bây giờ, trong thiết bị đầu cuối, hãy cài đặt trình biên dịch C và bộ công cụ bằng cách chạy lệnh sau gdb target_application8 Lệnh này sẽ bật lên với lời nhắc tải xuống và cài đặt một bộ công cụ, bao gồm Git, Make và trình biên dịch GNU C Bạn cũng sẽ cần một bản sao OpenSSL đang hoạt động để sử dụng cho việc tìm nạp các gói từ PyPi. trang web tổ chức. Nếu sau này bạn có kế hoạch sử dụng bản dựng này để cài đặt các gói bổ sung, thì cần phải xác thực SSL Cách đơn giản nhất để cài đặt OpenSSL trên macOS là sử dụng HomeBrew. Nếu bạn đã cài đặt HomeBrew, bạn có thể cài đặt các phụ thuộc cho CPython bằng lệnh gdb target_application766 gdb target_application0 Bây giờ bạn đã có các phần phụ thuộc, bạn có thể chạy tập lệnh gdb target_application767, kích hoạt hỗ trợ SSL bằng cách khám phá vị trí mà HomeBrew đã cài đặt và bật móc gỡ lỗi gdb target_application768 gdb target_application3 Điều này sẽ tạo ra một gdb target_application769 trong thư mục gốc của kho lưu trữ mà bạn có thể sử dụng để tự động hóa quá trình xây dựng. Bước gdb target_application770 chỉ cần chạy một lần. Bạn có thể xây dựng nhị phân CPython bằng cách chạy gdb target_application6 Cờ ________ 1771 cho phép ________ 1772 chạy 2 công việc cùng lúc. Nếu bạn có 4 lõi, bạn có thể thay đổi thành 4. Cờ gdb target_application773 ngăn gdb target_application769 in mọi lệnh mà nó chạy ra bàn điều khiển. Bạn có thể loại bỏ cái này, nhưng đầu ra rất dài dòng Trong quá trình xây dựng, bạn có thể gặp một số lỗi và trong bản tóm tắt, nó sẽ thông báo cho bạn rằng không phải tất cả các gói đều có thể được xây dựng. Ví dụ: gdb target_application775, gdb target_application776, gdb target_application777, gdb target_application778, gdb target_application779, gdb target_application780 và gdb target_application781 sẽ không thể xây dựng với bộ hướng dẫn này. Không sao nếu bạn không có kế hoạch phát triển dựa trên các gói đó. Nếu đúng như vậy, hãy xem trang web hướng dẫn dành cho nhà phát triển để biết thêm thông tin Quá trình xây dựng sẽ mất vài phút và tạo một tệp nhị phân có tên là gdb target_application782. Mỗi khi bạn thay đổi mã nguồn, bạn sẽ cần chạy lại gdb target_application772 với cùng các cờ. Tệp nhị phân gdb target_application782 là tệp nhị phân gỡ lỗi của CPython. Thực thi gdb target_application782 để xem REPL đang hoạt động gdb target_application2 Ghi chú. Vâng, đúng vậy, bản dựng macOS có phần mở rộng tệp cho gdb target_application786. Điều này không phải vì nó là tệp nhị phân của Windows. Vì macOS có hệ thống tệp không phân biệt chữ hoa chữ thường và khi làm việc với tệp nhị phân, các nhà phát triển không muốn mọi người vô tình tham chiếu đến thư mục gdb target_application787 nên gdb target_application786 đã được thêm vào để tránh sự mơ hồ. Nếu sau này bạn chạy gdb target_application789 hoặc gdb target_application790, nó sẽ đổi tên tệp trở lại gdb target_application757Loại bỏ các quảng cáo Biên dịch CPython (Linux)Đối với Linux, bước đầu tiên là tải xuống và cài đặt ________ 1772, ________ 1793, ________ 1767 và ________ 1795 Đối với Fedora Core, RHEL, CentOS hoặc các hệ thống dựa trên yum khác gdb target_application3 Đối với Debian, Ubuntu hoặc các hệ thống dựa trên gdb target_application796 khác gdb target_application5 Sau đó cài đặt các gói cần thiết, cho Fedora Core, RHEL, CentOS hoặc các hệ thống dựa trên yum khác gdb target_application6 Đối với Debian, Ubuntu hoặc các hệ thống dựa trên gdb target_application796 khác gdb target_application70 Bây giờ bạn đã có các phần phụ thuộc, bạn có thể chạy tập lệnh gdb target_application767, kích hoạt móc gỡ lỗi gdb target_application768 gdb target_application71 Xem lại đầu ra để đảm bảo rằng hỗ trợ OpenSSL được đánh dấu là gdb target_application800. Nếu không, hãy kiểm tra bản phân phối của bạn để biết hướng dẫn cài đặt tiêu đề cho OpenSSL Tiếp theo, bạn có thể xây dựng tệp nhị phân CPython bằng cách chạy tệp gdb target_application769 đã tạo gdb target_application6 Trong quá trình xây dựng, bạn có thể gặp một số lỗi và trong bản tóm tắt, nó sẽ thông báo cho bạn rằng không phải tất cả các gói đều có thể được xây dựng. Không sao nếu bạn không có kế hoạch phát triển dựa trên các gói đó. Nếu đúng như vậy, hãy xem trang web hướng dẫn dành cho nhà phát triển để biết thêm thông tin Quá trình xây dựng sẽ mất vài phút và tạo một tệp nhị phân có tên là gdb target_application757. Đây là nhị phân gỡ lỗi của CPython. Thực thi gdb target_application803 để xem REPL đang hoạt động gdb target_application73 Biên dịch CPython (Windows)Bên trong thư mục PC là tệp dự án Visual Studio để xây dựng và khám phá CPython. Để sử dụng tính năng này, bạn cần cài đặt Visual Studio trên PC của mình Phiên bản mới nhất của Visual Studio, Visual Studio 2019, giúp làm việc với Python và mã nguồn CPython dễ dàng hơn, vì vậy nó được khuyến nghị sử dụng trong hướng dẫn này. Nếu bạn đã cài đặt Visual Studio 2017, nó cũng sẽ hoạt động tốt Không có tính năng trả phí nào được yêu cầu để biên dịch CPython hoặc hướng dẫn này. Bạn có thể sử dụng phiên bản Cộng đồng của Visual Studio, được cung cấp miễn phí trên trang web Visual Studio của Microsoft Khi bạn đã tải xuống trình cài đặt, bạn sẽ được yêu cầu chọn thành phần nào bạn muốn cài đặt. Mức tối thiểu cho hướng dẫn này là
Bất kỳ tính năng tùy chọn nào khác có thể được bỏ chọn nếu bạn muốn tận tâm hơn với dung lượng ổ đĩa Trình cài đặt sau đó sẽ tải xuống và cài đặt tất cả các thành phần cần thiết. Quá trình cài đặt có thể mất một giờ, vì vậy bạn có thể muốn đọc tiếp và quay lại phần này Khi quá trình cài đặt hoàn tất, hãy nhấp vào nút Khởi chạy để khởi động Visual Studio. Bạn sẽ được nhắc đăng nhập. Nếu bạn có tài khoản Microsoft, bạn có thể đăng nhập hoặc bỏ qua bước đó Khi Visual Studio khởi động, bạn sẽ được nhắc Mở Dự án. Một lối tắt để bắt đầu với cấu hình Git và nhân bản CPython là chọn tùy chọn Clone or check out code Đối với URL của dự án, hãy nhập gdb target_application804 để sao chép Sau đó, Visual Studio sẽ tải xuống một bản sao CPython từ GitHub bằng phiên bản Git đi kèm với Visual Studio. Bước này cũng giúp bạn tránh được rắc rối khi phải cài đặt Git trên Windows. Quá trình tải xuống có thể mất 10 phút Khi dự án đã được tải xuống, bạn cần trỏ nó đến tệp Giải pháp gdb target_application805, bằng cách nhấp vào Giải pháp và Dự án và chọn gdb target_application806 Khi giải pháp được tải, nó sẽ nhắc bạn nhắm mục tiêu lại dự án bên trong giải pháp cho phiên bản trình biên dịch C/C++ mà bạn đã cài đặt. Visual Studio cũng sẽ nhắm mục tiêu phiên bản Windows SDK mà bạn đã cài đặt Đảm bảo rằng bạn thay đổi phiên bản Windows SDK thành phiên bản được cài đặt mới nhất và bộ công cụ nền tảng thành phiên bản mới nhất. Nếu bạn bỏ lỡ cửa sổ này, bạn có thể nhấp chuột phải vào Giải pháp trong cửa sổ Giải pháp và Dự án và nhấp vào Giải pháp nhắm mục tiêu lại Khi quá trình này hoàn tất, bạn cần tải xuống một số tệp nguồn để có thể xây dựng toàn bộ gói CPython. Bên trong thư mục gdb target_application807 có tệp gdb target_application808 tự động hóa việc này cho bạn. Mở lời nhắc dòng lệnh bên trong gdb target_application807 đã tải xuống và chạy gdb target_application810 gdb target_application74 Tiếp theo, quay lại trong Visual Studio, xây dựng CPython bằng cách nhấn Ctrl + Shift +B, or choosing Build Solution from the top menu. If you receive any errors about the Windows SDK being missing, make sure you set the right targeting settings in the Retarget Solution window. You should also see Windows Kits inside your Start Menu, and Windows Software Development Kit inside of that menu. Giai đoạn xây dựng lần đầu tiên có thể mất 10 phút hoặc hơn. Sau khi quá trình xây dựng hoàn tất, bạn có thể thấy một vài cảnh báo mà bạn có thể bỏ qua và cuối cùng sẽ hoàn tất Để bắt đầu phiên bản gỡ lỗi của CPython, hãy nhấn F5 và CPython sẽ bắt đầu ở chế độ Gỡ lỗi thẳng vào REPL. Khi quá trình này hoàn tất, bạn có thể chạy bản dựng Phát hành bằng cách thay đổi cấu hình bản dựng từ Gỡ lỗi thành Phát hành trên thanh menu trên cùng và chạy lại Giải pháp bản dựng. Bây giờ bạn có cả hai phiên bản Gỡ lỗi và Phát hành của tệp nhị phân CPython trong gdb target_application811 Bạn có thể thiết lập Visual Studio để có thể mở REPL bằng bản Phát hành hoặc Gỡ lỗi bằng cách chọn gdb target_application812->______2813-> gdb target_application814 từ menu trên cùng Sau đó nhấp vào Thêm môi trường và sau đó nhắm mục tiêu nhị phân Gỡ lỗi hoặc Phát hành. Nhị phân gỡ lỗi sẽ kết thúc bằng gdb target_application815, ví dụ: gdb target_application816 và gdb target_application817. Rất có thể bạn sẽ muốn sử dụng tệp nhị phân gỡ lỗi vì nó đi kèm với hỗ trợ Gỡ lỗi trong Visual Studio và sẽ hữu ích cho hướng dẫn này Trong cửa sổ Thêm môi trường, nhắm mục tiêu tệp gdb target_application816 làm trình thông dịch bên trong gdb target_application819 và gdb target_application817 làm trình thông dịch cửa sổ Bây giờ, bạn có thể bắt đầu phiên REPL bằng cách nhấp vào Mở cửa sổ tương tác trong cửa sổ Môi trường Python và bạn sẽ thấy REPL cho phiên bản Python đã biên dịch Trong hướng dẫn này sẽ có các phiên REPL với các lệnh ví dụ. Tôi khuyến khích bạn sử dụng nhị phân Gỡ lỗi để chạy các phiên REPL này trong trường hợp bạn muốn đặt bất kỳ điểm dừng nào trong mã Cuối cùng, để điều hướng mã dễ dàng hơn, trong Chế độ xem giải pháp, hãy nhấp vào nút chuyển đổi bên cạnh biểu tượng Trang chủ để chuyển sang chế độ xem Thư mục Bây giờ bạn đã có một phiên bản CPython được biên dịch và sẵn sàng hoạt động, hãy cùng tìm hiểu cách thức hoạt động của trình biên dịch CPython Loại bỏ các quảng cáoTrình biên dịch làm gì?Mục đích của trình biên dịch là chuyển đổi ngôn ngữ này sang ngôn ngữ khác. Hãy nghĩ về một trình biên dịch giống như một dịch giả. Bạn sẽ thuê một người phiên dịch để nghe bạn nói tiếng Anh và sau đó nói bằng tiếng Nhật Một số trình biên dịch sẽ biên dịch thành mã máy cấp thấp có thể được thực thi trực tiếp trên hệ thống. Các trình biên dịch khác sẽ biên dịch thành một ngôn ngữ trung gian, được thực thi bởi một máy ảo Một quyết định quan trọng cần đưa ra khi chọn trình biên dịch là các yêu cầu về tính di động của hệ thống. Java và. NET CLR sẽ biên dịch thành Ngôn ngữ trung gian để mã được biên dịch có thể di chuyển trên nhiều kiến trúc hệ thống. C, Go, C++ và Pascal sẽ biên dịch thành một tệp thực thi cấp thấp sẽ chỉ hoạt động trên các hệ thống tương tự như hệ thống được biên dịch Vì các ứng dụng Python thường được phân phối dưới dạng mã nguồn nên vai trò của bộ thực thi Python là chuyển đổi mã nguồn Python và thực thi nó trong một bước. Trong nội bộ, thời gian chạy CPython sẽ biên dịch mã của bạn. Một quan niệm sai lầm phổ biến là Python là một ngôn ngữ thông dịch. Nó thực sự được tổng hợp Mã Python không được biên dịch thành mã máy. Nó được biên dịch thành một ngôn ngữ trung gian cấp thấp đặc biệt gọi là bytecode mà chỉ CPython mới hiểu được. Mã này được lưu trữ trong các tệp gdb target_application821 trong một thư mục ẩn và được lưu vào bộ đệm để thực thi. Nếu bạn chạy cùng một ứng dụng Python hai lần mà không thay đổi mã nguồn, lần thứ hai sẽ luôn nhanh hơn nhiều. Điều này là do nó tải bytecode đã biên dịch và thực thi trực tiếp Tại sao CPython được viết bằng C mà không phải Python?Chữ C trong CPython là tham chiếu đến ngôn ngữ lập trình C, ngụ ý rằng bản phân phối Python này được viết bằng ngôn ngữ C Tuyên bố này phần lớn là sự thật. trình biên dịch trong CPython được viết bằng C thuần túy. Tuy nhiên, nhiều mô-đun thư viện tiêu chuẩn được viết bằng Python thuần túy hoặc kết hợp giữa C và Python Vậy tại sao CPython được viết bằng C mà không phải Python? Câu trả lời nằm ở cách trình biên dịch hoạt động. Có hai loại trình biên dịch
Nếu bạn đang viết một ngôn ngữ lập trình mới từ đầu, bạn cần một ứng dụng thực thi để biên dịch trình biên dịch của mình. Bạn cần một trình biên dịch để thực thi mọi thứ, vì vậy khi các ngôn ngữ mới được phát triển, chúng thường được viết trước bằng một ngôn ngữ cũ hơn, lâu đời hơn Một ví dụ điển hình là ngôn ngữ lập trình Go. Trình biên dịch Go đầu tiên được viết bằng C, sau đó khi Go có thể được biên dịch, trình biên dịch được viết lại bằng Go CPython giữ di sản C của nó. nhiều mô-đun thư viện tiêu chuẩn, như mô-đun ________ 2822 hoặc mô-đun ________ 2823, được viết bằng C để truy cập API hệ điều hành cấp thấp. Các API trong nhân Windows và Linux để tạo ổ cắm mạng, làm việc với hệ thống tệp hoặc tương tác với màn hình đều được viết bằng C. Thật hợp lý khi lớp mở rộng của Python được tập trung vào ngôn ngữ C. Ở phần sau của bài viết này, chúng ta sẽ đề cập đến Thư viện chuẩn Python và các mô-đun C Có một trình biên dịch Python được viết bằng Python gọi là PyPy. Logo của PyPy là một Ouroboros để thể hiện bản chất tự lưu trữ của trình biên dịch Một ví dụ khác về trình biên dịch chéo cho Python là Jython. Jython được viết bằng Java và biên dịch từ mã nguồn Python thành Java bytecode. Cũng giống như cách CPython giúp dễ dàng nhập các thư viện C và sử dụng chúng từ Python, Jython giúp dễ dàng nhập và tham chiếu các mô-đun và lớp Java Đặc tả ngôn ngữ PythonChứa trong mã nguồn CPython là định nghĩa của ngôn ngữ Python. Đây là đặc tả tham chiếu được sử dụng bởi tất cả các trình thông dịch Python Thông số kỹ thuật ở cả định dạng người đọc được và máy đọc được. Bên trong tài liệu là giải thích chi tiết về ngôn ngữ Python, những gì được phép và cách mỗi câu lệnh nên hoạt động Tài liệuNằm bên trong thư mục gdb target_application824 là các giải thích về reStructuredText của từng tính năng trong ngôn ngữ Python. Điều này tạo thành hướng dẫn tham khảo Python chính thức trên tài liệu. con trăn. tổ chức Bên trong thư mục là các tệp bạn cần hiểu toàn bộ ngôn ngữ, cấu trúc và từ khóa gdb target_application75 Bên trong gdb target_application825, tài liệu về câu lệnh ghép, bạn có thể xem một ví dụ đơn giản xác định câu lệnh gdb target_application826 Câu lệnh gdb target_application826 có thể được sử dụng theo nhiều cách trong Python, cách đơn giản nhất là khởi tạo trình quản lý ngữ cảnh và khối mã lồng nhau gdb target_application76 Bạn có thể gán kết quả cho một biến bằng cách sử dụng từ khóa gdb target_application828 gdb target_application77 Bạn cũng có thể xâu chuỗi các trình quản lý ngữ cảnh cùng với dấu phẩy gdb target_application78 Tiếp theo, chúng ta sẽ khám phá tài liệu có thể đọc được trên máy tính của ngôn ngữ Python Văn phạmTài liệu chứa thông số kỹ thuật mà con người có thể đọc được của ngôn ngữ và thông số kỹ thuật mà máy có thể đọc được nằm trong một tệp duy nhất, gdb target_application829 Tệp ngữ pháp được viết bằng ký hiệu ngữ cảnh có tên là Biểu mẫu Backus-Naur (BNF). BNF không dành riêng cho Python và thường được sử dụng làm ký hiệu cho ngữ pháp trong nhiều ngôn ngữ khác Khái niệm cấu trúc ngữ pháp trong ngôn ngữ lập trình được lấy cảm hứng từ tác phẩm của Noam Chomsky về Cấu trúc cú pháp vào những năm 1950 Tệp ngữ pháp của Python sử dụng đặc tả BNF mở rộng (EBNF) với cú pháp biểu thức chính quy. Vì vậy, trong tệp ngữ pháp bạn có thể sử dụng
Nếu bạn tìm kiếm câu lệnh gdb target_application826 trong tệp ngữ pháp, ở khoảng dòng 80, bạn sẽ thấy các định nghĩa cho câu lệnh gdb target_application826 gdb target_application79 Bất cứ điều gì trong dấu ngoặc kép là một chuỗi ký tự, đó là cách từ khóa được xác định. Vì vậy, gdb target_application837 được chỉ định là
Có tham chiếu đến một số định nghĩa khác trong hai dòng này
Nếu bạn muốn khám phá những điều đó một cách chi tiết, toàn bộ ngữ pháp Python được định nghĩa trong tệp duy nhất này Nếu bạn muốn xem một ví dụ gần đây về cách sử dụng ngữ pháp, trong PEP 572, toán tử dấu hai chấm bằng đã được thêm vào tệp ngữ pháp trong cam kết Git này Sử dụng |