- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
特别是,它输出:
>>> dis.dis(None)
22 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (None)
6 COMPARE_OP 8 (is)
9 POP_JUMP_IF_FALSE 23
23 12 LOAD_GLOBAL 1 (distb)
15 CALL_FUNCTION 0
18 POP_TOP
24 19 LOAD_CONST 1 (None)
22 RETURN_VALUE
25 >> 23 LOAD_GLOBAL 2 (isinstance)
26 LOAD_FAST 0 (x)
29 LOAD_GLOBAL 3 (types)
32 LOAD_ATTR 4 (InstanceType)
35 CALL_FUNCTION 2
38 POP_JUMP_IF_FALSE 53
26 41 LOAD_FAST 0 (x)
44 LOAD_ATTR 5 (__class__)
47 STORE_FAST 0 (x)
50 JUMP_FORWARD 0 (to 53)
27 >> 53 LOAD_GLOBAL 6 (hasattr)
56 LOAD_FAST 0 (x)
59 LOAD_CONST 2 ('im_func')
62 CALL_FUNCTION 2
65 POP_JUMP_IF_FALSE 80
28 68 LOAD_FAST 0 (x)
71 LOAD_ATTR 7 (im_func)
74 STORE_FAST 0 (x)
77 JUMP_FORWARD 0 (to 80)
29 >> 80 LOAD_GLOBAL 6 (hasattr)
83 LOAD_FAST 0 (x)
86 LOAD_CONST 3 ('func_code')
89 CALL_FUNCTION 2
92 POP_JUMP_IF_FALSE 107
30 95 LOAD_FAST 0 (x)
98 LOAD_ATTR 8 (func_code)
101 STORE_FAST 0 (x)
104 JUMP_FORWARD 0 (to 107)
31 >> 107 LOAD_GLOBAL 6 (hasattr)
110 LOAD_FAST 0 (x)
113 LOAD_CONST 4 ('__dict__')
116 CALL_FUNCTION 2
119 POP_JUMP_IF_FALSE 246
32 122 LOAD_FAST 0 (x)
125 LOAD_ATTR 9 (__dict__)
128 LOAD_ATTR 10 (items)
131 CALL_FUNCTION 0
134 STORE_FAST 1 (items)
33 137 LOAD_FAST 1 (items)
140 LOAD_ATTR 11 (sort)
143 CALL_FUNCTION 0
146 POP_TOP
34 147 SETUP_LOOP 174 (to 324)
150 LOAD_FAST 1 (items)
153 GET_ITER
>> 154 FOR_ITER 85 (to 242)
157 UNPACK_SEQUENCE 2
160 STORE_FAST 2 (name)
163 STORE_FAST 3 (x1)
35 166 LOAD_GLOBAL 2 (isinstance)
169 LOAD_FAST 3 (x1)
172 LOAD_GLOBAL 12 (_have_code)
175 CALL_FUNCTION 2
178 POP_JUMP_IF_FALSE 154
36 181 LOAD_CONST 5 ('Disassembly of %s:')
184 LOAD_FAST 2 (name)
187 BINARY_MODULO
188 PRINT_ITEM
189 PRINT_NEWLINE
37 190 SETUP_EXCEPT 14 (to 207)
38 193 LOAD_GLOBAL 13 (dis)
196 LOAD_FAST 3 (x1)
199 CALL_FUNCTION 1
202 POP_TOP
203 POP_BLOCK
204 JUMP_FORWARD 28 (to 235)
39 >> 207 DUP_TOP
208 LOAD_GLOBAL 14 (TypeError)
211 COMPARE_OP 10 (exception match)
214 POP_JUMP_IF_FALSE 234
217 POP_TOP
218 STORE_FAST 4 (msg)
221 POP_TOP
40 222 LOAD_CONST 6 ('Sorry:')
225 PRINT_ITEM
226 LOAD_FAST 4 (msg)
229 PRINT_ITEM
230 PRINT_NEWLINE
231 JUMP_FORWARD 1 (to 235)
>> 234 END_FINALLY
41 >> 235 PRINT_NEWLINE
236 JUMP_ABSOLUTE 154
239 JUMP_ABSOLUTE 154
>> 242 POP_BLOCK
243 JUMP_FORWARD 78 (to 324)
42 >> 246 LOAD_GLOBAL 6 (hasattr)
249 LOAD_FAST 0 (x)
252 LOAD_CONST 7 ('co_code')
255 CALL_FUNCTION 2
258 POP_JUMP_IF_FALSE 274
43 261 LOAD_GLOBAL 15 (disassemble)
264 LOAD_FAST 0 (x)
267 CALL_FUNCTION 1
270 POP_TOP
271 JUMP_FORWARD 50 (to 324)
44 >> 274 LOAD_GLOBAL 2 (isinstance)
277 LOAD_FAST 0 (x)
280 LOAD_GLOBAL 16 (str)
283 CALL_FUNCTION 2
286 POP_JUMP_IF_FALSE 302
45 289 LOAD_GLOBAL 17 (disassemble_string)
292 LOAD_FAST 0 (x)
295 CALL_FUNCTION 1
298 POP_TOP
299 JUMP_FORWARD 22 (to 324)
47 >> 302 LOAD_GLOBAL 14 (TypeError)
48 305 LOAD_CONST 8 ("don't know how to disassemble %s objects")
49 308 LOAD_GLOBAL 18 (type)
311 LOAD_FAST 0 (x)
314 CALL_FUNCTION 1
317 LOAD_ATTR 19 (__name__)
320 BINARY_MODULO
--> 321 RAISE_VARARGS 2
>> 324 LOAD_CONST 1 (None)
327 RETURN_VALUE
为什么?
最佳答案
来自documentation :
dis.dis([bytesource])
Disassemble the bytesource object. bytesource can denote either a module, a class, a method, a function, or a code object. For a module, it disassembles all functions. For a class, it disassembles all methods. For a single code sequence, it prints one line per bytecode instruction. If no object is provided, it disassembles the last traceback.
强调我的。
如果你在一个新的解释器中尝试它,没有最后的回溯,所以你会得到一个错误:
>>> import dis
>>> dis.dis(None)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
dis.dis(None)
File "C:\Python27\lib\dis.py", line 23, in dis
distb()
File "C:\Python27\lib\dis.py", line 57, in distb
raise RuntimeError, "no last traceback to disassemble"
RuntimeError: no last traceback to disassemble
但是现在,如果您尝试相同的命令,它会反汇编您刚刚遇到的 RuntimeError
:
>>> dis.dis(None)
53 0 LOAD_FAST 0 (tb)
3 LOAD_CONST 2 (None)
6 COMPARE_OP 8 (is)
9 POP_JUMP_IF_FALSE 82
54 12 SETUP_EXCEPT 13 (to 28)
55 15 LOAD_GLOBAL 1 (sys)
18 LOAD_ATTR 2 (last_traceback)
21 STORE_FAST 0 (tb)
24 POP_BLOCK
25 JUMP_FORWARD 26 (to 54)
56 >> 28 DUP_TOP
29 LOAD_GLOBAL 3 (AttributeError)
32 COMPARE_OP 10 (exception match)
35 POP_JUMP_IF_FALSE 53
38 POP_TOP
39 POP_TOP
40 POP_TOP
57 41 LOAD_GLOBAL 4 (RuntimeError)
44 LOAD_CONST 1 ('no last traceback to disassemble')
--> 47 RAISE_VARARGS 2
50 JUMP_FORWARD 1 (to 54)
关于python - 为什么 dis.dis(None) 返回输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641211/
这个问题在这里已经有了答案: Why does the print function return None? (1 个回答) 关闭 6 年前。 我正在学习理解。我得到了 print(x) 部分(我
我以为我理解了 Python 中的这两个单例值,直到我看到有人在代码中使用 return l1 or l2,其中 l1 和 l2 都是链表对象,并且(s)他想如果不为 None 则返回 l1,否则返回
我希望在 IPython Notebook 中使用列表理解生成枚举字符串列表。它有效,但给了我一个我不理解的奇怪输出。 cols = [] [cols.append('Value'+str(hour)
这个问题在这里已经有了答案: Why does the expression 0 >> import dis >>> def a(): ... return None is None is N
《Learning Python 5th》第608页有示例代码: >>> list(print(x.upper(), end=' ') for x in 'spam') S P A M [None,
我对此进行了搜索并遇到了列表返回函数,但我仍然不明白。 我试图理解为什么 Print 函数到另一个函数返回以下内容: 生日快乐 生日快乐 无 无 我的代码: def happy(): prin
除非我疯了 if None not in x 和 if not None in x 是等价的。有首选版本吗?我想 None not in 更像英语,因此更像 pythonic,但 not None i
尝试绘制 k-NN 分类器的决策边界但无法这样做得到 TypeError: '(slice(None, None, None), 0)' is an invalid key h = .01 # st
我正在尝试将可变大小的序列输入 LSTM。因此我使用生成器且批量大小为 1。 我有一个嵌入的 (sequence_length,)-input-tensor,并输出 (batch_size,equen
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is there any way to know if the value of an argument i
我正在尝试根据环境变量的返回值进行条件赋值。 self._TBLFilePath = iTBLFilePath or os.environ.get("CDO_TBLPATH") + os.enviro
我正在使用 marshmallow 2.0.0rc2 验证 HTTP 请求的输入数据,并在 HTTP 响应上将 SQLAlchemy 模型加载到 JSON。我偶然发现了两个问题: 首先,在通过 HTT
我想将我设置为 None 的变量与 is 进行比较,但它失败了。 当我使用 == 将此变量与 None 进行比较时,它起作用了。 这就是我所说的变量: print type(xml.a) -> 因为
我最近遇到了这种语法,我不知道有什么区别。 如果有人能告诉我其中的区别,我将不胜感激。 最佳答案 答案解释here . 引用: A class is free to implement compari
尝试使用 BorutaPy 进行特征选择。但出现 TypeError: '(slice(None, None, None), array([0, 1, 2, 3, 4]))' 是无效键。 from s
我见过使用 [] 的代码片段, [None] , None或 ()作为 placeholder 的形状, 那是 x = tf.placeholder(..., shape=[], ...) y = t
是否有逻辑推理可以解释为什么下面的 Ansible playbook 中的两个 debug 任务分别输出 "NONE" 和 "FALSE"并且不是两者都“NONE”? - hosts: 'all'
我有一个函数,它可以返回两个整数的元组或(None, None)的元组: (出于本问题的目的,我们假设此返回格式是执行此操作的唯一方法,并且无法更改) from typing import Tuple
问题: 如何遍历字典并从中删除 None 键或值? 这是我尝试过的: 代码: import copy def _ignore(data): copied_data = copy.deepcop
什么是简洁的 python 表达方式 if : # do a bunch of stuff once 最佳答案 为什么不简单, None not in lst 关于python - 简明地说 "
我是一名优秀的程序员,十分优秀!