小编csc*_*hol的帖子

最喜欢的(G)Vim插件/脚本?

你最喜欢的(G)Vim插件/脚本是什么?

vim editor

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

Python:生成器表达式与yield

在Python中,通过生成器表达式创建生成器对象与使用yield语句之间有什么区别吗?

使用产量:

def Generator(x, y):
    for i in xrange(x):
        for j in xrange(y):
            yield(i, j)
Run Code Online (Sandbox Code Playgroud)

使用生成器表达:

def Generator(x, y):
    return ((i, j) for i in xrange(x) for j in xrange(y))
Run Code Online (Sandbox Code Playgroud)

这两个函数都返回生成元组的生成器对象,例如(0,0),(0,1)等.

一个或另一个的任何优点?思考?


谢谢大家!这些答案中有很多很棒的信息和进一步的参考资料!

python yield generator

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

IronPython与Python .NET

我想从Python代码访问一些用C#编写的.NET程序集.

一点研究表明我有两个选择:

两种解决方案之间的权衡取舍是什么?

.net python ironpython cpython python.net

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

Python:使用'from X import Y'重新加载组件Y?

在Python中,一旦我在解释器会话中导入模块X import X,并且模块在外部更改,我可以重新加载模块reload(X).然后,在我的翻译会话中可以使用这些更改.

我想知道当我从模块X导入组件Y时是否也可以这样做from X import Y.

该语句reload Y不起作用,因为Y本身不是模块,而只是模块内部的一个组件(在本例中是一个类).

是否可以在不离开解释器会话(或导入整个模块)的情况下重新加载模块的各个组件?

编辑:

为了澄清,问题是从模块X导入类或函数Y并重新加载更改,而不是从包X中重新模块Y.

python python-import

80
推荐指数
5
解决办法
3万
查看次数

如何使用Python检索网页的页面标题?

如何使用Python检索网页的页面标题(标题html标记)?

html python

68
推荐指数
8
解决办法
7万
查看次数

如何在Python中编写下载进度指示器?

我写一个小程序下载文件通过HTTP(如,例如,描述在这里).

我还想包含一个小的下载进度指示器,显示下载进度的百分比.

这是我想出的:

    sys.stdout.write(rem_file + "...")    
    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("%2d%%" % percent)
      sys.stdout.write("\b\b\b")
      sys.stdout.flush()

输出:MyFileName ... 9%

还有其他想法或建议吗?

有点烦人的是在百分比的第一位数字中终端闪烁的光标.有办法防止这种情况吗?有没有办法隐藏光标?

编辑:

这里有一个更好的替代方法,在dlProgress和'\ r'代码中使用全局变量作为文件名:

    global rem_file # global variable to be used in dlProgress

    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("\r" + rem_file + "...%d%%" % percent)
      sys.stdout.flush()

输出:MyFileName ... 9%

并且光标显示在行的END处.好多了.

python http

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

ack:通过正则表达式从搜索中排除特定目录

如何通过带有ack的 RegEx忽略特定目录?

我可以使用该--ignore-dir选项,但这不允许我指定RegEx.我希望能够忽略任何目录,里面有句话testtests在其名称或更复杂的图案.

我也试过了一个负面的lookbehind via

ack -G '(?<!test)' pattern
Run Code Online (Sandbox Code Playgroud)

但这不起作用.它不排除test目录.

regex ack

25
推荐指数
4
解决办法
5506
查看次数

如何使用emacs以编程方式创建/更新TAGS文件?

是否有任何插件可以让emacs自动更新我的C项目中的TAGS文件(例如缓冲区保存或访问)或者如果没有TAGS文件存在则创建一个新插件?

我在Windows上运行(没有Cygwin),所以所有花哨的shell脚本都无济于事.我希望本机emacs解决方案不使用任何外部脚本.

我已经尝试过build-tags.eletags-table.el,但这些都没有用(我想要的方式).

还有其他想法吗?

emacs ctags

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

i ++比++ i效率低,如何展示?

我试图通过示例显示前缀增量比后缀增量更有效.

理论上这是有道理的:i ++需要能够返回未增加的原始值并因此存储它,而++我可以返回增量值而不存储先前的值.

但是有一个很好的例子可以在实践中证明这一点吗?

我尝试了以下代码:

int array[100];

int main()
{
  for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
    array[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)

我使用gcc 4.4.0编译它,如下所示:

gcc -Wa,-adhls -O0 myfile.cpp
Run Code Online (Sandbox Code Playgroud)

我再次这样做,后缀增量更改为前缀增量:

for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
Run Code Online (Sandbox Code Playgroud)

在两种情况下,结果都是相同的汇编代码.

这有些出乎意料.似乎通过关闭优化(使用-O0)我应该看到显示概念的差异.我错过了什么?有更好的例子来展示这个吗?

c++ optimization prefix postfix-operator

15
推荐指数
3
解决办法
8836
查看次数

Python:数据与文本?

Guido van Rossum关于Python 3000的演讲最后提到了从Python 2到Python 3过渡的几个方面.他特别谈到文本处理,因为转向Unicode是因为Python 3中字符串的唯一表示是主要变化之一.

就文本处理而言,一张幻灯片(#14)说:

  • 在2.6中:
    • 对所有数据使用字节和b'...'(知道这些只是str和'...'的别名)
    • 对所有文本使用unicode和u'...'
  • 在2.5中:
    • '...'表示数据,''...'表示文字

我使用的是Python 2.6.4.这究竟对我意味着什么?

在Python的世界中,数据和文本之间有什么区别?

python unicode python-3.x

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