小编Pau*_*ter的帖子

在python中模拟'local static'变量

请考虑以下代码:

def CalcSomething(a):
    if CalcSomething._cache.has_key(a):
      return CalcSomething._cache[a]
    CalcSomething._cache[a] = ReallyCalc(a)
    return CalcSomething._cache[a] 

CalcSomething._cache = { }
Run Code Online (Sandbox Code Playgroud)

这是我在python中模拟"局部静态"变量时最容易想到的方法.
让我困扰的是,CalcSomething._cache是函数的定义之外被提及,但另一种方法是类似的东西:

if not hasattr(CalcSomething, "_cache"):  
    setattr(CalcSomething, "_cache", { } )  
Run Code Online (Sandbox Code Playgroud)

在函数的定义中,这真的很麻烦.

有更优雅的方式吗?

[编辑]
只是为了澄清,这个问题不是关于本地函数缓存,正如上面的例子所暗示的那样.这是另一个简短的例子,其中'静态本地'可能很方便:

def ParseString(s):
    return ParseString._parser.parse(s)  
# Create a Parser object once, which will be used for all parsings.
# Assuming a Parser object is heave on resources, for the sake of this example.
ParseString._parser = Parser() 
Run Code Online (Sandbox Code Playgroud)

python

25
推荐指数
3
解决办法
1万
查看次数

MySQL UPDATE和SELECT一次通过

我有一个要执行的MySQL任务表,每行都有一个任务的参数.
有许多工作者应用程序(可能在不同的机器上),在循环中执行任务.
应用程序使用MySQL的本机C API访问数据库.

为了拥有一个任务,一个应用程序做了类似的事情:

  • 生成全局唯一ID(为简单起见,假设它是一个数字)

  • UPDATE tasks
    SET guid = %d
    WHERE guid = 0 LIMIT 1

  • SELECT params
    FROM tasks
    WHERE guid = %d

  • 如果最后一个查询返回一行,我们拥有它并让参数运行

有没有办法在一次调用服务器时实现相同的效果(即'拥有'一行并获取其参数)?

mysql sql-update

18
推荐指数
3
解决办法
6万
查看次数

键盘快捷键可以远离全屏远程桌面会话

全屏使用远程桌面,移动到另一个应用程序的最短途径是什么?(当然,不使用鼠标.我讨厌老鼠).

我目前使用以下之一:

ctrl- alt- del,alt- t(到本地机器的taskmgr),alt- tab(移动到所需的应用程序),或: ctrl- alt- pause(将远程桌面切换到窗口),alt- tab.

有更短的方式吗?

windows remote-desktop keyboard-shortcuts

16
推荐指数
2
解决办法
2万
查看次数

MySQL中的字符串格式

在MySQL中是否有类似printf()的格式?
我在文档中找不到简单的方法.

例如,我怎样才能做出类似的事情:

SELECT STRFORMATFUNCTIONIMLOOKINGFOR("%03d", 17) 
Run Code Online (Sandbox Code Playgroud)

得到017?

mysql sql format formatting

8
推荐指数
2
解决办法
2万
查看次数

在多个项目中共享公共文件的pythonic方法是什么?

假设我在兄弟目录中有项目x和y:projects/x和projects/y.
myutils.py中的两个项目都有一些常用的实用程序函数,mydbstuff.py中有一些db函数等.
这些都是次要的常见问题,所以我不想为它们创建一个包.

关于此类文件的下落,PYTHONPATH的可能更改,正确的导入方式等问题都会出现.

使用这些文件的'pythonic方式'是什么?

python

5
推荐指数
1
解决办法
284
查看次数

vimgrep和make的不同quickfix缓冲区

makeVim的下-ing,经常会有必要vimgrep的文件.在这种情况下,vimgrep接管quickfix缓冲区,因此需要重新制作才能浏览剩余的编译器错误.

有没有办法避免这种混乱?

vim grep makefile

4
推荐指数
1
解决办法
288
查看次数