sys
sys - 系统特定的参数和功能
该模块提供对由解释器使用或维护的一些变量以及与解释器强烈交互的函数的访问。它始终可用。
sys.argv
传递给Python脚本的命令行参数列表。 argv [0]是脚本名称(与操作系统有关,无论这是否是完整的路径名)。 如果使用解释器的-c命令行选项执行该命令,argv [0]被设置为字符串'-c'。 如果没有脚本名称被传递给Python解释器,argv [0]是空字符串。
要循环访问标准输入或命令行中给出的文件列表,请参阅文件输入模块。
sys.byteorder
本地字节顺序的指示符。 这将在big-endian(最重要的字节在前)平台上具有'big'的值,而在little-endian(最低有效字节在先)平台上将具有'小'的值。
2.0版本中的新功能。
sys.builtin_module_names
一个字符串元组,给出了编译到这个Python解释器中的所有模块的名称。 (该信息不能以其他方式提供 - modules.keys()仅列出导入的模块。)
sys.call_tracing(func, args)
调用func(*args)
,同时启用跟踪。跟踪状态被保存,并在之后恢复。这旨在从检查点的调试器调用,以递归调试其他代码。
sys.copyright
包含与Python解释器相关的版权的字符串。
sys._clear_type_cache()
清除内部类型缓存。类型缓存用于加速属性和方法查找。仅
在参考泄漏调试期间使用该函数删除不必要的引用。
该功能只能用于内部和专门用途。
2.6版本中的新功能。
sys._current_frames()
返回一个字典,该函数被调用时,将每个线程的标识符映射到当前在该线程中处于活动状态的最上面的堆栈帧。请注意,traceback
模块中的函数可以根据给定的帧构建调用堆栈。
这对于调试死锁非常有用:该函数不需要死锁线程的合作,只要这些线程的调用堆栈保持死锁状态,它们就会被冻结。在调用代码检查帧时,为非死锁线程返回的帧可能与该线程的当前活动无关。
该功能只能用于内部和专门用途。
2.5版本中的新功能。
sys.dllhandle
整数指定Python DLL的句柄。可用性:Windows。
sys.displayhook(value)
如果value不是None,则该函数将其输出到sys.stdout,并将其保存在__builtin __._中。
在评估在交互式Python会话中输入的表达式的结果上调用sys.displayhook。 这些值的显示可以通过给sys.displayhook分配另一个参数来定制。
sys.dont_write_bytecode
如果这是真的,Python不会尝试在导入源模块时编写.pyc或.pyo文件。 根据-B命令行选项和PYTHONDONTWRITEBYTECODE环境变量,此值最初设置为True或False,但您可以自行设置它以控制字节码文件生成。
2.6版本中的新功能。
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)。 它们的含义是:type获取正在处理的异常的异常类型(一个类对象); 值获取异常参数(与其关联的值或第二个引发的参数,如果异常类型是类对象,它总是一个类实例); 回溯得到一个回溯对象(参见参考手册),它在最初发生异常的地方封装了调用堆栈。
如果exc_clear()
被调用,则此函数将返回三个None
值,直到在当前线程中引发另一个异常,或者执行堆栈返回到正在处理另一个异常的帧。
Warning
将回溯返回值分配给处理异常的函数中的局部变量将导致循环引用。 这将防止在同一个函数中由局部变量引用的任何东西,或者通过垃圾收集回溯。 由于大多数函数不需要访问回溯,所以最好的解决方案是使用像exctype,value = sys.exc_info()[:2]之类的东西来仅提取异常类型和值。 如果您确实需要回溯,请确保在使用后删除它(最好使用try ... finally语句完成),或者在不处理异常的函数中调用exc_info()。
注意
从Python 2.2开始,当启用垃圾回收并且无法访问时,会自动回收这些循环,但避免创建循环仍然更有效。
sys.exc_clear()
该函数清除与当前线程中发生的当前或最后一个异常有关的所有信息。 调用此函数后,exc_info()将返回三个None值,直到在当前线程中引发另一个异常,或者执行堆栈返回到正在处理另一个异常的帧。
该功能仅在少数不明显的情况下才需要。这些包括报告最新或当前异常信息的日志记录和错误处理系统。这个函数也可以用来尝试释放资源并触发对象定型,尽管不能保证什么对象将被释放(如果有的话)。
2.3版本的新功能。
sys.exc_typesys.exc_valuesys.exc_traceback
自1.5版弃用:改为使用exc_info()
。
由于它们是全局变量,因此它们不是特定于当前线程的,因此它们在多线程程序中的使用是不安全的。 当没有异常处理时,exc_type设置为None,另外两个未定义。
sys.exec_prefix
一个字符串,其中给出了特定于站点的目录前缀,其中安装了与平台相关的Python文件; 默认情况下,这也是'/ usr / local'。 这可以在编译时使用configure脚本的--exec-prefix参数进行设置。 具体来说,所有配置文件(例如pyconfig.h头文件)都安装在目录exec_prefix / lib / pythonX.Y / config中,共享库模块安装在exec_prefix / lib / pythonX.Y / lib-dynload中,其中XY 是Python的版本号,例如2.7。
sys.executable
一个字符串,给出Python解释器的可执行二进制文件的绝对路径,在这种情况下是合理的。 如果Python无法检索到其可执行文件的真实路径,则sys.executable将为空字符串或None。
sys.exit([arg])
从Python退出。 这是通过引发SystemExit异常实现的,所以try语句的finally子句指定的清理操作得到遵守,并且可以在外层拦截退出尝试。
可选参数arg可以是一个给出退出状态的整数(默认为零)或其他类型的对象。 如果它是一个整数,零被认为是“成功终止”,并且任何非零值被shell等认为是“异常终止”。 大多数系统要求它在0-127范围内,否则会产生未定义的结果。 一些系统具有为特定退出代码分配特定含义的惯例,但这些通常是欠发达的; Unix程序通常使用2作为命令行语法错误,1使用其他类型的错误。 如果传递另一种类型的对象,则None等同于传递零,并且将其他任何对象打印到stderr并导致退出代码为1.特别是,sys.exit(“some error message”)是一种快速 发生错误时退出程序。
由于exit()
最终“唯一”引发了一个异常,它只会在主线程调用时退出进程,并且异常不会被拦截。
sys.exitfunc
该值实际上并未由模块定义,但可以由用户(或程序)设置为在程序退出时指定清理操作。 设置时,它应该是一个无参数函数。 这个函数将在解释器退出时被调用。 这种方式只能安装一个功能; 允许在终止时调用多个函数,使用atexit模块。
注意
当程序被信号终止,检测到Python致命内部错误或调用os._exit()时,不会调用exit函数。
自2.4版弃用:改为使用atexit
。
sys.flags
结构序列标志
暴露了命令行标志的状态。属性是只读的。
属性 | 标志 |
---|---|
debug | -d |
py3k_warning | -3 |
division_warning | -Q |
division_new | -Qnew |
inspect | -i |
interactive | -i |
optimize | -O or -OO |
dont_write_bytecode | -B |
no_user_site | -s |
no_site | -S |
ignore_environment | -E |
tabcheck | -t or -tt |
verbose | -v |
unicode | -U |
bytes_warning | -b |
hash_randomization | -R |
2.6版本中的新功能。
2.7.3版中的新功能:hash_randomization
属性。
sys.float_info
structseq保存关于浮点类型的信息。 它包含有关精度和内部表示的低级信息。 这些值对应于'C'编程语言标准头文件float.h中定义的各种浮点常量; 有关详细信息,请参见1999 ISO / IEC C标准[C99]的第5.2.4.2.2节“浮动类型的特性”。
属性 | float.h宏 | 说明 |
---|---|---|
epsilon | DBL_EPSILON | 1和大于1的最小值之间的差值可以表示为浮点数 |
dig | DBL_DIG | 浮点数可以忠实地表示的最大小数位数; 见下文 |
mant_dig | DBL_MANT_DIG | float precision:float的有效数中的基数小数位数 |
max | DBL_MAX | 最大可表示的有限浮点数 |
max_exp | DBL_MAX_EXP | 最大整数e,使得基数**(e-1)是可表示的有限浮点数 |
max_10_exp | DBL_MAX_10_EXP | 最大整数e,使得10 ** e处于可表示的有限浮点的范围内 |
min | DBL_MIN | 最小正归一化浮点数 |
min_exp | DBL_MIN_EXP | 最小整数e,使得基数**(e-1)是标准化的浮点数 |
min_10_exp | DBL_MIN_10_EXP | 最小整数e,使得10 ** e是标准化的浮点数 |
radix | 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'
2.6版本中的新功能。
sys.float_repr_style
一个字符串,指示repr()函数如何为浮点操作。 如果字符串的值为'short',那么对于有限的float x,repr(x)的目的是生成一个具有float(repr(x))== x属性的短字符串。 这是Python 2.7及更高版本中的常见行为。 否则,float_repr_style的值为'legacy',repr(x)的行为与在2.7之前的Python版本中的行为相同。
2.7版本的新功能。
sys.getcheckinterval()
返回解释器的“检查间隔”; 请参阅setcheckinterval()。
2.3版本的新功能。
sys.getdefaultencoding()
返回Unicode实现使用的当前默认字符串编码的名称。
2.0版本中的新功能。
sys.getdlopenflags()
返回用于dlopen()调用的标志的当前值。 标志常量在dl和DLFCN模块中定义。 可用性:Unix。
2.2版本中的新功能。
sys.getfilesystemencoding()
返回用于将Unicode文件名转换为系统文件名的编码名称,如果使用系统默认编码,则返回None。 结果值取决于操作系统:
- 在Mac OS X上,编码是
'utf-8'
。
- 在Unix上,根据nl_langinfo(CODESET)的结果,编码是用户的首选项,如果nl_langinfo(CODESET)失败,则编码为None。
- 在Windows NT +上,文件名本身是Unicode,因此不执行转换。 getfilesystemencoding()仍然返回'mbcs',因为这是应用程序在明确要将Unicode字符串转换为用作文件名时等效的字节字符串时应使用的编码。
- 在Windows 9x上,编码是
'mbcs'
。
2.3版本的新功能。
sys.getrefcount(object)
返回对象
的引用计数。返回的计数通常比您预期的要高,因为它包含(临时)getrefcount()
参考作为参数。
sys.getrecursionlimit()
返回递归限制的当前值,即Python解释器堆栈的最大深度。 此限制可防止无限递归导致C堆栈溢出并导致Python崩溃。 它可以通过setrecursionlimit()来设置。
sys.getsizeof(object[, default])
以字节为单位返回对象的大小。该对象可以是任何类型的对象。所有内置对象都会返回正确的结果,但这不一定适用于第三方扩展,因为它是特定于实现的。
如果给定,如果对象不提供检索大小的方法,将返回默认值。 否则会引发TypeError。
如果对象由垃圾收集器管理,getsizeof()将调用对象的__sizeof__方法并添加额外的垃圾回收器开销。
2.6版本中的新功能。
sys._getframe([depth])
从调用堆栈中返回一个框架对象。 如果给出了可选的整数深度,则将多个调用的帧对象返回到堆栈顶部以下。 如果这比调用栈更深,则引发ValueError。 深度的默认值为零,返回调用堆栈顶部的帧。
CPython实现细节:
该函数仅用于内部和专用目的。不能保证在Python的所有实现中都存在。
sys.getprofile()
获取由setprofile()设置的分析器功能。
2.6版本中的新功能。
sys.gettrace()
获取由settrace()设置的跟踪函数。
CPython实现细节:
该gettrace()
函数仅用于实现调试器,分析器,覆盖工具等。它的行为是实现平台的一部分,而不是语言定义的一部分,因此可能不适用于所有Python实现。
2.6版本中的新功能。
sys.getwindowsversion()
返回描述当前正在运行的Windows版本的命名元组。 指定的元素是major
, minor
, build
, platform
, service_pack
, service_pack_minor
, service_pack_major
, suite_mask
, 和product_type
.。 service_pack
包含一个字符串,而其他所有值都是整数。 组件也可以通过名称访问,所以sys.getwindowsversion()[0]等同于sys.getwindowsversion()。major
。 为了与先前版本兼容,只有前5个元素可通过索引检索。
platform
可能是以下值之一:
常量 | 平台 |
---|---|
0(VER_PLATFORM_WIN32s) | Windows 3.1上的Win32s |
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。
2.3版本的新功能。
在版本2.7中更改:更改为命名元组并添加了service_pack_minor
,service_pack_major
,suite_mask
和product_type
。
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()函数时才会看起来很有意义。 version_info值可以用于相同信息的更人性化的编码。
hexversion
是一个具有以下布局的32位数字:
位(大端顺序) | 含义 |
---|---|
1-8 | PY_MAJOR_VERSION(2.1.0a3中的2) |
9-16 | PY_MINOR_VERSION(2.1.0a3中的1) |
17-24 | PY_MICRO_VERSION(2.1.0a3中的0) |
25-28 | PY_RELEASE_LEVEL(alpha为0xA,beta为0xB,候选版本为0xC,final为0xF) |
29-32 | PY_RELEASE_SERIAL(2.1.0a3中的3,最终版本为零) |
因此2.1.0a3
是hexversion 0x020100a3
。
1.5.2版本的新功能。
sys.long_info
一个结构序列,保存有关Python整数内部表示的信息。属性是只读的。
属性 | 说明 |
---|---|
bits_per_digit | 每位数字中保存的位数。Python整数存储在内部2 ** long_info.bits_per_digit |
sizeof_digit | 用于表示数字的C类型的字节大小 |
2.7版本的新功能。
sys.last_typesys.last_valuesys.last_traceback
这三个变量并不总是被定义的; 它们在未处理异常时设置,并且解释器打印错误消息和堆栈回溯。 它们的预期用途是允许交互式用户导入调试器模块并进行事后调试,而不必重新执行导致错误的命令。 (典型用法是导入pdb; pdb.pm()以输入post-mortem debugger;有关详细信息,请参阅pdb - Python调试器一章。)
变量的含义与上述exc_info()的返回值相同。 (因为只有一个交互线程,与exc_type等不同,线程安全不是这些变量的关注点)
sys.maxint
Python的常规整数类型支持的最大正整数。 这至少是2 ** 31-1。 最大的负整数是-maxint-1 - 使用二进制补码二进制算法产生的不对称结果。
sys.maxsize
平台的Py_ssize_t类型支持的最大正整数,因此最大大小列表,字符串,字典和许多其他容器都可以拥有。
sys.maxunicode
为Unicode字符提供最大支持代码点的整数。它的值取决于配置选项,该选项指定Unicode字符是以UCS-2还是UCS-4存储。
sys.meta_path
调用find_module()方法的finder对象列表,以查看其中一个对象是否可以找到要导入的模块。 至少使用正在导入的模块的绝对名称调用find_module()方法。 如果要导入的模块包含在包中,则将父包的__path__属性作为第二个参数传入。 如果找不到该模块,该方法返回None,否则返回一个加载器。
在任何隐式默认查找器或sys.path之前搜索sys.meta_path。
原始规范参见PEP 302
。
sys.modules
这是一个将模块名称映射到已经加载的模块的字典。 这可以被操纵来强制重新加载模块和其他技巧。 请注意,从该字典中删除模块与在相应的模块对象上调用reload()不同。
sys.path
指定模块搜索路径的字符串列表。 从环境变量PYTHONPATH初始化,加上依赖于安装的默认值。
在程序启动时初始化,此列表中的第一项path [0]是包含用于调用Python解释器的脚本的目录。 如果脚本目录不可用(例如,如果解释器是交互式调用的,或者脚本是从标准输入读取的),则path [0]是空字符串,它指示Python首先搜索当前目录中的模块。 请注意,由于PYTHONPATH而插入的条目之前插入了脚本目录。
一个程序可以根据自己的目的自由修改这个列表。
在版本2.3中更改:Unicode字符串不再被忽略。
扩展内容
模块站点介绍如何使用.pth文件扩展sys.path。
sys.path_hooks
可以使用路径参数尝试为路径创建查找器的可调用列表。 如果可以创建查找器,则将由可调用对象返回,否则引发ImportError。
最初在PEP 302中
指定。
sys.path_importer_cache
作为查找器对象缓存的字典。 键是已经传递给sys.path_hooks的路径,值是找到的查找器。 如果路径是有效的文件系统路径,但在sys.path_hooks上未找到显式查找程序,则存储None以表示应使用隐式默认查找程序。 如果路径不是现有路径,则设置imp.NullImporter。
最初在PEP 302中
指定。
sys.platform
例如,该字符串包含一个平台标识符,可用于将特定于平台的组件添加到sys.path。
对于大多数Unix系统,这是由uname -s返回的小型操作系统名称,其版本的第一部分由uname -r返回,例如, 'sunos5',当时是Python的建立。 除非您想测试特定的系统版本,否则建议使用以下习惯用法:
if sys.platform.startswith('freebsd'):
# FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
# Linux-specific code here...
在版本2.7.3中更改:由于许多代码检查sys.platform =='linux2',并且在Linux 2.x和3.x之间没有必要的更改,所以sys.platform始终设置为'linux2',甚至 在Linux 3.x上。 在Python 3.3及更高版本中,该值将始终设置为'linux',因此建议始终使用上面提供的startswith惯用语。
对于其他系统,其值为:
系统 | 平台值 |
---|---|
Linux (2.x and 3.x) | 'linux2' |
Windows | 'win32' |
Windows/Cygwin | 'cygwin' |
Mac OS X | 'darwin' |
OS/2 | 'os2' |
OS/2 EMX | 'os2emx' |
RiscOS | 'riscos' |
AtheOS | 'atheos' |
扩展内容
os.name具有较粗的粒度。 os.uname()给出系统相关的版本信息。
该platform
模块提供了系统身份的详细检查。
sys.prefix
一个字符串,它给出了特定于站点的目录前缀,其中安装了与平台无关的Python文件; 默认情况下,这是字符串'/ usr / local'。 这可以在编译时使用configure脚本的--prefix参数来设置。 Python库模块的主要集合安装在目录前缀/ lib / pythonX.Y中,而独立于平台的头文件(除pyconfig.h外)都存储在前缀/ include / pythonX.Y中,其中XY是版本号 Python,例如2.7。
sys.ps1sys.ps2
指定解释器的主要和次要提示的字符串。 这些仅在解释器处于交互模式时才被定义。 他们在这种情况下的初始值是'>>>'和'...'。 如果将非字符串对象分配给任一变量,则每次解释器准备读取新的交互式命令时,都会重新评估其str(); 这可以用来实现动态提示。
sys.py3kwarning
Bool包含Python 3警告标志的状态。 当Python以-3选项启动时,它为True。 (这应该被认为是只读的;将其设置为不同的值不会影响Python 3的警告。)
2.6版本中的新功能。
sys.setcheckinterval(interval)
设置解释器的“检查间隔”。 此整数值决定解释器检查周期性事件的频率,例如线程切换和信号处理程序。 默认值为100,这意味着检查每100个Python虚拟指令执行。 将其设置为更大的值可能会增加使用线程的程序的性能。 将其设置为<= 0的值会检查每条虚拟指令,从而最大限度地提高响应和开销。
sys.setdefaultencoding(name)
设置Unicode实现使用的当前默认字符串编码。 如果名称与任何可用的编码不匹配,则会引发LookupError。 此功能仅供站点模块实施以及在需要时由sitecustomize使用。 一旦被站点模块使用,它就会从sys模块的名称空间中删除。
2.0版本中的新功能。
sys.setdlopenflags(n)
设置解释器用于dlopen()调用的标志,例如解释器何时加载扩展模块。 除此之外,如果调用sys.setdlopenflags(0),将导致在导入模块时延迟解析符号。 要通过扩展模块共享符号,请调用sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)。 标志模块的符号名称可以在dl模块或DLFCN模块中找到。 如果DLFCN不可用,可以使用h2py脚本从/usr/include/dlfcn.h生成。 可用性:Unix。
2.2版本中的新功能。
sys.setprofile(profilefunc)
设置系统的配置文件功能,它允许您在Python中实现Python源代码分析器。 有关Python分析器的更多信息,请参阅Python Profiler一章。 系统的配置文件函数与系统的跟踪函数类似(请参阅settrace()),但不会为每个已执行的代码行调用(仅在调用和返回时调用,但即使发生异常也会报告返回事件 组)。 该函数是线程特定的,但探查器没有办法知道线程之间的上下文切换,所以在多线程的情况下使用它是没有意义的。 而且,它的返回值没有被使用,所以它可以简单地返回None。
sys.setrecursionlimit(limit)
将Python解释器堆栈的最大深度设置为限制
。此限制
可防止无限递归导致C堆栈溢出并导致Python崩溃。
尽可能高的限制取决于平台。当用户需要深度递归的程序和支持更高限制的平台时,用户可能需要将限制设置得更高。这应该谨慎处理,因为太高的限制可能会导致崩溃。
sys.settrace(tracefunc)
设置系统的跟踪功能,它允许你在Python中实现一个Python源代码调试器。 该函数是特定于线程的; 为了使调试器支持多线程,必须使用settrace()为正在调试的每个线程进行注册。
跟踪函数应该有三个参数:frame,event和arg。 帧是当前的堆栈帧。 事件是一个字符串:'call','line','return','exception','c_call','c_return'或'c_exception'。 参数取决于事件类型。
只要输入新的本地范围,就会调用跟踪功能(事件设置为“调用”); 它应该返回一个对使用该范围的本地跟踪函数的引用,或者如果不应跟踪范围,则返回None。
局部跟踪函数应该返回一个对自身的引用(或者在该范围内进一步跟踪的另一个函数),或者无需关闭该范围内的跟踪。
这些事件具有以下含义:
'call'函数被调用(或者其他一些代码块被输入)。全局跟踪功能被调用; arg是None;返回值指定本地跟踪函数。'line'解释器即将执行一行新的代码或重新执行循环的条件。局部跟踪功能被调用; arg是None;返回值指定新的本地跟踪功能。请参阅Objects / lnotab_notes.txt以获得详细的解释。返回函数(或其他代码块)即将返回。局部跟踪功能被调用; arg是要返回的值,如果事件是由引发异常引起的,则为无。 trace函数的返回值被忽略。'exception'发生异常。局部跟踪功能被调用; arg是一个元组(异常,值,追溯);返回值指定新的本地跟踪函数。'c_call'C函数即将被调用。这可能是一个扩展功能或内置。 arg是C函数对象.'c_return'C函数已经返回。 arg是C函数对象。'c_exception'C函数引发了一个异常。 arg是C函数对象。
请注意,当一个异常传播到调用者链中时,会在每个级别生成一个“异常”事件。
有关代码和框架对象的更多信息,请参阅标准类型层次结构。
CPython实现细节:settrace()函数仅用于实现调试器,分析器,覆盖工具等。 它的行为是实现平台的一部分,而不是语言定义的一部分,因此可能不适用于所有Python实现。
sys.settscdump(on_flag)
如果on_flag为true,则使用Pentium时间戳计数器激活VM测量结果的转储。 如果on_flag关闭,则停用这些转储。 该功能仅在Python使用--with-tsc编译时才可用。 要理解这个转储的输出,请阅读Python源文件中的Python / ceval.c。
2.4版本中的新功能。
CPython实现细节:
该函数与CPython实现细节密切相关,因此不可能在别处实现。
sys.stdinsys.stdoutsys.stderr
文件对象对应于解释器的标准输入,输出和错误流。 stdin用于除脚本之外的所有解释器输入,但包括对input()和raw_input()的调用。 stdout用于输出打印和表达式语句以及input()和raw_input()的提示。 解释器自己的提示和(几乎所有的)错误信息将发送到stderr。 stdout和stderr不需要内置文件对象:只要它有一个接受字符串参数的write()方法,任何对象都是可以接受的。 (更改这些对象不会影响由os.popen(),os.system()或os模块中的exec *()系列函数执行的标准I / O流)。
sys.__stdin__sys.__stdout__sys.__stderr__
这些对象包含程序开始时的stdin,stderr和stdout的原始值。 它们在定稿过程中使用,无论sys.std *对象是否被重定向,都可以用于打印到实际的标准流。
它也可用于将实际文件恢复到已知工作文件对象,以防被已损坏的对象覆盖。但是,执行此操作的首选方法是在替换之前显式保存前一个流,然后恢复保存的对象。
sys.subversion
表示Python解释器的Subversion信息的三元组(repo,branch,version)。 repo是存储库的名称,'CPython'。 分支是形式'trunk','branches / name'或'tags / name'之一的字符串。 version是svnversion的输出,如果解释器是从Subversion签出的; 它包含版本号(范围),如果存在本地修改,可能会包含尾随'M'。 如果树已导出(或者svnversion不可用),则它是Include / patchlevel.h的修订版,如果分支是标记。 否则,它是无。
2.5版本中的新功能。
注意
Python现在使用Mercurial开发。 在最新的Python 2.7 bug修订版本中,subversion因此包含占位符信息。 它在Python 3.3中被删除。
sys.tracebacklimit
当此变量设置为整数值时,它确定发生未处理的异常时打印的追溯信息的最大级别数。 默认值为1000.设置为0或更小时,所有回溯信息都会被抑制,只会打印异常类型和值。
sys.version
一个字符串,其中包含Python解释器的版本号以及所使用的内部版本号和编译器的附加信息。 交互式解释器启动时显示该字符串。 不要从中提取版本信息,而是使用version_info和平台模块提供的功能。
sys.api_version
此解释器的C API版本。在调试Python和扩展模块之间的版本冲突时,程序员可能会觉得这很有用。
2.3版本的新功能。
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等。
2.0版本中的新功能。
版本2.7中已更改:添加了命名组件属性
sys.warnoptions
这是警告框架的实施细节; 不要修改这个值。 有关警告框架的更多信息,请参阅警告模块。
sys.winver
用于在Windows平台上形成注册表项的版本号。 这将作为字符串资源1000存储在Python DLL中。 该值通常是版本的前三个字符。 它在sys模块中提供以供参考; 修改此值不会影响Python使用的注册表项。 可用性:Windows。
引文
C99 | ISO / IEC 9899:1999。“编程语言 - C”。该标准的公共草案可在http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf获得。 |
---|