– 特定于系统的参数和函数 – Python运行时服务(Python教程)(参考资料)
sys
– 系统特定的参数和功能
该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它总是可用的
sys.
argv
-
传递给Python脚本的命令行参数列表。
argv[0]
是脚本名称(依赖于操作系统是否为完整路径名)。如果使用-c
命令行选项解释器,argv[0]
设置为字符串"-c"
。如果没有脚本名称传递给Python解释器,argv[0]
是空字符串.要循环标准输入或命令行上给出的文件列表,请在运行
fileinput
之前的Ipython启动期间查看
sys.
base_exec_prefix
-
module.
site.py
Set与exec_prefix
。如果没有在虚拟环境中运行,则值保持不变;如果site.py
发现正在使用虚拟环境,则prefix
和exec_prefix
将被更改为指向虚拟环境,而base_prefix
和base_exec_prefix
将继续指向基础Python安装(创建虚拟环境的安装).版本3.3中的新功能
sys.
base_prefix
-
在Python启动期间,在
site.py
运行之前设置为与prefix
相同的值。如果没有在虚拟环境中运行,价值将保持不变;如果site.py
发现虚拟环境有用,prefix
和exec_prefix
的值将被改为topoint到虚拟环境,而base_prefix
和base_exec_prefix
将继续指向基础Python安装(创建虚拟环境的安装).版本3.3.
sys.
byteorder
-
本机字节顺序的指示符。这将具有值
"big"
onbig-endian(最重要的字节优先)平台,以及"little"
onlittle-endian(最不重要的字节优先)平台.
sys.
builtin_module_names
-
一个字符串元组,给出了编译到thisPython解释器中的所有模块的名称。(此信息不以任何其他方式提供 –
modules.keys()
仅列出导入的模块。)
sys.
copyright
-
包含与Python解释器有关的版权的字符串.
sys.
_clear_type_cache
()-
清除内部类型缓存。类型缓存用于加速属性和方法查找。使用函数only在参考泄漏调试时删除不必要的引用.
此功能仅供内部和专业用途使用.
sys.
_current_frames
( )-
返回一个字典,将每个线程的标识符映射到调用该函数时该线程中当前活动的最顶层堆栈帧。注意
traceback
模块可以构建调用堆栈给出这样的框架.这对于调试死锁非常有用:这个函数不需要解锁线程的协作,并且这些线程的调用堆栈会被冻结一段时间,因为它们会保持死锁状态。对于非死锁线程返回的帧可能在调用代码检查帧时与该线程的当前活动无关.
此功能仅用于内部和专门用途.
sys.
breakpointhook
()-
这个钩子函数由内置
breakpoint()
。默认情况下,它会让你进入pdb
调试器,但它可以设置为任何其他功能,以便您可以选择使用哪个调试器.该函数的签名取决于它所调用的内容。例如,默认绑定(例如
pdb.set_trace()
期望没有参数,但你可以将它绑定到一个需要额外参数(位置和/或关键字)的函数。内置breakpoint()
功能*args
和**kws
直截了当的。无论breakpointhooks()
返回是从breakpoint()
.返回的默认实现首先参考环境变量
PYTHONBREAKPOINT
。如果设置为"0"
则此函数立即返回;即它是一个无操作。如果未设置环境变量,或者设置为空字符串,则调用pdb.set_trace()
。否则,此变量应使用Python的dotted-import命名法命名要运行的函数,例如:package.subpackage.module.function
。在这种情况下,package.subpackage.module
将被导入,结果模块必须有一个名为function()
的可调用对象。这是运行,传入*args
和**kws
,无论function()
返回,sys.breakpointhook()
返回内置的breakpoint()
函数。请注意,如果在导入由
PYTHONBREAKPOINT
命名的可调用对象时出现问题,则报告RuntimeWarning
并忽略断点.还要注意,如果
sys.breakpointhook()
以编程方式覆盖,PYTHONBREAKPOINT
是not咨询新版本3.7.
sys.
_debugmallocstats
()-
向stderr打印关于CPython内存分配器状态的低级信息.
如果Python配置为-with-pydebug,它还会执行一些昂贵的内部一致性检查.
新版本3.3.
CPython实现细节:此函数特定于Python。这里没有定义确切的输出格式,可能会改变.
sys.
dllhandle
-
指定Python DLL的句柄.
Availability:Windows.
sys.
displayhook
(value)-
如果value不是
None
,此功能打印repr(value)
至sys.stdout
,并保存value在builtins._
。如果repr(value)
不能编码到sys.stdout.encoding
用sys.stdout.errors
错误处理程序(可能是"strict"
),编码为sys.stdout.encoding
用"backslashreplace"
错误处理程序sys.displayhook
调用表达式的结果在交互式Python会话中输入。通过为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中更改:使用
"backslashreplace"
上的错误处理程序UnicodeEncodeError
.
sys.
dont_write_bytecode
-
如果这是真的,Python将不会尝试写
.pyc
源模块的导入文件。该值最初设置为True
要么False
取决于-B
命令行选项和PYTHONDONTWRITEBYTECODE
环境变量,但你可以设置ityourself来控制字节码文件的生成.
sys.
excepthook
(type, value, traceback)-
当异常被提出并且未被捕获时,解释器会调用
sys.excepthook
有三个参数,异常类,exceptioninstance和traceback对象。在交互式会话中,这种情况恰好在控制返回到提示之前发生;在Python程序中,这会在程序退出之前发生。通过为sys.excepthook
.
sys.
__breakpointhook__
sys.
__displayhook__
sys.
__excepthook__
-
这些对象在程序开头包含
breakpointhook
,displayhook
和excepthook
的原始值。它们被保存以便breakpointhook
,displayhook
和excepthook
可以恢复,以防它们碰巧被破损或替代物体取代.新版本3.7:__breakpointhook __
sys.
exc_info
()-
此函数返回三个值的元组,这些值提供有关当前正在处理的异常的信息。返回的信息特定于当前线程和当前堆栈帧。如果当前堆栈帧未处理异常,则从调用堆栈帧或其调用者获取信息,依此类推,直到找到处理异常的堆栈帧为止。这里,“处理异常”被定义为“executionan except子句。”对于任何堆栈帧,只能访问有关当前处理的异常的信息.
如果堆栈中的任何地方都没有异常处理,则为元组包含三个
None
值。否则,返回的值是(type, value, traceback)
。它们的意思是:type获取正在处理的异常类型(BaseException
的子类);value获取异常实例(异常类型的实例);tracebackgetsa traceback对象(参见参考手册),它将callstack封装在最初发生异常的位置.
sys.
exec_prefix
-
给出特定于站点的目录前缀的字符串,其中安装了platform-dependentPython文件;默认情况下,这也是
"/usr/local"
。这可以在构建时设置--exec-prefix
对配置脚本。具体来说,所有配置文件(例如pyconfig.h
头文件)安装在目录exec_prefix/lib/pythonX.Y/config
,共享库模块安装在exec_prefix/lib/pythonX.Y/lib-dynload
,X.Y是Python的版本号,例如3.2
.注意
如果一个 虚拟环境实际上,此值将在
site.py
指向虚拟环境。通过base_exec_prefix
.
sys.
executable
-
一个字符串,给出Python解释器的可执行二进制文件的绝对路径,在有意义的系统上。如果Python无法检索其可执行文件的真实路径,
sys.executable
将是一个空的字符串None
.
sys.
exit
( [arg] )-
退出Python。这是通过引发
SystemExit
异常来实现的,所以try
语句的finally子句指定的清理动作都得到了尊重,并且可以拦截外层的退出尝试.可选参数arg可以是一个给出退出状态(默认为零)的整数,或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值被贝壳等视为“异常终止”。大多数系统要求它在0-127范围内,否则会产生不确定的结果。有些系统具有为特定退出代码指定特定含义的约定,但这些通常不发达;Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误。如果传递了另一种类型的对象,
None
相当于传递零,并且任何其他对象都被打印到stderr
退出代码为1.特别是sys.exit("some error message")
是一个在发生错误时退出程序的快捷方式.自
exit()
最终“only”引发异常,它只会在从主线程调用时退出进程,异常不会被截获.在版本3.6中更改:如果在Python解释器捕获到
SystemExit
之后清理中发生错误(例如错误刷新缓冲数据的标准流),退出状态将更改为120.
sys.
flags
-
结构序列 flags公开命令行标志的状态。属性是只读的.
属性 旗 debug
-d
inspect
-i
interactive
-i
isolated
-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
dev_mode
-X
dev
utf8_mode
-X
utf8
在版本3.2中更改:添加
quiet
新的属性-q
标志新版本3.2.3:
hash_randomization
属性更改版本3.3:删除过时
division_warning
属性更改版本3.4:添加了
isolated
-I
isolated
flag.更改版本3.7:添加了
dev_mode
属性为新的-X
dev
flagandutf8_mode
属性为新的-X
utf8
flag.
sys.
float_info
-
A 结构序列保存有关浮动类型的信息。它包含有关精度和内部表示的低级信息。这些值对应于标准头文件中定义的各种浮点常量
float.h
用于’C’程序设计语言;详见1999年ISO / IEC C标准[C99]第5.2.4.2.2节,“浮动类型的特征”.attribute float.h宏 说明 epsilon
DBL_EPSILON 介于1和最大值之间的差值大于1可表示为浮点 dig
DBL_DIG 可以在浮点数中表示的最大小数位数;见下面 mant_dig
DBL_MANT_DIG 浮动精度:浮点数 radix
数字浮点数max
DBL_MAX 最大可表示有限浮点数 max_exp
DBL_MAX_EXP 最大整数e使 radix**(e-1)
可表示有限浮点数max_10_exp
DBL_MAX_10_EXP 最大整数e使得 10**e
在可表示的有限浮点范围内min
DBL_MIN 最小正规范化浮点数 min_exp
DBL_MIN_EXP 最小整数这样 radix**(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
转换为afloat并再次返回将恢复表示相同decimalvalue的字符串:>>> import sys>>> sys.float_info.dig15>>> 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()
函数表现为forfloats。如果字符串有值"short"
那么对于finitefloatx
,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.
getandroidapilevel
()-
以整数形式返回Android的构建时API版本.
Availability:Android.
新版本3.7.
sys.
getcheckinterval
()-
返回解释器的“检查间隔”;看
setcheckinterval()
.从版本3.2开始不推荐使用:使用
getswitchinterval()
代替
sys.
getdefaultencoding
()-
返回当前使用的默认字符串编码的名称通过Unicodeimplementation.
sys.
getfilesystemencoding
()-
返回用于在Unicode文件名和字节文件名之间进行转换的编码名称。为了获得最佳兼容性,在所有情况下都应该使用str作为文件名,尽管也支持将文件名表示为bytesis。接受或返回文件名的函数应该支持str或bytes,并在内部转换为系统的首选代表.
这种编码总是与ASCII兼容的.
os.fsencode()
和os.fsdecode()
应该用来确保使用正确的编码和错误模式.- 在UTF-8模式下,编码在任何平台上都是
utf-8
. - 在Mac OS X上,编码是
"utf-8"
. - 在Unix上,编码是语言环境编码。
- 在Windows上,编码可能是
"utf-8"
或"mbcs"
,具体取决于用户配置.
更改版本3.2:
getfilesystemencoding()
结果不能是None
再来.在版本3.6中更改: Windows不再保证返回
"mbcs"
。见 PEP 529 和_enablelegacywindowsfsencoding()
了解更多信息.改版3.7:返回’utf-8’inUTF-8模式.
- 在UTF-8模式下,编码在任何平台上都是
sys.
getfilesystemencodeerrors
()-
返回用于在Unicode文件名和字节文件名之间进行转换的错误模式的名称。编码名称从
getfilesystemencoding()
.os.fsencode()
和os.fsdecode()
返回,应该用来确保使用正确的编码和错误模式.新版本3.6.
sys.
getrefcount
(object)-
返回object的引用计数。返回的计数通常比您预期的要高一些,因为它包含(临时)引用作为
getrefcount()
.
sys.
getrecursionlimit
()-
返回递归限制的当前值,即Python解释器堆栈的最大深度。此限制可防止无限递归导致C堆栈的溢出并导致Python崩溃。它可以通过
setrecursionlimit()
.
sys.
getsizeof
(object [, default] )-
以字节为单位返回对象的大小。对象可以是任何类型的对象。所有内置对象都将返回正确的结果,但是这不必适用于第三方扩展,因为它是特定于实现的.
只记录直接归因于对象的内存消耗,而不是它所引用的对象的内存消耗.
如果给出,default如果对象没有提供恢复大小的方法,则将返回。否则
TypeError
会被提出来getsizeof()
调用对象的__sizeof__
如果对象由garbagecollector.有关使用
getsizeof()
递归地找到容器及其所有内容的大小.
sys.
getswitchinterval
()-
返回解释器的“线程切换间隔”;看
setswitchinterval()
.版本3.2.
sys.
_getframe
( [depth])-
从调用堆栈返回一个框架对象。如果可选的整数depth isgiven,则返回多次调用堆栈顶部下方的框架对象。如果比调用堆栈更深,
ValueError
被提出来了。depth的默认值为零,返回调用堆栈顶部的框架.CPython实现细节:此函数仅用于内部和专门用途。不保证在Python的所有实现中都存在.
sys.
getprofile
()-
获取
setprofile()
.
sys.
gettrace
()-
获取
settrace()
.设置的跟踪功能CPython实现细节:
gettrace()
函数仅用于实现调试器,分析器,覆盖工具等。它的行为是实现平台的一部分,而不是语言定义的一部分,并且可能在所有Python实现中都不可用.
sys.
getwindowsversion
()-
返回一个命名元组描述当前正在运行的Windows版本。命名元素是major, minor,build, platform, service_pack, service_pack_minor,service_pack_major, suite_mask, product_type和platform_version. service_pack包含一个字符串,platform_version是一个3元组,所有其他值都是整数。组件也可以通过名称访问,所以
sys.getwindowsversion()[0]
相当于sys.getwindowsversion().major
。为了与先前版本兼容,只有前5个元素可以通过索引来检索.platform将是
2 (VER_PLATFORM_WIN32_NT)
.product_type可能是以下值之一:
常量 含义 1 (VER_NT_WORKSTATION)
系统是工作站. 2 (VER_NT_DOMAIN_CONTROLLER)
系统是域控制器. 3 (VER_NT_SERVER)
系统是服务器,但不是域控制器. 这个功能包装Win32
GetVersionEx()
功能;有关这些字段的详细信息,请参阅OSVERSIONINFOEX()
上的Microsoft文档.platform_version返回当前操作系统的准确主要版本,次要版本和构建号,而不是为该过程模拟的版本。它用于记录特征检测.
可用性:Windows.
更改为版本3.2:更改为已命名的元组并添加了service_pack_minor,service_pack_major, suite_mask和product_type.
已更改版本3.6:添加platform_version
sys.
get_asyncgen_hooks
()-
返回asyncgen_hooks对象,类似于
namedtuple
的形式(firstiter,finalizer),其中firstiter和finalizer是预期的是None
或者是异步生成器迭代器作为参数,用于通过事件循环计划异步生成器的最终化.新版本3.6:见PEP 525 更多细节。
注意
此功能已临时添加(请参阅PEP 411 详情。)
sys.
get_coroutine_origin_tracking_depth
()-
获取当前的协程源跟踪深度,由
set_coroutine_origin_tracking_depth()
.设置为3.7.
Note
这个功能是临时添加的(见 PEP 411 有关详细信息。)仅用于调试目的.
sys.
get_coroutine_wrapper
()-
返回
None
,或由set_coroutine_wrapper()
.版本3.5中的新功能:见PEP 492 更多细节。
注意
此功能已临时添加(请参阅PEP 411 有关详细信息。)仅用于调试目的.
从版本3.7开始不推荐使用:协程包装器功能已被弃用,将在3.8中删除。详情请见bpo-32591 .
sys.
hash_info
-
一个 结构序列给出数字hashimplementation的参数。有关数值类型哈希的更多详细信息,请参阅哈希数值类型.
属性 说明 width
用于哈希值的位宽度 modulus
素数模数P用于数字哈希方案 inf
哈希值返回正无穷大 nan
为 @返回哈希值 imag
用于复数的虚部的乘数 algorithm
用于散列str,bytes和memoryview的算法的名称 hash_bits
哈希算法的内部输出大小 seed_bits
哈希算法的种子密钥的大小 版本3.2.
版本3.4更改:添加 algorithm, 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()
函数才真正有意义。结构序列sys.version_info
可以用来对相同信息进行更人性化的编码.
sys.
implementation
-
一个对象,包含有关当前运行的Python解释器的实现的信息。在所有Python实现中都需要以下属性.
name是实现的标识符,例如,
"cpython"
。实际字符串由Python实现定义,但保证低于case.version是一个命名元组,格式与
sys.version_info
相同。它代表了Python implementation的版本。这与当前运行的解释器符合的Python language的特定版本具有明显的含义,sys.version_info
表示。例如,对于PyPy 1.8sys.implementation.version
可能是sys.version_info(1, 8, 0, "final", 0)
,而sys.version_info
将是sys.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
-
一个 结构序列它包含有关Python内部整数表示的信息。属性是只读的.
属性 说明 bits_per_digit
每个数字中保持的位数。Python整数内部存储在基础 2**int_info.bits_per_digit
sizeof_digit
大小(以C字节为单位),用于表示数字 新版本3.1.
sys.
__interactivehook__
-
当该属性存在时,当在交互模式中启动解释器时,将自动调用其值(无需参数)。这是在
PYTHONSTARTUP
文件被读取之后完成的,因此您可以在那里设置此挂钩。site
模块设置.版本3.4.
sys.
intern
(string)-
输入string在“interned”字符串表中并返回实习字符串 – 这是string本身或副本。实习字符串对于在字典查找中获得较低的性能很有用 – 如果字典中的键被中断,并且查找键被实现,则可以通过指针比较而不是字符串比较来完成键比较(在散列之后)。通常情况下,Python程序中使用的名称会自动实现,并且用于保存模块,类或实例属性的字典具有实习键.
交叉字符串不是永久性的;你必须提到
intern()
的返回值,以便从中受益.
sys.
is_finalizing
()-
返回
True
如果Python解释器是关闭,False
否则新版本3.5.
sys.
last_type
sys.
last_value
sys.
last_traceback
-
这三个变量并不总是被定义;它们在未处理异常并且解释器打印错误消息和堆栈追溯时设置。它的用途是允许交互式用户导入调试器模块并进行事后调试,而不必重新执行导致该错误的命令。错误。(典型用途是
import pdb; pdb.pm()
进入验尸调试器;请参阅pdb
模块以获取更多信息。)变量的含义与上面
exc_info()
的返回值的含义相同.
sys.
maxsize
-
一个整数,给出最大值为
Py_ssize_t
cantake类型的变量。它通常是2**31 - 1
在32位平台上2**63 - 1
在64位平台上
sys.
maxunicode
-
给出最大Unicode代码点值的整数,即。
1114111
(0x10FFFF
十六进制).改版3.3:之前PEP 393 ,
sys.maxunicode
曾经是0xFFFF
要么0x10FFFF
,取决于指定的Unicode配置文件是否存储为UCS-2或UCS-4的配置选项.
sys.
meta_path
-
的列表 meta path finder 那些有
find_spec()
调用的方法是查看其中一个对象是否可以找到要导入的模块。该find_spec()
使用至少要导入的模块的绝对名称调用方法。如果要导入的模块包含在一个包中,那么父包的__path__
属性作为第二个参数传入。该方法返回模块规格, 要么None
如果找不到模块的话也可以看看
importlib.abc.MetaPathFinder
- 定义
meta_path
. importlib.machinery.ModuleSpec
- 的具体课
find_spec()
应该返回的实例.
版本3.4更改:模块规格在PHP 3.4中引入,PEP 451 。早期版本的Python寻找一个名为
find_module()
。如果meta_path
进入没有find_spec()
方法。
sys.
modules
-
这是一个将模块名称映射到已经加载的模块的字典。这可以被操纵以强制重新加载模块和其他技巧。但是,替换字典不一定按预期工作,从字典中删除必要项可能导致Python失败.
sys.
path
-
指定搜索的字符串列表模块的路径。从环境变量
PYTHONPATH
初始化,加上一个安装 – 依赖默认值在程序启动时初始化,该列表的第一项
path[0]
是包含脚本的目录用于调用Python解释器。如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本),则path[0]
是空字符串,它指示Python首先搜索当前目录中的模块。请注意,插入脚本目录before由于PYTHONPATH
.程序可以自行修改此列表。只应将字符串和字节添加到
sys.path
;导入过程中所有其他数据类型都被标记参见
模块
site
这描述了如何使用.pth文件来扩展sys.path
.
sys.
path_hooks
-
一个带有路径参数的callables列表,试图创建一个 finder 为了这条路。如果可以创建一个取景器,它可以被赎回,或者提升
ImportError
.最初在PEP 302 .
sys.
path_importer_cache
-
作为发现者对象。键是已传递给
sys.path_hooks
的路径,值是找到的查找器。如果路径是有效的文件系统路径,但在sys.path_hooks
上找到nofinder则None
isstored。最初在PEP 302 .
改版3.3:
None
存储而不是imp.NullImporter
没找到finderis时
sys.
platform
-
该字符串包含一个平台标识符,可用于将平台特定的组件追加到
sys.path
,例如对于Unix系统,除了在Linux上,这是由
uname -s
返回的小写操作系统名称,其中附带的uname -r
返回的版本的第一部分,例如,"sunos5"
要么"freebsd8"
, at the timewhen Python was built。除非您想测试特定的系统版本,否则建议使用以下习惯用法:if sys.platform.startswith("freebsd"): # FreeBSD-specific code here...elif sys.platform.startswith("linux"): # Linux-specific code here...
对于其他系统,值为:
系统 platform
值Linux "linux"
Windows "win32"
Windows / Cygwin "cygwin"
Mac OS X "darwin"
sys.
prefix
-
一个字符串给出了特定于站点的目录前缀安装了platformindependent Python文件;默认情况下,这是字符串
"/usr/local"
//。这可以在构建时设置--prefix
参数配置脚本。Pythonlibrary模块的主要集合安装在目录prefix/lib/pythonX.Y
中,而平台独立的头文件(除pyconfig.h
之外的所有文件)都存放在prefix/include/pythonX.Y
中,其中X.Y是Python的版本号,例如3.2
.注意
如果一个 虚拟环境实际上,此值将在
site.py
指向虚拟环境。Python安装的值仍然可用,通过base_prefix
.
sys.
ps1
sys.
ps2
-
指定解释器的主要和辅助提示的字符串。仅在解释器处于交互模式时才定义这些。在这种情况下,他们的初始值是
">>> "
和"... "
。如果将非字符串对象分配给任一变量,则每次解释器准备读取新的交互式命令时,都会重新评估其str()
;这可以用来实现动态提示.
sys.
setcheckinterval
(interval)-
设置解释器的“检查间隔”。此整数值确定解释器检查周期性事物(如线程切换和信号处理程序)的方式。默认值为
100
,表示每100Python虚拟指令执行一次检查。将其设置为更大的值可以提高使用线程的程序的性能。将其设置为值<=
0 checksevery虚拟指令,最大化响应性和开销.自版本3.2:后重新执行此功能不再有效,作为内部逻辑,刚读取的切换和异步任务已被重写。使用
setswitchinterval()
代替
sys.
setdlopenflags
(n)-
设置翻译所使用的标志
dlopen()
来电,例如翻译时加载扩展模块。除此之外,这将在导入模块时启用符号解析,如果调用sys.setdlopenflags(0)
。要在扩展模块之间共享符号,请调用sys.setdlopenflags(os.RTLD_GLOBAL)
。可以在os
module(RTLD_xxx
常数,例如os.RTLD_LAZY
).可用性:Unix .
sys.
setprofile
(profilefunc)-
设置系统的配置文件功能,允许您在Python中实现Python源代码分析器。有关thePython探查器的更多信息,请参见章节 Python Profilers 。系统的配置文件函数的调用类似于系统的跟踪函数(参见
settrace()
),但它使用不同的事件调用,例如,不会为每个执行的代码行调用它(仅在调用和返回时调用,但是即使已设置异常,也会报告返回事件)。函数是特定于线程的,但是探查器无法知道在线程之间的上下文切换,因此在存在多个线程时使用它是没有意义的。此外,它的返回值没有使用,所以它可以简单地返回None
。profileof中的错误会导致自身未设置.配置文件函数应该有三个参数:frame, event和arg. frame是当前的堆栈帧。event是一个字符串:
"call"
,"return"
,"c_call"
,"c_return"
, 要么"c_exception"
. arg取决于事件类型.这些事件具有以下含义:
sys.
setrecursionlimit
(limit)-
将Python解释器堆栈的最大深度设置为limit。这个限制防止无限递归导致C堆栈溢出和crashingPython.
最高可能的限制取决于平台。当用户具有需要深度递归的程序和支持更高限制的平台时,用户可能需要将限制设置得更高。这应该小心,因为太高的限制会导致崩溃.
如果当前递归深度的新限制太低,则会引发
RecursionError
异常.在版本3.5.1中更改:如果新限制是当前递归深度的工具,则
RecursionError
异常现在被引发.
sys.
setswitchinterval
(interval)-
设置解释器的线程切换间隔(以秒为单位)。此浮点值确定了同时运行Python线程所分配的“timeslices”的理想持续时间。请注意,实际值可能更高,尤其是在使用长时间运行的内部功能或方法的情况下。此外,在间隔结束时调度的线程是操作系统的决定。解释器没有自己的调度程序.
新版本3.2.
sys.
settrace
(tracefunc)-
设置系统的跟踪功能,允许您在Python中实现Pythonsource代码调试器。该函数是特定于线程的;对于adebugger支持多线程,必须使用
settrace()
对于每个被调试的线程Trace函数应该有三个参数:frame, event和arg. frame是当前的堆栈帧。event是一个字符串:
"call"
,"line"
,"return"
,"exception"
或"opcode"
. arg取决于事件类型.无论何时输入newlocal范围,都会调用trace函数(event设置为
"call"
);它应该返回对该范围使用的本地跟踪函数的引用,或None
如果不应该跟踪范围.本地跟踪函数应该返回对自身的引用(或者在该范围内进一步跟踪的另一个函数),或
None
关掉那个范围的跟踪.如果跟踪功能中发生任何错误,它将被取消设置,就像
settrace(None)
叫做。这些事件具有以下含义:
"call"
- 调用一个函数(或输入一些其他代码块)。调用全局跟踪函数;arg是
None
;返回值指定本地跟踪功能. "line"
- 解释器即将执行新的代码行或重新执行循环的条件。调用本地跟踪功能;arg是
None
;返回值指定新的本地跟踪功能。有关如何通过在该帧上设置Objects/lnotab_notes.txt
到f_trace_lines
来禁用thisworks.Per-line事件的详细说明,请参见False
. "return"
- 函数(或其他代码块)即将返回。调用本地跟踪功能;arg是将返回的值,或
None
如果事件是由引发的异常引起的。跟踪函数的返回值被忽略. "exception"
- 发生异常。调用本地跟踪功能;arg是at//le
(exception, value, traceback)
;返回值指定新的本地跟踪功能. "opcode"
- 解释器即将执行新的操作码(见
dis
foropcode详细信息)。调用本地跟踪功能;arg是None
;返回值指定新的本地跟踪功能。默认情况下不会发出操作码事件:必须通过在框架上设置f_trace_opcodes
到True
来明确请求它们.
请注意,由于异常沿着调用者链向下传播,因此在每个级别生成一个
"exception"
事件.有关代码和框架对象的更多信息,请参阅标准类型层次.
CPython实现细节:
settrace()
函数仅用于实现调试器,分析器,覆盖工具等。它的行为是实现平台的一部分,而不是语言定义的一部分,并且在所有Python实现中都可能不可用.更改版本3.7:
"opcode"
事件类型已添加;f_trace_lines
和f_trace_opcodes
属性添加到框架
sys.
set_asyncgen_hooks
(firstiter, finalizer)-
接受两个可选的关键字参数,这些参数是接受异步生成器迭代器作为参数。当异步生成器第一次迭代时,将调用firstiter callable。finalizer当异步生成器即将被垃圾收集时将被调用.
版本3.6中新增:见PEP 525 有关详细信息,以及finalizer方法见
asyncio.Loop.shutdown_asyncgens
inLib / asyncio / base_events.py的实现注意
此函数是临时添加的(参见 PEP 411了解详情。)
sys.
set_coroutine_origin_tracking_depth
(depth)-
允许启用或禁用协同源跟踪。可以,
cr_origin
上协程对象属性willcontain(文件名,行号,函数名)tuplesdescribing其中创建协程对象追溯的一个元组,与最近的呼叫第一。禁用时,cr_origin
willbe None。启用,传递depth大于零的值;这将设置其信息将被捕获的帧的数量。要禁用,请将set depth传递给零.
此设置是线程特定的.
版本3.7.
注意
此功能已临时添加(请参阅PEP 411 有关详细信息。)仅用于调试目的.
sys.
set_coroutine_wrapper
(wrapper)-
允许截取协程对象(只有
async def
功能;用types.coroutine()
要么asyncio.coroutine()
不会被截获).wrapper论证必须是:
- 一个可调用的,接受一个参数(一个协程对象);
None
,重置包装.
如果调用两次,则新包装器将替换前一个包装器。该功能是线程专用的.
wrappercallable不能直接或间接定义新的协同程序:
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()
也可以看看
get_coroutine_wrapper()
.版本3.5中的新功能:见PEP 492 更多细节。
注意
此功能已临时添加(请参阅PEP 411 有关详细信息。)仅用于调试目的.
自版本3.7以后删除:协程包装器功能已被弃用,将在3.8中删除。有关详细信息,请参阅bpo-32591.
sys.
_enablelegacywindowsfsencoding
()-
将默认文件系统编码和错误模式分别更改为’mbcs’和’place’,以保证与版本的一致性3.6之前的Python
这相当于在启动Python之前定义
PYTHONLEGACYWINDOWSFSENCODING
环境变量.Availability:Windows.
版本3.6中的新功能:参见 PEP 529 了解更多详情.
sys.
stdin
sys.
stdout
sys.
stderr
-
翻译使用的文件标准输入,输出和错误:
这些流是常规文本文件就像那些被
open()
函数回复的文件一样。他们的参数选择如下:-
字符编码与平台有关。在Windows下,如果流是交互式的(即,如果它是
isatty()
方法返回True
),使用控制台代码页,否则使用ANSI代码页。在其他平台下,使用了语言环境编码(参见locale.getpreferredencoding()
).但是在所有平台下,你可以在启动Python之前设置
PYTHONIOENCODING
环境变量来覆盖这个值. -
当交互时,
stdout
和stderr
流是行缓冲的。否则,它们像常规文本文件一样是块缓冲的。您可以使用-u
命令行选项覆盖此值.
注意
要从/向标准流写入或读取二进制数据,请使用底层二进制
buffer
对象。例如,将字节拖到stdout
,使用sys.stdout.buffer.write(b"abc")
.但是,如果您正在编写库(并且不控制其代码将在哪个上下文中执行),请注意标准流可以替换为类似文件的对象,如
io.StringIO
哪个不支持buffer
属性。 -
sys.
__stdin__
sys.
__stdout__
sys.
__stderr__
-
这些对象包含
stdin
,stderr
和stdout
在计划开始时。它们在最终确定期间使用,无论sys.std*
对象是否被重定向,都可以用于打印到实际的标准流.它还可以用于将实际文件恢复到已知的工作文件对象,以防它们被破坏的对象覆盖。但是,执行此操作的首选方法是在替换之前显式保存上一个流,并恢复保存的对象.
sys.
thread_info
-
一个 结构序列保存有关threadimplementation的信息.
Attribute 解释 name
线程实现的名称:
lock
锁实现的名称:
"semaphore"
:一个锁使用信号量"mutex+cond"
:一个锁使用一个互斥锁和一个条件变量None
如果这个信息是未知的
version
线程库的名称和版本。它是一个字符串,或 None
如果这个信息是未知的.新版本3.3.
sys.
tracebacklimit
-
当这个变量设置为整数值时,它确定最大数量发生未处理的异常时打印的回溯信息级别。默认为
1000
。当设置为0
或更小时,所有回溯信息都被抑制,只打印异常类型和值.
sys.
version
-
包含Python解释器版本号的字符串以及有关构建号和编译器的附加信息用过的。启动交互式解释器时会显示此字符串。不要提取它的版本信息,而是使用
version_info
和platform
module.
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.
warnoptions
-
这是警告框架的实施细节;不要修改此值。有关warningsframework的详细信息,请参阅
warnings
模块.
sys.
winver
-
用于在Windows平台上形成注册表项的版本号。这是作为Python DLL中的字符串资源1000存储的。该值通常是
version
的前三个字符。它在sys
用于提供信息的模块;修改这个值对Python使用的部门键没有影响.Availability:Windows.
sys.
_xoptions
-
通过
-X
命令行选项传递的各种特定于实现的标志的字典。选项名称可以映射到其值,如果明确给出,或者映射到True
。例:$ ./python -Xa=b -XcPython 3.2a3+ (py3k, Oct 16 2010, 20:14:50)[GCC 4.4.3] on linux2Type "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。“编程语言 – C.”该标准的公开草案可在http:www.open-std.orgjtc1sc22wg14wwwdocsn1256.pdf.上找到。 |
评论被关闭。