Tập lệnh python trả chuỗi về shell
Tôi muốn thực thi tập lệnh python từ tập lệnh bash và tôi muốn lưu trữ đầu ra của tập lệnh python trong một biến Show Trong tập lệnh python của tôi, tôi in một số nội dung ra màn hình và cuối cùng tôi trả về một chuỗi có
Trong tập lệnh bash của tôi, tôi đã làm như sau
Nhưng sau đó, khi tôi kiểm tra giá trị của 21 với 22, tôi nhận được mọi thứ mà tập lệnh Python đã in ra màn hình, nhưng không phải giá trị trả về 0Làm thế nào tôi nên làm điều này? CHỈNH SỬA. Tôi cần chuỗi vì nó cho tôi biết vị trí của tệp được tạo bởi tập lệnh Python. tôi muốn làm một cái gì đó như
1 không có nghĩa là "trả lại chuỗi này". Nếu bạn chuyển một chuỗi tới 2, thì 2 sẽ coi chuỗi đó là một thông báo lỗi và nó sẽ ghi chuỗi đó vào 4. Khái niệm gần nhất với giá trị trả về cho toàn bộ chương trình là trạng thái thoát của nó, phải là số nguyênNếu bạn muốn chụp đầu ra được ghi vào thiết bị lỗi chuẩn, bạn có thể làm điều gì đó như ________số 8Bạn có thể làm điều gì đó tương tự trong tập lệnh bash của mình
Tuy nhiên, điều này không đảm bảo chỉ thu được giá trị được chuyển đến 2. Mọi thứ khác được ghi vào thiết bị lỗi chuẩn cũng sẽ được ghi lại, có thể bao gồm đầu ra ghi nhật ký hoặc dấu vết ngăn xếpthí dụ kiểm tra. py 1t. sh 2 6chỉnh sửa Không chắc tại sao nhưng trong trường hợp đó, tôi sẽ viết một kịch bản chính và hai kịch bản khác. Trộn python và bash là vô nghĩa trừ khi bạn thực sự cần Mô-đun này cung cấp quyền truy cập vào một số biến được trình thông dịch sử dụng hoặc duy trì và các chức năng tương tác mạnh với trình thông dịch. Nó luôn luôn có sẵn sys. abiflagsTrên các hệ thống POSIX nơi Python được xây dựng với tập lệnh 23 tiêu chuẩn, tập lệnh này chứa các cờ ABI theo quy định của PEP 3149Đã thay đổi trong phiên bản 3. 8. Cờ mặc định trở thành chuỗi rỗng (cờ 24 cho pymalloc đã bị xóa). Mới trong phiên bản 3. 2 sys. addaudithook(móc)Nối móc có thể gọi vào danh sách móc kiểm tra đang hoạt động cho trình thông dịch (phụ) hiện tại Khi một sự kiện kiểm tra được đưa ra thông qua hàm, mỗi hook sẽ được gọi theo thứ tự được thêm vào với tên sự kiện và bộ đối số. Các móc gốc được thêm bởi được gọi trước, tiếp theo là các móc được thêm vào trong trình thông dịch (phụ) hiện tại. Sau đó, các hook có thể ghi nhật ký sự kiện, đưa ra một ngoại lệ để hủy bỏ hoạt động hoặc chấm dứt hoàn toàn quy trình Lưu ý rằng các móc kiểm tra chủ yếu để thu thập thông tin về các hành động nội bộ hoặc không thể quan sát được, cho dù bằng Python hay các thư viện được viết bằng Python. Chúng không phù hợp để triển khai “sandbox”. Cụ thể, mã độc có thể vô hiệu hóa hoặc bỏ qua các hook được thêm vào bằng cách sử dụng chức năng này. Ở mức tối thiểu, bất kỳ hook nhạy cảm về bảo mật nào cũng phải được thêm vào bằng cách sử dụng API C trước khi khởi tạo thời gian chạy và mọi mô-đun cho phép sửa đổi bộ nhớ tùy ý (chẳng hạn như ) phải được xóa hoàn toàn hoặc được giám sát chặt chẽ Việc gọi sẽ tự đưa ra một sự kiện kiểm tra có tên là 44 mà không có đối số. Nếu bất kỳ hook hiện có nào phát sinh ngoại lệ bắt nguồn từ , hook mới sẽ không được thêm vào và ngoại lệ đó sẽ bị chặn. Do đó, người gọi không thể cho rằng hook của họ đã được thêm trừ khi họ kiểm soát tất cả các hook hiện cóXem tất cả các sự kiện do CPython nêu ra và PEP 578 để biết phần thảo luận về thiết kế ban đầu Mới trong phiên bản 3. 8 Đã thay đổi trong phiên bản 3. 8. 1. Các ngoại lệ bắt nguồn từ but not không còn bị chặn nữa. Chi tiết triển khai CPython. Khi tính năng theo dõi được bật (xem ), các hook Python chỉ được theo dõi nếu có thể gọi được có thành viên 49 được đặt thành giá trị thực. Nếu không, các chức năng theo dõi sẽ bỏ qua hooksys. argvDanh sách các đối số dòng lệnh được chuyển đến tập lệnh Python. 60 là tên tập lệnh (nó phụ thuộc vào hệ điều hành cho dù đây có phải là tên đường dẫn đầy đủ hay không). Nếu lệnh được thực thi bằng cách sử dụng tùy chọn dòng lệnh cho trình thông dịch, thì 60 được đặt thành chuỗi 63. Nếu không có tên tập lệnh nào được chuyển tới trình thông dịch Python, thì 60 là chuỗi rỗngĐể lặp qua đầu vào tiêu chuẩn hoặc danh sách các tệp được cung cấp trên dòng lệnh, hãy xem mô-đun Xem thêm Ghi chú Trên Unix, các đối số dòng lệnh được truyền theo byte từ HĐH. Python giải mã chúng bằng mã hóa hệ thống tệp và trình xử lý lỗi “thay thế”. Khi bạn cần các byte gốc, bạn có thể lấy nó trước 67sys. kiểm toán(sự kiện , *args)Tăng sự kiện kiểm tra và kích hoạt mọi móc kiểm tra đang hoạt động. sự kiện là một chuỗi xác định sự kiện và các đối số có thể chứa các đối số tùy chọn với nhiều thông tin hơn về sự kiện. Số lượng và loại đối số cho một sự kiện nhất định được coi là API công khai và ổn định và không nên sửa đổi giữa các lần phát hành Ví dụ: một sự kiện kiểm toán có tên là 68. Sự kiện này có một đối số được gọi là đường dẫn sẽ chứa thư mục làm việc mới được yêu cầusẽ gọi các móc kiểm tra hiện có, chuyển tên sự kiện và đối số, đồng thời sẽ đưa ra lại ngoại lệ đầu tiên từ bất kỳ móc nào. Nói chung, nếu một ngoại lệ được đưa ra, nó sẽ không được xử lý và quá trình này phải được kết thúc càng nhanh càng tốt. Điều này cho phép triển khai móc quyết định cách phản hồi các sự kiện cụ thể. họ chỉ có thể ghi lại sự kiện hoặc hủy bỏ hoạt động bằng cách đưa ra một ngoại lệ Móc được thêm bằng cách sử dụng các chức năng hoặc Tương đương bản địa của chức năng này là. Sử dụng hàm riêng được ưu tiên khi có thể Xem tất cả các sự kiện do CPython nêu ra Mới trong phiên bản 3. 8 sys. base_exec_prefixĐặt trong khi khởi động Python, trước khi chạy 23, thành cùng giá trị với. Nếu không chạy trong a , các giá trị sẽ giữ nguyên; Mới trong phiên bản 3. 3 sys. base_prefixĐặt trong khi khởi động Python, trước khi chạy 23, thành cùng giá trị với. Nếu không chạy trong a , các giá trị sẽ giữ nguyên; Mới trong phiên bản 3. 3 sys. thứ tự byteMột chỉ báo về thứ tự byte gốc. Giá trị này sẽ có giá trị 67 trên nền tảng big-endian (byte quan trọng nhất đầu tiên) và 68 trên nền tảng little-endian (byte ít quan trọng nhất đầu tiên)sys. buildin_module_namesMột bộ chuỗi chứa tên của tất cả các mô-đun được biên dịch thành trình thông dịch Python này. (Thông tin này không có sẵn theo bất kỳ cách nào khác - 69 chỉ liệt kê các mô-đun đã nhập. )Xem thêm danh sách sys. call_tracing(func , args)Gọi 91, trong khi theo dõi được kích hoạt. Trạng thái theo dõi được lưu và khôi phục sau đó. Điều này dự định được gọi từ trình gỡ lỗi từ một điểm kiểm tra, để gỡ lỗi đệ quy một số mã khácsys. bản quyềnMột chuỗi chứa bản quyền liên quan đến trình thông dịch Python sys. _clear_type_cache()Xóa bộ đệm loại nội bộ. Bộ đệm loại được sử dụng để tăng tốc độ tra cứu thuộc tính và phương thức. Chỉ sử dụng chức năng này để loại bỏ các tham chiếu không cần thiết trong quá trình gỡ lỗi rò rỉ tham chiếu Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên dụng sys. _current_frames()Trả về một từ điển ánh xạ mã định danh của từng luồng tới khung ngăn xếp trên cùng hiện đang hoạt động trong luồng đó tại thời điểm hàm được gọi. Lưu ý rằng các chức năng trong mô-đun có thể tạo ngăn xếp cuộc gọi với khung như vậy Điều này hữu ích nhất để gỡ lỗi bế tắc. chức năng này không yêu cầu sự hợp tác của các luồng bị bế tắc và ngăn xếp cuộc gọi của các luồng đó bị đóng băng miễn là chúng vẫn còn bế tắc. Khung được trả về cho một luồng không bị bế tắc có thể không có mối quan hệ nào với hoạt động hiện tại của luồng đó vào thời điểm mã gọi kiểm tra khung Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên dụng Tăng một 93 mà không có đối sốsys. _current_exceptions()Trả về một từ điển ánh xạ mã định danh của từng luồng tới ngoại lệ trên cùng hiện đang hoạt động trong luồng đó tại thời điểm hàm được gọi. Nếu một luồng hiện không xử lý một ngoại lệ, nó sẽ không được đưa vào từ điển kết quả Điều này hữu ích nhất cho hồ sơ thống kê Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên dụng Tăng một 94 mà không có đối sốsys. điểm ngắt()Chức năng hook này được gọi bằng chức năng tích hợp. Theo mặc định, nó đưa bạn vào trình gỡ lỗi, nhưng nó có thể được đặt thành bất kỳ chức năng nào khác để bạn có thể chọn trình gỡ lỗi nào sẽ được sử dụng Chữ ký của chức năng này phụ thuộc vào những gì nó gọi. Ví dụ: ràng buộc mặc định (e. g. 97) không yêu cầu đối số, nhưng bạn có thể liên kết nó với một hàm yêu cầu đối số bổ sung (vị trí và/hoặc từ khóa). Hàm 95 tích hợp chuyển trực tiếp 99 và 250 của nó qua. Bất cứ điều gì 251 trả về đều được trả lại từ 95Việc triển khai mặc định trước tiên sẽ tham khảo biến môi trường. Nếu điều đó được đặt thành 254 thì hàm này sẽ trả về ngay lập tức; . e. nó là một no-op. Nếu biến môi trường không được đặt hoặc được đặt thành chuỗi trống, thì 97 được gọi. Mặt khác, biến này nên đặt tên cho một hàm để chạy, sử dụng danh pháp nhập dấu chấm của Python, e. g. 256. Trong trường hợp này, 257 sẽ được nhập và mô-đun kết quả phải có tên gọi là 258. Điều này được chạy, chuyển vào 99 và 250, và bất kỳ giá trị nào mà 258 trả về, thì 232 sẽ trả về hàm tích hợp sẵnLưu ý rằng nếu có bất kỳ sự cố nào xảy ra trong khi nhập tên có thể gọi được theo , thì a sẽ được báo cáo và điểm ngắt bị bỏ qua Cũng lưu ý rằng nếu 232 bị ghi đè theo chương trình, sẽ không được tư vấnMới trong phiên bản 3. 7 sys. _debugmallocstats()In thông tin cấp thấp tới thiết bị lỗi chuẩn về trạng thái cấp phát bộ nhớ của CPython Nếu Python là (), thì nó cũng thực hiện một số kiểm tra tính nhất quán nội bộ đắt tiền Mới trong phiên bản 3. 3 Chi tiết triển khai CPython. Hàm này dành riêng cho CPython. Định dạng đầu ra chính xác không được xác định ở đây và có thể thay đổi sys. dllhandleSố nguyên chỉ định phần xử lý của Python DLL các cửa sổ sys. móc hiển thị(giá trị)Nếu giá trị không phải là 239, hàm này sẽ in 240 thành 241 và lưu giá trị trong 242. Nếu không thể mã hóa 240 thành 244 bằng trình xử lý lỗi 245 (có thể là 246), hãy mã hóa nó thành 244 bằng trình xử lý lỗi 248 249 được gọi dựa trên kết quả đánh giá một mục đã nhập trong phiên Python tương tác. Việc hiển thị các giá trị này có thể được tùy chỉnh bằng cách gán một hàm một đối số khác cho 249mã giả 8Đã thay đổi trong phiên bản 3. 2. Sử dụng trình xử lý lỗi 248 trên. sys. dont_write_bytecodeNếu điều này là đúng, Python sẽ không cố ghi các tệp 483 khi nhập các mô-đun nguồn. Giá trị này ban đầu được đặt thành 484 hoặc 485 tùy thuộc vào tùy chọn dòng lệnh và biến môi trường, nhưng bạn có thể tự đặt giá trị này để kiểm soát việc tạo tệp mã bytesys. _emscripten_infoThông tin lưu giữ về môi trường trên nền tảng wasm32-emscripten. Tuple được đặt tên là tạm thời và có thể thay đổi trong tương lai Thuộc tính Giải trình 488Phiên bản mô tả dưới dạng bộ dữ liệu ints (chính, phụ, vi mô), e. g. 489 400Chuỗi thời gian chạy, e. g. tác nhân người dùng trình duyệt, 401 hoặc 402 403 484 nếu Python được biên dịch với sự hỗ trợ của Emscripten pthreads 405 484 nếu Python được biên dịch với hỗ trợ bộ nhớ dùng chungEmscripten Mới trong phiên bản 3. 11 sys. pycache_prefixNếu điều này được đặt (không phải 239), Python sẽ ghi các tệp bytecode-cache 483 vào (và đọc chúng từ) một cây thư mục song song bắt nguồn từ thư mục này, thay vì từ các thư mục 409 trong cây mã nguồn. Mọi thư mục 409 trong cây mã nguồn sẽ bị bỏ qua và các tệp 483 mới được ghi trong tiền tố pycache. Vì vậy, nếu bạn sử dụng như một bước xây dựng trước, bạn phải đảm bảo rằng bạn chạy nó với cùng một tiền tố pycache (nếu có) mà bạn sẽ sử dụng trong thời gian chạyMột đường dẫn tương đối được giải thích liên quan đến thư mục làm việc hiện tại Giá trị này ban đầu được đặt dựa trên giá trị của tùy chọn dòng lệnh 414 hoặc biến môi trường (dòng lệnh được ưu tiên). Nếu không được đặt, nó là 239Mới trong phiên bản 3. 8 sys. ngoại trừ hook(loại , giá trị, traceback)Hàm này in ra một truy nguyên đã cho và ngoại lệ đối với 417Khi một ngoại lệ được đưa ra và chưa được xử lý, trình thông dịch sẽ gọi 418 với ba đối số, lớp ngoại lệ, thể hiện ngoại lệ và một đối tượng truy nguyên. Trong một phiên tương tác, điều này xảy ra ngay trước khi quyền điều khiển được đưa trở lại dấu nhắc; . Việc xử lý các ngoại lệ cấp cao nhất như vậy có thể được tùy chỉnh bằng cách gán một hàm ba đối số khác cho 418Tăng sự kiện kiểm toán 418 với các đối số 421, 422, 423, 92 khi xảy ra ngoại lệ chưa được phát hiện. Nếu chưa đặt hook, 421 có thể là 239. Nếu bất kỳ hook nào đưa ra một ngoại lệ bắt nguồn từ lệnh gọi hook sẽ bị chặn. Nếu không, ngoại lệ móc kiểm tra sẽ được báo cáo là không thể phát hiện được và 418 sẽ được gọiXem thêm Hàm xử lý các ngoại lệ không thể kích hoạt và hàm xử lý ngoại lệ được đưa ra bởi sys. __breakpointhook__sys. __displayhook__sys. __ngoại trừhook__sys. __unraisablehook__Các đối tượng này chứa các giá trị ban đầu của 432, 433, 434 và 435 khi bắt đầu chương trình. Chúng được lưu để ________ 1432, ________ 1433 và ________ 1434, ________ 1435 có thể được khôi phục trong trường hợp chúng tình cờ được thay thế bằng các đối tượng bị hỏng hoặc thay thếMới trong phiên bản 3. 7. __breakpointhook__ Mới trong phiên bản 3. 8. __unraisablehook__ sys. ngoại lệ()Hàm này, khi được gọi trong khi trình xử lý ngoại lệ đang thực thi (chẳng hạn như mệnh đề 440 hoặc 441), trả về trường hợp ngoại lệ đã bị trình xử lý này bắt. Khi các trình xử lý ngoại lệ được lồng vào nhau, chỉ có thể truy cập được ngoại lệ được xử lý bởi trình xử lý trong cùngNếu không có trình xử lý ngoại lệ nào đang thực thi, hàm này trả về 239Mới trong phiên bản 3. 11 sys. exc_info()Hàm này trả về biểu diễn kiểu cũ của ngoại lệ được xử lý. Nếu một ngoại lệ 443 hiện đang được xử lý (vì vậy sẽ trả về 443), trả về bộ dữ liệu 447. Nghĩa là, một bộ chứa loại ngoại lệ (một lớp con của ), bản thân ngoại lệ đó và một thường đóng gói ngăn xếp cuộc gọi tại điểm xảy ra ngoại lệ lần cuốiNếu không có ngoại lệ nào được xử lý ở bất kỳ đâu trên ngăn xếp, thì hàm này trả về một bộ chứa ba giá trị 239Đã thay đổi trong phiên bản 3. 11. Các trường 422 và 92 hiện được lấy từ 423 (trường hợp ngoại lệ), do đó, khi một ngoại lệ được sửa đổi trong khi nó đang được xử lý, những thay đổi đó sẽ được phản ánh trong kết quả của các lệnh gọi tiếp theo tới. sys. exec_prefixMột chuỗi cung cấp tiền tố thư mục dành riêng cho trang nơi các tệp Python phụ thuộc vào nền tảng được cài đặt; . Điều này có thể được đặt tại thời điểm xây dựng với đối số 455 cho tập lệnh cấu hình. Cụ thể, tất cả các tệp cấu hình (e. g. tệp tiêu đề 456) được cài đặt trong thư mục 457 và các mô-đun thư viện dùng chung được cài đặt trong 458, trong đó X. Y là số phiên bản của Python, ví dụ 459Ghi chú Nếu a có hiệu lực, giá trị này sẽ được thay đổi trong 23 để trỏ đến môi trường ảo. Giá trị cho bản cài đặt Python sẽ vẫn khả dụng, thông quasys. có thể thực thi đượcMột chuỗi cung cấp đường dẫn tuyệt đối của tệp nhị phân thực thi cho trình thông dịch Python, trên các hệ thống mà điều này hợp lý. Nếu Python không thể truy xuất đường dẫn thực đến tệp thực thi của nó, thì sẽ là một chuỗi trống hoặc 239sys. thoát([arg])Đưa ra một ngoại lệ, báo hiệu ý định thoát khỏi trình thông dịch Đối số tùy chọn arg có thể là một số nguyên cho biết trạng thái thoát (mặc định là 0) hoặc một loại đối tượng khác. Nếu nó là một số nguyên, số 0 được coi là "kết thúc thành công" và bất kỳ giá trị khác 0 nào được coi là "kết thúc bất thường" bởi shell và những thứ tương tự. Hầu hết các hệ thống yêu cầu nó nằm trong phạm vi 0–127 và nếu không thì sẽ tạo ra kết quả không xác định. Một số hệ thống có quy ước gán ý nghĩa cụ thể cho các mã thoát cụ thể, nhưng chúng thường kém phát triển; . Nếu một loại đối tượng khác được truyền vào, thì 239 tương đương với việc truyền số 0 và bất kỳ đối tượng nào khác được in ra và dẫn đến mã thoát là 1. Đặc biệt, 467 là cách nhanh chóng để thoát khỏi chương trình khi xảy ra lỗiVì cuối cùng "chỉ" đưa ra một ngoại lệ, nó sẽ chỉ thoát khỏi quy trình khi được gọi từ luồng chính và ngoại lệ không bị chặn. Các hành động dọn dẹp được chỉ định bởi các mệnh đề cuối cùng của câu lệnh được tôn trọng và có thể chặn nỗ lực thoát ở cấp độ bên ngoài Đã thay đổi trong phiên bản 3. 6. Nếu xảy ra lỗi trong quá trình dọn dẹp sau khi trình thông dịch Python bắt lỗi (chẳng hạn như lỗi xóa dữ liệu được lưu trong bộ đệm trong luồng tiêu chuẩn), thì trạng thái thoát sẽ được thay đổi thành 120. sys. cờCác cờ hiển thị trạng thái của các cờ dòng lệnh. Các thuộc tính chỉ được đọc thuộc tính lá cờ 471 475 477 479hoặc 484 486 488 490 492 494 496 498() 600 602 604() Đã thay đổi trong phiên bản 3. 2. Đã thêm thuộc tính 494 cho cờ mới. Mới trong phiên bản 3. 2. 3. Thuộc tính 496. Đã thay đổi trong phiên bản 3. 3. Đã xóa thuộc tính 609 lỗi thời. Đã thay đổi trong phiên bản 3. 4. Đã thêm thuộc tính 477 cho cờ 477. Đã thay đổi trong phiên bản 3. 7. Đã thêm thuộc tính 498 cho cờ mới và thuộc tính 600 cho cờ 616 mới. Đã thay đổi trong phiên bản 3. 11. Đã thêm thuộc tính 602 cho tùy chọn. Đã thay đổi trong phiên bản 3. 11. Đã thêm thuộc tính 604. sys. float_infoMột thông tin đang lưu giữ về kiểu float. Nó chứa thông tin cấp thấp về độ chính xác và biểu diễn bên trong. Các giá trị tương ứng với các hằng số dấu phẩy động khác nhau được xác định trong tệp tiêu đề tiêu chuẩn 620 cho ngôn ngữ lập trình 'C'; . 2. 4. 2. 2 của tiêu chuẩn ISO/IEC C năm 1999, 'Đặc điểm của các loại nổi', để biết chi tiếtthuộc tính trôi nổi. h vĩ mô giải trình 621DBL_EPSILON sự khác biệt giữa 1. 0 và giá trị nhỏ nhất lớn hơn 1. 0 có thể biểu diễn dưới dạng float Xem thêm 623DBL_DIG số chữ số thập phân tối đa có thể được biểu diễn trung thực trong một số float; 624DBL_MANT_DIG phao chính xác. số lượng cơ sở- 625 chữ số trong ý nghĩa của một số floatDBL_MAX số float hữu hạn dương có thể biểu diễn lớn nhất 627DBL_MAX_EXP số nguyên tối đa e sao cho 628 là số float hữu hạn có thể biểu diễn 629DBL_MAX_10_EXP số nguyên tối đa e sao cho 630 nằm trong phạm vi số float hữu hạn có thể biểu diễnDBL_MIN float chuẩn hóa dương tối thiểu có thể đại diện Sử dụng để có được số float có thể biểu diễn không chuẩn hóa dương nhỏ nhất 633DBL_MIN_EXP số nguyên e nhỏ nhất sao cho 628 là số float chuẩn hóa 635DBL_MIN_10_EXP số nguyên e nhỏ nhất sao cho 630 là số float chuẩn hóa 625FLT_RADIX cơ số biểu diễn số mũ 638FLT_ROUNDS hằng số nguyên đại diện cho chế độ làm tròn được sử dụng cho các phép toán số học. Điều này phản ánh giá trị của macro FLT_ROUNDS hệ thống tại thời điểm khởi động trình thông dịch. Xem phần 5. 2. 4. 2. 2 của tiêu chuẩn C99 để giải thích về các giá trị có thể có và ý nghĩa của chúng Thuộc tính 639 cần được giải thích thêm. Nếu 640 là bất kỳ chuỗi nào đại diện cho một số thập phân có nhiều nhất là 639 chữ số có nghĩa, thì việc chuyển đổi 640 thành một số thực và ngược lại sẽ phục hồi một chuỗi đại diện cho cùng một giá trị thập phân 4Nhưng đối với các chuỗi có hơn 1639 chữ số có nghĩa, điều này không phải lúc nào cũng đúng 6sys. float_repr_styleMột chuỗi cho biết cách hoạt động của hàm đối với số float. Nếu chuỗi có giá trị 645 thì đối với số float hữu hạn 646, 647 nhằm mục đích tạo ra một chuỗi ngắn có thuộc tính 648. Đây là hành vi thông thường trong Python 3. 1 trở lên. Mặt khác, 649 có giá trị 650 và 647 hoạt động giống như trong các phiên bản Python trước 3. 1Mới trong phiên bản 3. 1 sys. khối được phân bổ()Trả về số khối bộ nhớ hiện được cấp phát bởi trình thông dịch, bất kể kích thước của chúng. Chức năng này chủ yếu hữu ích để theo dõi và gỡ lỗi rò rỉ bộ nhớ. Do bộ đệm bên trong của trình thông dịch, kết quả có thể khác nhau giữa các cuộc gọi; Nếu bản dựng hoặc triển khai Python không thể tính toán thông tin này một cách hợp lý, thay vào đó được phép trả về 0 Mới trong phiên bản 3. 4 sys. getandroidapilevel()Trả lại phiên bản API thời gian xây dựng của Android dưới dạng số nguyên Android Mới trong phiên bản 3. 7 sys. getdefaultencoding()Trả về tên của mã hóa chuỗi mặc định hiện tại được triển khai Unicode sử dụng sys. getdlopenflags()Trả về giá trị hiện tại của cờ được sử dụng cho cuộc gọi 655. Có thể tìm thấy tên tượng trưng cho các giá trị cờ trong mô-đun ( 657 hằng số, e. g. )Unix sys. lấy mã hệ thống tệp()Nhận được. mã hóa được sử dụng để chuyển đổi giữa tên tệp Unicode và tên tệp byte. Trình xử lý lỗi hệ thống tập tin được trả về từ Để có khả năng tương thích tốt nhất, nên sử dụng str cho tên tệp trong mọi trường hợp, mặc dù việc biểu thị tên tệp dưới dạng byte cũng được hỗ trợ. Các chức năng chấp nhận hoặc trả về tên tệp phải hỗ trợ str hoặc byte và chuyển đổi nội bộ thành biểu diễn ưu tiên của hệ thống và nên được sử dụng để đảm bảo rằng chế độ lỗi và mã hóa chính xác được sử dụng Được định cấu hình khi khởi động Python bằng hàm 662. xem và các thành viên củaĐã thay đổi trong phiên bản 3. 2. kết quả không thể là 239 nữa. Đã thay đổi trong phiên bản 3. 6. Windows không còn được đảm bảo sẽ trả về 668. Xem PEP 529 và để biết thêm thông tin. Đã thay đổi trong phiên bản 3. 7. Trả lại 670 nếu được bật. sys. getfilesystemencodeerrors()Nhận được. trình xử lý lỗi được sử dụng để chuyển đổi giữa tên tệp Unicode và tên tệp byte. Mã hóa hệ thống tập tin được trả về từ và nên được sử dụng để đảm bảo rằng chế độ lỗi và mã hóa chính xác được sử dụng Được định cấu hình khi khởi động Python bằng hàm 662. xem và các thành viên củaMới trong phiên bản 3. 6 sys. get_int_max_str_digits()Trả về giá trị hiện tại cho. Xem thêm Mới trong phiên bản 3. 11 sys. getrefcount(đối tượng)Trả về số tham chiếu của đối tượng. Số đếm được trả về thường cao hơn một số so với bạn mong đợi, bởi vì nó bao gồm tham chiếu (tạm thời) làm đối số cho sys. getrecursionlimit()Trả về giá trị hiện tại của giới hạn đệ quy, độ sâu tối đa của ngăn xếp trình thông dịch Python. Giới hạn này ngăn đệ quy vô hạn gây tràn ngăn xếp C và làm sập Python. Nó có thể được thiết lập bởi sys. getsizeof(đối tượng[ , default])Trả về kích thước của một đối tượng theo byte. Đối tượng có thể là bất kỳ loại đối tượng nào. Tất cả các đối tượng tích hợp sẽ trả về kết quả chính xác, nhưng điều này không nhất thiết phải đúng với các tiện ích mở rộng của bên thứ ba vì nó được triển khai cụ thể Chỉ tính mức tiêu thụ bộ nhớ được gán trực tiếp cho đối tượng, không phải mức tiêu thụ bộ nhớ của các đối tượng mà nó đề cập đến Nếu được cung cấp, giá trị mặc định sẽ được trả về nếu đối tượng không cung cấp phương tiện để lấy kích thước. Nếu không a sẽ được nâng lên gọi phương thức 683 của đối tượng và thêm một bộ thu gom rác bổ sung nếu đối tượng được quản lý bởi bộ thu gom rácXem công thức sizeof đệ quy để biết ví dụ về cách sử dụng đệ quy để tìm kích thước của vùng chứa và tất cả nội dung của chúng sys. getswitchinterval()Trả về "khoảng thời gian chuyển đổi chủ đề" của trình thông dịch; Mới trong phiên bản 3. 2 sys. _getframe([độ sâu])Trả về một đối tượng khung từ ngăn xếp cuộc gọi. Nếu độ sâu số nguyên tùy chọn được cung cấp, hãy trả về đối tượng khung có nhiều lệnh gọi bên dưới đỉnh ngăn xếp. Nếu đó là sâu hơn ngăn xếp cuộc gọi, được nâng lên. Độ sâu mặc định bằng 0, trả về khung ở đầu ngăn xếp cuộc gọi Tăng một 687 với đối số 688Chi tiết triển khai CPython. Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên dụng. Nó không được đảm bảo tồn tại trong tất cả các triển khai của Python sys. lấy hồ sơ()Nhận chức năng hồ sơ như được thiết lập bởi sys. lấy()Nhận chức năng theo dõi như được thiết lập bởi Chi tiết triển khai CPython. Chức năng này chỉ dành cho việc triển khai trình gỡ lỗi, trình lược tả, công cụ bảo hiểm và những thứ tương tự. Hành vi của nó là một phần của nền tảng triển khai, chứ không phải là một phần của định nghĩa ngôn ngữ và do đó có thể không có sẵn trong tất cả các triển khai Python sys. getwindowsversion()Trả về một bộ có tên mô tả phiên bản Windows hiện đang chạy. Các phần tử được đặt tên là chính, phụ, xây dựng, nền tảng, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type và platform_version. service_pack chứa một chuỗi, platform_version là 3-tuple và tất cả các giá trị khác là số nguyên. Các thành phần cũng có thể được truy cập theo tên, vì vậy 692 tương đương với 693. Để tương thích với các phiên bản trước, chỉ 5 phần tử đầu tiên có thể truy xuất được bằng cách lập chỉ mụcnền tảng sẽ là 694product_type có thể là một trong các giá trị sau Không thay đổi Nghĩa 695Hệ thống là một máy trạm 696Hệ thống là một bộ điều khiển miền 697Hệ thống là một máy chủ, nhưng không phải là bộ điều khiển miền Chức năng này bao hàm chức năng Win32 698; platform_version trả về phiên bản chính, phiên bản phụ và số bản dựng của hệ điều hành hiện tại, thay vì phiên bản đang được mô phỏng cho quy trình. Nó được thiết kế để sử dụng trong ghi nhật ký hơn là để phát hiện tính năng Ghi chú platform_version lấy phiên bản từ kernel32. dll có thể là phiên bản khác với phiên bản hệ điều hành. Vui lòng sử dụng mô-đun để đạt được phiên bản hệ điều hành chính xác các cửa sổ Đã thay đổi trong phiên bản 3. 2. Đã thay đổi thành một bộ được đặt tên và thêm service_pack_minor, service_pack_major, suite_mask và product_type. Đã thay đổi trong phiên bản 3. 6. Đã thêm platform_version sys. get_asyncgen_hooks()Trả về một đối tượng asyncgen_hooks, tương tự như một đối tượng có dạng 202, trong đó bộ tạo đầu tiên và bộ hoàn thiện dự kiến sẽ là 239 hoặc các hàm lấy một đối số làm đối số và được sử dụng để lên lịch hoàn thiện trình tạo không đồng bộ bằng một vòng lặp sự kiệnMới trong phiên bản 3. 6. Xem PEP 525 để biết thêm chi tiết. Ghi chú Chức năng này đã được thêm vào trên cơ sở tạm thời (xem PEP 411 để biết chi tiết. ) sys. get_coroutine_origin_tracking_depth()Nhận độ sâu theo dõi nguồn gốc coroutine hiện tại, như được đặt bởi Mới trong phiên bản 3. 7 Ghi chú Chức năng này đã được thêm vào trên cơ sở tạm thời (xem PEP 411 để biết chi tiết. ) Chỉ sử dụng nó cho mục đích gỡ lỗi sys. hash_infoMột tham số đưa ra của việc thực hiện hàm băm số. Để biết thêm chi tiết về băm các loại số, xem thuộc tính giải trình 205chiều rộng tính bằng bit được sử dụng cho giá trị băm 206mô đun nguyên tố P được sử dụng cho sơ đồ băm số 207giá trị băm được trả về cho một vô cực dương 208(thuộc tính này không còn được sử dụng) 209số nhân được sử dụng cho phần ảo của một số phức 210tên của thuật toán để băm str, byte và memoryview 211kích thước đầu ra bên trong của thuật toán băm 212kích thước của khóa hạt giống của thuật toán băm Mới trong phiên bản 3. 2 Đã thay đổi trong phiên bản 3. 4. Đã thêm thuật toán, hash_bits và seed_bits sys. phiên bản lục giácSố phiên bản được mã hóa dưới dạng một số nguyên. Điều này được đảm bảo tăng theo từng phiên bản, bao gồm hỗ trợ thích hợp cho các bản phát hành phi sản xuất. Ví dụ: để kiểm tra trình thông dịch Python ít nhất là phiên bản 1. 5. 2, sử dụng 2Cái này được gọi là 213 vì nó chỉ thực sự có ý nghĩa khi được xem là kết quả của việc chuyển nó sang hàm tích hợp. Có thể được sử dụng để mã hóa cùng một thông tin thân thiện với con người hơnThông tin chi tiết về 213 có thể được tìm thấy tạisys. triển khaiMột đối tượng chứa thông tin về việc triển khai trình thông dịch Python hiện đang chạy. Các thuộc tính sau được yêu cầu tồn tại trong tất cả các triển khai Python tên là định danh của việc triển khai, e. g. 217. Chuỗi thực tế được xác định bằng cách triển khai Python, nhưng nó được đảm bảo là chữ thườngphiên bản là một tuple được đặt tên, có cùng định dạng với. Nó đại diện cho phiên bản triển khai Python. Điều này có ý nghĩa khác với phiên bản cụ thể của ngôn ngữ Python mà trình thông dịch hiện đang chạy tuân theo, mà 215 đại diện. Ví dụ: đối với PyPy 1. 8 220 có thể là 221, trong khi 215 sẽ là 223. Đối với CPython, chúng có cùng giá trị, vì đó là triển khai tham chiếuhexversion là phiên bản triển khai ở định dạng thập lục phân, như cache_tag là thẻ được máy móc nhập khẩu sử dụng trong tên tệp của các mô-đun được lưu trong bộ nhớ cache. Theo quy ước, nó sẽ là sự kết hợp của tên và phiên bản triển khai, chẳng hạn như 225. Tuy nhiên, việc triển khai Python có thể sử dụng một số giá trị khác nếu thích hợp. Nếu 226 được đặt thành 239, điều đó cho biết rằng bộ nhớ đệm mô-đun sẽ bị tắtcó thể chứa các thuộc tính bổ sung dành riêng cho việc triển khai Python. Các thuộc tính không chuẩn này phải bắt đầu bằng dấu gạch dưới và không được mô tả ở đây. Bất kể nội dung của nó là gì, sẽ không thay đổi trong quá trình chạy trình thông dịch, cũng như giữa các phiên bản triển khai. (Tuy nhiên, nó có thể thay đổi giữa các phiên bản ngôn ngữ Python. ) Xem PEP 421 để biết thêm thông tin Mới trong phiên bản 3. 3 Ghi chú Việc bổ sung các thuộc tính bắt buộc mới phải trải qua quy trình PEP bình thường. Xem PEP 421 để biết thêm thông tin sys. int_infoA chứa thông tin về biểu diễn số nguyên bên trong của Python. Các thuộc tính chỉ được đọc Thuộc tính Giải trình 230số bit được giữ trong mỗi chữ số. Số nguyên Python được lưu trữ nội bộ trong cơ sở 231 232kích thước tính bằng byte của loại C được sử dụng để biểu thị một chữ số 233giá trị mặc định khi nó không được cấu hình rõ ràng 235giá trị khác không nhỏ nhất cho , , hoặc Mới trong phiên bản 3. 1 Đã thay đổi trong phiên bản 3. 11. Đã thêm 233 và 235. sys. __interactivehook__Khi thuộc tính này tồn tại, giá trị của nó sẽ tự động được gọi (không có đối số) khi trình thông dịch được khởi chạy trong. Điều này được thực hiện sau khi tệp được đọc, để bạn có thể đặt móc này ở đó. mô-đun Tăng một 243 với đối tượng hook làm đối số khi hook được gọi khi khởi độngMới trong phiên bản 3. 4 sys. thực tập sinh(chuỗi)Nhập chuỗi vào bảng các chuỗi “đã được nhập” và trả về chuỗi đã được nhập – là chính chuỗi đó hoặc một bản sao. Việc thực tập các chuỗi rất hữu ích để đạt được một chút hiệu suất khi tra cứu từ điển - nếu các khóa trong từ điển được thực tập và khóa tra cứu được thực tập, thì việc so sánh khóa (sau khi băm) có thể được thực hiện bằng cách so sánh con trỏ thay vì so sánh chuỗi. Thông thường, các tên được sử dụng trong các chương trình Python được tự động thực hiện và các từ điển được sử dụng để giữ các thuộc tính mô-đun, lớp hoặc cá thể có các khóa được thực tập Chuỗi liên kết không phải là bất tử; sys. đang_hoàn thiện()Quay lại nếu trình thông dịch Python là , ngược lại Mới trong phiên bản 3. 5 sys. last_typesys. last_valuesys. last_tracebackBa biến này không phải lúc nào cũng được xác định; . Mục đích sử dụng của chúng là cho phép người dùng tương tác nhập mô-đun trình gỡ lỗi và tham gia vào quá trình gỡ lỗi sau khi kiểm tra mà không phải thực hiện lại lệnh gây ra lỗi. (Sử dụng điển hình là 247 để vào trình gỡ lỗi sau khi chết; xem mô-đun để biết thêm thông tin. )Ý nghĩa của các biến giống như ý nghĩa của các giá trị trả về ở trên sys. kích thước tối đaMột số nguyên cho giá trị lớn nhất mà một biến kiểu có thể nhận. Nó thường là 251 trên nền tảng 32-bit và 252 trên nền tảng 64-bitsys. maxunicodeMột số nguyên cho giá trị của điểm mã Unicode lớn nhất, i. e. 253 ( 254 ở hệ thập lục phân)Đã thay đổi trong phiên bản 3. 3. Trước PEP 393, 255 từng là 256 hoặc 254, tùy thuộc vào tùy chọn cấu hình chỉ định liệu các ký tự Unicode được lưu dưới dạng UCS-2 hay UCS-4. sys. meta_pathMột danh sách các đối tượng có các phương thức được gọi để xem liệu một trong các đối tượng có thể tìm thấy mô-đun được nhập hay không. Theo mặc định, nó chứa các mục triển khai ngữ nghĩa nhập mặc định của Python. Phương thức được gọi với ít nhất tên tuyệt đối của mô-đun được nhập. Nếu mô-đun được nhập nằm trong một gói, thì thuộc tính của gói gốc được chuyển vào dưới dạng đối số thứ hai. Phương thức trả về a , hoặc 239 nếu không tìm thấy mô-đunXem thêm Lớp cơ sở trừu tượng xác định giao diện của các đối tượng tìm kiếm trên Lớp cụ thể sẽ trả về các phiên bản của Đã thay đổi trong phiên bản 3. 4. đã được giới thiệu trong Python 3. 4, bởi PEP 451. Các phiên bản trước của Python đã tìm kiếm một phương thức gọi là. Điều này vẫn được gọi là dự phòng nếu một mục không có phương thức. sys. mô-đunĐây là từ điển ánh xạ tên mô-đun tới các mô-đun đã được tải. Điều này có thể được thao tác để buộc tải lại các mô-đun và các thủ thuật khác. Tuy nhiên, việc thay thế từ điển sẽ không nhất thiết hoạt động như mong đợi và việc xóa các mục thiết yếu khỏi từ điển có thể khiến Python bị lỗi. Nếu bạn muốn lặp lại từ điển toàn cầu này, hãy luôn sử dụng 269 hoặc 270 để tránh ngoại lệ vì kích thước của nó có thể thay đổi trong quá trình lặp lại do tác dụng phụ của mã hoặc hoạt động trong các luồng khácsys. orig_argvDanh sách các đối số dòng lệnh ban đầu được chuyển đến tệp thực thi Python Xem thêm Mới trong phiên bản 3. 10 sys. đường dẫnDanh sách các chuỗi chỉ định đường dẫn tìm kiếm cho các mô-đun. Được khởi tạo từ biến môi trường, cộng với mặc định phụ thuộc vào cài đặt Theo mặc định, như được khởi tạo khi khởi động chương trình, một đường dẫn không an toàn tiềm tàng được thêm vào trước (trước các mục nhập do kết quả của )
Để không thêm đường dẫn có thể không an toàn này vào trước, hãy sử dụng tùy chọn dòng lệnh hoặc biến môi trường Một chương trình được tự do sửa đổi danh sách này cho các mục đích riêng của nó. Chỉ nên thêm các chuỗi vào ; Xem thêm
Một danh sách các hàm có thể gọi lấy một đối số đường dẫn để cố gắng tạo một đường dẫn cho. Nếu một công cụ tìm có thể được tạo, nó sẽ được trả về bởi khả năng gọi được, nếu không thì hãy tăng Ban đầu được chỉ định trong PEP 302 sys. path_importer_cacheMột từ điển hoạt động như một bộ đệm cho các đối tượng. Các khóa là các đường dẫn đã được chuyển đến và các giá trị là các công cụ tìm được tìm thấy. Nếu một đường dẫn là một đường dẫn hệ thống tệp hợp lệ nhưng không tìm thấy công cụ tìm nào thì 239 được lưu trữBan đầu được chỉ định trong PEP 302 Đã thay đổi trong phiên bản 3. 3. ______3239 được lưu trữ thay vì khi không tìm thấy công cụ tìm. sys. nền tảngVí dụ: chuỗi này chứa mã định danh nền tảng có thể được sử dụng để nối thêm các thành phần dành riêng cho nền tảng Đối với các hệ thống Unix, ngoại trừ trên Linux và AIX, đây là tên hệ điều hành viết thường được trả về bởi 291 với phần đầu tiên của phiên bản được trả về bởi 292 được thêm vào, e. g. 293 hoặc 294, vào thời điểm Python được xây dựng. Trừ khi bạn muốn kiểm tra một phiên bản hệ thống cụ thể, do đó, nên sử dụng thành ngữ sau 6Đối với các hệ thống khác, các giá trị là Hệ thống Giá trị 200AIX 296Emscripten 297Linux 298LÀ TÔI 299các cửa sổ 600Windows/Cygwin 601hệ điều hành Mac 602Đã thay đổi trong phiên bản 3. 3. Trên Linux, không chứa phiên bản chính nữa. Nó luôn là 298, thay vì 605 hoặc 606. Vì các phiên bản Python cũ hơn bao gồm số phiên bản, nên luôn sử dụng thành ngữ 607 được trình bày ở trên. Đã thay đổi trong phiên bản 3. 8. Trên AIX, không chứa phiên bản chính nữa. Nó luôn là 296, thay vì 610 hoặc 611. Vì các phiên bản Python cũ hơn bao gồm số phiên bản, nên luôn sử dụng thành ngữ 607 được trình bày ở trên. Xem thêm có độ chi tiết thô hơn. cung cấp thông tin phiên bản phụ thuộc vào hệ thống Mô-đun này cung cấp các kiểm tra chi tiết về danh tính của hệ thống sys. platlibdirTên của thư mục thư viện dành riêng cho nền tảng. Nó được sử dụng để xây dựng đường dẫn của thư viện chuẩn và đường dẫn của các mô-đun mở rộng đã cài đặt Nó bằng với 616 trên hầu hết các nền tảng. Trên Fedora và SuSE, nó bằng với 617 trên nền tảng 64-bit cung cấp các đường dẫn 273 sau (trong đó 619 là phiên bản Python 620)
Mới trong phiên bản 3. 9 sys. tiền tốMột chuỗi cung cấp tiền tố thư mục dành riêng cho trang nơi các tệp Python độc lập với nền tảng được cài đặt; . Điều này có thể được đặt tại thời điểm xây dựng với đối số 631 cho tập lệnh cấu hình. Xem các đường dẫn xuất phátGhi chú Nếu a có hiệu lực, giá trị này sẽ được thay đổi trong 23 để trỏ đến môi trường ảo. Giá trị cho bản cài đặt Python sẽ vẫn khả dụng, thông quasys. ps1sys. ps2Các chuỗi chỉ định dấu nhắc chính và dấu nhắc phụ của trình thông dịch. Chúng chỉ được xác định nếu trình thông dịch ở chế độ tương tác. Giá trị ban đầu của chúng trong trường hợp này là 634 và 635. Nếu một đối tượng không phải chuỗi được gán cho một trong hai biến, thì đối tượng đó sẽ được đánh giá lại mỗi khi trình thông dịch chuẩn bị đọc một lệnh tương tác mới; sys. setdlopenflags(n)Đặt các cờ được trình thông dịch sử dụng cho các cuộc gọi 655, chẳng hạn như khi trình thông dịch tải các mô-đun mở rộng. Trong số những thứ khác, điều này sẽ cho phép giải quyết chậm các ký hiệu khi nhập mô-đun, nếu được gọi là 638. Để chia sẻ các biểu tượng trên các mô-đun mở rộng, hãy gọi là 639. Có thể tìm thấy tên tượng trưng cho các giá trị cờ trong mô-đun ( 657 hằng số, e. g. )Unix sys. set_int_max_str_digits(maxdigits)Đặt được sử dụng bởi trình thông dịch này. Xem thêm Mới trong phiên bản 3. 11 sys. setprofile(profilefunc)Đặt chức năng cấu hình của hệ thống, cho phép bạn triển khai trình lược tả mã nguồn Python trong Python. Xem chương để biết thêm thông tin về Python profiler. Chức năng hồ sơ của hệ thống được gọi tương tự như chức năng theo dõi của hệ thống (xem ), nhưng nó được gọi với các sự kiện khác nhau, ví dụ: nó không được gọi cho mỗi dòng mã được thực thi (chỉ khi gọi và trả về, nhưng sự kiện trả về được báo cáo . Chức năng này dành riêng cho luồng, nhưng không có cách nào để trình lược tả biết về các chuyển đổi ngữ cảnh giữa các luồng, vì vậy sẽ không hợp lý khi sử dụng chức năng này khi có nhiều luồng. Ngoài ra, giá trị trả về của nó không được sử dụng, vì vậy nó có thể chỉ cần trả về 239. Lỗi chức năng profile sẽ tự unsetCác chức năng hồ sơ nên có ba đối số. khung, sự kiện và arg. khung là khung ngăn xếp hiện tại. sự kiện là một chuỗi. 646, 647, 648, 649 hoặc 650. arg phụ thuộc vào loại sự kiệnTăng một 651 mà không có đối sốCác sự kiện có ý nghĩa như sau 646Một chức năng được gọi (hoặc một số khối mã khác được nhập). Hàm hồ sơ được gọi; 647Một chức năng (hoặc khối mã khác) sắp trở lại. Hàm hồ sơ được gọi; 648Hàm C sắp được gọi. Đây có thể là chức năng mở rộng hoặc tích hợp sẵn. arg là đối tượng hàm C 649Một chức năng C đã trở lại. arg là đối tượng hàm C 650Hàm C đã đưa ra một ngoại lệ. arg là đối tượng hàm C sys. setrecursionlimit(giới hạn)Đặt độ sâu tối đa của ngăn xếp trình thông dịch Python thành giới hạn. Giới hạn này ngăn đệ quy vô hạn gây tràn ngăn xếp C và làm sập Python Giới hạn cao nhất có thể phụ thuộc vào nền tảng. Người dùng có thể cần đặt giới hạn cao hơn khi họ có chương trình yêu cầu đệ quy sâu và nền tảng hỗ trợ giới hạn cao hơn. Điều này nên được thực hiện cẩn thận, vì giới hạn quá cao có thể dẫn đến sự cố Nếu giới hạn mới quá thấp ở độ sâu đệ quy hiện tại, một ngoại lệ sẽ được đưa ra Đã thay đổi trong phiên bản 3. 5. 1. Một ngoại lệ hiện được đưa ra nếu giới hạn mới quá thấp ở độ sâu đệ quy hiện tại. sys. setswitchinterval(interval)Đặt khoảng thời gian chuyển chuỗi của trình thông dịch (tính bằng giây). Giá trị dấu phẩy động này xác định khoảng thời gian lý tưởng của “lát cắt thời gian” được phân bổ cho các luồng Python chạy đồng thời. Xin lưu ý rằng giá trị thực tế có thể cao hơn, đặc biệt nếu sử dụng các hàm hoặc phương thức nội bộ lâu dài. Ngoài ra, luồng nào được lên lịch vào cuối khoảng thời gian là quyết định của hệ điều hành. Trình thông dịch không có lịch trình riêng Mới trong phiên bản 3. 2 sys. settrace(tracefunc)Đặt chức năng theo dõi của hệ thống, cho phép bạn triển khai trình gỡ lỗi mã nguồn Python trong Python. Chức năng này dành riêng cho luồng; Các hàm theo dõi nên có ba đối số. khung, sự kiện và arg. khung là khung ngăn xếp hiện tại. sự kiện là một chuỗi. 646, 664, 647, 666 hoặc 667. arg phụ thuộc vào loại sự kiệnChức năng theo dõi được gọi (với sự kiện được đặt thành 646) bất cứ khi nào một phạm vi cục bộ mới được nhập vào; Hàm theo dõi cục bộ sẽ trả về một tham chiếu cho chính nó (hoặc một hàm khác để theo dõi thêm trong phạm vi đó) hoặc 239 để tắt theo dõi trong phạm vi đóNếu có bất kỳ lỗi nào xảy ra trong chức năng theo dõi, thì nó sẽ không được đặt, giống như khi gọi _______2671 Các sự kiện có ý nghĩa như sau 646Một chức năng được gọi (hoặc một số khối mã khác được nhập). Chức năng theo dõi toàn cầu được gọi; 664Trình thông dịch chuẩn bị thực thi một dòng mã mới hoặc thực hiện lại điều kiện của một vòng lặp. Chức năng theo dõi cục bộ được gọi; . Xem 676 để biết giải thích chi tiết về cách thức hoạt động của tính năng này. Sự kiện trên mỗi dòng có thể bị vô hiệu hóa cho một khung bằng cách đặt 677 thành trên khung đó 647Một chức năng (hoặc khối mã khác) sắp trở lại. Chức năng theo dõi cục bộ được gọi; . Giá trị trả về của hàm theo dõi bị bỏ qua 666Một ngoại lệ đã xảy ra. Chức năng theo dõi cục bộ được gọi; 667Trình thông dịch chuẩn bị thực thi một opcode mới (xem chi tiết về opcode). Chức năng theo dõi cục bộ được gọi; . Sự kiện per-opcode không được phát ra theo mặc định. chúng phải được yêu cầu rõ ràng bằng cách đặt 686 thành trên khungLưu ý rằng vì một ngoại lệ được truyền xuống chuỗi người gọi, một sự kiện 666 được tạo ở mỗi cấp độĐể sử dụng chi tiết hơn, có thể đặt hàm theo dõi bằng cách chỉ định rõ ràng 689, thay vì dựa vào việc nó được đặt gián tiếp thông qua giá trị trả về từ hàm theo dõi đã được cài đặt. Điều này cũng cần thiết để kích hoạt chức năng theo dõi trên khung hình hiện tại, điều này không thực hiện được. Lưu ý rằng để tính năng này hoạt động, chức năng theo dõi toàn cầu phải được cài đặt để kích hoạt bộ máy theo dõi thời gian chạy, nhưng nó không cần phải là chức năng theo dõi tương tự (e. g. nó có thể là một chức năng theo dõi chi phí thấp chỉ cần trả về 239 để tự vô hiệu hóa ngay lập tức trên mỗi khung hình)Để biết thêm thông tin về các đối tượng mã và khung, hãy tham khảo Tăng một 693 mà không có đối sốChi tiết triển khai CPython. Chức năng này chỉ dành cho việc triển khai trình gỡ lỗi, trình lược tả, công cụ bảo hiểm và những thứ tương tự. Hành vi của nó là một phần của nền tảng triển khai, chứ không phải là một phần của định nghĩa ngôn ngữ và do đó có thể không có sẵn trong tất cả các triển khai Python Đã thay đổi trong phiên bản 3. 7. ______2667 đã thêm loại sự kiện; sys. set_asyncgen_hooks(firstiter , bộ hoàn thiện)Chấp nhận hai đối số từ khóa tùy chọn có thể gọi được chấp nhận làm đối số. Firstiter có thể gọi được sẽ được gọi khi trình tạo không đồng bộ được lặp lại lần đầu tiên. Trình hoàn thiện sẽ được gọi khi trình tạo không đồng bộ sắp được thu gom rác Tăng một 698 mà không có đối sốTăng một 699 mà không có đối sốHai sự kiện kiểm tra được đưa ra vì API cơ bản bao gồm hai lệnh gọi, mỗi lệnh gọi phải đưa ra sự kiện riêng Mới trong phiên bản 3. 6. Xem PEP 525 để biết thêm chi tiết và để biết ví dụ tham khảo về phương pháp hoàn thiện, hãy xem triển khai của 900 trong Lib/asyncio/base_events. pGhi chú Chức năng này đã được thêm vào trên cơ sở tạm thời (xem PEP 411 để biết chi tiết. ) sys. set_coroutine_origin_tracking_depth(độ sâu)Cho phép bật hoặc tắt theo dõi nguồn gốc coroutine. Khi được bật, thuộc tính 901 trên các đối tượng coroutine sẽ chứa một bộ (tên tệp, số dòng, tên hàm) mô tả truy nguyên nơi đối tượng coroutine được tạo, với lệnh gọi gần đây nhất trước tiên. Khi bị tắt, 901 sẽ là Không cóĐể bật, hãy chuyển một giá trị độ sâu lớn hơn 0; . Để tắt, chuyển độ sâu đã đặt thành 0 Cài đặt này dành riêng cho chủ đề Mới trong phiên bản 3. 7 Ghi chú Chức năng này đã được thêm vào trên cơ sở tạm thời (xem PEP 411 để biết chi tiết. ) Chỉ sử dụng nó cho mục đích gỡ lỗi sys. _enablelegacywindowsfsencoding()Thay đổi tương ứng thành 'mbcs' và 'replace' để thống nhất với các phiên bản Python trước 3. 6 Điều này tương đương với việc xác định biến môi trường trước khi khởi chạy Python Xem thêm và các cửa sổ Mới trong phiên bản 3. 6. Xem PEP 529 để biết thêm chi tiết. sys. stdinsys. thiết bị xuất chuẩnsys. stderrđược trình thông dịch sử dụng cho đầu vào, đầu ra và lỗi tiêu chuẩn
Các luồng này đều đặn giống như các luồng được trả về bởi hàm. Các thông số của chúng được chọn như sau
Đã thay đổi trong phiên bản 3. 9. Không tương tác 466 hiện được đệm theo dòng thay vì được đệm hoàn toàn. Ghi chú Để ghi hoặc đọc dữ liệu nhị phân từ/đến các luồng tiêu chuẩn, hãy sử dụng đối tượng nhị phân bên dưới. Ví dụ: để ghi byte vào , hãy sử dụng 929Tuy nhiên, nếu bạn đang viết một thư viện (và không kiểm soát mã của nó sẽ được thực thi trong bối cảnh nào), hãy lưu ý rằng các luồng tiêu chuẩn có thể được thay thế bằng các đối tượng giống như tệp không hỗ trợ thuộc tính 927sys. __stdin__sys. __stdout__sys. __stderr__Các đối tượng này chứa các giá trị ban đầu của 906, 466 và 908 khi bắt đầu chương trình. Chúng được sử dụng trong quá trình hoàn thiện và có thể hữu ích để in ra luồng tiêu chuẩn thực tế bất kể đối tượng 935 đã được chuyển hướng hay chưaNó cũng có thể được sử dụng để khôi phục các tệp thực tế thành các đối tượng tệp đang hoạt động đã biết trong trường hợp chúng bị ghi đè bằng một đối tượng bị hỏng. Tuy nhiên, cách ưu tiên để thực hiện việc này là lưu rõ ràng luồng trước đó trước khi thay thế luồng đó và khôi phục đối tượng đã lưu Ghi chú Trong một số điều kiện 906, 908 và 466 cũng như các giá trị gốc 939, 940 và 941 có thể là 239. Trường hợp này thường xảy ra đối với các ứng dụng Windows GUI không được kết nối với bảng điều khiển và các ứng dụng Python bắt đầu bằng pythonwsys. stdlib_module_namesMột tập hợp các chuỗi cố định chứa tên của các mô-đun thư viện tiêu chuẩn Nó giống nhau trên tất cả các nền tảng. Các mô-đun không khả dụng trên một số nền tảng và các mô-đun bị tắt khi xây dựng Python cũng được liệt kê. Tất cả các loại mô-đun được liệt kê. Python thuần túy, các mô-đun tích hợp, đóng băng và mở rộng. Các mô-đun thử nghiệm bị loại trừ Đối với các gói, chỉ có gói chính được liệt kê. gói phụ và mô-đun phụ không được liệt kê. Ví dụ: gói 943 được liệt kê, nhưng gói phụ 944 và mô-đun phụ 945 không được liệt kêXem thêm danh sách Mới trong phiên bản 3. 10 sys. thread_infoMột thông tin đang lưu giữ về việc triển khai luồng Thuộc tính Giải trình 947Tên của chủ đề thực hiện
952Tên thực hiện khóa
Tên và phiên bản của thư viện chủ đề. Đó là một chuỗi hoặc 239 nếu thông tin này không xác địnhMới trong phiên bản 3. 3 sys. giới hạn truy nguyênKhi biến này được đặt thành một giá trị số nguyên, nó sẽ xác định số mức thông tin truy nguyên tối đa được in khi xảy ra ngoại lệ chưa được xử lý. Mặc định là 958. Khi được đặt thành 959 trở xuống, tất cả thông tin truy ngược sẽ bị chặn và chỉ có loại và giá trị ngoại lệ được insys. unraisablehook(unraisablehook , /)Xử lý một ngoại lệ không thể đưa ra Được gọi khi có ngoại lệ xảy ra nhưng không có cách nào để Python xử lý nó. Ví dụ: khi hàm hủy phát sinh ngoại lệ hoặc trong quá trình thu gom rác () Đối số unraisable có các thuộc tính sau
Các định dạng hook mặc định err_msg và đối tượng là. 965; có thể được ghi đè để kiểm soát cách xử lý các ngoại lệ không thể xử lý Lưu trữ exc_value bằng móc tùy chỉnh có thể tạo chu kỳ tham chiếu. Nó phải được xóa một cách rõ ràng để phá vỡ chu trình tham chiếu khi không còn cần thiết ngoại lệ Lưu trữ đối tượng bằng hook tùy chỉnh có thể phục hồi đối tượng nếu nó được đặt thành đối tượng đang được hoàn thiện. Tránh lưu trữ đối tượng sau khi móc tùy chỉnh hoàn thành để tránh phục hồi đối tượng Xem thêm cái nào xử lý các trường hợp ngoại lệ chưa được phát hiện Tăng sự kiện kiểm toán 969 với các đối số 421, 971 khi xảy ra ngoại lệ không thể xử lý. Đối tượng 971 giống với đối tượng sẽ được truyền vào hook. Nếu chưa đặt hook, 421 có thể là 239Mới trong phiên bản 3. 8 sys. phiên bảnMột chuỗi chứa số phiên bản của trình thông dịch Python cùng với thông tin bổ sung về số bản dựng và trình biên dịch được sử dụng. Chuỗi này được hiển thị khi trình thông dịch tương tác được bắt đầu. Không trích xuất thông tin phiên bản ra khỏi nó, thay vào đó, hãy sử dụng và các chức năng do mô-đun cung cấp sys. api_versionPhiên bản API C cho trình thông dịch này. Các lập trình viên có thể thấy điều này hữu ích khi phiên bản gỡ lỗi xung đột giữa Python và các mô-đun mở rộng sys. version_infoMột bộ chứa năm thành phần của số phiên bản. chính, phụ, vi mô, cấp độ phát hành và nối tiếp. Tất cả các giá trị ngoại trừ mức phát hành là số nguyên; . Giá trị 975 tương ứng với phiên bản Python 2. 0 là 982. Các thành phần cũng có thể được truy cập theo tên, vì vậy 983 tương đương với 984, v.v.Đã thay đổi trong phiên bản 3. 1. Đã thêm thuộc tính thành phần được đặt tên. sys. cảnh báoĐây là chi tiết triển khai của khung cảnh báo; . Tham khảo mô-đun để biết thêm thông tin về khung cảnh báo sys. người chiến thắngSố phiên bản được sử dụng để tạo khóa đăng ký trên nền tảng Windows. Điều này được lưu trữ dưới dạng tài nguyên chuỗi 1000 trong Python DLL. Giá trị thường là ba ký tự đầu tiên của. Nó được cung cấp trong mô-đun cho mục đích thông tin; các cửa sổ sys. _xoptionsMột từ điển gồm các cờ dành riêng cho việc triển khai khác nhau được chuyển qua tùy chọn dòng lệnh. Tên tùy chọn được ánh xạ tới các giá trị của chúng, nếu được cung cấp rõ ràng hoặc tới. Thí dụ 9Chi tiết triển khai CPython. Đây là cách truy cập các tùy chọn dành riêng cho CPython được truyền qua. Các triển khai khác có thể xuất chúng thông qua các phương tiện khác hoặc hoàn toàn không Mới trong phiên bản 3. 2 trích dẫn ISO/IEC 9899. 1999. “Ngôn ngữ lập trình – C. ” Bản thảo công khai của tiêu chuẩn này có tại https. //www. mở tiêu chuẩn. org/jtc1/sc22/wg14/www/docs/n1256. pdf Chúng ta có thể trả về chuỗi trong shell script không?Hàm Bash có thể trả về giá trị chuỗi bằng cách sử dụng biến toàn cục . Trong ví dụ sau, một biến toàn cục, 'retval' được sử dụng. Một giá trị chuỗi được gán và in trong biến toàn cục này trước và sau khi gọi hàm. Giá trị của biến toàn cục sẽ bị thay đổi sau khi gọi hàm.
Làm cách nào để lấy đầu ra của tập lệnh Python trong tập lệnh Shell?xuất chuẩn. flush() sau mỗi print() và cho tập lệnh shell COMMAND='. /kiểm tra. py chạy' . Bây giờ nó đang phát trực tuyến đầu ra trong thời gian thực.
Làm cách nào để chuyển đầu ra của tập lệnh Python sang biến shell?Giống như cách bạn đặt đầu ra của bất kỳ thứ gì vào một biến hệ vỏ. `backquotes` hoặc $(). Nếu tập lệnh có thể thực thi được, đây chỉ là, e. g. , foo=`bar` foo=$(bar) . r="2. 75" # bash không thực hiện dấu phẩy động # trăn làm pi=$(python -c 'nhập toán; in((4 * toán. atan(1)))') diện tích=$( Tệp Python có thể trả về giá trị không?Một hàm Python sẽ luôn có giá trị trả về . Không có khái niệm về thủ tục hay thói quen trong Python. Vì vậy, nếu bạn không rõ ràng sử dụng giá trị trả về trong câu lệnh trả về hoặc nếu bạn hoàn toàn bỏ qua câu lệnh trả về, thì Python sẽ ngầm trả về giá trị mặc định cho bạn. |