我是python的新手,我使用全局变量来轻松控制我的设计,尤其是调试.
这是我的代码:
hidNow = -1
def loginFromSql(br, n=0):
global hidNow
print hidNow
hidNow = 5566
print hidNow
print(hidNow)
Run Code Online (Sandbox Code Playgroud)
我用"from myModule import*"直接运行python
在调用函数之前,打印hidNow得到-1的结果,但它仍然是-1甚至函数被调用....
它是python中的一个bug吗?我使用的是python 2.7.5
谢谢!
我知道这个问题听起来很愚蠢......我正在一个使用大量openssl库的项目中工作.我目前正在努力将使用过的库从1.0升级到1.1,这给了我很多困难.Openssl社区决定让人们不再访问其BIO,SSL,RSA,EVP_PKEY的内部结构.这似乎是一个很好的方向,但我使用这些结构有数千行代码(例如EVP_PKEY *key; key->reference = XXX;).
我注意到openssl通过前向声明隐藏这些代码(即,将公共头部分隔为公共头部+私有头部).
例如,旧结构中的代码如下所示:include/obj.h:
struct obj_st {
int property1, int property2 ....etc
}
Run Code Online (Sandbox Code Playgroud)
新结构变为include/obj.h:
struct obj_st;
Run Code Online (Sandbox Code Playgroud)
包括/ obj_private.h:
struct obj_st {
int property1, int property2 ....etc
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将整个openssl编译为静态库.我的代码包括它#include<openssl/obj.h>不再能够访问这些属性.
处理它的一个简单方法是,我只是将所有这些私有头文件移回原始格式(没有前向声明).但这意味着每次拉新的openssl代码时我都需要这样做.
是否有任何简单的黑客攻击我可以让它们再次曝光?我想在我的代码中包含私有标头(例如#include<openssl/obj_private.h>),但许多私有标头也依赖于其他标头,结果我需要将所有标头复制到我的usr/include/openssl文件夹.我不确定这是不是一个好主意....