小编Jas*_*son的帖子

ipython:使用%run时重新导入模块

我喜欢ipython,但我发现%run有问题:重复调用%run时不会重新加载导入的模块.

假设文件ex1.py包含以下行:

import ex2
ex2.x.append(1)
print ex2.x
Run Code Online (Sandbox Code Playgroud)

文件ex2.py包含:

x = []
Run Code Online (Sandbox Code Playgroud)

现在,从命令行运行python ex1.py每次都会重复打印[1].但是%run ex1.py从ipython内部重复调用会打印[1],[1,1],[1,1,1]等.这是因为模块ex2.py没有重新加载.所以我们遇到了一个问题:ipython运行脚本协议没有反映"真实世界"的行为.

注意:

%load_ext autoreload
%autoreload 2
Run Code Online (Sandbox Code Playgroud)

没有帮助.只有在对ex2.py文件进行了更改后,这些行才会重新加载ex2.py.如果我们不做任何更改,或只对ex1.py进行更改,我们会得到不良行为.

有没有办法让%run像这里的命令行一样?使用ipython作为脚本的测试环境似乎是一个真正的缺陷.(或者道德是模块不应该写入另一个模块的命名空间?)

python import module ipython

18
推荐指数
2
解决办法
7513
查看次数

临时ostream对象的c ++问题

我想改变这个工作代码:

ofstream outfile("my_file.txt");
copy(v.begin(), v.end(), ostream_iterator<int>(outfile));
Run Code Online (Sandbox Code Playgroud)

进入这个:

copy(v.begin(), v.end(), ostream_iterator<int>(ofstream("my_file.txt")));
Run Code Online (Sandbox Code Playgroud)

换句话说,我使用ofstream对象的"匿名"或未命名版本.

两个问题:

(1)为什么第二次尝试失败?

(2)第二次尝试在风格上是否很好,或者在C++中保持所有明确命名的更好?我来自Python背景,其中对象是一直在创建的.

谢谢!!

c++ anonymous-objects temporary-objects

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