我经常使用R来分析数据,并且非常喜欢Notepad ++和NppToR.特别是,NppToR可以毫不费力地运行部分代码.我只是突出显示一段R代码来运行并按下F8.然后代码神奇地在R控制台中运行.
现在,我需要使用python来分析数据.我知道ipython非常适合交互式工作,但复制一段python代码并手动将其粘贴到ipython控制台中总是非常烦人.此外,缩进通常是混合的,因此整个行都无法运行.请注意,我想运行"选定"代码行,而不是整个文件.
所以我正在寻找类似于NppToR的程序/插件/宏,但是使用python/ipython控制台.我在网上搜索过,但找不到这样的.有些插件很好,但不完全是我想要的.例如,Python Script可以扩展Notepad ++本身,但不能扩展.各种其他"运行"扩展使整个文件可以在python中运行.
我正在使用以下设置运行valgrind :
valgrind --tool=memcheck --tool=callgrind --num-callers=20 --track-fds=yes --error-exitcode=1 CMD. 特别是,--track-fds=yes按照需要工作,但由于fds 0,1,2应该打开,每次运行都会失败.但是,我不想放弃--track-fds,因为它肯定会提供有意义的信息.那么,是否存在valgrind选项/方法来跟踪除0,1,2之外的fds?
==5872== FILE DESCRIPTORS: 3 open at exit.
==5872== Open file descriptor 2:
==5872== <inherited from parent>
==5872==
==5872== Open file descriptor 1:
==5872== <inherited from parent>
==5872==
==5872== Open file descriptor 0: /dev/pts/0
==5872== <inherited from parent>
==5872==
==5872==
==5872== Events : Ir
==5872== Collected : 3081079256
==5872==
==5872== I refs: 3,081,079,256
Run Code Online (Sandbox Code Playgroud) 我正在用 C 语言编写一个 python 模块,并寻找一种在模块内部编写模块的方法。
PyMODINIT_FUNC
initA(void)
{
PyObject* pMod, pSubMod;
pMod = Py_InitModule3("A", A_Methods, A_Doc);
pSubMod = PyModule_New("B");
PyModule_AddStringConstant(pSubMod, "__doc__", B_Doc);
PyModule_AddIntConstant(pSubMod, "SOMETHING", 10);
PyModule_AddObject(pMod, "B", pSubMod);
... and so on ...
Run Code Online (Sandbox Code Playgroud)
编译后,我尝试通过各种导入方法访问模块及其常量
>>> import A
>>> print A.B.SOMETHING
10
>>> from A import B
>>> print B.SOMETHING
10
>>> from A.B import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named B
Run Code Online (Sandbox Code Playgroud)
前两个听起来很合理,而且工作得很好。然而,最后一个不起作用。我期望我应该有一个相当于__init__.py脚本的代码。但是,我不想编写单独的 .py 文件;相反,我想直接在 C init 函数中包含这样的代码。
作为参考,我附上了两个模块的 …
有没有办法使用替换失败不是枚举的错误(SFINAE)?
template <typename T>
struct Traits
{
}
template <>
struct Traits<A>
{
};
template <>
struct Traits<B>
{
enum
{
iOption = 1
};
};
template <T>
void Do()
{
// use Traits<T>::iOption
};
Run Code Online (Sandbox Code Playgroud)
然后,Do<B>();工作和Do<A>();失败.但是,当iOption不存在时,我可以提供默认行为.所以我将Do to DoOption的一部分分开了.
template <typename T, bool bOptionExist>
void DoOption()
{
// can't use Traits<T>::iOption. do some default behavior
};
template <typename T>
void DoOption<T, true>()
{
// use Traits<T>::iOption
};
template <T>
void Do()
{
// 'Do' does not use …Run Code Online (Sandbox Code Playgroud) 我有一个我认为是数学错误的东西,我不完全理解它为什么会发生.
if (mNextBottomIndex < mBlocks.size() - 1) {
if (mBlocks[mNextBottomIndex + 1]->getGlobalPosition().y >= -mBlocks[mNextBottomIndex + 1]->getHeight()) {
mBlocks[mNextBottomIndex + 1]->setAlpha(1.0f);
mNextBottomIndex++;
}
}
Run Code Online (Sandbox Code Playgroud)
它正在评估inner if statement因为mBlocks.size() = 0和mNextBottomIndex = 3(或mNextBottomIndex等于任何数字> 0).所以我的问题是,鉴于最后一句中的变量,它是如何过去的outer if statement?应用程序不在后台线程中处理这些变量,并且变量在之前和之后是相同的outer if statement
我纠正外if statement是
if (mBlocks.size() != 0 && mNextBottomIndex < mBlocks.size() - 1) {
if (mBlocks[mNextBottomIndex + 1]->getGlobalPosition().y >= -mBlocks[mNextBottomIndex + 1]->getHeight()) {
mBlocks[mNextBottomIndex + 1]->setAlpha(1.0f);
mNextBottomIndex++;
}
}
Run Code Online (Sandbox Code Playgroud)
它现在似乎没有崩溃.