小编dzh*_*lil的帖子

使用cmake读取注册表值

在Windows 7计算机上,我无法读取包含分号的任何注册表值.

例如,如果您有7-zip,请运行以下命令

SET(MYPATH  [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path])
MESSAGE("MYPATH = ${MYPATH}")
Run Code Online (Sandbox Code Playgroud)

结果是

MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path]
Run Code Online (Sandbox Code Playgroud)

而不是按照以下线程的实际路径.我认为cmake支持包含";"的注册表路径 在Windows 7上被破坏了.有人可以证实这一点吗?有没有解决方法?

registry cmake

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

PyQt4中的多个Windows

我有一个PyQt程序用于可视化一些python对象.我想在自己的窗口中显示多个对象.

在PyQt4中实现多窗口应用程序的最佳方法是什么?

目前我有以下内容:

from PyQt4 import QtGui

class MainWindow(QtGui.QMainWindow):
    windowList = []

    def __init__(self, animal):
        pass

    def addwindow(self, animal)
        win = MainWindow(animal)
        windowList.append(win)

if __name__=="__main__":
    import sys

    app = QtGui.QApplication(sys.argv)

    win = QMainWindow(dog)
    win.addWindow(fish)
    win.addWindow(cat)

    app.exec_()
Run Code Online (Sandbox Code Playgroud)

但是,这种方法并不令人满意,因为当我尝试在其自己的类中分解MultipleWindows部件时,我遇到了问题.例如:

class MultiWindows(QtGui.QMainWindow):
    windowList = []

    def __init__(self, param):
        raise NotImplementedError()

    def addwindow(self, param)
        win = MainWindow(param) # How to call the initializer of the subclass from here?
        windowList.append(win)

class PlanetApp(MultiWindows):
    def __init__(self, planet):
        pass

class AnimalApp(MultiWindows):
    def __init__(self, planet):
        pass

if __name__=="__main__":
    import …
Run Code Online (Sandbox Code Playgroud)

python inheritance pyqt4

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

在C++中将文件读取到字符串

作为一个刚接触C++并来自python背景的人,我试图将下面的代码翻译成C++

f = open('transit_test.py')
s = f.read()
Run Code Online (Sandbox Code Playgroud)

做这样的事最短的C++成语是什么?

c++ string file

3
推荐指数
2
解决办法
893
查看次数

在Python C API中返回多重对象的元组

我正在编写一个将返回多个Python对象的本机函数

PyObject *V = PyList_New(0);
PyObject *E = PyList_New(0);
PyObject *F = PyList_New(0);

return Py_BuildValue("ooo", V, E, F);
Run Code Online (Sandbox Code Playgroud)

这编译很好,但是,当我从Python程序调用它时,我收到一个错误:

SystemError:传递给Py_BuildValue的格式错误

怎么能正确完成?

编辑:以下工作

PyObject *rslt = PyTuple_New(3);
PyTuple_SetItem(rslt, 0, V);
PyTuple_SetItem(rslt, 1, E);
PyTuple_SetItem(rslt, 2, F);
return rslt;
Run Code Online (Sandbox Code Playgroud)

但是,有没有更短的方法来做到这一点?

python tuples return python-c-api

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

围绕lambda表达式的包装

我在python中有函数,它接受两个输入,做一些操作,并返回两个输出.我想重新排列输出参数,所以我在原始函数周围写了一个包装函数,用新的输出顺序创建一个新函数

def rotate(f):
    h = lambda x,y: -f(x,y)[1], f(x,y)[0]
    return h

f = lambda x, y: (-y, x)
h = rotate(f)
Run Code Online (Sandbox Code Playgroud)

但是,这会给出一条错误消息:

NameError: global name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)

x 是lambda表达式的参数,为什么必须定义它?

预期的行为h应该是一个与之相同的新函数lambda x,y: (-x,-y)

python lambda

3
推荐指数
2
解决办法
548
查看次数

在目录中查找符号链接

如何以递归方式查找Unix中目录中的所有符号链接?

像这样的东西

find . -name *.o
Run Code Online (Sandbox Code Playgroud)

但对于符号链接

find . -type symlink ???
Run Code Online (Sandbox Code Playgroud)

symlink find

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

获取Go中所有已安装软件包的列表

如何通过goinstall列出所有已安装的软件包?我需要这个将一台计算机上安装的所有软件包重新安装到另一台计算机上.

package-managers go

3
推荐指数
2
解决办法
3679
查看次数

Go 导入中的名称冲突

考虑下面的 Go 代码..

package main

import "go/token"
import "python/token"

func main() {
     x := token.INDENT
}
Run Code Online (Sandbox Code Playgroud)

解决上述代码中 token 歧义的最佳方法是什么?有没有类似python的表达方式import python.token as pytoken

import go

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

初始化大量变量的最简单方法

假设您有大量需要初始化为None的变量.一个天真的方法是计算左边的变量数量,并在右边创建一个相同大小的列表:

a, b, c, d, e, f, g, h, i, j = [None]*10
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不必计算变量?如果经常使用这种模式,那么必须计算变量的数量会变得很繁琐.

python initialization iterable-unpacking

3
推荐指数
2
解决办法
390
查看次数

在Python中组合with语句和for循环

考虑以下 python 代码,它使用上下文管理器来获取和释放资源:

from contextlib import contextmanager

@contextmanager
def res(i):
    print(f'Opening resource {i}')
    yield
    print(f'Closing resource {i}')
Run Code Online (Sandbox Code Playgroud)

现在假设我们需要使用其中一些资源

with res(0), res(1), res(2):
    print('Using resources.')
Run Code Online (Sandbox Code Playgroud)

其中内部部分取决于同时打开的所有三个资源。运行上面的代码后,我们得到预期的输出:

Opening resource 0
Opening resource 1
Opening resource 2
Using resources.
Closing resource 2
Closing resource 1
Closing resource 0
Run Code Online (Sandbox Code Playgroud)

如果您必须使用更多资源 -res(0) ... res(10)是否可以使用 for 循环动态生成与下面的伪代码等效的内容?

with res(0), res(1), ... , res(10):
    print('Using resources.')
Run Code Online (Sandbox Code Playgroud)

python loops for-loop with-statement contextmanager

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