小编elh*_*efe的帖子

Eclipse 中 Python 的静态类型检查

我刚刚用 Python 3.6 安装了 Eclipse Photon 和 PyDev 6.4.3。我现在试图弄清楚如何让静态类型检查工作(例如使用mypy)。这在 Eclipse 中可能吗?除了 PyDev 之外,还有其他插件可以处理这个问题吗?在这一点上,我已经陷入了互联网搜索的死胡同。

python eclipse pydev typechecking mypy

5
推荐指数
0
解决办法
762
查看次数

argparse:不显示 -h 的用法

编码

from argparse import ArgumentParser
p = ArgumentParser(description = 'foo')
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
Run Code Online (Sandbox Code Playgroud)

...导致输出:

$ python argparsetest.py -h
usage: argparsetest.py [-h] [-b BAR]

foo

optional arguments:
  -h, --help         show this help message and exit
  -b BAR, --bar BAR  a description
Run Code Online (Sandbox Code Playgroud)

我想要的是:

$ python argparsetest.py -h
foo

optional arguments:
  -h, --help         show this help message and exit
  -b BAR, --bar BAR  a description
Run Code Online (Sandbox Code Playgroud)

例如,在寻求帮助时没有使用信息。有没有办法做到这一点?

python argparse

4
推荐指数
2
解决办法
5189
查看次数

Python的警告模块的Perl等价习惯用法

我需要将一些代码从Python移植到Perl.Python代码简单地使用了警告模块,例如

warnings.warn("Hey I'm a warning.")
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索相当多,但我不清楚相同的Perl成语可能是什么.Perl程序员将如何处理这个问题?

python perl warnings

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

在引擎盖下perl 64位整数

我对perl中64位整数的内部表示感到困惑.

Ubuntu 12.04,perl 5.16.0:

print 18440000000000001000 . "\n";
print 18450000000000001000 . "\n";
print -9220000000000001000 . "\n";
print -9230000000000001000 . "\n";
Run Code Online (Sandbox Code Playgroud)

输出:

18440000000000001000
1.845e+19
-9220000000000001000
-9.23e+18
Run Code Online (Sandbox Code Playgroud)

显然正数溢出并被强制浮动,相应的精度损失,在2 ^ 64.但是 - 没有留下符号位的空间,那么负数高达-2 ^ 63的情况如何?

perl 64-bit integer

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

如何在MongoDB中使用`$或`和`$ in`查询进行排序?

这是这个问题的后续行动- 请参阅上下文.

这个问题涉及链接问题的几个特殊情况 - 即在使用$in$or运算符时MongoDB中的排序如何工作,以及如何确保使用索引进行排序与​​内存中排序.

$于:

例如,假设我们有一个文档结构所在的集合

{a: XXX, b: XXX}
Run Code Online (Sandbox Code Playgroud)

...我们有一个复合索引a,并b按照这个顺序,并希望运行查询

{a: {$in: [4, 6, 2, 1, 3, 10]}, b: {$gt: 1, $lt: 6}}
Run Code Online (Sandbox Code Playgroud)

如果打开a或如何进行排序b$in是一个类似的等式运算符,但在我看来,b即使如此也不可能对索引进行排序.对一类a使用索引仅仅是可能的,如果$in数值数组首先排序,我想-但我不知道是否MongoDB的做到这一点.

$或:

由于$or查询IIUC被处理为多个查询,并且可以使用它们各自的索引进行排序,排序结果是否会以某种方式合并或者$or强制对所有结果进行内存排序?如果是前者,这个过程的时间复杂度是多少?

sorting indexing time-complexity mongodb

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

使用 numpy.select 避免 div/0 错误

我正在尝试使用 numpy.select 有条件地将值分配给数组。然而,使用 select 需要计算所有可能的赋值,而不仅仅是相关的赋值,这可能会导致 div/0 错误,例如:

import numpy as np
def testfunc(z):
    conditionlist = [z < 0, z == 0, z > 0]
    choicelist = [1 / z, 0, 1 + z]
    return np.select(conditionlist, choicelist)

if __name__ == "__main__":

     print testfunc(np.array([0]))
Run Code Online (Sandbox Code Playgroud)

此代码将失败并出现 div/0 错误,尽管 1 / z(其中 z = 0)实际上不需要分配给返回的数组。

如何有条件地将值分配给 numpy 数组而不遇到 div/0 错误?循环是唯一的选择吗?

python numpy divide-by-zero

2
推荐指数
1
解决办法
1305
查看次数

通过查询API在Elasticsearch中选择带有参数的文档字段

ElasticSearch版本= 5.5

我继承了一些通过查询API更新将任意文档字段更新为任意值的代码,如下所示:

{
 "query": ...
 "script": {
   "inline": "ctx._source." + field + " = " + value + ";"
   }
 }
Run Code Online (Sandbox Code Playgroud)

由于每分钟断路器的最大编译次数,这有时会导致查询失败。

一个部分更新将为这种情况下工作良好,但据我可以判断,部分更新标准更新API,而不是查询API提供的更新只支持:

{
 "query": ...
 "doc": {
   field: value
   }
 }

Unknown key for a START_OBJECT in [doc]
Run Code Online (Sandbox Code Playgroud)

至少,作为ES newb,我认为这就是该错误的含义。在doc查询API文档的更新中也没有提及。

假设我是正确的,部分更新将不起作用,按照脚本指南中的建议对脚本进行参数化似乎是下一步,但似乎没有任何方法可以访问由参数指定的源字段:

# I wouldn't expect this to work, but tried anyway
{
 "query": ...
 "script": {
   "inline": "ctx._source.params.field = value;",
   "params": {
      "field": field,
      "value": value …
Run Code Online (Sandbox Code Playgroud)

field elasticsearch elasticsearch-5 elasticsearch-painless

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