小编Evg*_*eev的帖子

Ruby - 语句中的错误换行仍会给出结果吗?

精简脚本如下:

z1 = (12 -
          2) / (5)
z2 = (12
        -  2) / (5)
puts(z1.to_s + " " + z2.to_s)
Run Code Online (Sandbox Code Playgroud)

这使:

$ ruby rubytest.rb 
2 -1
Run Code Online (Sandbox Code Playgroud)

现在,我知道这种z1情况是正确的方法,因为线末端的悬挂操作符被解释为线的自动延续.

但是,我希望解释器在z2案件中快速失败,并告诉我该陈述是不完整的,或者说它的第二行是荒谬的.但它处理它"很好"并给出"-1"答案.它是否试图通过不承认它的混淆并希望废话的答案会被忽视而显得自信?

有人可以通过评估解释实际发生了什么z2,为什么它是"-1",为什么没有语法错误,并且有一个例子,这种行为是有用的(或者我们应该提交请求删除它)?

ruby syntax line-breaks syntax-error multiline

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

如何在右下角而不是右上角显示图例?

通常,使用该命令时,图例会显示在右上角

legend('aa', 'bb', 'cc', 'dd')
Run Code Online (Sandbox Code Playgroud)

但这阻碍了我的曲线.

如何将它放在右下角?

matlab plot legend

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

找到g ++使用的STL头的路径

我需要在调试版本中查找一些东西std::vector<T>,我不记得标题的实际位置.这是MSYS下在Windows上,在那里,这是棘手的,因为你有/include,/mingw/include,/mingw/mingw32/include,/usr/include,,我仍然无法找到他们...

我知道一种方法,就是写一个这样的文件:

#include <vector>

int main() {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后

$ g++ -E temp.cpp | grep vector
Run Code Online (Sandbox Code Playgroud)

我们发现它在这里: /mingw/lib/gcc/mingw32/4.8.1/include/c++/vector

但是有更快的方法吗?我们能g++不问这个伎俩吗?

c++ gcc stl g++ msys

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

永远重复“内核死亡,重新启动”

当我尝试跑步时

$ jupyter qtconsole
Run Code Online (Sandbox Code Playgroud)

控制台显示,并显示以下消息

Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Kernel died, restarting
________________________
Run Code Online (Sandbox Code Playgroud)

继续。

尝试$ jupyter qtconsole --debug没有打印其他任何东西,也没有添加

c.Application.log_level = 0
c.Session.debug = True
Run Code Online (Sandbox Code Playgroud)

进入 $USERHOME/.jupyter/jupyter_qtconsole_config.py

另外,我什么也没找到,$USERHOME/.ipython/profile_default/log/周围也没有其他目录。

自上次启动以来,我的配置没有任何改变jupyter-qtconsole

我至少如何找出内核出了什么问题?Jupyter中肯定有一些选项可以获取内核的STDERR输出,以查看导致异常的异常吗?

python qtconsole jupyter jupyter-console

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

matlab - 什么是null/None/nil/NULL等等?

在大多数OO语言中,变量可以指向对象,它们也可以具有空值,这非常方便.

在Matlab中,我有一个解析命令的函数,然后返回一个单元格数组,或者false如果它失败则返回(等于零 - 这是另一种常见模式):

function re = parse(s)
    ...
    if (invalid)
        re = false;
        return;
    end
end
Run Code Online (Sandbox Code Playgroud)

问题是,当我检查结果时,它会给出一个错误:

re = parse(s);
if (false == re)
Undefined function 'eq' for input arguments of type 'cell'.
Run Code Online (Sandbox Code Playgroud)

我已经编写了一个函数来检查它没有错误:strcmp('logical', class(re)) && false == re但是在代码的热区域使用它似乎很慢,如果我必须将这个函数添加到我正在编写的每个M文件中也很不方便.

使用NaN更糟糕,因为除了抛出那个错误之外,它也不等于它自己.

使用这种模式有什么更好的选择?

matlab

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

Python - os.path不存在:AttributeError:'module'对象没有属性'path'

调查一下我开始用gdb-python突然得到的一个奇怪的错误,我把它简化为:

C:\Users\User>python -i
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> dir(os.path)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'path'
>>> dir(os)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
Run Code Online (Sandbox Code Playgroud)

通过其他一些'module' object has no attribute答案,最常见的建议是,os.py某个地方必须有另一个流氓sys.path,并且它正在加载,而不是内置的.但我检查了PYTHONPATH环境变量,并在当前目录中,并没有任何其他os.py.

因此,我找到了一种方法来查找定义实体的文件的名称,并且毫不奇怪,Python 以模块的形式具有这样的功能inspect.

>>> inspect.getsourcelines(os)
Traceback …
Run Code Online (Sandbox Code Playgroud)

python path corruption built-in python-import

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

使用自由变量警告每个(嵌套)函数(递归)

我想做以下事情:

for every nested function f anywhere in this_py_file:
    if has_free_variables(f):
        print warning
Run Code Online (Sandbox Code Playgroud)

为什么?主要是作为对其他地方描述的后期约束关闭的保险.即:

>>> def outer():
...     rr = []
...     for i in range(3):
...         def inner():
...             print i
...         rr.append(inner)
...     return rr
... 
>>> for f in outer(): f()
... 
2
2
2
>>> 
Run Code Online (Sandbox Code Playgroud)

每当我收到有关自由变量的警告时,我都会添加一个显式异常(在极少数情况下我会想要这种行为)或者像这样修复它:

...         def inner(i=i):

然后,行为变得更像Java中的嵌套类(其中任何要在内部类中使用的变量必须是final).

(据我所知,除了解决后期绑定问题之外,这还会促进更好地使用内存,因为如果函数"关闭"外部作用域中的某些变量,那么外部作用域不能被垃圾收集因为功能就在附近.对吗?)

我找不到任何方法来获取嵌套在其他函数中的函数.目前,我能想到的最好的方法是使用解析器,这看起来很多工作.

python reflection closures nested-function

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

如何强制python使用dumbdbm模块创建新数据库?

shelve模块在anydbm模块顶部实现.此模块充当4种不同特定DBM实现的外观,它将按以下顺序选择创建新数据库时可用的第一个模块:

  • dbhash (已弃用但仍是anydbm首选).这是bsddb模块的代理,.open()真的bsddb.hashopen()

  • gdbm,GNU DBM库的Python模块,提供的功能比dbm模块在与同一个库一起使用时提供的功能更多.

  • dbm,一个使用ndbmBSD DB和GNU DBM库的代理模块(在编译Python时选择).

  • dumbdbm,一个纯python实现.

但是在我的系统中,虽然我dbhash出于某种原因我希望它只是用它来创建数据库dumbdbm.

我怎样才能做到这一点?

python database unix shelve

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

Matlab - "密封"一个数字,以便绘图不会覆盖它,但会自动创建一个新的数字

我正在写绘制人物的脚本.我想,直到它被用户手动关闭这个数字保持不变(如点击十字).

如果用户发出在Matlab提示一个绘图命令,这应该不会影响现有的数字,但应该会自动打开一个新的身影.

如何阻止在那里Matlab的重用图形对象默认行为?

当使用图形作为交互式用户界面时,这可能也很重要,当用户希望绘制某些内容时,不应该用其他内容替换它.


我试过的:help gcf说它检索全局'CurrentFigure'属性.因此,在绘图之后,我尝试了set('CurrentFigure', 12345),希望它将当前数字重置为不存在的值(也尝试为零,空数组).但是,抱怨说,它需要一个手柄.于是,我就实例化一个手柄:set('CurrentFigure', handle()),但抱怨说,它是一个抽象类.我想我在寻找可以实例化一个轻量级的手柄子类.

matlab plot handle figure matlab-figure

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

matplotlib 轴('tight')不起作用?

根据文档ax.autoscale(tight=True)应该

如果为 True,则将查看限制设置为数据限制;

随着ax.axis('tight')是相似的:

'tight' 限制设置为显示所有数据

(原文如此)

我们甚至在这个问题的截图中看到它是有效的。

但是无论我尝试什么,它似乎都不适用于以下简单示例。这是我输入的内容jupyter-qtconsole

In [27]: f, ax = plt.subplots(1)

In [28]: ax.plot([0, 1], [1, 0])
Out[28]: [<matplotlib.lines.Line2D at 0x825abf0>]

In [29]: ax.axis('tight')
Out[29]: (-0.050000000000000003, 1.05, -0.050000000000000003, 1.05)

In [30]: ax.autoscale(tight=True)

In [31]: plt.axis('tight')
Out[31]: (-0.050000000000000003, 1.05, -0.050000000000000003, 1.05)

In [32]: plt.autoscale(tight=True)

In [33]: ax.plot([0, 1], [1, 0])
Out[33]: [<matplotlib.lines.Line2D at 0x825a4d0>]

In [34]: ax.autoscale(enable=True, axis='x', tight=True)
Run Code Online (Sandbox Code Playgroud)

在这些命令中,绘图的限制不会改变:

边距可见

我可能做错了什么?

python layout plot axes matplotlib

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