小编Aki*_*oss的帖子

将元组扩展为参数

有没有办法将Python元组扩展为函数 - 作为实际参数?

例如,这里expand()有魔力:

some_tuple = (1, "foo", "bar")

def myfun(number, str1, str2):
    return (number * 2, str1 + str2, str2 + str1)

myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Run Code Online (Sandbox Code Playgroud)

我知道可以定义myfunmyfun((a, b, c)),但当然可能有遗留代码.谢谢

python tuples parameter-passing

375
推荐指数
5
解决办法
20万
查看次数

Java,在对象的作用域结束时执行方法

我有一个具有某种状态的物体.对象被传递,它的状态暂时改变.就像是:

public void doSomething(MyObject obj) {
    obj.saveState();
    obj.changeState(...);
    obj.use();
    obj.loadState();
}
Run Code Online (Sandbox Code Playgroud)

在C++中,可以使用对象的范围在构造和解析时运行一些代码,例如

NeatManager(MyObject obj) { obj.saveState(); }
~NeatManager() { obj.loadState(); }
Run Code Online (Sandbox Code Playgroud)

并称之为

void doSomething(MyObject obj) {
    NeatManager mng(obj);
    obj.changeState();
    obj.use();
}
Run Code Online (Sandbox Code Playgroud)

这简化了工作,因为保存/加载与NeatManager对象的范围绑定.是否有可能在Java中做这样的事情?有没有办法在对象超出声明范围时调用方法?我不是在谈论finalize()也不是"破坏"(垃圾收集),我对范围感兴趣.

谢谢

java destructor scope object

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

PySide中线程之间的通信

我有一个产生一些数据的线程(一个python列表),它可用于一个小部件,它将读取并显示主线程中的数据.实际上,我正在使用QMutex以这种方式提供对数据的访问:

class Thread(QThread):
  def get_data(self):
    QMutexLock(self.mutex)
    return deepcopy(self.data)

  def set_data(self, data):
    QMutexLock(self.mutex)
    self.data = deepcopy(data)

  def run(self):
    self.mutex = QMutex()
    while True:
      self.data = slowly_produce_data()
      self.emit(SIGNAL("dataReady()"))

class Widget(QWidget):
  def __init__(self):
    self.thread = Thread()
    self.connect(self.thread, SIGNAL("dataReady()"), self.get_data)
    self.thread.start()

  def get_data(self):
    self.data = self.thread.get_data()

  def paintEvent(self, event):
    paint_somehow(self.data)
Run Code Online (Sandbox Code Playgroud)

请注意,我没有传递数据,emit()因为它们是通用数据(我试图使用PyObject作为数据类型,但是双重free()会使程序崩溃),但我正在用a复制数据deepcopy()(假设数据可以是像这样复制).我使用了deepcopy()因为我猜代码如下:

def get_data(self):
  QMutexLock(self.mutex)
  return self.data
Run Code Online (Sandbox Code Playgroud)

只复制对数据的引用(对吗?),数据将在返回后共享和解锁...这段代码是否正确?如果数据非常大(如1'000'000项列表),我该怎么办?

谢谢.

PS我看到了一些例子,比如Qt Mandelbrot例子,或PyQt线程示例,但是他们在插槽中使用QImage作为参数.

python multithreading pyqt pyqt4 pyside

15
推荐指数
1
解决办法
8573
查看次数

更改默认浮动打印格式

我有一些列表和更复杂的结构包含浮点数.打印时,我看到有很多十进制数字的浮点数,但是在打印时,我不需要全部.所以我想在打印浮点数时定义自定义格式(例如2或3位小数).

我需要使用浮点数而不是十进制数.此外,我不允许截断/圆形浮动.

有没有办法改变默认行为?

python floating-point string-formatting python-3.x

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

使用less作为gdb寻呼机

我注意到在GDB中,当发出具有长输出的命令时info variables,输出会一次显示一页,按下以退出enterq退出.

是否可以用另一个替换默认的寻呼机,例如less,以便我可以上下导航,退出,搜索等?

gdb

13
推荐指数
2
解决办法
2528
查看次数

jquery临时解除绑定事件

也许我完全错过了甚至在jQuery中处理的东西,但这是我的问题.

我们假设有一些事件绑定,比如

$(element).bind("mousemove", somefunc);
Run Code Online (Sandbox Code Playgroud)

现在,我想介绍一个新的mousemove绑定,它不会覆盖前一个,但暂时排除(解除绑定)它.换句话说,当我绑定我的函数时,我必须确保没有其他函数将执行该事件,直到我恢复它们.

我正在寻找类似的东西:

$(element).bind("mousemove", somefunc);
// Somefunc is used regularly
var savedBinding = $(element).getCurrentBinding("mousemove");
$(element).unbind("mousemove").bind("mousemove", myfunc);
// Use myfunc instead
$(element).unbind("mousemove", myfunc).bind("mousemove", savedBindings);
Run Code Online (Sandbox Code Playgroud)

当然,somefunc不在我的控制之下,否则这将是无用的:)

我的理解是可以将多个函数绑定到同一个事件,并且无法预先确定这些函数的执行.我知道停止事件传播和立即事件传播,但我认为它们在我的情况下是无用的,因为无法确定执行顺序(但也许我得到这些错误).

我怎样才能做到这一点?在此先感谢~Aki

编辑:我需要强调这一点:我需要先前安装的处理程序(somefunc)不执行.我没有定义该处理程序,它可能是或可能不存在,但它由第三方用户安装.

EDIT2:好的,现在这是不可行的,我想我需要eventListenerList,这在大多数浏览器中都没有实现.http://www.w3.org/TR/2002/WD-DOM-Level-3-Events-20020208/changes.html

javascript jquery javascript-events

12
推荐指数
1
解决办法
6335
查看次数

正则表达式拆分字符串保留引号

我需要根据空格作为分隔符拆分下面的字符串.但是应该保留引用中的任何空格.

research library "not available" author:"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)

research
library
"not available"
author:"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)

我试图在C Sharp中做到这一点,我有这个正则表达式:@"(?<="")|\w[\w\s]*(?="")|\w+|""[\w\s]*"""来自SO中的另一个帖子,它将字符串拆分为

research
library
"not available"
author
"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这不符合我的确切要求.

我正在寻找任何正则表达式,这将成功.

任何帮助赞赏.

c# regex split

11
推荐指数
1
解决办法
7566
查看次数

使用svg.js加载SVG文件

我有一个带有SVG元素的HTML5页面.我想加载一个SVG文件,从中提取一些元素并用脚本逐个处理它们.

我使用jQuery成功加载SVG文件,.load()在DOM中插入了SVG树.但是我想尝试使用svg.js来操作元素,但是在文档中我找不到使用现有SVG元素初始化库的方法,在这里我将得到对象.

想法是访问加载的SVG元素(或直接使用svg.js库加载它),将单个对象复制到另一个元素并将它们移动到我需要的位置.这该怎么做?

javascript jquery html5 svg

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

go 应用程序的 pprof CPU 配置文件未显示任何示例

我正在使用 pprof 分析 Go 应用程序。

该应用程序使用了大约 4-10% 的 CPU,并让它运行一小段时间,生成大约 6-11kb 的配置文件。这对我来说意味着它应该能够对某些活动进行采样。

然而,当我查看结果时,我看到以下内容:

$ go tool pprof --text bigproc
1.77s of 1.77s total (  100%)
      flat  flat%   sum%        cum   cum%
     1.77s   100%   100%      1.77s   100%
$
Run Code Online (Sandbox Code Playgroud)

有趣的信息似乎缺失了。可能出什么问题了?

这是在 Linux 上,使用 google-perftools 的 go 版本 1.6.1 和 pprof 版本 2.2.1(如果重要的话)。

performance profiling go pprof

6
推荐指数
1
解决办法
5280
查看次数

不同大小的数组数组

我有一些代码可以生成一组不同大小但类型相同的 tr1::array,例如

array<int, 2>
array<int, 4>
array<int, 6>
Run Code Online (Sandbox Code Playgroud)

这些数组的数量和大小是在编译时给出的,所以我确切地知道它们有多少个以及每个数组有多大(但它们可能不同)。

问题:我想将它们放在一个集合中(使用 array<> 会很棒),但是所有成员的类型必须相同,而事实并非如此。

我考虑过使用 boost::variant,但是如何使用编译时确定的类型列表指定一个变体(我正在考虑大量使用预处理器......)?使用 boost::any 怎么样?其他方法?(野生指针?)

TIA~阿基

更正:预处理器在这种情况下不可用。

c++ boost c++11

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