TOP

Python语法速查: 15. 解释器与执行环境(二)
2020-03-10 18:14:47 】 浏览:64次 本网站的内容取自网络,仅供学习参考之用,绝无侵犯任何人知识产权之意。如有侵犯请您及时与本人取得联系,万分感谢。
Tags:Python 语法 15. 解释 执行 环境

package 的地方; 在Windows中,这个目录一般在形如:Python安装目录\Lib\site-packages 的地方。

当向第三方站点目录安装包时,如果该包已经存在于用户站点目录中,pip则会通知你该包已安装。

 

(2)用户站点目录

用户也可以安装仅供自己使用的包(其他用户不能使用),这可以在 pip 安装(或setup.py安装)时, 通过参数 --user 实现,如:pip3 install --user numpy。 在Linux中,这个目录一般在形如:~/.local/lib/python3.7/site-package 的地方; 在Windows中,这个目录一般在形如:%APPDATA%\Python\Python37\site-packages 的地方。

 

(3)site模块

当在程序中使用import语句时,Python会使用sys.path中指定的目录来搜索模块, 而这个sys.path内容的初始化,是通过 site 模块完成的。

Python解释器启动时,首先会导入 site 模块,它先导入第三方站点目录和用户站点目录, 并将这些目录添加到sys.path中。然后在这些目录中搜索路径配置文件(具有 .pth后缀的文件), 将这些配置中的路径也一一添加到sys.path中(如果该路径存在的话)。

路径配置文件中的每个目录都必须在单独一行列出,注释和空行将被忽略,重复的项目仅添加一次。 路径配置文件中的每行可以是:目录、zip文件 或 .egg 文件。

用户甚至还可以编辑 site.py 的源码,用于完成自己一些独特的配置需求。这个文件一般位于 /usr/lib64/python3.7/ 目录下。

 

 

 

 

  (4)解释器内置类型

用户一般很少需要直接操作解释器内部使用的对象,但是Python也将它们暴露给用户, 如果是设计框架或工具构建可能会用到这些解释器内部对象。

解释器内置类型

类型名称 说明
types.CodeType 字节编译代码的类型
types.FrameType 执行帧的类型
types.GeneratorType 生成器对象的类型
types.TracebackType 异常的栈跟踪的类型
slice 由扩展切片生成的类型
Ellipsis 在扩展切片中使用

 

● 代码对象

代码对象又叫字节码(bytecode),代表编译过的可执行代码,通常由内置的compile()函数返回。 一个代码对象可以保存若干个函数,只是它们不绑定到特定函数(即不保存命名空间相关的上下文信息)。

代码对象具有以下只读属性:

属性 说明
c.co_name 函数名称
c.co_argcount 位置参数个数(包括默认值)
c.co_nlocals 函数使用的局部变量个数
c.co_varnames 包含局部变量名称的元组
c.co_cellvars 包含嵌套函数所引用的变量名称的元组
c.co_freevars 包含嵌套函数所引用的自由变量名称的元组
c.co_code 表示原始字节码的字符串
c.co_consts 包含字节码所用字面量的元组
c.co_names 包含字节码所用名称的元组
c.co_filename 被编译代码所在文件的名称
c.co_firstlineno 函数的首行行号
c.co_lnotab 字符串编码字节码相对于行号的偏移
c.co_stacksize 所需栈的大小(包括局部变量)
c.co_flags 包含解释器标志的整数

 

● 帧对象

帧对象用于表示执行帧,多出现在跟踪对象中。

帧对象具有以下属性:

属性 说明
以下为只读属性
f.f_back 上一个栈帧(对当前调用者而言)
f.f_code 正在执行的代码对象
f.f_locals 局部变量的字典
f.f_globals 全局变量的字典
f.f_builtins 内置名称的字典
f.f_lineno 行号
f.f_lasti 当前指令。这是f_code字节码字符串的索引
以下为可修改属性
f.f_trace 在每行源代码起始处调用的函数

 

● 跟踪对象

出现异常时就会创建跟踪对象,它包含栈跟踪信息。进入异常处理程序后,可以使用sys.exc_info()函数来获取栈跟踪信息。

跟踪对象具有以下只读属性:

属性 说明
t.tb_next 栈跟踪的下一级(朝发生异常的执行帧方向深入)
t.tb_frame 当前级别的执行帧对象
t.tb_lineno 出现异常的行号
t.tb_lasti 当前级别中正在执行的指令

 

● 生成器对象

生成器对象即通过调用含有yield语句的函数创建的对象。生成器对象有2个用途,一是迭代器、二是容器。

生成器对象具有以下属性:

属性 说明
g.gi_code 生成器函数的代码对象
g.gi_frame 生成器函数的执行帧
g.gi_running 显示生成器函数目前是否正在运行的整数

 

●切片对象

切片对象用于表示在扩展切莫语法中指定的切片,如a[i:j:stride], a[i:j, n:m]等。 使用内置的slice()函数也可以创建切片对象。

切片对象具有以下只读属性和方法:

属性或方法 说明
s.start 切片的下边界,如果省略则为None
s.stop 切片的上边界,如果省略则为None
s.step 切片的步长,如果省略则为None
s.indices(length) 接收一个长度参数,返回一个元组 (start, stop, stride),用于表明如何将切片应用到指定长度的一个序列

 

●Ellipsis对象

用于索引查找[]中省略号是否存在,通过内置名称Ellipsis可以访问这种类型的对象。它没有任何属性,但并不是空(若对其应用判断表达式,其值为True)。 Python中没有任何内置类型使用了Ellipsis,但如果要在自己创建的对象上的索引运算符[]中构造高级功能,就可以用到它。

下面的代码说明了如何使用Ellipsis对象:

class Example(object):
    def __gettiem__(self, index):
        print(index)
        
e = Example()
e[3,...4]     # 内部调用形式为:e.__gettiem__((3,Ellipsis,4))

 

 

 

 

返回目录

 

请关注公众号获取更多资料


Python语法速查: 15. 解释器与执行环境(二) https://www.cppentry.com/bencandy.php?fid=77&id=280158

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python3标准库:statistics统计计.. 下一篇python3中运用urllib抓取贴吧的邮..

评论

验 证 码:
表  情:
内  容: