Cho đến nay, chúng ta chủ yếu nói về Python như một ngôn ngữ lập trình. Nhưng nó cũng là một gói phần mềm được gọi là trình thông dịch. Trình thông dịch là một loại chương trình thực thi các chương trình khác. Khi bạn viết chương trình Python, trình thông dịch Python sẽ đọc chương trình của bạn và thực hiện các hướng dẫn trong đó. [] Trong phần này, chúng ta khám phá các cách báo cho trình thông dịch Python biết chương trình nào sẽ chạy
Khi gói Python được cài đặt trên máy của bạn, nó sẽ tạo ra một số thành phần. Tùy thuộc vào cách bạn sử dụng, trình thông dịch Python có thể ở dạng một chương trình thực thi hoặc một bộ thư viện được liên kết với một chương trình khác. Nói chung, có ít nhất năm cách để chạy chương trình thông qua trình thông dịch Python
tương tác
Dưới dạng tệp mô-đun Python
Dưới dạng tệp script kiểu Unix
Được nhúng trong một hệ thống khác
Phương thức khởi chạy dành riêng cho nền tảng
Hãy lần lượt xem xét từng chiến lược này
Dòng lệnh tương tác
Có lẽ cách đơn giản nhất để chạy các chương trình Python là nhập chúng vào dòng lệnh tương tác của Python. Giả sử trình thông dịch được cài đặt dưới dạng một chương trình thực thi trên hệ thống của bạn, gõ ____03 tại dấu nhắc của hệ điều hành mà không có bất kỳ đối số nào sẽ khởi động trình thông dịch tương tác. Ví dụ
%python
>>>print 'Hello world!'
Hello world! >>>lumberjack = "okay"
>>># Ctrl-D to exit [Ctrl-Z on some platforms]
Ở đây,
import sys print sys.argv # more on this later3 được nhập tại dấu nhắc Unix [hoặc MS-DOS] để bắt đầu phiên Python tương tác. Python nhắc nhập liệu với
import sys print sys.argv # more on this later5 khi nó đang đợi bạn nhập một câu lệnh Python mới. Khi làm việc tương tác, kết quả của các câu lệnh được hiển thị sau dòng
import sys print sys.argv # more on this later5. Trên hầu hết các máy Unix, tổ hợp hai phím Ctrl-D [nhấn phím Ctrl, sau đó nhấn D trong khi giữ Ctrl] sẽ thoát khỏi dòng lệnh tương tác và đưa bạn trở lại dòng lệnh của hệ điều hành;
Bây giờ, chúng tôi không làm gì nhiều trong ví dụ trước. chúng tôi gõ Python
import sys print sys.argv # more on this later7 và các câu lệnh gán, chúng tôi sẽ nghiên cứu chi tiết sau. Nhưng lưu ý rằng mã chúng tôi đã nhập được thực thi ngay lập tức bởi trình thông dịch. Chẳng hạn, sau khi gõ một câu lệnh
import sys print sys.argv # more on this later7 tại dấu nhắc
import sys print sys.argv # more on this later5, đầu ra [một chuỗi Python] được lặp lại ngay lập tức. Trước tiên, không cần chạy mã thông qua trình biên dịch và trình liên kết, như bạn thường làm khi sử dụng một ngôn ngữ như C hoặc C++
Bởi vì mã được thực thi ngay lập tức, lời nhắc tương tác hóa ra là một nơi thuận tiện để thử nghiệm ngôn ngữ và chúng ta sẽ thường xuyên sử dụng nó trong phần này của cuốn sách để minh họa các ví dụ nhỏ. Trên thực tế, đây là nguyên tắc đầu tiên. nếu bạn từng nghi ngờ về cách thức hoạt động của một đoạn mã Python, hãy kích hoạt dòng lệnh tương tác và dùng thử. Đó là những gì nó ở đó cho
Dấu nhắc tương tác cũng thường được sử dụng làm nơi kiểm tra các thành phần của hệ thống lớn hơn. Như chúng ta sẽ thấy, dòng lệnh tương tác cho phép chúng ta nhập các thành phần một cách tương tác và kiểm tra giao diện của chúng một cách nhanh chóng. Một phần do tính chất tương tác này, Python hỗ trợ phong cách lập trình thử nghiệm và khám phá mà bạn sẽ thấy thuận tiện khi bắt đầu
Ghi chú
Một từ trên lời nhắc. chúng ta sẽ không gặp câu lệnh ghép [nhiều dòng] cho đến Chương 3, nhưng như một bản xem trước, bạn nên biết rằng khi nhập dòng hai trở lên của câu lệnh ghép một cách tương tác, lời nhắc sẽ thay đổi thành
% python spam.py -i eggs -o bacon
['spam.py', '-i', 'eggs', '-o', 'bacon']
0 thay vì import sys print sys.argv # more on this later5. Tại dấu nhắc
% python spam.py -i eggs -o bacon
['spam.py', '-i', 'eggs', '-o', 'bacon']
0, một dòng trống [nhấn phím Enter] cho Python biết rằng bạn đã nhập xong câu lệnh. Điều này khác với các câu lệnh ghép được nhập vào tệp, trong đó các dòng trống được bỏ qua đơn giản. Bạn sẽ thấy tại sao điều này lại quan trọng trong Chương 3. Hai lời nhắc này cũng có thể được thay đổi [trong Phần II, chúng ta sẽ thấy rằng chúng là các thuộc tính trong mô-đun % python spam.py -i eggs -o bacon
['spam.py', '-i', 'eggs', '-o', 'bacon']
3 tích hợp sẵn], nhưng chúng ta sẽ cho rằng chúng không có trong các ví dụ của chúng taMặc dù lời nhắc tương tác rất tốt để thử nghiệm và kiểm tra, nhưng nó có một nhược điểm lớn. các chương trình bạn gõ ở đó sẽ biến mất ngay sau khi trình thông dịch Python thực thi chúng. Mã bạn nhập theo cách tương tác không bao giờ được lưu trữ trong tệp, vì vậy bạn không thể chạy lại mã mà không nhập lại từ đầu. Cắt và dán và gọi lại lệnh có thể giúp một số ở đây, nhưng không nhiều, đặc biệt là khi bạn bắt đầu viết các chương trình lớn hơn
Để lưu chương trình vĩnh viễn, bạn cần tệp mô-đun Python. Các tệp mô-đun chỉ đơn giản là các tệp văn bản chứa các câu lệnh Python. Bạn có thể yêu cầu trình thông dịch Python thực thi một tệp như vậy bằng cách liệt kê tên của nó trong lệnh
import sys print sys.argv # more on this later3. Ví dụ: giả sử chúng ta khởi động trình soạn thảo văn bản yêu thích của mình và nhập hai câu lệnh Python vào một tệp văn bản có tên là spam. py
import sys print sys.argv # more on this later
Xin nhắc lại, hiện tại chúng tôi đang bỏ qua cú pháp của các câu lệnh trong tệp này, vì vậy đừng lo lắng về các chi tiết; . Khi chúng tôi đã lưu tệp văn bản của mình, chúng tôi có thể yêu cầu Python chạy nó bằng cách liệt kê tên tệp làm đối số trên lệnh
import sys print sys.argv # more on this later3 trong trình bao hệ điều hành________số 8
Lưu ý rằng chúng tôi đã gọi tệp mô-đun là thư rác. py; . hậu tố py. Chúng tôi cũng liệt kê bốn đối số dòng lệnh sẽ được chương trình Python sử dụng [các mục sau
import sys print sys.argv # more on this later3
% python spam.py -i eggs -o bacon
['spam.py', '-i', 'eggs', '-o', 'bacon']
7]; . Nhân tiện, nếu bạn đang làm việc trên nền tảng Windows hoặc MS-DOS, thì ví dụ này cũng hoạt động như vậy, nhưng dấu nhắc hệ thống thường khácimport sys print sys.argv # more on this later0
Chạy tập lệnh kiểu Unix
Cho đến nay, chúng ta đã biết cách nhập mã tương tác và chạy các tệp mã được tạo bằng trình soạn thảo văn bản [mô-đun]. Nếu bạn định sử dụng Python trên hệ thống tương tự Unix, Linux hoặc Unix, bạn cũng có thể biến các tệp mã Python thành các chương trình có thể thực thi được, giống như cách bạn làm đối với các chương trình được mã hóa bằng ngôn ngữ hệ vỏ như csh hoặc ksh. Các tệp như vậy thường được gọi là tập lệnh;
Dòng đầu tiên của họ là đặc biệt
Các tập lệnh thường bắt đầu bằng dòng đầu tiên bắt đầu bằng ký tự
import sys print sys.argv # more on this later00, theo sau là đường dẫn đến trình thông dịch Python trên máy của bạnHọ thường có đặc quyền thực thi
Các tệp tập lệnh thường được đánh dấu là có thể thực thi được, để cho hệ điều hành biết rằng chúng có thể được chạy dưới dạng các chương trình cấp cao nhất. Trên các hệ thống Unix, một lệnh như
import sys print sys.argv # more on this later01 thường thực hiện thủ thuật
Hãy xem một ví dụ. Giả sử chúng ta sử dụng lại trình soạn thảo văn bản yêu thích của mình để tạo một tệp mã Python có tên là brian
import sys print sys.argv # more on this later3
Chúng tôi đặt dòng đặc biệt ở đầu tệp để báo cho hệ thống biết nơi trình thông dịch Python sống. Về mặt kỹ thuật, dòng đầu tiên là một nhận xét Python. Tất cả các chú thích trong chương trình Python đều bắt đầu bằng
import sys print sys.argv # more on this later02 và kéo dài đến cuối dòng; . Nhưng khi một chú thích chẳng hạn như dòng đầu tiên trong tệp này xuất hiện, thì đó là điều đặc biệt, vì hệ điều hành sử dụng chú thích đó để tìm trình thông dịch để chạy mã chương trình trong phần còn lại của tệp
Chúng tôi cũng gọi tệp này đơn giản là brian, không có. py chúng tôi đã sử dụng cho tệp mô-đun trước đó. Thêm một. py vào tên sẽ không gây hại gì [và có thể giúp chúng tôi nhớ rằng đây là tệp chương trình Python]; . Nếu chúng tôi cung cấp các đặc quyền thực thi cho tệp của mình bằng lệnh trình bao
import sys print sys.argv # more on this later03
import sys print sys.argv # more on this later04, thì chúng tôi có thể chạy nó từ trình bao hệ điều hành như thể đó là một chương trình nhị phân
import sys print sys.argv # more on this later7
Lưu ý cho người dùng Windows và MS-DOS. phương pháp được mô tả ở đây là một thủ thuật Unix và có thể không hoạt động trên nền tảng của bạn. không phải lo lắng. chỉ cần sử dụng kỹ thuật tệp mô-đun từ phần trước. Liệt kê tên của tệp trên một dòng lệnh
import sys print sys.argv # more on this later3 rõ ràng
import sys print sys.argv # more on this later9
Trong trường hợp này, bạn không cần chú thích đặc biệt
import sys print sys.argv # more on this later00 ở trên cùng [mặc dù Python sẽ bỏ qua nó nếu có] và tệp không cần được cấp đặc quyền thực thi. Trên thực tế, nếu bạn muốn chạy các tệp di động giữa Unix và MS-Windows, cuộc sống của bạn có thể sẽ đơn giản hơn nếu bạn luôn sử dụng phương pháp tiếp cận tệp mô-đun, không phải tập lệnh kiểu Unix, để khởi chạy chương trình.
Ghi chú
Trên một số hệ thống, bạn có thể tránh mã hóa cứng đường dẫn đến trình thông dịch Python bằng cách viết nhận xét dòng đầu tiên đặc biệt như thế này.
import sys print sys.argv # more on this later07
import sys print sys.argv # more on this later3. Khi được mã hóa theo cách này, chương trình
import sys print sys.argv # more on this later09 định vị trình thông dịch
import sys print sys.argv # more on this later3 theo cài đặt đường dẫn tìm kiếm hệ thống của bạn [i. e. , trong hầu hết các hệ vỏ Unix, bằng cách xem trong tất cả các thư mục được liệt kê trong biến môi trường
import sys print sys.argv # more on this later31]. Lược đồ dựa trên
import sys print sys.argv # more on this later09 này có thể dễ mang theo hơn, vì bạn không cần mã hóa cứng đường dẫn cài đặt Python trong dòng đầu tiên của tất cả các tập lệnh của mình;
Mã nhúng và đối tượng
Chúng ta đã thấy cách chạy mã tương tác và cách khởi chạy tệp mô-đun và tập lệnh kiểu Unix. Điều đó bao gồm hầu hết các trường hợp chúng ta sẽ thấy trong cuốn sách này. Nhưng trong một số lĩnh vực chuyên biệt, mã Python cũng có thể được chạy bởi một hệ thống kèm theo. Trong những trường hợp như vậy, chúng tôi nói rằng các chương trình Python được nhúng trong [i. e. , chạy bởi] một chương trình khác. Bản thân mã Python có thể được nhập vào tệp văn bản, được lưu trữ trong cơ sở dữ liệu, được tìm nạp từ trang HTML, v.v. Nhưng từ góc độ vận hành, một hệ thống khác—không phải bạn—có thể yêu cầu Python chạy mã mà bạn đã tạo
Ví dụ: có thể tạo và chạy các chuỗi mã Python từ chương trình C bằng cách gọi các hàm trong API thời gian chạy Python [một bộ dịch vụ được xuất bởi các thư viện được tạo khi Python được biên dịch trên máy của bạn]
import sys print sys.argv # more on this later9
Trong đoạn mã này, một chương trình được mã hóa bằng ngôn ngữ C [
import sys print sys.argv # more on this later35] nhúng trình thông dịch Python bằng cách liên kết trong các thư viện của nó và chuyển cho nó một chuỗi câu lệnh gán Python để chạy. Các chương trình C cũng có thể có quyền truy cập vào các đối tượng Python và xử lý hoặc thực thi chúng bằng các công cụ API Python khác
Cuốn sách này không nói về tích hợp Python/C, vì vậy chúng tôi sẽ không đi vào chi tiết về những gì đang thực sự xảy ra ở đây. [] Nhưng bạn nên lưu ý rằng, tùy thuộc vào cách tổ chức của bạn dự định sử dụng Python, bạn có thể hoặc không phải là người thực sự bắt đầu các chương trình Python mà bạn tạo. Bất chấp điều đó, bạn vẫn có thể sử dụng các kỹ thuật khởi chạy tương tác và dựa trên tệp được mô tả ở đây, để kiểm tra mã độc lập với các hệ thống kèm theo mà cuối cùng có thể sử dụng mã đó
Phương thức khởi động dành riêng cho nền tảng
Cuối cùng, tùy thuộc vào loại máy tính bạn đang sử dụng, có thể có nhiều cách cụ thể hơn để khởi động chương trình Python ngoài các kỹ thuật chung mà chúng tôi đã nêu ở trên. Chẳng hạn, trên một số cổng Windows của Python, bạn có thể chạy mã từ giao diện dòng lệnh giống Unix hoặc bằng cách nhấp đúp vào biểu tượng chương trình Python. Và trên các cổng Macintosh, bạn có thể kéo các biểu tượng chương trình Python vào biểu tượng của trình thông dịch để thực thi các tệp chương trình. Chúng tôi sẽ có nhiều điều để nói về các chi tiết dành riêng cho nền tảng như thế này trong phần phụ lục của cuốn sách này
Những gì bạn gõ và nơi bạn gõ nó
Với tất cả các tùy chọn và lệnh này, người mới bắt đầu dễ bị nhầm lẫn về lệnh nào được nhập tại dấu nhắc nào. Đây là một bản tóm tắt nhanh chóng
Bắt đầu Python tương tác
Trình thông dịch Python thường được bắt đầu từ dòng lệnh của hệ thống
import sys print sys.argv # more on this later1
Nhập mã tương tác
Các chương trình có thể được gõ tại dòng lệnh trình thông dịch tương tác của Python
import sys print sys.argv # more on this later2
Nhập mã vào tệp để sử dụng sau
Các chương trình cũng có thể được nhập vào tệp văn bản, sử dụng trình soạn thảo văn bản yêu thích của bạn
import sys print sys.argv # more on this later0
Bắt đầu tập tin kịch bản
Các tệp script kiểu Unix được bắt đầu từ shell hệ thống
import sys print sys.argv # more on this later1
Bắt đầu tập tin chương trình [mô-đun]
Các tệp mô-đun được chạy từ vỏ hệ thống
import sys print sys.argv # more on this later2
Chạy mã nhúng
Khi Python được nhúng, mã Python có thể được nhập theo các cách tùy ý
Ghi chú
Khi nhập các chương trình Python [tương tác hoặc vào một tệp văn bản], hãy đảm bảo bắt đầu tất cả các câu lệnh chưa được lồng của bạn trong cột 1. Nếu không, Python sẽ in thông báo “SyntaxError”. Cho đến giữa Chương 3, tất cả các câu lệnh của chúng ta sẽ không được lồng vào nhau, vì vậy điều này bao gồm mọi thứ vào lúc này. Chúng tôi sẽ giải thích lý do sau—nó liên quan đến các quy tắc thụt lề của Python—nhưng đây có vẻ là một sự nhầm lẫn lặp đi lặp lại trong các lớp Python cơ bản