29.1. sys
- 系统特定的参数和函数¶
本模块提供了访问由解释器使用和维护的一些变量和与解释器强烈交互的函数。它始终是可用的。
-
sys.
argv
¶ 传递给Python脚本的命令行参数列表。
argv[0]
是脚本的名称(是否是完整的路径名这要取决于操作系统)。如果使用解释器的-c
命令行选项执行命令,则argv[0]
设置为字符串'-c'
如果无脚本名称传递给 Python 解释器,argv[0]
是空字符串。若要遍历标准输入或命令行上给出的文件列表,请参阅
fileinput
模块。
-
sys.
base_exec_prefix
¶ 在运行
site.py
之前的Python启动期间设置为与exec_prefix
相同的值。如果未在virtual environment中运行,值将保持不变;如果site.py
发现虚拟环境正在使用,则prefix
和exec_prefix
的值将更改为指向虚拟环境,而base_prefix
和base_exec_prefix
将保持指向基本Python安装(创建虚拟环境的安装)。版本3.3中的新功能。
-
sys.
base_prefix
¶ 在启动
site.py
之前的Python启动期间设置为与prefix
相同的值。如果未在virtual environment中运行,值将保持不变;如果site.py
发现虚拟环境正在使用,则prefix
和exec_prefix
的值将更改为指向虚拟环境,而base_prefix
和base_exec_prefix
将保持指向基本Python安装(创建虚拟环境的安装)。版本3.3中的新功能。
-
sys.
byteorder
¶ 本机字节顺序的指示器。在big-endian(最高有效字节在第一位)平台上的值为
'big'
,在little-endian(最低有效字节在第一位)平台上的值为'little'
。
-
sys.
builtin_module_names
¶ 一个字符串元组,给出编译进该Python 解释器的所有模块的名称。(此信息不可用任何其他方式获取到 — —
modules.keys()
仅列出已导入的模块。)
-
sys.
call_tracing
(func, args)¶ 当跟踪功能可用时,触发
func(*args)
的调用。跟踪的状态被保存,并且之后将恢复。它从调试器中的一个检查点调用,以递归方式调试某些其它代码。
-
sys.
copyright
¶ 一个包含Python 解释器版权的字符串。
-
sys.
_clear_type_cache
()¶ 清除内部类型的缓存。The type cache is used to speed up attribute and method lookups.Use the function only to drop unnecessary references during reference leak debugging.
This function should be used for internal and specialized purposes only.
-
sys.
_current_frames
()¶ 返回一个字典,将每个线程标识符映射到函数调用时线程中正在活跃的最顶层的堆栈帧。请注意在
traceback
模块中的函数可以根据这样的帧构建调用栈。这对调试死锁是最有用的:此功能不需要死锁线程的合作,且这些线程的调用堆栈都已冻结只要它们仍处于死锁的状态。非死锁线程返回的帧可能与调用代码检查该帧时线程中正在活跃的帧没有关系。
此函数应仅用于内部和特殊目的。
-
sys.
_debugmallocstats
()¶ 将关于CPython内存分配器状态的低级信息打印到stderr。
如果Python配置了-with-pydebug,它还执行一些昂贵的内部一致性检查。
版本3.3中的新功能。
CPython实现细节:此函数特定于CPython。确切的输出格式在此未定义,可能会更改。
-
sys.
dllhandle
¶ 整数,指定 Python DLL 的句柄。可用的平台: Windows。
-
sys.
displayhook
(value)¶ 如果值不是
None
,此函数将打印repr(value)
到sys.stdout
,并保存中的builtins._
Ifrepr(value)
is not encodable tosys.stdout.encoding
withsys.stdout.errors
error handler (which is probably'strict'
), encode it tosys.stdout.encoding
with'backslashreplace'
error handler.sys.displayhook
在 Python 的交互式会话中输入的expression的计算结果上被调用。通过将另一个单参数函数赋值给sys.displayhook
,可以自定义这些值的显示。伪代码:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = value
在版本3.2中更改:在
UnicodeEncodeError
上使用'backslashreplace'
错误处理程序。
-
sys.
dont_write_bytecode
¶ 如果这是真的,Python将不会尝试在导入源模块时写入
.pyc
文件。此值初始设置为True
或False
,具体取决于-B
命令行选项和PYTHONDONTWRITEBYTECODE
环境变量,但您可以自行设置以控制字节码文件生成。
-
sys.
excepthook
(type, value, traceback)¶ 打印给定的回溯和异常到
sys.stderr
。当异常被引发并没有被捕获时,解释器将以三个参数:异常类、异常实例和回溯对象调用
sys.excepthook
。在交互会话中,这发生在控制返回到提示之前;在Python程序中,这发生在程序退出之前。通过向sys.excepthook
分配另一个三个参数的函数,可以自定义这种顶级的异常处理。
-
sys.
__displayhook__
¶ -
sys.
__excepthook__
¶ 这两个对象包含
displayhook
和excepthook
在程序开始时的原始值。保存它们是为了在displayhook
与excepthook
被不小心换成有问题的对象时可以恢复它们。
-
sys.
exc_info
()¶ 此函数返回一个三元组,它们给出当前正在处理的异常的信息。返回的信息特定于当前的线程和当前的堆栈帧。如果当前的堆栈帧没在处理异常,则从调用者的堆栈帧、调用者的调用者、等等获取信息,直至找到正在处理异常的堆栈帧。这里,“处理异常”被定义为“执行一个except子句”。对于任何堆栈帧,只有当前处理的异常的信息是可访问的。
如果堆栈上没有正在处理的异常,则返回包含三个
None
值的元组。否则,返回(type, value, traceback)
。它们的含义是:类型获取正在处理的异常的类型(BaseException
的子类); value获取异常实例(异常类型的实例); traceback获取一个跟踪对象(参见参考手册),它将调用堆栈封装在异常最初发生的点。
-
sys.
exec_prefix
¶ 一个字符串,提供在其中安装平台相关的Python文件的特定于站点的目录前缀;默认情况下,这也是
'/usr/local'
。它可以在构建时通过configure脚本中的--exec-prefix
参数设置。具体来说,所有配置文件(例如,thepyconfig.h
header file) are installed in the directoryexec_prefix/lib/pythonX.Y/config
, and shared library modules are installed inexec_prefix/lib/pythonX.Y/lib-dynload
, where X.Y is the version number of Python, for example3.2
.注
如果virtual environment有效,则在
site.py
中更改此值以指向虚拟环境。Python安装的值仍然可用,通过base_exec_prefix
。
-
sys.
executable
¶ 一个字符串,给出Python解释器的可执行二进制文件的绝对路径。如果Python无法检索到其可执行程序的真实路径,
sys.executable
将为一个空字符串或None
。
-
sys.
exit
([arg])¶ 从 Python 退出。它通过引发
SystemExit
异常实现,所以try
语句的finally字句指定的清理动作将生效,还可以在外层拦截这种退出的尝试。可选参数arg 可以是一个它给出退出的状态(默认是零)整数,也可以是其它类型的对象。如果它是一个整数,shell和类似的程序将认为零是“成功的退出”,其它任何非零值都是“异常退出”。大部分系统要求该值在0-127范围之间,否则将产生未定义的结果。一些系统具有为特定退出代码指定特定含义的约定,但这些通常不发达; Unix程序通常对命令行语法错误使用2,对所有其他类型的错误使用1。如果传递的是其它类型,
None
等同于0,其它任何对象将被输出到stderr
并且导致退出码为1。特别地,当错误发生时,sys.exit("someerrormessage")
是一个快速退出程序的方式。由于
exit()
最终"只是"引发异常,在主线程中调用时它将只会退出该进程,且该异常不会被拦截。
-
sys.
flags
¶ struct sequence flags显示命令行标志的状态。这些属性都是只读的。
属性 flag debug
-d
inspect
-i
interactive
-i
optimize
-O
或-OO
dont_write_bytecode
-B
no_user_site
-s
no_site
-S
ignore_environment
-E
verbose
-v
bytes_warning
-b
quiet
-q
hash_randomization
-R
在版本3.2中已更改:为新的
-q
标志添加了quiet
属性。版本3.2.3中的新功能:
hash_randomization
属性。在版本3.3中已更改:删除过时的
division_warning
属性。
-
sys.
float_info
¶ 保存有关浮点类型的信息的struct sequence。它包含精度和内部表示形式有关的低级别信息。这些值对应于“C”编程语言的标准头文件
float.h
中定义的各种浮点常量;有关详细信息,请参见1999 ISO / IEC C标准[C99],“浮动类型的特性”的第5.2.4.2.2节。属性 float.h 中的宏 解释 epsilon
DBL_EPSILON difference between 1 and the least value greater than 1 that is representable as a float dig
DBL_DIG 可在浮点中忠实表示的最小十进制数字位数;见下文 mant_dig
DBL_MANT_DIG float precision: the number of base- radix
digits in the significand of a floatmax
DBL_MAX 可以表示的最大有限浮点数 max_exp
DBL_MAX_EXP maximum integer e such that radix**(e-1)
is a representable finite floatmax_10_exp
DBL_MAX_10_EXP maximum integer e such that 10**e
is in the range of representable finite floatsmin
DBL_MIN 最小的规格化正浮点数 min_exp
DBL_MIN_EXP minimum integer e such that radix**(e-1)
is a normalized floatmin_10_exp
DBL_MIN_10_EXP minimum integer e such that 10**e
is a normalized floatradix
FLT_RADIX 指数表示的底 rounds
FLT_ROUNDS 表示用于算术运算的舍入模式的整数常数。这反映了解释器启动时系统FLT_ROUNDS宏的值。有关可能的值及其含义的说明,请参见C99标准的第5.2.4.2.2节。 属性
sys.float_info.dig
需要进一步解释。如果s
是任何字符串代表一个十进制数与最sys.float_info.dig
位数,然后转换为浮点数的s
和背面再一次将恢复表示相同的十进制值的字符串:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # decimal string with 15 significant digits >>> format(float(s), '.15g') # convert to float and back -> same value '3.14159265358979'
但对于超过
sys.float_info.dig
位数的字符串,并不总是正确的:>>> s = '9876543211234567' # 16 significant digits is too many! >>> format(float(s), '.16g') # conversion changes value '9876543211234568'
-
sys.
float_repr_style
¶ 一个字符串,指示对浮点数使用
repr()
函数时的行为。如果该字符串的值为'short'
,那么对于有限的浮点数x
,repr(x)
旨在产生一个字符串使其满足属性float(repr(x)) = = x
。这是Python 3.1和更高版本中的常见行为。否则,float_repr_style
具有值'legacy'
和repr(x)
的行为方式与在3.1之前的Python版本中相同。版本3.1中的新功能。
-
sys.
getallocatedblocks
()¶ 返回解释器当前分配的内存块的数量,而不考虑它们的大小。此函数主要用于跟踪和调试内存泄漏。由于解释器的内部缓存,结果可能因呼叫而异;您可能需要调用
_clear_type_cache()
和gc.collect()
才能获得更可预测的结果。如果Python构建或实现无法合理计算此信息,则
getallocatedblocks()
允许返回0。版本3.4中的新功能。
-
sys.
getcheckinterval
()¶ 返回解释器的“检查间隔”;请参见
setcheckinterval()
。自版本3.2后已弃用:改用
getswitchinterval()
。
-
sys.
getdefaultencoding
()¶ 返回当前Unicode 实现所使用的默认字符串编码的名称。
-
sys.
getdlopenflags
()¶ 返回用于
dlopen()
调用所使用的标志的当前值。标志值的符号名称可以在os
模块(RTLD_xxx
常量,例如os.RTLD_LAZY
)。可用的平台:Unix。
-
sys.
getfilesystemencoding
()¶ 返回用于将Unicode文件名转换为系统文件名的编码的名称。结果值取决于操作系统:
- 在Mac OS X上,编码是
'utf-8'
。 - 在Unix上,编码是根据nl_langinfo(CODESET)的结果的用户首选项。
- 在Windows NT +上,文件名本地是Unicode,因此不执行转换。
getfilesystemencoding()
仍然返回'mbcs'
,因为这是应用程序在将Unicode字符串转换为字符串时应使用的编码名称。 - 在Windows 9x上,编码是
'mbcs'
。
在版本3.2中更改:
getfilesystemencoding()
结果不能为None
。- 在Mac OS X上,编码是
-
sys.
getrefcount
(object)¶ 返回object的引用计数。返回的计数一般比你期望的值多一个,因为它包含
getrefcount()
参数的(临时)引用。
-
sys.
getrecursionlimit
()¶ 返回当前递归的限制也就是Python解释器堆栈最大深度的值。该限制可防止无限递归导致C堆栈溢出和Python崩溃。它可以通过
setrecursionlimit()
设置。
-
sys.
getsizeof
(object[, default])¶ 返回对象的大小,以字节为单位。该对象可以是任何类型。所有内置对象会返回正确的结果,但这并适用于第三方扩展,因为它特定于实现。
只考虑直接归因于对象的内存消耗,而不是它所引用的对象的内存消耗。
如果给出default,若对象没有提供获取其大小的方法将返回该值。否则会引发
TypeError
。getsizeof()
调用对象的__sizeof__
方法,如果该对象由垃圾回收器管理还会增加额外的垃圾回收器的开销。有关使用
getsizeof()
递归查找容器及其所有内容大小的示例,请参见配方递归大小。
-
sys.
getswitchinterval
()¶ 返回解释器的“线程切换间隔”;请参阅
setswitchinterval()
。版本3.2中的新功能。
-
sys.
_getframe
([depth])¶ 从调用堆栈返回一个 frame 对象。如果给出可选的整型depth,返回栈顶以下相应数目的帧对象。如果大于调用堆栈的深度,则引发
ValueError
。depth的默认值为零,返回调用栈顶部的帧。CPython实现细节:此函数仅用于内部和专用目的。不能保证在所有的Python实现中存在。
-
sys.
getprofile
()¶ 获取由
setprofile()
设置的profiler 函数。
-
sys.
gettrace
()¶ 获取由
settrace()
设置的跟踪函数。CPython实现细节:
gettrace()
函数仅用于实现调试器,概要分析器,覆盖工具等。其行为是执行平台的一部分,而不是语言定义的一部分,因此可能无法在所有的 Python 实现中可用。
-
sys.
getwindowsversion
()¶ 返回一个已命名的元组,描述当前正在运行的 Windows 版本。已命名的元素是major、minor、build、platform、 service_pack、 service_pack_minor、 service_pack_major、suite_mask和product_typr。service_pack包含一个字符串,而所有其他值都是整数。也可以按名称访问组件,所以
sys.getwindowsversion()[0]
等同于sys.getwindowsversion().major
。为了与以前版本的兼容性,只有前5个元素可以用索引检索。platform可以为下列值之一:
常量 平台 0 (VER_PLATFORM_WIN32s)
Win32s在Windows 3.1 1 (VER_PLATFORM_WIN32_WINDOWS)
Windows 95/98 / ME 2 (VER_PLATFORM_WIN32_NT)
Windows NT / 2000 / XP / x64 3 (VER_PLATFORM_WIN32_CE)
Windows CE product_type可以是下列值之一:
常量 含义 1 (VER_NT_WORKSTATION)
系统是一个工作站。 2 (VER_NT_DOMAIN_CONTROLLER)
系统是一个域名控制器。 3 (VER_NT_SERVER)
系统是一个服务器,但不是域名控制器。 此函数包装Win32
GetVersionEx()
函数;有关这些字段的详细信息,请参阅有关OSVERSIONINFOEX()
的Microsoft文档。可用的平台: Windows。
在版本3.2中更改:更改为命名元组,并添加了service_pack_minor,service_pack_major,suite_mask和product_type。
-
sys.
get_coroutine_wrapper
()¶ 返回
None
或由set_coroutine_wrapper()
设置的包装。版本3.5中的新功能:有关详细信息,请参阅 PEP 492。
注
此功能已临时添加(有关详细信息,请参阅 PEP 411)。仅用于调试目的。
-
sys.
hash_info
¶ 提供数字哈希实现的参数的struct sequence。有关数字类型散列的更多详细信息,请参阅Hashing of numeric types。
属性 解释 width
用于哈希值的位宽度 modulus
用于数值散列方案的质数模量P. inf
对于正无穷大返回的散列值 nan
返回的哈希值 imag
乘法器用于复数的虚部 algorithm
str,bytes和memoryview的哈希算法的名称 hash_bits
内部输出大小的哈希算法 seed_bits
哈希算法的种子密钥的大小 版本3.2中的新功能。
在版本3.4中更改:添加了算法,hash_bits和seed_bits
-
sys.
hexversion
¶ 编码成一个整数的版本号。它保证在每个版本中递增,包括对于非生产版本的适当支持。例如,若要测试 Python 解释器版本至少是1.5.2,使用:
if sys.hexversion >= 0x010502F0: # use some advanced feature ... else: # use an alternative implementation or warn the user ...
它被称为
hexversion
是因为当传递给内置的hex()
函数时它看起来才真正有意义。struct sequencesys.version_info
可用于更人性化的相同信息的编码。有关
hexversion
的更多详细信息,请参见API and ABI Versioning。
-
sys.
implementation
¶ 包含有关当前运行的Python解释器的实现的信息的对象。在所有Python实现中都需要以下属性。
name是实现的标识符,例如
'cpython'
。实际的字符串是由Python实现定义的,但它保证为小写。版本是一个命名的元组,格式与
sys.version_info
相同。它表示Python 实现的版本。这与当前运行的解释器符合的特定版本的Python 语言有不同的含义,sys.version_info
表示。例如,对于PyPy 1.8sys.implementation.version
可以是sys.version_info(1, 8, 'final', 0)
,而sys.version_info
将为version_info(2, 7, 2, 'final', 0)
。对于CPython,它们是相同的值,因为它是参考实现。hexversion是十六进制格式的实现版本,如
sys.hexversion
。cache_tag是导入机制在缓存模块的文件名中使用的标记。按照惯例,它将是实现的名称和版本的复合,如
'cpython-33'
。但是,如果适当,Python实现可以使用一些其他值。如果cache_tag
设置为None
,则表示应禁用模块高速缓存。sys.implementation
可能包含特定于Python实现的其他属性。这些非标准属性必须以下划线开头,这里不再描述。无论其内容如何,sys.implementation
在解释器运行期间以及实现版本之间都不会更改。(但是,它可能在Python语言版本之间变化。)有关详细信息,请参阅 PEP 421。版本3.3中的新功能。
-
sys.
int_info
¶ struct sequence,它保存有关Python的整数内部表示的信息。这些属性都是只读的。
属性 解释 bits_per_digit
每个数字中保存的位数。Python整数内部存储在基址 2**int_info.bits_per_digit
sizeof_digit
size in bytes of the C type used to represent a digit 版本3.1中的新功能。
-
sys.
__interactivehook__
¶ 当此属性存在时,当解释器在interactive mode中启动时,其值将自动调用(无参数)。这是在读取
PYTHONSTARTUP
文件之后完成的,因此您可以在此处设置此挂接。site
模块sets this。版本3.4中的新功能。
-
sys.
intern
(string)¶ 在“interned”字符串表中输入string,并返回内部字符串 - string本身或副本。内联字符串对于在字典查找中获得一点性能是有用的 - 如果字典中的键被内部化,并且查找键被内部化,则键比较(在散列之后)可以通过指针比较而不是字符串比较来完成。通常,Python程序中使用的名称是自动内部化的,用于保存module,class或实例属性的字典具有嵌入的键。
内置的字符串不是不朽的;您必须保留对
intern()
的返回值的引用,以便从中获益。
-
sys.
is_finalizing
()¶ 如果Python解释器shutting down,则返回
True
,否则返回False
。版本3.5中的新功能。
-
sys.
last_type
¶ -
sys.
last_value
¶ -
sys.
last_traceback
¶ 这三个变量并不总是定义的;它们在未处理异常时设置,并且解释器输出错误消息和堆栈跟踪。其用途是允许交互式用户导入一个调试器模块并参与在事后调试无需重新执行导致错误的命令。(Typical use is
import pdb; pdb.pm()
to enter the post-mortem debugger; seepdb
module for more information.)变量的含义与上述
exc_info()
中的返回值的含义相同。
-
sys.
maxsize
¶ 给出类型
Py_ssize_t
的变量的最大值的整数可以取。通常在32位平台上的2 ** 31 - 1
,并且2 ** 63 - 1
。
-
sys.
maxunicode
¶ 给出最大Unicode代码点的值的整数,即
1114111
(十六进制的0x10FFFF
)。Changed in version 3.3: Before PEP 393,
sys.maxunicode
used to be either0xFFFF
or0x10FFFF
, depending on the configuration option that specified whether Unicode characters were stored as UCS-2 or UCS-4.
-
sys.
meta_path
¶ 调用
find_spec()
方法的meta path finder列表,以查看其中一个对象是否可以找到要导入的模块。调用find_spec()
方法,至少使用要导入的模块的绝对名称。如果要导入的模块包含在包中,则父包的__path__
属性将作为第二个参数传入。如果找不到模块,该方法返回module spec或None
。请参见
importlib.abc.MetaPathFinder
- 在
meta_path
上定义finder对象的接口的抽象基类。 importlib.machinery.ModuleSpec
- 具体类
find_spec()
应返回的实例。
Changed in version 3.4: Module specs were introduced in Python 3.4, by PEP 451. 早期版本的Python寻找一个名为
find_module()
的方法。如果meta_path
条目没有find_spec()
方法,这仍然称为后备。
-
sys.
modules
¶ 它是一个字典,将模块名称映射到已加载的模块。它可以被修改来强制重新加载模块和其他技巧。然而,替换字典将不一定按预期工作,删除从字典中的必要项目可能会导致Python失败。
-
sys.
path
¶ 指定用于模块搜索路径的字符串列表。它根据环境变量
PYTHONPATH
进行初始化,再加上安装时的默认值。此列表的第一项
path[0]
,在程序启动时初始化,是包含调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果解释器被交互地调用,或者如果从标准输入读取脚本),则path[0]
是空字符串,其指示Python首先搜索当前目录中的模块。注意脚本的目录在依据PYTHONPATH
生成的结果之前 插入。一个程序可以根据它自己的目的自由地修改此列表。只有字符串和字节应添加到
sys.path
;所有其他数据类型在导入期间将被忽略。
-
sys.
path_hooks
¶ 一个可调用对象的列表,它们以一个路径为参数并为该路径创建一个finder。如果可以创建查找器,它将由可调用对象返回,否则引发
ImportError
。最初在 PEP 302中阐述。
-
sys.
path_importer_cache
¶ 一个字典,作为finder对象的缓存。字典的键是传递给
sys.path_hooks
的路径,对应的值是找到的查找器。如果路径是有效的文件系统路径,但在sys.path_hooks
上找不到finder,则会存储None
。最初在 PEP 302中阐述。
在找不到finder时,在版本3.3中更改为:
None
而不是imp.NullImporter
。
-
sys.
platform
¶ 此字符串包含一个平台标识符,可用于平台相关的组件追加到
sys.path
。对于Unix系统,除了在Linux上,这是由
uname -s
返回的低级操作系统名称,返回的版本的第一部分由附加的uname -r
'sunos5'
或'freebsd8'
,。除非你想要测试特定的系统版本,因此建议可以使用下面的用法:if sys.platform.startswith('freebsd'): # FreeBSD-specific code here... elif sys.platform.startswith('linux'): # Linux-specific code here...
对于其他的系统,这些值为:
系统 platform
值Linux 'linux'
视窗 'win32'
Windows / Cygwin 'cygwin'
Mac OS X 'darwin'
在版本3.3中更改:在Linux上,
sys.platform
不再包含主版本。它总是'linux'
,而不是'linux2'
或'linux3'
。由于较旧的Python版本包含版本号,因此建议始终使用上面提供的startswith
idiom。
-
sys.
prefix
¶ 一个字符串,提供站点特定的目录前缀,其中安装了平台独立的Python文件;默认情况下,这是字符串
'/usr/local'
。它可以在构建时通过configure脚本的--prefix
参数设置。The main collection of Python library modules is installed in the directoryprefix/lib/pythonX.Y
while the platform independent header files (all exceptpyconfig.h
) are stored inprefix/include/pythonX.Y
, where X.Y is the version number of Python, for example3.2
.注
如果virtual environment有效,则在
site.py
中更改此值以指向虚拟环境。Python安装的值仍然可用,通过base_prefix
。
-
sys.
ps1
¶ -
sys.
ps2
¶ 解释器的主提示符和次提示符。它们只在解释器的交互模式中定义。它们的初始值是
'>>> '
和'... '
。 如果一个非字符串对象被分配给任一变量,则每次解释器准备读取一个新的交互式命令时,它的str()
这可以用于实现动态提示。
-
sys.
setcheckinterval
(interval)¶ 设置解释器的"检查间隔"。此整数值决定解释器检查周期性事情的频率,比如线程切换和信号处理程序。默认值为
100
,意味着每100个Python虚拟指令执行一次检查。将其设置为一个较大的值可能会增加使用线程的应用程序的性能。将其设置为<=
0的一个值将检查每个虚拟机指令,这会最大限度地提高响应能力,同时会增加开销。自版本3.2后已弃用:此函数不再有效果,因为线程切换和异步任务的内部逻辑已重写。请改用
setswitchinterval()
。
-
sys.
setdlopenflags
(n)¶ 设置解释器调用
dlopen()
的标志,例如解释器如何加载扩展模块。除其他外,如果以sys.setdlopenflags(0)
形式调用,将使得导入模块时启用惰性解析符号。要跨扩展模块共享符号,请调用sys.setdlopenflags(os.RTLD_GLOBAL)
。标志值的符号名称可以在os
模块(RTLD_xxx
常量,例如os.RTLD_LAZY
)。可用的平台:Unix。
-
sys.
setprofile
(profilefunc)¶ 设置系统的探查函数,使你可以在Python中实现Python源代码代码探查器。更多关于Python探查器的信息请参阅The Python Profilers一章。系统探查函数的调用与系统的跟踪函数类似(见
settrace()
),但它不会为每个执行的代码行调用(仅仅是调用并返回,但是在即使设置了一个异常时仍会报告一个事件)。该函数是线程特异的,但是它无法知道线程之间切换的上下文,因此在多线程的场景下使用它是不合理的。此外,没有用到它的返回值,因此它可以简单的返回None
。
-
sys.
setrecursionlimit
(limit)¶ 设置Python解释器的堆栈最大深度为limit。该限制可防止无限递归导致C堆栈溢出和Python崩溃。
最高可能的限制取决于平台。当用户有需要深度递归的程序和支持更高限制的平台时,用户可能需要将限制设置得更高。设置时应该小心,因为太高的限制可能导致程序崩溃。
如果新限制在当前递归深度处过低,则会引发
RecursionError
异常。在版本3.5.1中更改:如果新限制在当前递归深度过低,则现在会出现
RecursionError
异常。
-
sys.
setswitchinterval
(interval)¶ 设置解释器的线程切换间隔(以秒为单位)。此浮点值确定分配给并发运行的Python线程的“时间片”的理想持续时间。请注意,实际值可以更高,特别是如果使用长期运行的内部函数或方法。此外,在间隔结束时哪个线程被调度是操作系统的决定。解释器没有自己的调度器。
版本3.2中的新功能。
-
sys.
settrace
(tracefunc)¶ 设置系统的跟踪函数,它允许你在Python中实现Python源代码调试器。函数是线程特定的;对于调试器支持多个线程,必须使用
settrace()
对每个正在调试的线程进行注册。跟踪函数应具有三个参数:frame、event 和arg。frame 是当前的堆栈帧。event 是一个字符串:
'call'
、'line'
、'return'
、'exception'
、'c_call'
、'c_return'
或'c_exception'
。arg 取决于事件类型。The trace function is invoked (with event set to
'call'
) whenever a new local scope is entered; it should return a reference to a local trace function to be used that scope, orNone
if the scope shouldn’t be traced.局部跟踪函数应返回一个自身的引用(或该范围内另一个函数来进一步追踪),如果要关闭改范围的跟踪则返回
None
。事件具有以下含义:
'call'
- 正在调用一个函数(或者进入其它代码块)。将调用全局跟踪函数;arg 为
None
;返回值表示局部跟踪函数。 'line'
- 解释器将执行一行新的代码或者重新执行循环的条件。将调用局部跟踪函数;arg 为
None
;返回值表示新的局部跟踪函数。它是如何工作的详细解释请参阅Objects/lnotab_notes.txt
。 'return'
- 有个函数(或者代码块)即将返回。将调用局部跟踪函数;arg 是即将返回的值;如果事件是由正在引发的异常引起的则返回
None
。跟踪函数的返回值将被忽略。 'exception'
- 出现了一个异常。将调用局部的跟踪函数;arg 为一个元组
(exception, value, traceback)
;返回值表示新的局部跟踪函数。 'c_call'
- 一个C函数即将被调用。这可以是扩展函数或内建。arg 为该C函数对象。
'c_return'
- 返回了C函数。arg 为该C函数对象。
'c_exception'
- C函数引发了异常。arg 为该C函数对象。
请注意,异常会依据调用方法的链传播,并在每个级别生成一个
'exception'
事件。对代码和框架对象的详细信息,请参阅The standard type hierarchy。
CPython实现细节:
settrace()
函数仅用于实现调试器,概要分析器,覆盖工具等。其行为是执行平台的一部分,而不是语言定义的一部分,因此可能无法在所有的 Python 实现中可用。
-
sys.
settscdump
(on_flag)¶ 如果on_flag为真,激活VM measurements使用奔腾时间戳计数器dump。如果on_flag处于关闭状态,则取消这些dump。该功能仅在Python以
--with-tsc
编译时可用。若要了解此转储的输出,请阅读Python源代码中的Python/ceval.c
。CPython实现细节:此函数与CPython实现细节紧密相关,因此不可能在其他地方实现。
-
sys.
set_coroutine_wrapper
(wrapper)¶ Allows intercepting creation of coroutine objects (only ones that are created by an
async def
function; generators decorated withtypes.coroutine()
orasyncio.coroutine()
will not be intercepted).包装器参数必须是:
- 接受一个参数(协程对象)的可调用方;
None
,以重置包装器。
如果调用两次,新的包装将替换前一个。该函数是线程特定的。
包装器 callable不能直接或间接定义新的协程:
def wrapper(coro): async def wrap(coro): return await coro return wrap(coro) sys.set_coroutine_wrapper(wrapper) async def foo(): pass # The following line will fail with a RuntimeError, because # ``wrapper`` creates a ``wrap(coro)`` coroutine: foo()
版本3.5中的新功能:有关详细信息,请参阅 PEP 492。
注
此功能已临时添加(有关详细信息,请参阅 PEP 411)。仅用于调试目的。
-
sys.
stdin
¶ -
sys.
stdout
¶ -
sys.
stderr
¶ stdin
用于所有交互输入(包括调用input()
);stdout
用于输出print()
和expression语句和input()
- 解释器自己的提示及其错误消息转到
stderr
。
这些流是与
open()
函数返回的常规text files。其参数选择如下:字符编码是平台相关的。在Windows下,如果流是交互式的(即,如果其
isatty()
方法返回True
),则使用控制台代码页,否则使用ANSI代码页。在其他平台下,使用区域设置编码(请参阅locale.getpreferredencoding()
)。但是在所有平台下,您可以在启动Python之前通过设置
PYTHONIOENCODING
环境变量来覆盖此值。当交互式时,标准流是行缓冲的。否则,它们像常规文本文件一样被块缓冲。您可以使用
-u
命令行选项覆盖此值。
注
要从/向标准流写入或读取二进制数据,请使用基础二进制
buffer
对象。例如,要将字节写入stdout
,请使用sys.stdout.buffer.write(b'abc')
。但是,如果你正在写一个库(并且不控制它的代码将在哪个上下文中被执行),请注意,标准流可以被像
io.StringIO
这样的类似文件的对象替换不支持buffer
属性。
-
sys.
__stdin__
¶ -
sys.
__stdout__
¶ -
sys.
__stderr__
¶ 这些对象包含程序启动时
stdin
、stderr
和stdout
的原始值。它们在销毁时用到,且可用于打印正真的标准流而无论sys.std*
对象是否被重定向。它还可以用于将实际的文件还原到已知的工作文件对象,以防它们被损坏的对象覆盖。然而,首选的办法是替换它之前明确保存上一个流然后还原保存的对象。
注
Under some conditions
stdin
,stdout
andstderr
as well as the original values__stdin__
,__stdout__
and__stderr__
can be None. 通常情况下,Windows GUI应用程序未连接到控制台,Python应用程序以pythonw开头。
-
sys.
thread_info
¶ 保存有关线程实现的信息的struct sequence。
属性 解释 name
线程实现的名称:
'nt'
: Windows threads'pthread'
: POSIX threads'solaris'
: Solaris threads
lock
锁实现的名称:
'semaphore'
: a lock uses a semaphore'mutex+cond'
: a lock uses a mutex and a condition variableNone
if this information is unknown
version
线程库的名称和版本。它是一个字符串,或 None
如果这些信息未知。版本3.3中的新功能。
-
sys.
tracebacklimit
¶ 当这个变量设置为一个整数值时,它决定未处理的异常发生时打印的追踪信息的最大数目。默认值为
1000
。设置为0
或更小时,将丢弃所有的追踪信息,只打印异常类型和值。
-
sys.
version
¶ 一个字符串,包含Python解释器的版本号以及版本号和使用的编译器的额外信息。交互式解释器启动时将显示此字符串。不用从它提取版本信息,使用
version_info
和platform
模块所提供的函数。
-
sys.
api_version
¶ 解释器的C API版本。程序员可能在调试Python和扩展模块之间的版本冲突时会发现这有用。
-
sys.
version_info
¶ 一个包含版本编号五个组件的元组:major、minor、micro、releaselevel 和serial。除releaselevel之外的所有值都是整数;释放级别是
'alpha'
,'beta'
,'candidate'
或'final'
。对应于Python版本2.0的version_info
值是(2,0,0,'final',0)
。组件也可按名称访问,所以sys.version_info[0]
就等于sys.version_info.major
等等。在版本3.1中已更改:添加了命名组件属性。
-
sys.
winver
¶ 在Windows平台上用于生成注册表项的版本号。它以字符串资源1000保存在Python DLL中。该值通常是
version
的前三个字符。它在sys
模块中提供,用于信息目的;修改此值对Python使用的注册表项没有影响。可用的平台: Windows。
-
sys.
_xoptions
¶ 通过
-X
命令行选项传递的各种特定于实现的标志的字典。选项名称或者映射到它们的值,如果明确给定,或者映射到True
。例:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}
CPython实现细节:这是一种特定于CPython的访问通过
-X
传递的选项的方法。其他实现可以通过其他手段导出它们,或者根本不导出。版本3.2中的新功能。
引文
[C99] | ISO / IEC 9899:1999。“Programming languages-C.”本标准的公开草案可在http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf获得。 |