C
我以前的编程中,代码段仅用于调试目的(记录命令等)。通过使用#ifdef
预处理程序指令,可以完全禁用这些语句以进行生产,如下所示:
#ifdef MACRO
controlled text
#endif /* MACRO */
做类似的事情的最好方法是什么python
?
如果只想禁用日志记录方法,请使用该logging
模块。如果日志级别设置为排除调试语句,那么logging.debug
它将非常接近无操作(它仅检查日志级别并返回而不插入日志字符串)。
如果要在特定条件下以字节码编译时实际删除代码块,则唯一的选择是相当神秘的__debug__
全局变量。True
除非将-O
标志传递给Python(或PYTHONOPTIMIZE
在环境中设置为非空值),否则将将此变量设置为。
如果__debug__
在if
语句中使用if ,则该if
语句实际上仅编译到True
分支中。这种特殊的优化与Python一样接近预处理器宏。
请注意,与宏不同,您的代码在的两个分支上仍必须在语法上正确if
。
为了展示其__debug__
工作原理,请考虑以下两个功能:
def f():
if __debug__: return 3
else: return 4
def g():
if True: return 3
else: return 4
现在使用以下命令检查它们dis
:
>>> dis.dis(f)
2 0 LOAD_CONST 1 (3)
3 RETURN_VALUE
>>> dis.dis(g)
2 0 LOAD_GLOBAL 0 (True)
3 JUMP_IF_FALSE 5 (to 11)
6 POP_TOP
7 LOAD_CONST 1 (3)
10 RETURN_VALUE
>> 11 POP_TOP
3 12 LOAD_CONST 2 (4)
15 RETURN_VALUE
16 LOAD_CONST 0 (None)
19 RETURN_VALUE
如您所见,只有f
“优化”。
问题内容: 如何实现与C#代码等效的Python? 这是一个好主意吗??请在您的答案中举例说明。 问题答案: 正如其他人在这里提到的: 在Python中不需要接口。这是因为Python具有适当的多重继承,还具有鸭式输入法,这意味着 必须 在Java中具有接口的地方,而不必在Python中具有接口。 也就是说,接口还有多种用途。其中一些被Python 2.6中引入的Pythons抽象基类覆盖。如果您
问题内容: 我想知道Python 3中的新super是如何实现的。 我做了一个小例子之后,这个问题就浮现在脑海中,我得到了一个奇怪的错误。我正在使用Pyutilib组件体系结构(PCA),并且已经制作了自定义元类来驱动另一个类的创建: 我收到以下错误: 我wonderign究竟超(一样),它引发的错误,而所有的,并存在。另外的“老方法”-正在工作。 问题答案: 如何执行?这是python3.3的代
问题内容: 我已经实现了 算法 对于GMM使用这个 后[GMMs]与最大似然优化 努比](https://towardsdatascience.com/how-to-code-gaussian-mixture-models- from-scratch-in-python-9e7975df5252)未成功,如下所示: when I run the algorithm on a 1-D time-se
从Udacity的深度学习类来看,y_i的软最大值只是指数除以整个Y向量的指数之和: 其中< code>S(y_i)是< code>y_i的softmax函数,而< code>e是指数,而< code>j是输入向量y中的列数 我尝试了以下方法: 返回: 但建议的解决方案是: 它产生与第一个实现相同的输出,即使第一个实现显式地取每列和max的差值,然后除以总和。 有人能用数学说明为什么吗?一个正确,
问题内容: …可以用于字符串相等的关键字。 我都尝试过,但是他们没有用。 问题答案: 测试字符串仅在插入字符串时有效。除非你真的知道自己在做什么,并明确实习的字符串,你应该 永远不会 使用的字符串。 测试 身份 ,而非 平等 。这意味着Python会简单地比较一个对象所在的内存地址。基本上回答了以下问题:“同一对象有两个名称吗?” -超载毫无意义。 例如,为 False 。通常,Python将每个
问题内容: 我知道PHP或Java的虚拟方法。 如何在Python中实现它们? 还是我要在抽象类中定义一个空方法并覆盖它? 问题答案: 当然,您甚至不必在基类中定义方法。在Python中,方法要比虚拟方法更好-它们是完全动态的,因为Python中的输入是 鸭子输入 。 而且在Python中,甚至不必从通用基类派生该行为即可- 您可以免费获得它。就是说,一些程序员更喜欢以更严格的方式定义他们的类层次