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 configure tiê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ờ m cho 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ởi PySys_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ên sys.addaudithook mà 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ừ Exception chứ không phải RuntimeError khô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 -c cho 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ặc PySys_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_prefix sẽ bị ghi đè vào tiền tố môi trường ảo. Ngược lại, base_exec_prefix khô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, prefix sẽ bị ghi đè vào tiền tố môi trường ảo. Ngược lại, base_prefix khô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ặc setprofile() để 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 traceback có 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_frames mà 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_exceptions mà 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ỗi pdb, 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àm breakpoint() tích hợp sẽ chuyển thẳng *args**kws củ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.module sẽ đượ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 *args**kws, và bất cứ điều gì function() trả về, sys.breakpointhook() sẽ quay lại hàm breakpoint() 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ì RuntimeWarning sẽ đượ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, PYTHONBREAKPOINT sẽ đượ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.dllhandle

Số nguyên chỉ định phần điều khiển của Python DLL.

sẵn có: Windows.

sys.displayhook(value)

Nếu value không phải là None, hàm này sẽ in repr(value) thành sys.stdout và lưu value vào builtins._. Nếu repr(value) không thể mã hóa thành sys.stdout.encoding bằng trình xử lý lỗi sys.stdout.errors (có thể là 'strict'), hãy mã hóa nó thành sys.stdout.encoding bằ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 cho sys.displayhook.

Mã giả:

def displayhook(giá trị):
    nếu giá trị  Không:
        trở về
    # Set '_' thành Không để tránh đệ quy
    nội dung._ = Không 
    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ên UnicodeEncodeError.

sys.dont_write_bytecode

Nếu điều này đúng, Python sẽ không cố ghi các tệp .pyc khi nhập mô-đun nguồn. Giá trị này ban đầu được đặt thành True hoặc False tùy thuộc vào tùy chọn dòng lệnh -B và biến môi trường PYTHONDONTWRITEBYTECODE, 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

True nếu Python được biên dịch với sự hỗ trợ của Emscripten pthread.

_emscripten_info.shared_memory

True nế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 .pyc bytecode-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 .pyc mới được ghi trong tiền tố pycache. Do đó, nếu bạn sử dụng compileall là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 -X pycache_prefix=PATH hoặc biến môi trường PYTHONPYCACHEPREFIX (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ọi sys.excepthook vớ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 cho sys.excepthook.

Đưa ra một sự kiện kiểm tra sys.excepthook với các đối số hook, type, value, traceback khi xảy ra ngoại lệ chưa được phát hiện. Nếu chưa đặt hook nào, hook có thể là None. Nếu bất kỳ hook nào đưa ra một ngoại lệ bắt nguồn từ RuntimeError thì 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.excepthook sẽ đượ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àm threading.excepthook() xử lý ngoại lệ do threading.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, excepthookunraisablehook khi bắt đầu chương trình. Chúng được lưu để breakpointhook, displayhookexcepthook, unraisablehook có 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 đề except hoặc except*), 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ệ e hiện đang được xử lý (vì vậy exception() 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ủa BaseException), 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 typetraceback hiệ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ới exc_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-prefix cho 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ục exec_prefix/lib/pythonX.Y/config và các mô-đun thư viện dùng chung được cài đặt trong exec_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_prefix này sẽ trỏ đến môi trường ảo. Giá trị cho cài đặt Python sẽ vẫn có sẵn thông qua base_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, prefixexec_prefix hiệ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à prefixexec_prefix luôn trỏ đến môi trường ảo, ngay cả khi site bị 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.executable sẽ là một chuỗi trống hoặc None.

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, None tương đương với việc truyền số 0 và bất kỳ đối tượng nào khác được in thành stderr và 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.

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ệnh try đượ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

-d

flags.inspect

-i

flags.interactive

-i

flags.isolated

-I

flags.optimize

-O hoặc -OO

flags.dont_write_bytecode

-B

flags.no_user_site

-s

flags.no_site

-S

flags.ignore_environment

-E

flags.verbose

-v

flags.bytes_warning

-b

flags.quiet

-q

flags.hash_randomization

-R

flags.dev_mode

-X dev (Python Development Mode)

flags.utf8_mode

-X utf8

flags.safe_path

-P

flags.int_max_str_digits

-X int_max_str_digits (integer string conversion length limitation)

flags.warn_default_encoding

-X warn_default_encoding

flags.gil

-X gilPYTHON_GIL

flags.thread_inherit_context

-X thread_inherit_contextPYTHON_THREAD_INHERIT_CONTEXT

flags.context_aware_warnings

-X context_aware_warningsPYTHON_CONTEXT_AWARE_WARNINGS

Thay đổi trong phiên bản 3.2: Đã thêm thuộc tính quiet cho cờ -q mớ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_warning lỗi thời.

Thay đổi trong phiên bản 3.4: Đã thêm thuộc tính isolated cho cờ -I isolated.

Thay đổi trong phiên bản 3.7: Đã thêm thuộc tính dev_mode cho Python Development Mode mới và thuộc tính utf8_mode cho cờ -X utf8 mới.

Thay đổi trong phiên bản 3.10: Đã thêm thuộc tính warn_default_encoding cho cờ -X warn_default_encoding.

Thay đổi trong phiên bản 3.11: Đã thêm thuộc tính safe_path cho 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.h cho 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_info named tuple

thuộc tính

macro float.h

lời giải thích

float_info.epsilon

DBL_EPSILON

chê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_DIG

Số 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-radix có ý nghĩa và ý nghĩa của float.

float_info.max

DBL_MAX

Số float hữu hạn dương đại diện tối đa.

float_info.max_exp

DBL_MAX_EXP

Số 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_EXP

Số nguyên tối đa e sao cho 10**e nằm trong phạm vi số float hữu hạn có thể biểu diễn.

float_info.min

DBL_MIN

Số 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_EXP

Số 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_EXP

Số nguyên tối thiểu e sao cho 10**e là số float chuẩn hóa.

float_info.radix

FLT_RADIX

Cơ số của biểu diễn số mũ.

float_info.rounds

FLT_ROUNDS

Mộ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_ROUNDS hệ thống tại thời điểm khởi động trình thông dịch:

  • -1: không thể xác định được

  • 0: hướng tới số 0

  • 1: đến gần nhất

  • 2: hướng tới dương vô cực

  • 3: 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.dig cần được giải thích thêm. Nếu s là 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ĩa sys.float_info.dig, thì việc chuyển đổi s thà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.dig chữ 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ới x float hữu hạn, repr(x) nhằm mục đích tạo ra một chuỗi ngắn có thuộc tính float(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_style có giá trị 'legacy'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()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ô-đun os (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()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ên filesystem_encodingfilesystem_errors của PyConfig.

Thay đổi trong phiên bản 3.2: Kết quả getfilesystemencoding() không thể là None nữ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_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()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ên filesystem_encodingfilesystem_errors của PyConfig.

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ì TypeError sẽ đượ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, ValueError sẽ đượ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._getframe vớ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ì None sẽ đượ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._getframemodulename vớ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ụng Py_NewInterpreter()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_typeplatform_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ới sys.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_maskproduct_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 namedtuple có dạng (firstiter, finalizer), trong đó firstiterfinalizer dự kiến là None hoặ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_bitscutoff.

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à hexversion vì 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àm hex() tích hợp sẵn. named tuple sys.version_info có 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ề hexversion tạ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.8 sys.implementation.version có thể là sys.version_info(1, 8, 0, 'final', 0), trong khi sys.version_info sẽ 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ếu cache_tag được đặt thành None, đ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à True dà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 _interpreters cấp thấp.

sys.implementation có 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.implementation 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.

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(), PYTHONINTMAXSTRDIGITS hoặ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_digitsstr_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ô-đun site sets this.

Tăng một auditing event cpython.run_interactivehook vớ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ề True nếu GIL được bật và False nế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ề True nếu trình thông dịch Python chính là shutting down. Trả về False nế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._jit khô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ề True nếu tệp thực thi Python hiện tại hỗ trợ biên dịch JIT và False nế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-jit trên Windows và tùy chọn --enable-experimental-jit trên tất cả các nền tảng khác.

_jit.is_enabled()

Trả về True nế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à False nế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ường PYTHON_JIT thành 0 (đã tắt) hoặc 1 (đã bật) khi khởi động trình thông dịch.

_jit.is_active()

Trả về True nếu khung Python trên cùng hiện đang thực thi mã JIT (ngụ ý sys._jit.is_enabled()) và False nế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ô-đun pdb để biết thêm thông tin.)

Added in version 3.12.

sys._is_immortal(op)

Trả về True nếu đối tượng đã cho là immortal, False nếu không.

Ghi chú

Các vật thể bất tử (và do đó trả về True khi đượ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ề True nế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ủa sys.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_t có thể nhận. Nó thường là 2**31 - 1 trên nền tảng 32 bit và 2**63 - 1 trê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.maxunicode từng là 0xFFFF hoặc 0x10FFFF, 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ức find_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ặc None nếu không tìm thấy mô-đun.

Xem thêm

importlib.abc.MetaPathFinder

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 meta_path.

importlib.machinery.ModuleSpec

Lớ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ập meta_path không có phương thức find_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ặc tuple(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_argv là các đối số cho trình thông dịch Python, trong khi các phần tử của sys.argv là 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ó trong sys.orig_argv và bị thiếu trong sys.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 do PYTHONPATH):

  • 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 codepython (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 -P hoặc biến môi trường PYTHONSAFEPATH.

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.

Xem thêm

  • Mô-đun site Phần này mô tả cách sử dụng tệp .pth để mở rộng sys.path.

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_hooks 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à đườ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ên sys.path_hooks thì None sẽ đượ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ị platform

AIX

'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ởi uname -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ữ sau

nếu sys.platform.startswith('sunos'):
     # SunOS-specific đây...

Thay đổi trong phiên bản 3.3: Trên Linux, sys.platform khô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.platform khô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.platform hiện trả về 'android' thay vì 'linux'.

Thay đổi trong phiên bản 3.14: Trên FreeBSD, sys.platform khô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.name có độ 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 platform cung 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ẫn sys.path sau (trong đó X.Y là phiên bản Python major.minor):

  • /usr/lib64/pythonX.Y/: Thư viện chuẩn (như os.py của mô-đun os)

  • /usr/lib64/pythonX.Y/lib-dynload/: Mô-đun mở rộng C của thư viện chuẩn (như mô-đun errno, 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ụng lib, không phải sys.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ố --prefix cho 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, prefix này sẽ trỏ đến môi trường ảo. Giá trị cho cài đặt Python sẽ vẫn có sẵn thông qua base_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, prefixexec_prefix hiệ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à prefixexec_prefix luôn trỏ đến môi trường ảo, ngay cả khi site bị 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à '>>> ''... '. 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ọi sys.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ô-đun os (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ằng setprofile() 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 xem call_tracing().

Các hàm hồ sơ phải có ba đối số: frame, eventarg. 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; argNone.

'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 None nế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.setprofile mà 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ệ RecursionError sẽ xuất hiện.

Thay đổi trong phiên bản 3.5.1: Một ngoại lệ RecursionError hiệ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ụng threading.settrace().

Hàm theo dõi phải có ba đối số: frame, eventarg. framecurrent 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ặc None nế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 xem call_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; argNone; 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; argNone; giá trị trả về chỉ định hàm theo dõi cục bộ mới. Xem Objects/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 đặt f_trace_lines thành False trê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 None nế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; argNone; 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 đặt f_trace_opcodes thành True trê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 = tracefunc mộ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ới settrace() để 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.settrace mà 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ính f_trace_linesf_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_firstiter mà không có đối số.

Tăng auditing event sys.set_asyncgen_hooks_finalizer 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 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_asyncgens trong Lib/asyncio/base_events.py

Ghi 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_origin trê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_origin sẽ 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ề True nế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_exec sẽ đượ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_script sẽ đượ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 PYTHONLEGACYWINDOWSFSENCODING trước khi khởi chạy Python.

Xem thêm sys.getfilesystemencoding()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ới input());

  • stdout được sử dụng cho đầu ra của các câu lệnh print()expression cũng như cho các lời nhắc của input();

  • 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_encodingPyConfig.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 PYTHONIOENCODING trước khi khởi động Python hoặc bằng cách sử dụng tùy chọn dòng lệnh -X utf8 mới và biến môi trường PYTHONUTF8. Tuy nhiên, đối với bảng điều khiển Windows, điều này chỉ áp dụng khi PYTHONLEGACYWINDOWSSTDIO cũ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ồng stderr đượ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 -u hoặc đặt biến môi trường PYTHONUNBUFFERED.

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 buffer nhị phân cơ bản. Ví dụ: để ghi byte vào stdout, hãy sử dụng sys.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.StringIO không hỗ trợ thuộc tính buffer.

sys.__stdin__
sys.__stdout__
sys.__stderr__

Các đối tượng này chứa các giá trị ban đầu của stdin, stderrstdout 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 sys.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, stdoutstderr cũng như các giá trị ban đầu __stdin__, __stdout____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 con email.mime và mô-đun con email.message khô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ện

  • None nế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 None nế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ành 0 trở 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_msgobject là: f'{err_msg}: {object!r}'; sử dụng thông báo lỗi "Ngoại lệ bị bỏ qua trong" nếu err_msgNone.

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_value bằ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ữ object bằ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ữ object sau 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.unraisablehook vớ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_info và các chức năng do mô-đun platform cung 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, releaselevelserial. 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_info tươ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ậy sys.version_info[0] tương đương với sys.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 sys nhằ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ới True. 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

[C99]

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.