sys --- Các thông số và chức năng dành riêng cho hệ thống¶
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ì cũng như các chức năng tương tác mạnh với trình thông dịch. Nó luôn có sẵn. Trừ khi có ghi chú rõ ràng khác, tất cả các biến đều ở chế độ chỉ đọc.
- sys.abiflags¶
Trên các hệ thống POSIX nơi Python được xây dựng bằng tập lệnh
configuretiêu chuẩn, tập lệnh này chứa các cờ ABI do PEP 3149 chỉ định.Added in version 3.2.
Thay đổi trong phiên bản 3.8: Cờ mặc định trở thành một chuỗi trống (cờ
mcho pymalloc đã bị xóa).sẵn có: Unix.
- sys.addaudithook(hook)¶
Thêm hook có thể gọi vào danh sách các hook 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
sys.audit(), mỗi hook sẽ được gọi theo thứ tự được thêm vào cùng với tên sự kiện và bộ đối số. Các hook gốc được thêm bởiPySys_AddAuditHook()được gọi đầu tiên, sau đó là các hook được thêm vào trong trình thông dịch (phụ) hiện tại. Sau đó, hook có thể ghi lại sự kiện, đưa ra một ngoại lệ để hủy bỏ thao tác hoặc chấm dứt hoàn toàn quá trình.Lưu ý rằng móc kiểm tra chủ yếu dùng để 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ởi Python hay các thư viện được viết bằng Python. Chúng không phù hợp để triển khai "hộp cát". Đặc biệt, mã độc có thể vô hiệu hóa hoặc bỏ qua các hook được thêm bằng chức năng này một cách tầm thường. Ở mức tối thiểu, mọi móc nhạy cảm về bảo mật phải được thêm bằng C API
PySys_AddAuditHook()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ưctypes) phải được loại bỏ hoàn toàn hoặc giám sát chặt chẽ.Việc gọi
sys.addaudithook()sẽ tự đưa ra một sự kiện kiểm tra có tênsys.addaudithookmà không có đối số. Nếu bất kỳ hook hiện có nào đưa ra một ngoại lệ bắt nguồn từRuntimeError, hook mới sẽ không được thêm vào và ngoại lệ đó sẽ bị loại bỏ. Kết quả là người gọi không thể cho rằng hook của họ đã được thêm vào trừ khi họ kiểm soát tất cả các hook hiện có.Xem audit events table để biết tất cả các sự kiện do CPython đưa ra và PEP 578 để biết cuộc thảo luận về thiết kế ban đầu.
Added in version 3.8.
Thay đổi trong phiên bản 3.8.1: Các ngoại lệ bắt nguồn từ
Exceptionchứ không phảiRuntimeErrorkhông còn bị loại bỏ.Khi bật tính năng theo dõi (xem
settrace()), móc nối Python chỉ được theo dõi nếu lệnh gọi có thành viên__cantrace__được đặt thành giá trị thực. Nếu không, các hàm theo dõi sẽ bỏ qua hook.
- sys.argv¶
Danh sách các đối số dòng lệnh được truyền tới tập lệnh Python.
argv[0]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 tùy chọn dòng lệnh-ccho trình thông dịch,argv[0]được đặt thành chuỗi'-c'. 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ìargv[0]là chuỗi trố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
fileinput.Xem thêm
sys.orig_argv.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 tin và trình xử lý lỗi "surrogateescape". Khi bạn cần byte gốc, bạn có thể lấy nó bằng
[os.fsencode(arg) for arg in sys.argv].
- sys.audit(event, *args)¶
Đưa ra một sự kiện kiểm tra và kích hoạt bất kỳ móc kiểm tra đang hoạt động nào. event là một chuỗi xác định sự kiện và args có thể chứa các đối số tùy chọn có 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 được sửa đổi giữa các bản phát hành.
Ví dụ: một sự kiện kiểm tra có tên là
os.chdir. Sự kiện này có một đối số được gọi là path sẽ chứa thư mục làm việc mới được yêu cầu.sys.audit()sẽ gọi các hook kiểm tra hiện có, chuyển tên sự kiện và các đối số, đồng thời sẽ đưa ra lại ngoại lệ đầu tiên từ bất kỳ hook nào. Nói chung, nếu một ngoại lệ được nêu ra, nó sẽ không được xử lý và quá trình này phải được chấm dứt càng nhanh càng tốt. Điều này cho phép việc triển khai hook quyết định cách phản hồi với các sự kiện cụ thể: họ chỉ có thể ghi nhật ký sự kiện hoặc hủy bỏ thao tác bằng cách đưa ra một ngoại lệ.Móc được thêm bằng hàm
sys.addaudithook()hoặcPySys_AddAuditHook().Tương đương gốc của hàm này là
PySys_Audit(). Sử dụng chức năng gốc được ưu tiên khi có thể.Xem audit events table để biết tất cả các sự kiện do CPython đưa ra.
Added in version 3.8.
- sys.base_exec_prefix¶
Tương đương với
exec_prefix, nhưng đề cập đến cài đặt Python cơ bản.Khi chạy dưới Môi trường ảo,
exec_prefixsẽ bị ghi đè vào tiền tố môi trường ảo. Ngược lại,base_exec_prefixkhông thay đổi và luôn trỏ đến bản cài đặt Python cơ bản. Tham khảo Môi trường ảo để biết thêm thông tin.Added in version 3.3.
- sys.base_prefix¶
Tương đương với
prefix, nhưng đề cập đến cài đặt Python cơ bản.Khi chạy dưới virtual environment,
prefixsẽ bị ghi đè vào tiền tố môi trường ảo. Ngược lại,base_prefixkhông thay đổi và luôn trỏ đến bản cài đặt Python cơ bản. Tham khảo Môi trường ảo để biết thêm thông tin.Added in version 3.3.
- sys.byteorder¶
Một chỉ báo về thứ tự byte gốc. Giá trị này sẽ có giá trị
'big'trên nền tảng big endian (byte quan trọng nhất đầu tiên) và'little'trên nền tảng little endian (byte quan trọng nhất đầu tiên).
- sys.builtin_module_names¶
Một bộ chuỗi chứa tên của tất cả các mô-đun được biên dịch vào trình thông dịch Python này. (Thông tin này không có sẵn dưới bất kỳ hình thức nào khác ---
modules.keys()chỉ liệt kê các mô-đun đã nhập.)Xem thêm danh sách
sys.stdlib_module_names.
- sys.call_tracing(func, args)¶
Gọi
func(*args)trong khi tính năng theo dõi được bậ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 hoặc lập hồ sơ cho một số mã khác.Việc theo dõi bị tạm dừng trong khi gọi hàm theo dõi được đặt bởi
settrace()hoặcsetprofile()để tránh đệ quy vô hạn.call_tracing()cho phép đệ quy rõ ràng chức năng theo dõi.
- sys.copyright¶
Mộ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. Sử dụng hàm only để 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 biệt.
Sắp loại bỏ từ phiên bản 3.13: Thay vào đó, hãy sử dụng hàm
_clear_internal_caches()tổng quát hơn.
- sys._clear_internal_caches()¶
Xóa tất cả các bộ đệm liên quan đến hiệu suất nội bộ. Sử dụng chức năng only này để giải phóng các tham chiếu và khối bộ nhớ không cần thiết khi tìm kiếm rò rỉ.
Added in version 3.13.
- sys._current_frames()¶
Trả về một từ điển ánh xạ mã định danh của từng luồng vào 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 hàm trong mô-đun
tracebackcó thể xây dựng ngăn xếp cuộc gọi dựa trên 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ị khóa chết 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 bị 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 biệt.
Tăng auditing event
sys._current_framesmà không có đối số.
- sys._current_exceptions()¶
Trả về một từ điển ánh xạ mã định danh của mỗi 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ệ thì nó sẽ không được đưa vào từ điển kết quả.
Điều này hữu ích nhất cho việc lập 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 biệt.
Tăng auditing event
sys._current_exceptionsmà không có đối số.Thay đổi trong phiên bản 3.12: Mỗi giá trị trong từ điển hiện là một trường hợp ngoại lệ duy nhất, thay vì một bộ 3 như được trả về từ
sys.exc_info().
- sys.breakpointhook()¶
Hàm hook này được gọi bởi
breakpoint()tích hợp. Theo mặc định, nó đưa bạn vào trình gỡ lỗipdb, 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 hàm này phụ thuộc vào những gì nó gọi. Ví dụ: liên kết mặc định (ví dụ:
pdb.set_trace()) không có đối số, nhưng bạn có thể liên kết nó với một hàm yêu cầu các đối số bổ sung (vị trí và/hoặc từ khóa). Hàmbreakpoint()tích hợp sẽ chuyển thẳng*argsvà**kwscủa nó. Bất cứ thứ gìbreakpointhooks()trả về đều được trả về từbreakpoint().Việc triển khai mặc định trước tiên sẽ tham khảo biến môi trường
PYTHONBREAKPOINT. Nếu được đặt thành"0"thì hàm này sẽ trả về ngay lập tức; tức là nó không hoạt động. Nếu biến môi trường không được đặt hoặc được đặt thành chuỗi trống,pdb.set_trace()sẽ được gọi. Mặt khác, biến này sẽ đặt tên cho một hàm để chạy, sử dụng danh pháp nhập theo dấu chấm của Python, ví dụ:package.subpackage.module.function. Trong trường hợp này,package.subpackage.modulesẽ được nhập và mô-đun kết quả phải có tên gọi làfunction(). Điều này được chạy, chuyển vào*argsvà**kws, và bất cứ điều gìfunction()trả về,sys.breakpointhook()sẽ quay lại hàmbreakpoint()tích hợp sẵn.Lưu ý rằng nếu có sự cố xảy ra khi nhập lệnh gọi được đặt tên bởi
PYTHONBREAKPOINT, thìRuntimeWarningsẽ được báo cáo và điểm ngắt sẽ bị bỏ qua.Cũng lưu ý rằng nếu
sys.breakpointhook()bị ghi đè theo chương trình,PYTHONBREAKPOINTsẽ được tham khảo not.Added in version 3.7.
- sys._debugmallocstats()¶
In thông tin cấp thấp tới stderr về trạng thái cấp phát bộ nhớ của CPython.
Nếu Python là built in debug mode (
configure --with-pydebug option), thì nó cũng thực hiện một số kiểm tra tính nhất quán nội bộ tốn kém.Added in version 3.3.
Chức năng 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.displayhook(value)¶
Nếu value không phải là
None, hàm này sẽ inrepr(value)thànhsys.stdoutvà lưu value vàobuiltins._. Nếurepr(value)không thể mã hóa thànhsys.stdout.encodingbằng trình xử lý lỗisys.stdout.errors(có thể là'strict'), hãy mã hóa nó thànhsys.stdout.encodingbằng trình xử lý lỗi'backslashreplace'.sys.displayhookđược gọi dựa trên kết quả đánh giá expression đượ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 chosys.displayhook.Mã giả:
def displayhook(giá trị): nếu giá trị là Không: trở về # Set '_' thành Không để tránh đệ quy nội dung._ = Không có văn bản = đại diện (giá trị) thử: sys.stdout.write(văn bản) ngoại trừ UnicodeEncodeError: byte = text.encode(sys.stdout.encoding, 'backslashreplace') nếu hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(byte) khác: văn bản = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(văn bản) sys.stdout.write("\n") nội dung._ = giá trị
Thay đổi trong phiên bản 3.2: Sử dụng trình xử lý lỗi
'backslashreplace'trênUnicodeEncodeError.
- sys.dont_write_bytecode¶
Nếu điều này đúng, Python sẽ không cố ghi các tệp
.pyckhi nhập mô-đun nguồn. Giá trị này ban đầu được đặt thànhTruehoặcFalsetùy thuộc vào tùy chọn dòng lệnh-Bvà biến môi trườngPYTHONDONTWRITEBYTECODE, nhưng bạn có thể tự đặt giá trị đó để kiểm soát việc tạo tệp mã byte.
- sys._emscripten_info¶
Một named tuple chứa thông tin về môi trường trên nền tảng wasm32-emscripten. Bộ dữ liệu được đặt tên là tạm thời và có thể thay đổi trong tương lai.
- _emscripten_info.emscripten_version¶
Phiên bản Emscripten dưới dạng bộ dữ liệu int (chính, phụ, vi mô), ví dụ:
(3, 1, 8).
- _emscripten_info.runtime¶
Chuỗi thời gian chạy, ví dụ: tác nhân người dùng trình duyệt,
'Node.js v14.18.2'hoặc'UNKNOWN'.
- _emscripten_info.pthreads¶
Truenếu Python được biên dịch với sự hỗ trợ của Emscripten pthread.
Truenếu Python được biên dịch với hỗ trợ bộ nhớ dùng chung.
sẵn có: Emscripten.
Added in version 3.11.
- sys.pycache_prefix¶
Nếu điều này được đặt (không phải
None), Python sẽ ghi các tệp.pycbytecode-cache 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__pycache__trong cây mã nguồn. Mọi thư mục__pycache__trong cây mã nguồn sẽ bị bỏ qua và các tệp.pycmới được ghi trong tiền tố pycache. Do đó, nếu bạn sử dụngcompilealllàm bước xây dựng trước, bạn phải đảm bảo chạy nó với cùng tiền tố pycache (nếu có) mà bạn sẽ sử dụng trong thời gian chạy.Một đường dẫn tương đối được hiểu tương ứng với 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
-Xpycache_prefix=PATHhoặc biến môi trườngPYTHONPYCACHEPREFIX(dòng lệnh được ưu tiên). Nếu cả hai đều không được đặt thì đó làNone.Added in version 3.8.
- sys.excepthook(type, value, traceback)¶
Hàm này in ra một truy nguyên nhất định và ngoại lệ đối với
sys.stderr.Khi một ngoại lệ không phải
SystemExitđược tạo ra và không bị bắt, trình thông dịch sẽ gọisys.excepthookvới ba đối số, lớp ngoại lệ, phiên bản ngoại lệ và đối tượng truy nguyên. Trong phiên tương tác, điều này xảy ra ngay trước khi điều khiển được trả về dấu nhắc; trong chương trình Python, điều này xảy ra ngay trước khi chương trình thoát. 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 chosys.excepthook.Đưa ra một sự kiện kiểm tra
sys.excepthookvới các đối sốhook,type,value,tracebackkhi xảy ra ngoại lệ chưa được phát hiện. Nếu chưa đặt hook nào,hookcó thể làNone. Nếu bất kỳ hook nào đưa ra một ngoại lệ bắt nguồn từRuntimeErrorthì lệnh gọi tớ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ể xử lý được vàsys.excepthooksẽ được gọi.Xem thêm
Hàm
sys.unraisablehook()xử lý các ngoại lệ không thể xử lý được và hàmthreading.excepthook()xử lý ngoại lệ dothreading.Thread.run()đưa ra.
- sys.__breakpointhook__¶
- sys.__displayhook__¶
- sys.__excepthook__¶
- sys.__unraisablehook__¶
Các đối tượng này chứa các giá trị ban đầu của
breakpointhook,displayhook,excepthookvàunraisablehookkhi bắt đầu chương trình. Chúng được lưu đểbreakpointhook,displayhookvàexcepthook,unraisablehookcó thể được khôi phục trong trường hợp chúng bị thay thế bằng các vật thể bị hỏng hoặc thay thế.Added in version 3.7: __điểm dừng__
Added in version 3.8: __móc câu không thể nâng được__
- sys.exception()¶
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 đề
excepthoặcexcept*), sẽ trả về phiên bản ngoại lệ đã được 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ó ngoại lệ được xử lý bởi trình xử lý trong cùng mới có thể truy cập được.Nếu không có trình xử lý ngoại lệ nào đang thực thi, hàm này sẽ trả về
None.Added in version 3.11.
- sys.exc_info()¶
Hàm này trả về cách biểu diễn kiểu cũ của ngoại lệ được xử lý. Nếu một ngoại lệ
ehiện đang được xử lý (vì vậyexception()sẽ trả vềe),exc_info()trả về bộ(type(e), e, e.__traceback__). Nghĩa là, một bộ dữ liệu chứa loại ngoại lệ (một lớp con củaBaseException), chính ngoại lệ đó và traceback object 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ối.Nếu không có ngoại lệ nào được xử lý ở bất kỳ đâu trên ngăn xếp, hàm này sẽ trả về một bộ chứa ba giá trị
None.Thay đổi trong phiên bản 3.11: Các trường
typevàtracebackhiện được lấy từvalue(phiên bản 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ớiexc_info().
- sys.exec_prefix¶
Một chuỗi cung cấp tiền tố thư mục dành riêng cho trang web nơi cài đặt các tệp Python phụ thuộc vào nền tảng; theo mặc định, đây cũng là
'/usr/local'. Điều này có thể được đặt tại thời điểm xây dựng với đối số--exec-prefixcho tập lệnh configure. Cụ thể, tất cả các tệp cấu hình (ví dụ: tệp tiêu đềpyconfig.h) được cài đặt trong thư mụcexec_prefix/lib/pythonX.Y/configvà các mô-đun thư viện dùng chung được cài đặt trongexec_prefix/lib/pythonX.Y/lib-dynload, trong đó X.Y là số phiên bản của Python, ví dụ3.2.Ghi chú
Nếu virtual environment có hiệu lực,
exec_prefixnày sẽ trỏ đến môi trường ảo. Giá trị cho cài đặt Python sẽ vẫn có sẵn thông quabase_exec_prefix. Tham khảo Môi trường ảo để biết thêm thông tin.Thay đổi trong phiên bản 3.14: Khi chạy dưới virtual environment,
prefixvàexec_prefixhiện được path initialization đặt thành tiền tố môi trường ảo, thay vìsite. Điều này có nghĩa làprefixvàexec_prefixluôn trỏ đến môi trường ảo, ngay cả khisitebị tắt (-S).
- sys.executable¶
Mộ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 có ý nghĩa. Nếu Python không thể truy xuất đường dẫn thực đến tệp thực thi của nó,
sys.executablesẽ là một chuỗi trống hoặcNone.
- sys.exit([arg])¶
Đưa ra một ngoại lệ
SystemExit, 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 trạng thái thoát (mặc định là 0) hoặc một loại đối tượng khác. Nếu là số nguyên, số 0 được coi là "chấm dứt thành công" và mọi giá trị khác 0 đều được coi là "chấm dứt 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ó phải 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; Các chương trình Unix thường sử dụng 2 cho các lỗi cú pháp dòng lệnh và 1 cho tất cả các loại lỗi khác. Nếu một loại đối tượng khác được truyền,
Nonetương đương với việc truyền số 0 và bất kỳ đối tượng nào khác được in thànhstderrvà dẫn đến mã thoát là 1. Đặc biệt,sys.exit("some error message")là một cách nhanh chóng để thoát khỏi chương trình khi xảy ra lỗi.Vì
exit()cuối cùng "chỉ" đưa ra một ngoại lệ nên nó sẽ chỉ thoát khỏi quá 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 mệnh đề cuối cùng của câu lệnhtryđượ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 được
SystemExit(chẳng hạn như lỗi xóa dữ liệu được đệm trong luồng tiêu chuẩn), trạng thái thoát sẽ được thay đổi thành 120.
- sys.flags¶
named tuple flags hiển thị trạng thái của cờ dòng lệnh. Cờ chỉ nên được truy cập theo tên chứ không phải theo chỉ mục. Các thuộc tính chỉ được đọc.
- flags.debug¶
- flags.inspect¶
- flags.interactive¶
- flags.isolated¶
- flags.optimize¶
- flags.dont_write_bytecode¶
- flags.no_user_site¶
- flags.no_site¶
- flags.ignore_environment¶
- flags.verbose¶
- flags.bytes_warning¶
- flags.quiet¶
- flags.hash_randomization¶
- flags.dev_mode¶
- flags.utf8_mode¶
- flags.safe_path¶
- flags.int_max_str_digits¶
-X int_max_str_digits(integer string conversion length limitation)- flags.warn_default_encoding¶
- flags.gil¶
-X gilvàPYTHON_GIL- flags.thread_inherit_context¶
- flags.context_aware_warnings¶
Thay đổi trong phiên bản 3.2: Đã thêm thuộc tính
quietcho cờ-qmới.Added in version 3.2.3: Thuộc tính
hash_randomization.Thay đổi trong phiên bản 3.3: Đã xóa thuộc tính
division_warninglỗi thời.Thay đổi trong phiên bản 3.4: Đã thêm thuộc tính
isolatedcho cờ-Iisolated.Thay đổi trong phiên bản 3.7: Đã thêm thuộc tính
dev_modecho Python Development Mode mới và thuộc tínhutf8_modecho cờ-Xutf8mới.Thay đổi trong phiên bản 3.10: Đã thêm thuộc tính
warn_default_encodingcho cờ-Xwarn_default_encoding.Thay đổi trong phiên bản 3.11: Đã thêm thuộc tính
safe_pathcho tùy chọn-P.Thay đổi trong phiên bản 3.11: Đã thêm thuộc tính
int_max_str_digits.Thay đổi trong phiên bản 3.13: Đã thêm thuộc tính
gil.Thay đổi trong phiên bản 3.14: Đã thêm thuộc tính
thread_inherit_context.Thay đổi trong phiên bản 3.14: Đã thêm thuộc tính
context_aware_warnings.
- sys.float_info¶
Một named tuple chứa thông tin về loại 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
float.hcho ngôn ngữ lập trình 'C'; xem phần 5.2.4.2.2 của tiêu chuẩn ISO/IEC C năm 1999 [C99], 'Đặc điểm của các loại nổi', để biết chi tiết.Thuộc tính của float_infonamed tuple¶thuộc tính
macro float.h
lời giải thích
- float_info.epsilon¶
DBL_EPSILONchênh lệch giữa 1,0 và giá trị nhỏ nhất lớn hơn 1,0 được biểu thị dưới dạng số float.
Xem thêm
math.ulp().- float_info.dig¶
DBL_DIGSố chữ số thập phân tối đa có thể được biểu diễn một cách trung thực trong một số float; xem bên dưới.
- float_info.mant_dig¶
DBL_MANT_DIGĐộ chính xác của float: số chữ số base-
radixcó ý nghĩa và ý nghĩa của float.- float_info.max¶
DBL_MAXSố float hữu hạn dương đại diện tối đa.
- float_info.max_exp¶
DBL_MAX_EXPSố nguyên tối đa e sao cho
radix**(e-1)là số float hữu hạn có thể biểu diễn.- float_info.max_10_exp¶
DBL_MAX_10_EXPSố nguyên tối đa e sao cho
10**enằm trong phạm vi số float hữu hạn có thể biểu diễn.- float_info.min¶
DBL_MINSố float normalized dương tối thiểu có thể biểu thị.
Sử dụng
math.ulp(0.0)để có được số float dương nhỏ nhất có thể biểu thị denormalized.- float_info.min_exp¶
DBL_MIN_EXPSố nguyên tối thiểu e sao cho
radix**(e-1)là số float chuẩn hóa.- float_info.min_10_exp¶
DBL_MIN_10_EXPSố nguyên tối thiểu e sao cho
10**elà số float chuẩn hóa.- float_info.radix¶
FLT_RADIXCơ số của biểu diễn số mũ.
- float_info.rounds¶
FLT_ROUNDSMột số nguyên biểu thị chế độ làm tròn cho số học dấu phẩy động. Điều này phản ánh giá trị của macro
FLT_ROUNDShệ thống tại thời điểm khởi động trình thông dịch:-1: không thể xác định được0: hướng tới số 01: đến gần nhất2: hướng tới dương vô cực3: hướng tới âm vô cực
Tất cả các giá trị khác cho
FLT_ROUNDSđặc trưng cho hành vi làm tròn do triển khai xác định.Thuộc tính
sys.float_info.digcần được giải thích thêm. Nếuslà bất kỳ chuỗi nào biểu thị số thập phân có nhiều nhất là các chữ số có nghĩasys.float_info.dig, thì việc chuyển đổisthành một số float và ngược lại sẽ khôi phục một chuỗi biểu thị cùng một giá trị thập phân:>>> nhập hệ thống >>> sys.float_info.dig 15 >>> s = '3.14159265358979' chuỗi # decimal có 15 chữ số có nghĩa >>> format(float(s), '.15g') # convert để nổi và quay lại -> cùng một giá trị '3.14159265358979'
Nhưng đối với các chuỗi có nhiều hơn
sys.float_info.digchữ số có nghĩa, điều này không phải lúc nào cũng đúng:>>> s = '9876543211234567' # 16 chữ số có nghĩa là quá nhiều! >>> format(float(s), '.16g') # conversion thay đổi giá trị '9876543211234568'
- sys.float_repr_style¶
Một chuỗi cho biết cách hoạt động của hàm
repr()đối với các số float. Nếu chuỗi có giá trị'short'thì đối vớixfloat hữu hạn,repr(x)nhằm mục đích tạo ra một chuỗi ngắn có thuộc tínhfloat(repr(x)) == x. Đây là hành vi thông thường trong Python 3.1 trở lên. Mặt khác,float_repr_stylecó giá trị'legacy'vàrepr(x)hoạt động theo cách tương tự như trong các phiên bản Python trước 3.1.Added in version 3.1.
- sys.getallocatedblocks()¶
Trả về số khối bộ nhớ hiện được trình thông dịch phân bổ, bất kể kích thước của chúng. Chức năng này chủ yếu hữu ích cho việc theo dõi và gỡ lỗi rò rỉ bộ nhớ. Do bộ nhớ đệm bên trong của trình thông dịch nên kết quả có thể khác nhau tùy theo từng cuộc gọi; bạn có thể phải gọi
_clear_internal_caches()vàgc.collect()để có được kết quả dễ dự đoán hơn.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ý thì thay vào đó,
getallocatedblocks()được phép trả về 0.Added in version 3.4.
- sys.getunicodeinternedsize()¶
Trả về số lượng đối tượng unicode đã được thực hiện.
Added in version 3.12.
- sys.getandroidapilevel()¶
Trả về mức API tại thời điểm xây dựng của Android dưới dạng số nguyên. Đây là phiên bản tối thiểu của Android mà bản dựng Python này có thể chạy trên đó. Để biết thông tin về phiên bản thời gian chạy, hãy xem
platform.android_ver().sẵn có: Android.
Added in version 3.7.
- sys.getdefaultencoding()¶
Trả về
'utf-8'. Đây là tên của mã hóa chuỗi mặc định, được sử dụng trong các phương thức nhưstr.encode().
- sys.getdlopenflags()¶
Trả về giá trị hiện tại của các cờ được sử dụng cho lệnh gọi
dlopen(). Tên tượng trưng cho các giá trị cờ có thể được tìm thấy trong mô-đunos(hằng sốRTLD_xxx, ví dụ:os.RTLD_LAZY).sẵn có: Unix.
- sys.getfilesystemencoding()¶
Lấy filesystem encoding: mã hóa được sử dụng với filesystem error handler để 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ừ
getfilesystemencodeerrors().Để 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 hàm 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ộ sang dạng biểu diễn ưa thích của hệ thống.
Nên sử dụng
os.fsencode()vàos.fsdecode()để đảm bảo sử dụng đúng chế độ mã hóa và lỗi.Zz000zz được cấu hình khi khởi động Python bằng hàm
PyConfig_Read(): xem các thành viênfilesystem_encodingvàfilesystem_errorscủaPyConfig.Thay đổi trong phiên bản 3.2: Kết quả
getfilesystemencoding()không thể làNonenữa.Thay đổi trong phiên bản 3.6: Windows không còn được đảm bảo trả về
'mbcs'. Xem PEP 529 và_enablelegacywindowsfsencoding()để biết thêm thông tin.Thay đổi trong phiên bản 3.7: Trả về
'utf-8'nếu Python UTF-8 Mode được bật.
- sys.getfilesystemencodeerrors()¶
Nhận filesystem error handler: trình xử lý lỗi được sử dụng với filesystem encoding để 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ừ
getfilesystemencoding().Nên sử dụng
os.fsencode()vàos.fsdecode()để đảm bảo sử dụng đúng chế độ mã hóa và lỗi.Zz000zz được cấu hình khi khởi động Python bằng hàm
PyConfig_Read(): xem các thành viênfilesystem_encodingvàfilesystem_errorscủaPyConfig.Added in version 3.6.
- sys.get_int_max_str_digits()¶
Trả về giá trị hiện tại cho integer string conversion length limitation. Xem thêm
set_int_max_str_digits().Added in version 3.11.
- sys.getrefcount(object)¶
Trả về số tham chiếu của object. Số lượng được trả về thường cao hơn một lần so với mức bạn mong đợi vì nó bao gồm tham chiếu (tạm thời) làm đối số cho
getrefcount().Lưu ý rằng giá trị trả về có thể không thực sự phản ánh số lượng tham chiếu đến đối tượng thực sự được giữ. Ví dụ: một số đối tượng là immortal và có số lần truy cập rất cao không phản ánh số lượng tham chiếu thực tế. Do đó, không dựa vào giá trị trả về là chính xác, ngoại trừ giá trị 0 hoặc 1.
Các đối tượng Immortal có số lượng tham chiếu lớn có thể được xác định thông qua
_is_immortal().Thay đổi trong phiên bản 3.12: Các đối tượng bất tử có số lần đếm rất lớn không khớp với số lượng tham chiếu thực tế đến đối tượng.
- 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 chặn đệ quy vô hạn gây tràn ngăn xếp C và làm hỏng Python. Nó có thể được thiết lập bởi
setrecursionlimit().
- sys.getsizeof(object[, 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ẵn 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 đối với các tiện ích mở rộng của bên thứ ba vì nó tùy theo cách triển khai cụ thể.
Chỉ tính mức tiêu thụ bộ nhớ trực tiếp cho đối tượng, chứ 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, default sẽ được trả về nếu đối tượng không cung cấp phương tiện để truy xuất kích thước. Nếu không thì
TypeErrorsẽ được nâng lên.getsizeof()gọi phương thức__sizeof__của đối tượng và thêm chi phí thu gom rác bổ sung nếu đối tượng được quản lý bởi trình thu gom rác.Xem recursive sizeof recipe để biết ví dụ về cách sử dụng đệ quy
getsizeof()để 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 luồng" của trình thông dịch tính bằng giây; xem
setswitchinterval().Added in version 3.2.
- sys._getframe([depth])¶
Trả về một đối tượng khung từ ngăn xếp cuộc gọi. Nếu số nguyên tùy chọn depth được cung cấp, hãy trả về đối tượng khung mà nhiều lệnh gọi ở dưới đầu ngăn xếp. Nếu nó sâu hơn ngăn xếp cuộc gọi,
ValueErrorsẽ được nâng lên. Giá trị mặc định cho depth là 0, trả về khung ở đầu ngăn xếp cuộc gọi.Tăng một auditing event
sys._getframevới đối sốframe.Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên biệt. Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
- sys._getframemodulename([depth])¶
Trả về tên của mô-đun từ ngăn xếp cuộc gọi. Nếu số nguyên tùy chọn depth được cung cấp, hãy trả về mô-đun có nhiều lệnh gọi ở dưới đầu ngăn xếp. Nếu nó sâu hơn ngăn xếp cuộc gọi hoặc nếu mô-đun không thể xác định được thì
Nonesẽ được trả về. Giá trị mặc định cho depth là 0, trả về mô-đun ở đầu ngăn xếp cuộc gọi.Tăng một auditing event
sys._getframemodulenamevới đối sốdepth.Chức năng này chỉ nên được sử dụng cho mục đích nội bộ và chuyên biệt. Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
Added in version 3.12.
- sys.getobjects(limit[, type])¶
Chức năng này chỉ tồn tại nếu CPython được xây dựng bằng tùy chọn cấu hình chuyên dụng
--with-trace-refs. Nó chỉ nhằm mục đích gỡ lỗi các vấn đề thu gom rác.Trả về danh sách tối đa limit các đối tượng Python được phân bổ động. Nếu type được cung cấp, chỉ các đối tượng thuộc loại chính xác đó (không phải loại phụ) mới được đưa vào.
Các đối tượng trong danh sách không an toàn để sử dụng. Cụ thể, kết quả sẽ bao gồm các đối tượng từ tất cả các trình thông dịch chia sẻ trạng thái cấp phát đối tượng của chúng (nghĩa là các đối tượng được tạo bằng
PyInterpreterConfig.use_main_obmallocđược đặt thành 1 hoặc sử dụngPy_NewInterpreter()và main interpreter). Việc trộn các đối tượng từ các trình thông dịch khác nhau có thể dẫn đến sự cố hoặc hành vi không mong muốn khác.Chức năng này chỉ nên được sử dụng cho các mục đích chuyên biệt. Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
Thay đổi trong phiên bản 3.14: Kết quả có thể bao gồm các đối tượng từ các trình thông dịch khác.
- sys.getprofile()¶
Nhận chức năng hồ sơ do
setprofile()thiết lập.
- sys.gettrace()¶
Nhận chức năng theo dõi do
settrace()thiết lập.Hàm
gettrace()chỉ nhằm mục đích triển khai trình gỡ lỗi, trình lược tả, công cụ bao phủ 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ộ dữ liệu 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à major, minor, build, platform, 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 chứa 3 bộ 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
sys.getwindowsversion()[0]tương đương vớisys.getwindowsversion().major. Để tương thích với các phiên bản trước, chỉ có 5 phần tử đầu tiên có thể truy xuất được bằng cách lập chỉ mục.platform sẽ là
2(VER_PLATFORM_WIN32_NT).product_type có thể là một trong các giá trị sau:
Hằng số
Ý nghĩa
1(VER_NT_WORKSTATION)Hệ thống là một máy trạm.
2(VER_NT_DOMAIN_CONTROLLER)Hệ thống này là một bộ điều khiển miền.
3(VER_NT_SERVER)Hệ thống này là một máy chủ nhưng không phải là bộ điều khiển miền.
Hàm này bao bọc hàm Win32
GetVersionEx(); xem tài liệu của Microsoft vềOSVERSIONINFOEX()để biết thêm thông tin về các trường này.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 việc 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ĐH. Vui lòng sử dụng mô-đun
platformđể đạt được phiên bản hệ điều hành chính xác.sẵn có: Windows.
Thay đổi trong phiên bản 3.2: Đã thay đổi thành bộ dữ liệu có 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
namedtuplecó dạng(firstiter, finalizer), trong đó firstiter và finalizer dự kiến làNonehoặc các hàm lấy asynchronous generator iterator làm đối số và được 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ện.Added in version 3.6: Xem PEP 525 để biết thêm chi tiết.
Ghi chú
Chức năng này đã được thêm 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 do
set_coroutine_origin_tracking_depth()đặt.Added in version 3.7.
Ghi chú
Chức năng này đã được thêm tạm thời (xem PEP 411 để biết chi tiết.) Chỉ sử dụng chức năng này cho mục đích gỡ lỗi.
- sys.hash_info¶
Một named tuple đưa ra các tham số của việc triển khai hàm băm số. Để biết thêm chi tiết về cách băm các loại số, hãy xem Băm các kiểu số.
- hash_info.width¶
Độ rộng tính bằng bit được sử dụng cho giá trị băm
- hash_info.modulus¶
Mô đun nguyên tố P được sử dụng cho sơ đồ băm số
- hash_info.inf¶
Giá trị băm được trả về cho giá trị dương vô cùng
- hash_info.nan¶
(Thuộc tính này không còn được sử dụng)
- hash_info.imag¶
Số nhân dùng cho phần ảo của số phức
- hash_info.algorithm¶
Tên thuật toán băm str, byte và Memoryview
- hash_info.hash_bits¶
Kích thước đầu ra bên trong của thuật toán băm
- hash_info.seed_bits¶
Kích thước khóa hạt giống của thuật toán băm
- hash_info.cutoff¶
Điểm cắt để tối ưu hóa chuỗi nhỏ DJBX33A trong phạm vi
[1, cutoff).
Added in version 3.2.
Thay đổi trong phiên bản 3.4: Đã thêm algorithm, hash_bits, seed_bits và cutoff.
- sys.hexversion¶
Số 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 lên theo từng phiên bản, bao gồm cả sự hỗ trợ phù hợp cho các bản phát hành phi sản xuất. Ví dụ: để kiểm tra xem trình thông dịch Python có ít nhất là phiên bản 1.5.2 hay không, hãy sử dụng:
nếu sys.hexversion >= 0x010502F0: # use một số tính năng nâng cao ... khác: # use một cách triển khai thay thế hoặc cảnh báo người dùng ...
Cái này được gọi là
hexversionvì nó chỉ thực sự có ý nghĩa khi được xem như là kết quả của việc chuyển nó sang hàmhex()tích hợp sẵn. named tuplesys.version_infocó thể được sử dụng để mã hóa cùng một thông tin thân thiện hơn với con người.Bạn có thể tìm thêm thông tin chi tiết về
hexversiontại Phiên bản API và ABI.
- sys.implementation¶
Mộ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 đây bắt buộc phải tồn tại trong tất cả các triển khai Python.
name là mã định danh của việc triển khai, ví dụ:
'cpython'. Chuỗi thực tế được xác định bằng cách triển khai Python, nhưng nó được đảm bảo ở dạng chữ thường.version là một bộ dữ liệu được đặt tên, có cùng định dạng với
sys.version_info. Nó đại diện cho phiên bản của Python implementation. Điều này có ý nghĩa khác biệt so với phiên bản cụ thể của Python language mà trình thông dịch hiện đang chạy tuân theo, màsys.version_infođại diện. Ví dụ: đối với PyPy 1.8sys.implementation.versioncó thể làsys.version_info(1, 8, 0, 'final', 0), trong khisys.version_infosẽ làsys.version_info(2, 7, 2, 'final', 0). Đối với CPython, chúng có cùng giá trị vì đây là cách triển khai tham chiếu.hexversion là phiên bản triển khai ở định dạng thập lục phân, như
sys.hexversion.cache_tag là thẻ được bộ máy nhập sử dụng trong tên tệp của các mô-đun được lưu trong bộ nhớ đệm. Theo quy ước, nó sẽ là sự kết hợp giữa tên và phiên bản của triển khai, như
'cpython-33'. 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ếucache_tagđược đặt thànhNone, điều đó cho biết rằng bộ nhớ đệm mô-đun sẽ bị tắt.supports_isolated_interpreters là một giá trị boolean, cho dù việc triển khai này có hỗ trợ nhiều trình thông dịch riêng biệt hay không. Đó là
Truedành cho CPython trên hầu hết các nền tảng. Các nền tảng có hỗ trợ này triển khai mô-đun_interpreterscấp thấp.Xem thêm
sys.implementationcó 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ì,sys.implementationsẽ 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.Added in version 3.3.
Thay đổi trong phiên bản 3.14: Đã thêm trường
supports_isolated_interpreters.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 thông thường. Xem PEP 421 để biết thêm thông tin.
- sys.int_info¶
Một named tuple chứa thông tin về cách biểu diễn số nguyên bên trong của Python. Các thuộc tính chỉ được đọc.
- int_info.bits_per_digit¶
Số bit được giữ trong mỗi chữ số. Số nguyên Python được lưu trữ nội bộ trong cơ sở
2**int_info.bits_per_digit.
- int_info.sizeof_digit¶
Kích thước tính bằng byte của loại C được sử dụng để biểu thị một chữ số.
- int_info.default_max_str_digits¶
Giá trị mặc định cho
sys.get_int_max_str_digits()khi nó không được cấu hình rõ ràng.
- int_info.str_digits_check_threshold¶
Giá trị tối thiểu khác 0 cho
sys.set_int_max_str_digits(),PYTHONINTMAXSTRDIGITShoặc-X int_max_str_digits.
Added in version 3.1.
Thay đổi trong phiên bản 3.11: Đã thêm
default_max_str_digitsvàstr_digits_check_threshold.
- 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 interactive mode. Việc này được thực hiện sau khi tệp
PYTHONSTARTUPđược đọc để bạn có thể đặt hook này ở đó. Mô-đunsitesets this.Tăng một auditing event
cpython.run_interactivehookvới đối tượng hook làm đối số khi hook được gọi khi khởi động.Added in version 3.4.
- sys.intern(string)¶
Nhập string vào bảng các chuỗi "được thực hiện" và trả về chuỗi được thực hiện -- chính là string hoặc một bản sao. Việc thực hiện các chuỗi nội bộ 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 hiện và khóa tra cứu được thực hiện, việc so sánh khóa (sau khi băm) có thể được thực hiện bằng 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 sẽ được tự động nhập vào và các từ điển được sử dụng để chứa các thuộc tính mô-đun, lớp hoặc phiên bản có các khóa được nhập vào.
Chuỗi nội bộ không phải là immortal; bạn phải tham chiếu đến giá trị trả về của
intern()để được hưởng lợi từ nó.
- sys._is_gil_enabled()¶
Trả về
Truenếu GIL được bật vàFalsenếu nó bị tắt.Added in version 3.13.
Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
- sys.is_finalizing()¶
Trả về
Truenếu trình thông dịch Python chính là shutting down. Trả vềFalsenếu không.Xem thêm ngoại lệ
PythonFinalizationError.Added in version 3.5.
- sys._jit¶
Các tiện ích để quan sát quá trình biên dịch đúng lúc.
Trình biên dịch JIT là experimental implementation detail của CPython.
sys._jitkhông được đảm bảo tồn tại hoặc hoạt động theo cùng một cách trong tất cả các triển khai, phiên bản hoặc cấu hình xây dựng Python.Added in version 3.14.
- _jit.is_available()¶
Trả về
Truenếu tệp thực thi Python hiện tại hỗ trợ biên dịch JIT vàFalsenếu ngược lại. Điều này có thể được kiểm soát bằng cách xây dựng CPython với tùy chọn--experimental-jittrên Windows và tùy chọn--enable-experimental-jittrên tất cả các nền tảng khác.
- _jit.is_enabled()¶
Trả về
Truenếu quá trình biên dịch JIT được bật cho quy trình Python hiện tại (ngụ ýsys._jit.is_available()) vàFalsenếu không. Nếu có sẵn trình biên dịch JIT, điều này có thể được kiểm soát bằng cách đặt biến môi trườngPYTHON_JITthành0(đã tắt) hoặc1(đã bật) khi khởi động trình thông dịch.
- _jit.is_active()¶
Trả về
Truenếu khung Python trên cùng hiện đang thực thi mã JIT (ngụ ýsys._jit.is_enabled()) vàFalsenếu ngược lại.Ghi chú
Chức năng này nhằm mục đích kiểm tra và gỡ lỗi JIT. Nó nên tránh cho bất kỳ mục đích nào khác.
Ghi chú
Do tính chất của việc truy tìm trình biên dịch JIT, các lệnh gọi lặp lại hàm này có thể mang lại kết quả đáng ngạc nhiên. Ví dụ: việc phân nhánh theo giá trị trả về của nó có thể sẽ dẫn đến hành vi không mong muốn (nếu làm như vậy khiến mã JIT được nhập hoặc thoát):
>>> để khởi động trong phạm vi (BIG_NUMBER): ... Dòng # This đang "hot" và cuối cùng được JIT biên dịch: ... nếu sys._jit.is_active(): ... Dòng # This "lạnh" và được chạy trong trình thông dịch: ... khẳng định sys._jit.is_active() ... Traceback (cuộc gọi gần đây nhất): Tệp "<stdin>", dòng 5, trong <module> khẳng định sys._jit.is_active() ~~~~~~~~~~~~~~~~~~~~ ^^ Khẳng địnhLỗi
- sys.last_exc¶
Biến này không phải lúc nào cũng được xác định; nó được đặt thành trường hợp ngoại lệ khi một ngoại lệ không được xử lý và trình thông dịch in một thông báo lỗi và truy ngược ngăn xếp. Mục đích sử dụng của nó là cho phép người dùng tương tác nhập mô-đun trình gỡ lỗi và tham gia gỡ lỗi sau khi thử nghiệm mà không cần phải thực hiện lại lệnh gây ra lỗi. (Cách sử dụng điển hình là
import pdb; pdb.pm()để vào trình gỡ lỗi sau khi chết; xem mô-đunpdbđể biết thêm thông tin.)Added in version 3.12.
- sys._is_immortal(op)¶
Trả về
Truenếu đối tượng đã cho là immortal,Falsenếu không.Ghi chú
Các vật thể bất tử (và do đó trả về
Truekhi được chuyển đến chức năng này) không được đảm bảo sẽ bất tử trong các phiên bản sau này và ngược lại đối với các vật thể phàm trần.Added in version 3.14.
Chức năng này chỉ nên được sử dụng cho các mục đích chuyên biệt. Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
- sys._is_interned(string)¶
Trả về
Truenếu chuỗi đã cho là "interned", nếu không thì trả vềFalse.Added in version 3.13.
Nó không được đảm bảo tồn tại trong tất cả các triển khai Python.
- sys.last_type¶
- sys.last_value¶
- sys.last_traceback¶
Ba biến này không được dùng nữa; thay vào đó hãy sử dụng
sys.last_exc. Họ giữ đại diện kế thừa củasys.last_exc, như được trả về từexc_info()ở trên.
- sys.maxsize¶
Một số nguyên cho giá trị lớn nhất mà một biến loại
Py_ssize_tcó thể nhận. Nó thường là2**31 - 1trên nền tảng 32 bit và2**63 - 1trên nền tảng 64 bit.
- sys.maxunicode¶
Một số nguyên cho giá trị của điểm mã Unicode lớn nhất, tức là
1114111(0x10FFFFở dạng thập lục phân).Thay đổi trong phiên bản 3.3: Trước PEP 393,
sys.maxunicodetừng là0xFFFFhoặc0x10FFFF, tùy thuộc vào tùy chọn cấu hình chỉ định xem các ký tự Unicode được lưu dưới dạng UCS-2 hay UCS-4.
- sys.meta_path¶
Danh sách các đối tượng meta path finder có phương thức
find_spec()được gọi để xem liệu một trong các đối tượng có thể tìm thấy mô-đun cần nhập hay không. Theo mặc định, nó chứa các mục thực hiện ngữ nghĩa nhập mặc định của Python. Phương thứcfind_spec()được gọi với ít nhất tên tuyệt đối của mô-đun đang được nhập. Nếu mô-đun cần nhập được chứa trong một gói thì thuộc tính__path__của gói cha sẽ được chuyển vào dưới dạng đối số thứ hai. Phương thức trả về module spec hoặcNonenếu không tìm thấy mô-đun.Xem thêm
importlib.abc.MetaPathFinderLớ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
meta_path.importlib.machinery.ModuleSpecLớp cụ thể mà
find_spec()sẽ trả về các phiên bản của nó.
Thay đổi trong phiên bản 3.4: Module specs được giới thiệu trong Python 3.4, bởi PEP 451.
Thay đổi trong phiên bản 3.12: Đã xóa dự phòng tìm kiếm phương thức
find_module()nếu mục nhậpmeta_pathkhông có phương thứcfind_spec().
- sys.modules¶
Đây là một 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 không nhất thiết sẽ 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 chung này, hãy luôn sử dụng
sys.modules.copy()hoặctuple(sys.modules)để tránh các trường hợp ngoại lệ vì kích thước của nó có thể thay đổi trong quá trình lặp do tác dụng phụ của mã hoặc hoạt động trong các luồng khác.
- sys.orig_argv¶
Danh sách các đối số dòng lệnh ban đầu được truyền cho tệp thực thi Python.
Các phần tử của
sys.orig_argvlà các đối số cho trình thông dịch Python, trong khi các phần tử củasys.argvlà các đối số cho chương trình của người dùng. Các đối số do chính trình thông dịch sử dụng sẽ có trongsys.orig_argvvà bị thiếu trongsys.argv.Added in version 3.10.
- sys.path¶
Danh 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
PYTHONPATH, cộng với giá trị 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 có khả năng không an toàn sẽ được thêm vào
sys.path(before các mục được chèn doPYTHONPATH):Dòng lệnh
python -m module: thêm vào trước thư mục làm việc hiện tại.Dòng lệnh
python script.py: thêm vào trước thư mục của tập lệnh. Nếu đó là liên kết tượng trưng, hãy giải quyết các liên kết tượng trưng.Dòng lệnh
python -c codevàpython(REPL): thêm vào trước một chuỗi trống, nghĩa là thư mục làm việc hiện tại.
Để không thêm vào đường dẫn có khả năng không an toàn này, hãy sử dụng tùy chọn dòng lệnh
-Phoặc biến môi trườngPYTHONSAFEPATH.Một chương trình có thể tự do sửa đổi danh sách này cho mục đích riêng của mình. Chỉ nên thêm chuỗi vào
sys.path; tất cả các loại dữ liệu khác đều bị bỏ qua trong quá trình nhập.
- sys.path_hooks¶
Danh sách các lệnh gọi có đối số đường dẫn để cố gắng tạo finder cho đường dẫn. Nếu có thể tạo một công cụ tìm, nó sẽ được trả về bởi đối tượng có thể gọi được, nếu không thì hãy tăng
ImportError.Ban đầu được chỉ định trong PEP 302.
- sys.path_importer_cache¶
Một từ điển hoạt động như một bộ đệm cho các đối tượng finder. Các khóa là các đường dẫn đã được chuyển tới
sys.path_hooksvà 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à đường dẫn hệ thống tệp hợp lệ nhưng không tìm thấy công cụ tìm thấy nào trênsys.path_hooksthìNonesẽ được lưu trữ.Ban đầu được chỉ định trong PEP 302.
- sys.platform¶
Một chuỗi chứa mã định danh nền tảng. Các giá trị được biết là:
Hệ thống
giá trị
platformAIX
'aix'Android
'android'mô tả
'emscripten'BSD miễn phí
'freebsd'iOS
'ios'Linux
'linux'macOS
'darwin'cửa sổ
'win32'Windows/Cygwin
'cygwin'WASI
'wasi'Trên các hệ thống Unix không được liệt kê trong bảng, giá trị là tên hệ điều hành viết thường được trả về bởi
uname -s, với phần đầu tiên của phiên bản được trả về bởiuname -rđược thêm vào, ví dụ:'sunos5', at the time when Python was built. Trừ khi bạn muốn kiểm tra một phiên bản hệ thống cụ thể, do đó, bạn nên sử dụng thành ngữ saunếu sys.platform.startswith('sunos'): Mã # SunOS-specific đây...
Thay đổi trong phiên bản 3.3: Trên Linux,
sys.platformkhông còn chứa phiên bản chính nữa. Nó luôn là'linux', thay vì'linux2'hoặc'linux3'.Thay đổi trong phiên bản 3.8: Trên AIX,
sys.platformkhông còn chứa phiên bản chính nữa. Nó luôn là'aix', thay vì'aix5'hoặc'aix7'.Thay đổi trong phiên bản 3.13: Trên Android,
sys.platformhiện trả về'android'thay vì'linux'.Thay đổi trong phiên bản 3.14: Trên FreeBSD,
sys.platformkhông còn chứa phiên bản chính nữa. Nó luôn là'freebsd', thay vì'freebsd13'hoặc'freebsd14'.Xem thêm
os.namecó độ chi tiết thô hơn.os.uname()cung cấp thông tin phiên bản phụ thuộc vào hệ thống.Mô-đun
platformcung cấp khả năng kiểm tra chi tiết về danh tính của hệ thống.
- sys.platlibdir¶
Tê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 tiêu chuẩn và đường dẫn của các mô-đun mở rộng đã cài đặt.
Nó tương đương với
"lib"trên hầu hết các nền tảng. Trên Fedora và SuSE, nó bằng"lib64"trên nền tảng 64-bit, cung cấp các đường dẫnsys.pathsau (trong đóX.Ylà phiên bản Pythonmajor.minor):/usr/lib64/pythonX.Y/: Thư viện chuẩn (nhưos.pycủa mô-đunos)/usr/lib64/pythonX.Y/lib-dynload/: Mô-đun mở rộng C của thư viện chuẩn (như mô-đunerrno, tên tệp chính xác là dành riêng cho nền tảng)/usr/lib/pythonX.Y/site-packages/(luôn sử dụnglib, không phảisys.platlibdir): Mô-đun của bên thứ ba/usr/lib64/pythonX.Y/site-packages/: Mô-đun mở rộng C của gói bên thứ ba
Added in version 3.9.
- sys.prefix¶
Một chuỗi cung cấp tiền tố thư mục dành riêng cho trang web nơi cài đặt các tệp Python độc lập với nền tảng; trên Unix, mặc định là
/usr/local. Điều này có thể được đặt tại thời điểm xây dựng với đối số--prefixcho tập lệnh configure. Xem Đường dẫn cài đặt để biết đường dẫn xuất phát.Ghi chú
Nếu virtual environment có hiệu lực,
prefixnày sẽ trỏ đến môi trường ảo. Giá trị cho cài đặt Python sẽ vẫn có sẵn thông quabase_prefix. Tham khảo Môi trường ảo để biết thêm thông tin.Thay đổi trong phiên bản 3.14: Khi chạy dưới virtual environment,
prefixvàexec_prefixhiện được path initialization đặt thành tiền tố môi trường ảo, thay vìsite. Điều này có nghĩa làprefixvàexec_prefixluôn trỏ đến môi trường ảo, ngay cả khisitebị tắt (-S).
- sys.ps1¶
- sys.ps2¶
Các chuỗi chỉ định dấu nhắc chính và 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à
'>>> 'và'... '. Nếu một đối tượng không phải chuỗi được gán cho một trong hai biến,str()của nó sẽ được đánh giá lại mỗi khi trình thông dịch chuẩn bị đọc lệnh tương tác mới; điều này có thể được sử dụng để thực hiện lời nhắc động.
- sys.setdlopenflags(n)¶
Đặt các cờ được trình thông dịch sử dụng cho các cuộc gọi
dlopen(), 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 phân giải các ký hiệu một cách lười biếng khi nhập mô-đun, nếu được gọi làsys.setdlopenflags(0). Để chia sẻ các ký hiệu trên các mô-đun mở rộng, hãy gọisys.setdlopenflags(os.RTLD_GLOBAL). Tên tượng trưng cho các giá trị cờ có thể được tìm thấy trong mô-đunos(hằng sốRTLD_xxx, ví dụ:os.RTLD_LAZY).sẵn có: Unix.
- sys.set_int_max_str_digits(maxdigits)¶
Đặt integer string conversion length limitation được trình thông dịch này sử dụng. Xem thêm
get_int_max_str_digits().Added in version 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 Trình biên dịch Python để biết thêm thông tin về trình lược tả Python. Hàm hồ sơ của hệ thống được gọi tương tự như hàm theo dõi của hệ thống (xem
settrace()), 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 ngay cả khi một ngoại lệ đã được đặt). Chức năng này dành riêng cho từng luồng, nhưng không có cách nào để trình lược tả biết về chuyển đổi ngữ cảnh giữa các luồng, vì vậy sẽ không có ý nghĩa gì 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ó chỉ có thể trả vềNone. Lỗi trong chức năng hồ sơ sẽ khiến chính nó không được thiết lập.Ghi chú
Cơ chế theo dõi tương tự được sử dụng cho
setprofile()nhưsettrace(). Để theo dõi các cuộc gọi bằngsetprofile()bên trong chức năng theo dõi (ví dụ: trong điểm dừng của trình gỡ lỗi), hãy xemcall_tracing().Các hàm hồ sơ phải có ba đối số: frame, event và arg. frame là khung ngăn xếp hiện tại. event là một chuỗi:
'call','return','c_call','c_return'hoặc'c_exception'. arg tùy thuộc vào loại sự kiện.Sự kiện có ý nghĩa như sau:
'call'Một hàm được gọi (hoặc một số khối mã khác được nhập vào). Chức năng hồ sơ được gọi; arg là
None.'return'Một hàm (hoặc khối mã khác) sắp quay trở lại. Chức năng hồ sơ được gọi; arg là giá trị sẽ được trả về hoặc
Nonenếu sự kiện xảy ra do ngoại lệ được nêu ra.'c_call'Một hàm C sắp được gọi. Đây có thể là một chức năng mở rộng hoặc tích hợp sẵn. arg là đối tượng hàm C.
'c_return'Một hàm C đã quay trở lại. arg là đối tượng hàm C.
'c_exception'Hàm C đã đưa ra một ngoại lệ. arg là đối tượng hàm C.
Tăng auditing event
sys.setprofilemà không có đối số.
- sys.setrecursionlimit(limit)¶
Đặt độ sâu tối đa của ngăn xếp trình thông dịch Python thành limit. Giới hạn này ngăn chặn đệ quy vô hạn gây tràn ngăn xếp C và làm hỏng Python.
Giới hạn cao nhất có thể là 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. Việc này phải được thực hiện cẩn thận vì giới hạn quá cao có thể dẫn đến va chạm.
Nếu giới hạn mới quá thấp ở độ sâu đệ quy hiện tại, ngoại lệ
RecursionErrorsẽ xuất hiện.Thay đổi trong phiên bản 3.5.1: Một ngoại lệ
RecursionErrorhiện đã được nâng lên 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 đổi luồng 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 "thời gian" được phân bổ cho các luồng Python đang 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ộ chạy trong thời gian dài. Ngoài ra, luồng nào sẽ đượ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.
Added in version 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 từng luồng; để trình gỡ lỗi hỗ trợ nhiều luồng, nó phải đăng ký hàm theo dõi bằng
settrace()cho mỗi luồng được gỡ lỗi hoặc sử dụngthreading.settrace().Hàm theo dõi phải có ba đối số: frame, event và arg. frame là current stack frame. event là một chuỗi:
'call','line','return','exception'hoặc'opcode'. arg tùy thuộc vào loại sự kiện.Hàm theo dõi được gọi (với event được đặt thành
'call') bất cứ khi nào một phạm vi cục bộ mới được nhập; nó sẽ trả về một tham chiếu đến hàm theo dõi cục bộ sẽ được sử dụng cho phạm vi mới hoặcNonenếu phạm vi không được theo dõi.Hàm theo dõi cục bộ sẽ trả về một tham chiếu đến chính nó hoặc tới một hàm khác mà sau đó sẽ được sử dụng làm hàm theo dõi cục bộ cho phạm vi.
Nếu có bất kỳ lỗi nào xảy ra trong chức năng theo dõi, nó sẽ không được đặt, giống như
settrace(None)được gọi.Ghi chú
Việc theo dõi bị vô hiệu hóa khi gọi hàm theo dõi (ví dụ: một hàm do
settrace()đặt). Để theo dõi đệ quy, hãy xemcall_tracing().Sự kiện có ý nghĩa như sau:
'call'Một hàm được gọi (hoặc một số khối mã khác được nhập vào). Hàm theo dõi toàn cầu được gọi; arg là
None; giá trị trả về chỉ định hàm theo dõi cục bộ.'line'Trình thông dịch sắp thực thi một dòng mã mới hoặc thực thi lại điều kiện của vòng lặp. Hàm theo dõi cục bộ được gọi; arg là
None; giá trị trả về chỉ định hàm theo dõi cục bộ mới. XemObjects/lnotab_notes.txtđể 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 đối với một khung bằng cách đặtf_trace_linesthànhFalsetrên frame đó.'return'Một hàm (hoặc khối mã khác) sắp quay trở lại. Hàm theo dõi cục bộ được gọi; arg là giá trị sẽ được trả về hoặc
Nonenếu sự kiện xảy ra do ngoại lệ được nêu ra. Giá trị trả về của hàm theo dõi bị bỏ qua.'exception'Một ngoại lệ đã xảy ra. Hàm theo dõi cục bộ được gọi; arg là một bộ
(exception, value, traceback); giá trị trả về chỉ định hàm theo dõi cục bộ mới.'opcode'Trình thông dịch sắp thực thi một opcode mới (xem
disđể biết chi tiết về opcode). Hàm theo dõi cục bộ được gọi; arg làNone; giá trị trả về chỉ định hàm theo dõi cục bộ mới. Các sự kiện trên mỗi mã 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 đặtf_trace_opcodesthànhTruetrên frame.
Lưu ý rằng do một ngoại lệ được truyền xuống chuỗi người gọi, nên một sự kiện
'exception'sẽ được tạo ở mỗi cấp độ.Để sử dụng chi tiết hơn, có thể thiết lập hàm theo dõi bằng cách gán
frame.f_trace = tracefuncmột cách rõ ràng, 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 yêu cầu để kích hoạt chức năng theo dõi trên khung hiện tại, điều màsettrace()không làm được. Lưu ý rằng để tính năng này hoạt động, chức năng theo dõi tổng thể phải được cài đặt vớisettrace()để kích hoạt bộ máy theo dõi thời gian chạy, nhưng nó không cần phải có cùng chức năng theo dõi (ví dụ: nó có thể là chức năng theo dõi có chi phí thấp mà chỉ cần trả vềNoneđể tự tắt ngay lập tức trên mỗi khung).Để biết thêm thông tin về các đối tượng mã và khung, hãy tham khảo Hệ thống phân cấp loại tiêu chuẩn.
Tăng auditing event
sys.settracemà không có đối số.Hàm
settrace()chỉ nhằm mục đích triển khai trình gỡ lỗi, trình lược tả, công cụ bao phủ 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: loại sự kiện
'opcode'đã được thêm vào; Thuộc tínhf_trace_linesvàf_trace_opcodesđược thêm vào khung
- sys.set_asyncgen_hooks([firstiter] [, finalizer])¶
Chấp nhận hai đối số từ khóa tùy chọn là các đối số có thể gọi được chấp nhận asynchronous generator iterator làm đối số. Có thể gọi firstiter sẽ được gọi khi trình tạo không đồng bộ được lặp lại lần đầu tiên. Zz002zz sẽ được gọi khi trình tạo không đồng bộ sắp được thu gom rác.
Tăng auditing event
sys.set_asyncgen_hooks_firstitermà không có đối số.Tăng auditing event
sys.set_asyncgen_hooks_finalizermà không có đối số.Hai sự kiện kiểm tra được đưa ra vì API cơ bản bao gồm hai cuộc gọi, mỗi cuộc gọi phải đưa ra sự kiện riêng của nó.
Added in version 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 finalizer, hãy xem cách triển khai
asyncio.Loop.shutdown_asyncgenstrong Lib/asyncio/base_events.pyGhi chú
Chức năng này đã được thêm tạm thời (xem PEP 411 để biết chi tiết.)
- sys.set_coroutine_origin_tracking_depth(depth)¶
Cho phép bật hoặc tắt tính năng theo dõi nguồn gốc coroutine. Khi được bật, thuộc tính
cr_origintrên các đối tượng coroutine sẽ chứa một bộ dữ liệu (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 được đặt trước. Khi bị tắt,cr_originsẽ làNone.Để bật, hãy chuyển giá trị depth lớn hơn 0; cái này đặt số lượng khung có thông tin sẽ được ghi lại. Để tắt, đặt depth về 0.
Cài đặt này dành riêng cho từng luồng.
Added in version 3.7.
Ghi chú
Chức năng này đã được thêm tạm thời (xem PEP 411 để biết chi tiết.) Chỉ sử dụng chức năng này cho mục đích gỡ lỗi.
- sys.activate_stack_trampoline(backend, /)¶
Kích hoạt tấm bạt lò xo định hình ngăn xếp backend. Phần phụ trợ duy nhất được hỗ trợ là
"perf".Không thể kích hoạt tấm bạt lò xo xếp chồng nếu JIT đang hoạt động.
sẵn có: Linux.
Added in version 3.12.
- sys.deactivate_stack_trampoline()¶
Vô hiệu hóa phần phụ trợ tấm bạt lò xo của trình phân tích ngăn xếp hiện tại.
Nếu không có trình phân tích ngăn xếp nào được kích hoạt thì chức năng này không có hiệu lực.
sẵn có: Linux.
Added in version 3.12.
- sys.is_stack_trampoline_active()¶
Trả về
Truenếu tấm bạt lò xo xếp chồng đang hoạt động.sẵn có: Linux.
Added in version 3.12.
- sys.remote_exec(pid, script)¶
Thực thi script, một tệp chứa mã Python trong quy trình từ xa với pid đã cho.
Hàm này trả về ngay lập tức và mã sẽ được thực thi bởi luồng chính của tiến trình đích ở cơ hội có sẵn tiếp theo, tương tự như cách xử lý tín hiệu. Không có giao diện để xác định khi nào mã được thực thi. Người gọi có trách nhiệm đảm bảo rằng tệp vẫn tồn tại bất cứ khi nào quá trình từ xa cố đọc nó và nó không bị ghi đè.
Quá trình từ xa phải chạy trình thông dịch CPython có cùng phiên bản chính và phụ với quy trình cục bộ. Nếu trình thông dịch cục bộ hoặc từ xa là phiên bản tiền phát hành (alpha, beta hoặc phiên bản phát hành) thì trình thông dịch cục bộ và từ xa phải là phiên bản chính xác giống nhau.
Xem Giao thức đính kèm gỡ lỗi từ xa để biết thêm thông tin về cơ chế gỡ lỗi từ xa.
Khi mã được thực thi trong quy trình từ xa, một auditing event
sys.remote_execsẽ được tạo ra cùng với pid và đường dẫn đến tệp tập lệnh. Sự kiện này được nêu ra trong quá trình được gọi làsys.remote_exec().Khi tập lệnh được thực thi trong quy trình từ xa, auditing event
cpython.remote_debugger_scriptsẽ được đưa ra cùng với đường dẫn trong quy trình từ xa. Sự kiện này được đưa ra trong quy trình từ xa, không phải sự kiện được gọi làsys.remote_exec().sẵn có: Unix, Windows.
Added in version 3.14: Xem PEP 768 để biết thêm chi tiết.
- sys._enablelegacywindowsfsencoding()¶
Thay đổi filesystem encoding and error handler thành 'mbcs' và 'replace' tương ứng để 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
PYTHONLEGACYWINDOWSFSENCODINGtrước khi khởi chạy Python.Xem thêm
sys.getfilesystemencoding()vàsys.getfilesystemencodeerrors().sẵn có: Windows.
Ghi chú
Việc thay đổi mã hóa hệ thống tệp sau khi khởi động Python rất rủi ro vì mã hóa fsencoding cũ hoặc các đường dẫn được mã hóa bằng mã fsencoding cũ có thể được lưu trữ ở đâu đó. Thay vào đó hãy sử dụng
PYTHONLEGACYWINDOWSFSENCODING.Added in version 3.6: Xem PEP 529 để biết thêm chi tiết.
Không được dùng nữa kể từ phiên bản 3.13, sẽ bị xóa trong phiên bản 3.16: Thay vào đó hãy sử dụng
PYTHONLEGACYWINDOWSFSENCODING.
- sys.stdin¶
- sys.stdout¶
- sys.stderr¶
File objects được trình thông dịch sử dụng cho đầu vào, đầu ra và lỗi tiêu chuẩn:
stdinđược sử dụng cho tất cả đầu vào tương tác (bao gồm cả lệnh gọi tớiinput());stdoutđược sử dụng cho đầu ra của các câu lệnhprint()và expression cũng như cho các lời nhắc củainput();Lời nhắc của chính trình thông dịch và thông báo lỗi của nó sẽ chuyển đến
stderr.
Các luồng này là text files thông thường giống như các luồng được hàm
open()trả về. Các thông số của chúng được chọn như sau:Việc mã hóa và xử lý lỗi được khởi tạo từ
PyConfig.stdio_encodingvàPyConfig.stdio_errors.Trên Windows, UTF-8 được sử dụng cho thiết bị console. Các thiết bị không có ký tự như tệp đĩa và đường ống sử dụng mã hóa ngôn ngữ hệ thống (tức là bảng mã ANSI). Các thiết bị ký tự không phải bảng điều khiển như NUL (tức là trong đó
isatty()trả vềTrue) sử dụng giá trị của bảng mã đầu vào và đầu ra của bảng điều khiển khi khởi động, tương ứng cho stdin và stdout/stderr. Điều này mặc định cho hệ thống locale encoding nếu quy trình ban đầu không được gắn vào bảng điều khiển.Hành vi đặc biệt của bảng điều khiển có thể được ghi đè bằng cách đặt biến môi trường PYTHONLEGACYWINDOWSSTDIO trước khi khởi động Python. Trong trường hợp đó, bảng mã bảng điều khiển được sử dụng như cho bất kỳ thiết bị ký tự nào khác.
Trong tất cả các nền tảng, bạn có thể ghi đè mã hóa ký tự bằng cách đặt biến môi trường
PYTHONIOENCODINGtrước khi khởi động Python hoặc bằng cách sử dụng tùy chọn dòng lệnh-Xutf8mới và biến môi trườngPYTHONUTF8. Tuy nhiên, đối với bảng điều khiển Windows, điều này chỉ áp dụng khiPYTHONLEGACYWINDOWSSTDIOcũng được đặt.Khi tương tác, luồng
stdoutđược lưu vào bộ đệm dòng. Mặt khác, nó được lưu vào bộ đệm khối giống như các tệp văn bản thông thường. Luồngstderrđược đệm dòng trong cả hai trường hợp. Bạn có thể làm cho cả hai luồng không bị đệm bằng cách chuyển tùy chọn dòng lệnh-uhoặc đặt biến môi trườngPYTHONUNBUFFERED.
Thay đổi trong phiên bản 3.9: Zz000zz không tương tác hiện được lưu vào bộ đệm dòng thay vì được lưu vào bộ đệ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
buffernhị phân cơ bản. Ví dụ: để ghi byte vàostdout, hãy sử dụngsys.stdout.buffer.write(b'abc').Tuy nhiên, nếu bạn đang viết một thư viện (và không kiểm soát ngữ cảnh mà mã của nó sẽ được thực thi), 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 như
io.StringIOkhông hỗ trợ thuộc tínhbuffer.
- sys.__stdin__¶
- sys.__stdout__¶
- sys.__stderr__¶
Các đối tượng này chứa các giá trị ban đầu của
stdin,stderrvàstdoutkhi 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ượngsys.std*có được chuyển hướng hay không.Nó cũng có thể được sử dụng để khôi phục các tệp thực tế về 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 ưa thích để thực hiện việc này là lưu luồng trước đó một cách rõ ràng trước khi thay thế nó và khôi phục đối tượng đã lưu.
Ghi chú
Trong một số điều kiện,
stdin,stdoutvàstderrcũng như các giá trị ban đầu__stdin__,__stdout__và__stderr__có thể làNone. Điều này thường xảy ra 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 pythonw.
- sys.stdlib_module_names¶
Mộ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 có sẵn trên một số nền tảng và các mô-đun bị vô hiệu hóa 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, mô-đun tích hợp, cố định và mở rộng. Các mô-đun thử nghiệm được loại trừ.
Đối với các gói, chỉ gói chính được liệt kê: các gói phụ và mô-đun phụ không được liệt kê. Ví dụ: gói
emailđược liệt kê, nhưng gói conemail.mimevà mô-đun conemail.messagekhông được liệt kê.Xem thêm danh sách
sys.builtin_module_names.Added in version 3.10.
- sys.thread_info¶
Một named tuple chứa thông tin về việc triển khai luồng.
- thread_info.name¶
Tên của việc thực hiện chủ đề:
"nt": Chủ đề Windows"pthread": chủ đề POSIX"pthread-stubs": sơ khai các luồng POSIX (trên nền tảng WebAssembly không hỗ trợ luồng)"solaris": Chủ đề Solaris
- thread_info.lock¶
Tên của việc thực hiện khóa:
"semaphore": khóa sử dụng semaphore"mutex+cond": khóa sử dụng mutex và biến điều kiệnNonenếu thông tin này chưa được biết
- thread_info.version¶
Tên và phiên bản của thư viện chủ đề. Đó là một chuỗi hoặc
Nonenếu thông tin này không xác định.
Added in version 3.3.
- sys.tracebacklimit¶
Khi biến này được đặt thành một giá trị số nguyên, nó sẽ xác định số cấp 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à
1000. Khi được đặt thành0trở xuống, tất cả thông tin truy nguyên sẽ bị chặn và chỉ loại và giá trị ngoại lệ được in.
- sys.unraisablehook(unraisable, /)¶
Xử lý một ngoại lệ không thể nâng cao được.
Được gọi khi có ngoại lệ xảy ra nhưng Python không có cách nào để xử lý nó. Ví dụ: khi hàm hủy đưa ra một ngoại lệ hoặc trong quá trình thu gom rác (
gc.collect()).Đối số unraisable có các thuộc tính sau:
exc_type: Loại ngoại lệ.exc_value: Giá trị ngoại lệ, có thể làNone.exc_traceback: Truy nguyên ngoại lệ, có thể làNone.err_msg: Thông báo lỗi, có thể làNone.object: Đối tượng gây ra ngoại lệ, có thể làNone.
Các định dạng hook mặc định
err_msgvàobjectlà:f'{err_msg}: {object!r}'; sử dụng thông báo lỗi "Ngoại lệ bị bỏ qua trong" nếuerr_msglàNone.sys.unraisablehook()có thể được ghi đè để kiểm soát cách xử lý các trường hợp ngoại lệ không thể xử lý được.Xem thêm
excepthook()xử lý các ngoại lệ chưa được phát hiện.Cảnh báo
Việc lưu trữ
exc_valuebằng móc tùy chỉnh có thể tạo chu trình tham chiếu. Cần xóa rõ ràng để phá vỡ chu trình tham chiếu khi ngoại lệ không còn cần thiết nữa.Việc lưu trữ
objectbằng móc tùy chỉnh có thể phục hồi nó nếu nó được đặt thành một đối tượng đang được hoàn thiện. Tránh lưu trữobjectsau khi móc tùy chỉnh hoàn tất để tránh phục hồi các đối tượng.Đưa ra một sự kiện kiểm tra
sys.unraisablehookvới các đối số hook, unraisable khi xảy ra ngoại lệ không thể xử lý được. Đối tượng unraisable giống với đối tượng sẽ được chuyển tới hook. Nếu chưa đặt hook nào, hook có thể làNone.Added in version 3.8.
- sys.version¶
Mộ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 khởi động. Không trích xuất thông tin phiên bản từ đó, thay vào đó, hãy sử dụng
version_infovà các chức năng do mô-đunplatformcung cấp.
- sys.api_version¶
Phiên bản C API tương đương với C macro
PYTHON_API_VERSION. Được xác định để tương thích ngược.Hiện tại, hằng số này không được cập nhật trong các phiên bản Python mới và không hữu ích cho việc lập phiên bản. Điều này có thể thay đổi trong tương lai.
- sys.version_info¶
Một bộ chứa năm thành phần của số phiên bản: major, minor, micro, releaselevel và serial. Tất cả các giá trị ngoại trừ releaselevel đều là số nguyên; mức phát hành là
'alpha','beta','candidate'hoặc'final'. Giá trịversion_infotương ứng với phiên bản Python 2.0 là(2, 0, 0, 'final', 0). Các thành phần cũng có thể được truy cập theo tên, vì vậysys.version_info[0]tương đương vớisys.version_info.major, 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.warnoptions¶
Đây là chi tiết triển khai của khung cảnh báo; không sửa đổi giá trị này. Tham khảo mô-đun
warningsđể biết thêm thông tin về khung cảnh báo.
- sys.winver¶
Số 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à phiên bản chính và phụ của trình thông dịch Python đang chạy. Nó được cung cấp trong mô-đun
sysnhằm mục đích cung cấp thông tin; việc sửa đổi giá trị này không ảnh hưởng đến các khóa đăng ký được Python sử dụng.sẵn có: Windows.
- sys.monitoring
Không gian tên chứa các hàm và hằng số để đăng ký gọi lại và kiểm soát các sự kiện giám sát. Xem
sys.monitoringđể biết chi tiết.
- sys._xoptions¶
Mộ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
-X. Tên tùy chọn được ánh xạ tới giá trị của chúng, nếu được cung cấp rõ ràng hoặc tớiTrue. Ví dụ:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, ngày 16 tháng 10 năm 2010, 20:14:50) [GCC 4.4.3] trên linux2 Nhập "trợ giúp", "bản quyền", "tín dụng" hoặc "giấy phép" để biết thêm thông tin. >>> nhập hệ thống >>> sys._xoptions {'a': 'b', 'c': Đúng}
Đây là cách truy cập các tùy chọn dành riêng cho CPython được truyền qua
-X. 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.Added in version 3.2.
Trích dẫn
ISO/IEC 9899:1999. "Ngôn ngữ lập trình - C." Bản dự thảo công khai của tiêu chuẩn này có sẵn tại https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.