12ch

sys.path可以看到当你import 时搜索的路径,为了引用自己的模块,我们可以使用:

sys.path.append(‘/homw/py/lib‘)

使用sys.modules可以找到当前导入了那些模块和它们来自何处,sys.modules是一个字典,

使用模块名作为键,对应物理地址作为值。

12.3名称空间

名称空间是名称(标识符)到对象的映射,向名称空间添加名称的过程涉及绑定标识符到对象(以及

该对象引用计数加1)《Python语言草靠手册》中指出:“changing the mapping of a
name is called rebinding[, and] removing a name is unbinding.”

在程序执行期间有两个或三个活动的名称空间,分别是:局部名称空间,全局名称空间,内建名称空间,

其中局部名称空间在执行期间不断变换。

名称空间调用顺序:

Python解释器首先加载内建名称空间,它由__builtins__模块

中的名字构成。随后加载执行模块的全局名称空间,并在模块开始执行后变为活动名称空间。

如果在执行期间调用了一个函数,将加载局部名称空间。

12.3.1名称空间与变量作用域

也就是说,名称空间是互相独立的,作用域是相互包括的。

名称空间的查找顺序如图所示,local的名称会屏蔽global的名称。

12.3.3无限制的名称空间

你可以为一个类添加属性,仅仅使用emptyclass.x = something这样简单的语句。

12.4导入模块

import的顺序最好是:Python标准库模块, Python第三方模块, 应用程序自定义模块

你可以使用as来重命名你导入的模块,比如 from cgi import FieldStorage as form

python会自动忽略重复的导入。

为了避免总是使用句点访问,你可以使用from module import var,这样就可以使用

var而不是module.var,你应该避免使用from module import*,除非你要使用

Tkinter,Numpy,socket等属性非常多的模块。

12.6模块内建函数

globals(),locals()

返回一个字典,包含对应的名字空间

reload()

重新导入一个模块,该模块必须是完全导入没有使用from-import的,另外reload()的参数

是模块名而不是字符串

12.7包

包是一个有层次的文件目录结构

Phone/
  __init__.py
  common_util.py
  Voicedta/
    __init__.py
    Pots.py
    Isdn.py
  Fax/
    __init__.py
    G3.py
  Mobile/
    __init__.py
    Analog.py
    Digital.py
  Pager/
    __init__.py
    Numeric.py

时间: 2024-10-27 07:37:41

12ch的相关文章

struct结构会增加程序的开销

    struct结构一方面能够加强对变量的管理,增加程序的可读性,但是另一方面,结构体也会加大程序的开销.     看下面一段代码: struct TEST_S { int a; int b; float c; }; int _tmain(int argc, _TCHAR* argv[]) { TEST_S ts; int a; int b; int c; ts.a = 100; ts.b = 200; ts.c = 300.f; a = 100; b = 200; c = 300.f; r

css小细节罗列

有空时候把一些常见可能不是每个人都知道的css小细节总结了下,共勉. 1.line-height 众多周知,line-height是行高的意思,我们时常会使用类似line-height:24px;这样的代码来设置绝对的行高.但是当我们的需求改变,字体大小变动的时候,可能我们还需要再次改动行高,那么现在我们可以使用直接设置数字来设置行高,当我们使用纯数字来设置行高的时候,它相对于的是字体大小的倍数,也就是说下面的h4其实设置的行高也是12*2px就是24px.这样设置的好处是当我们在改变字体大小的

windows7内核分析之x86&x64第二章系统调用

windows7内核分析之x86&x64第二章系统调用 2.1内核与系统调用 上节讲到进入内核五种方式 其中一种就是 系统调用 syscall/sysenter或者int 2e(在 64 位环境里统一使用 syscall/sysret 指令,在 32 位环境里统一使用 sysenter/sysexit 在 compatibility 模式下必须切换到 64 位模式,然后使用 syscall/sysret 指令 注释:32位cpu是x86模式 也叫legacy模式 再说清楚点 就是包含了实模式:可

由一道工控路由器固件逆向题目看命令执行漏洞

前言 2019 工控安全比赛第一场的一道固件逆向的题目,好像也比较简单,好多人都做出来了.这里就分别从静态和动态调试分析复现一下这个命令执行的洞. 赛题说明 题目给的场景倒是挺真实的:路由器在处理 tddp 协议时出现了命令注入,导致了远程命令执行.就是后面做出来的这个答案的格式咋提交都不对... 题目给了一个压缩文件,解压出来时一个 bin 文件. 使用 binwalk -Me 直接解压,得到了与一个标准的 linux 风格的文件系统: 后来知道这个固件其实就是 tp_link SR20 路由

攻防世界(XCTF)逆向部分write up(一)

晚上做几个简单的ctf逆向睡的更好 logmein elf文件 ida看看main函数伪代码 void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { size_t v3; // rsi int i; // [rsp+3Ch] [rbp-54h] char s[36]; // [rsp+40h] [rbp-50h] int v6; // [rsp+64h] [rbp-2Ch] __int64 v7; // [rsp+6

Windows系统调用中的系统服务表

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中的系统服务表 如果这部分不理解,可以查看 Windows内核分析索引目录依次阅读. 我们在之前讲过系统调用过程中,给予eax一个编号,操作系统通过这个编号来执行某个内核函数. 这个函数是通过操作系统的系统服务表来查找的. 现在,我们来探究一下nt!KiFastCallEntry的反汇编代码,看看其如何查看系统服务表找到要执行的函数的. 一.

2020 BJDCTF Re encode

测试文件:https://www.lanzous.com/i9la55a 准备 获取信息: 32位文件 UPX壳 IDA分析 UPX脱壳后,IDA打开 int sub_804887C() { int v0; // eax int result; // eax int v2; // ecx unsigned int v3; // et1 unsigned int i; // [esp+Ch] [ebp-FCh] unsigned int v5; // [esp+10h] [ebp-F8h] uns