精简脚本如下:
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",为什么没有语法错误,并且有一个例子,这种行为是有用的(或者我们应该提交请求删除它)?
通常,使用该命令时,图例会显示在右上角
legend('aa', 'bb', 'cc', 'dd')
Run Code Online (Sandbox Code Playgroud)
但这阻碍了我的曲线.
如何将它放在右下角?
我需要在调试版本中查找一些东西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++
不问这个伎俩吗?
当我尝试跑步时
$ 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输出,以查看导致异常的异常吗?
在大多数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
更糟糕,因为除了抛出那个错误之外,它也不等于它自己.
使用这种模式有什么更好的选择?
调查一下我开始用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) 我想做以下事情:
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
).
(据我所知,除了解决后期绑定问题之外,这还会促进更好地使用内存,因为如果函数"关闭"外部作用域中的某些变量,那么外部作用域不能被垃圾收集因为功能就在附近.对吗?)
我找不到任何方法来获取嵌套在其他函数中的函数.目前,我能想到的最好的方法是使用解析器,这看起来很多工作.
该shelve
模块在anydbm
模块顶部实现.此模块充当4种不同特定DBM实现的外观,它将按以下顺序选择创建新数据库时可用的第一个模块:
dbhash
(已弃用但仍是anydbm
首选).这是bsddb
模块的代理,.open()
真的bsddb.hashopen()
gdbm,GNU DBM库的Python模块,提供的功能比dbm
模块在与同一个库一起使用时提供的功能更多.
dbm,一个使用ndbm
BSD DB和GNU DBM库的代理模块(在编译Python时选择).
dumbdbm,一个纯python实现.
但是在我的系统中,虽然我dbhash
出于某种原因我希望它只是用它来创建数据库dumbdbm
.
我怎样才能做到这一点?
我正在写绘制人物的脚本.我想,直到它被用户手动关闭这个数字保持不变(如点击十字).
如果用户发出在Matlab提示一个绘图命令,这应该不会影响现有的数字,但应该会自动打开一个新的身影.
如何阻止在那里Matlab的重用图形对象默认行为?
当使用图形作为交互式用户界面时,这可能也很重要,当用户希望绘制某些内容时,不应该用其他内容替换它.
我试过的:help gcf
说它检索全局'CurrentFigure'
属性.因此,在绘图之后,我尝试了set('CurrentFigure', 12345)
,希望它将当前数字重置为不存在的值(也尝试为零,空数组).但是,抱怨说,它需要一个手柄.于是,我就实例化一个手柄:set('CurrentFigure', handle())
,但抱怨说,它是一个抽象类.我想我在寻找可以实例化一个轻量级的手柄子类.
根据文档,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 ×5
matlab ×3
plot ×3
axes ×1
built-in ×1
c++ ×1
closures ×1
corruption ×1
database ×1
figure ×1
g++ ×1
gcc ×1
handle ×1
jupyter ×1
layout ×1
legend ×1
line-breaks ×1
matplotlib ×1
msys ×1
multiline ×1
path ×1
qtconsole ×1
reflection ×1
ruby ×1
shelve ×1
stl ×1
syntax ×1
syntax-error ×1
unix ×1