小编Cra*_*een的帖子

在Python 3.0中可以看到generator.next()吗?

我有一个生成系列的生成器,例如:

def triangleNums():
    '''generate series of triangle numbers'''
    tn = 0
    counter = 1
    while(True):
        tn = tn + counter
        yield tn
        counter = counter + 1
Run Code Online (Sandbox Code Playgroud)

在python 2.6中,我可以进行以下调用:

g = triangleNums() # get the generator
g.next()           # get next val
Run Code Online (Sandbox Code Playgroud)

但是在3.0中,如果我执行相同的两行代码,我会收到以下错误:

AttributeError: 'generator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

但是,循环迭代器语法在3.0中有效

for n in triangleNums():
    if not exitCond:
       doSomething...
Run Code Online (Sandbox Code Playgroud)

我还没有能找到解释3.0行为差异的任何东西.

python iteration python-3.x

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

查看大表时,HTML表标题始终显示在窗口顶部

我希望能够"调整"HTML表格的演示文稿以添加单个功能:当向下滚动页面以使表格在屏幕上但标题行在屏幕外时,我希望标题保持不变在观察区域的顶部可见.

这在概念上类似于Excel中的"冻结窗格"功能.但是,HTML页面中可能包含多个表,我只希望它发生在当前处于视图中的表中,只有在它处于视图中时才会发生.

注意:我已经看到一种解决方案,其中表数据区域可滚动而标题不滚动.这不是我正在寻找的解决方案.

html html-table

167
推荐指数
7
解决办法
19万
查看次数

什么平台有8位字符以外的东西?

不时有人在SO上指出char(也就是"字节")不一定是8位.

似乎8位char几乎是通用的.我原本认为,对于主流平台,必须有一个8位char才能确保其在市场上的可行性.

现在和历史上,哪些平台使用的char不是8位,为什么它们与"普通"8位不同?

在编写代码时,考虑跨平台支持(例如,对于通用库而言),对于非8位平台,值得考虑的是什么char

在过去,我遇到过一些char16位的ADI DSP .我认为DSP是一种利基架构.(然后,当时手工编写的汇编程序很容易击败可用的C编译器可以做的事情,所以我在该平台上没有真正获得C的经验.)

c c++ cross-platform

133
推荐指数
8
解决办法
2万
查看次数

我应该如何构建一个包含Cython代码的Python包

我想制作一个包含一些Cython代码的Python包.我已经很好地运行了Cython代码.但是,现在我想知道如何最好地打包它.

对于大多数只想安装软件包的人来说,我想要包含.cCython创建的文件,并安排setup.py编译它以生成模块.然后用户不需要安装Cython来安装软件包.

但对于谁可能要修改包的人,我也想提供用Cython .pyx文件,并以某种方式也允许setup.py使用用Cython编译它们(因此这些用户需要安装用Cython).

我应该如何构建包中的文件以满足这两种情况?

用Cython文档提供了一些指导.但它没有说明如何制作一个单独setup.py处理有/无Cython情况.

python packaging cython

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

继承Python类继承中的docstrings

我正在尝试在Python中进行一些类继承.我希望每个班级和继承的班级都有良好的文档字符串.所以我认为对于继承的类,我希望它:

  • 继承基类docstring
  • 可能会将相关的额外文档附加到docstring

在类继承情况下是否有任何(可能是优雅或pythonic)方式进行此类文档字符串操作?多重继承怎么样?

python documentation inheritance

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

是否有更好的方法在标头中用C++表示嵌套命名空间

我从C++切换到Java和C#,并认为命名空间/包的使用在那里(结构良好)更好.然后我回到C++并试图以相同的方式使用命名空间,但在头文件中所需的语法是可怕的.

namespace MyCompany
{
    namespace MyModule
    {
        namespace MyModulePart //e.g. Input
        {
            namespace MySubModulePart
            {
                namespace ...
                {
                    public class MyClass    
Run Code Online (Sandbox Code Playgroud)

以下内容对我来说也很奇怪(避免深度缩进):

namespace MyCompany
{
namespace MyModule
{
namespace MyModulePart //e.g. Input
{
namespace MySubModulePart
{
namespace ...
{
     public class MyClass
     {
Run Code Online (Sandbox Code Playgroud)

是否有更短的方式来表达上述事情?我错过了类似的东西

namespace MyCompany::MyModule::MyModulePart::...
{
   public class MyClass
Run Code Online (Sandbox Code Playgroud)

更新

好吧,有人说Java/C#和C++中的使用概念是不同的.真?我认为(动态)类加载不是命名空间的唯一目的(这是一个非常技术性的推理视角).为什么我不应该将它用于可读性和结构化,例如想到"IntelliSense".

目前,命名空间与您可以在其中找到的内容之间没有逻辑/粘合剂.Java和C#做得更好......为什么要包含<iostream>和拥有命名空间std?好吧,如果你说的逻辑应该依靠头部以包括,为什么#包括不使用的"智能感知"友好的语法像#include <std::io::stream><std/io/stream>?我认为与Java/C#相比,缺省库中缺少的结构化是C++的一个弱点.

如果狂热冲突的唯一性是一个Point(这也是C#和Java的一个点),一个好主意是使用项目名称或公司名称作为命名空间,你不这么认为吗?

一方面它说C++是最灵活的...但每个人都说"不要这样做"?在我看来,C++可以做很多事情,但是在很多情况下,与C#相比,即使是最简单的事情也会有一种可怕的语法.

更新2

大多数用户认为创建比两个级别更深的嵌套是无稽之谈.好的,那么Win8开发中的Windows :: UI :: Xaml和Windows :: UI :: Xaml :: Controls :: Primitives名称空间呢?我认为微软对名称空间的使用是有道理的,它确实比仅仅2级更深.我认为更大的库/项目需要更深层次的嵌套(我讨厌像ExtraLongClassNameBecauseEveryThingIsInTheSameNameSpace这样的类名...那么你也可以将所有东西放到全局命名空间中.)

更新3 - …

c++ syntax namespaces

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

函数调用是现代平台的有效内存障碍吗?

在我评论的代码库中,我发现了以下习语.

void notify(struct actor_t act) {
    write(act.pipe, "M", 1);
}
// thread A sending data to thread B
void send(byte *data) {
    global.data = data;
    notify(threadB);
}
// in thread B event loop
read(this.sock, &cmd, 1);
switch (cmd) {
    case 'M': use_data(global.data);break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

"抓住它",我对作者说,我的团队的一名高级成员,"这里没有内存障碍!你不能保证global.data将从缓存刷新到主内存.如果线程A和线程B将运行两个不同的处理器 - 这个方案可能会失败".

高级程序员咧嘴一笑,慢慢解释,仿佛在解释他五岁的男孩如何系鞋带:"听小男孩,我们在这里看到很多线程相关的错误,在高负载测试中,在真实客户中",他他停下来留下他长长的胡须,"但我们从来没有这个成语的错误".

"但是,它在书中说......"

"安静!",他立刻叫醒我,"也许理论上,它不能保证,但实际上,你使用函数调用的事实实际上是一个内存屏障.编译器不会重新排序指令global.data = data,因为它无法知道是否任何人在函数调用中使用它,并且x86架构将确保其他CPU在线程B从管道读取命令时将看到这段全局数据.请放心,我们有充足的现实问题需要担心.我们不需要在虚假的理论问题上投入额外的努力.

"请放心,我的孩子,你会理解将真正的问题与我需要获得博士的非问题分开."

他是对的吗?这在实践中真的不是问题(比如x86,x64和ARM)吗?

这是我所学到的一切,但他确实有一个长胡子和一个非常聪明的外观!

额外的积分如果你能告诉我一段代码证明他错了!

c multithreading memory-barriers

66
推荐指数
2
解决办法
4757
查看次数

为嵌入式Linux设备实现更新/升级系统

我有一个在嵌入式Linux设备上运行的应用程序,并且偶尔会对软件进行更改,有时也会对根文件系统甚至已安装的内核进行更改.

在当前的更新系统中,只删除旧应用程序目录的内容,并在其上复制新文件.当对根文件系统进行更改时,新文件将作为更新的一部分传递,并简单地复制到旧文件上.

现在,目前的方法存在一些问题,我正在寻找改善这种情况的方法:

  • 用于创建文件系统映像的目标的根文件系统未进行版本控制(我认为我们甚至没有原始rootfs).
  • 手动选择进入更新的rootfs文件(而不是diff)
  • 更新不断增长,成为一个皮塔饼.现在,更新/升级之间存在拆分,其中升级包含更大的rootfs更改.
  • 我的印象是,如果完全实现,更新中的一致性检查相当脆弱.

要求是:

  • 应用程序更新包不应太大,并且必须能够在已进行修改的情况下更改根文件系统.
  • 升级可以更大,只包含进入根文件系统的内容(如新库,内核等).更新可能需要安装升级.
    升级是否可以包含整个根文件系统,只需dd在目标的闪存驱动器上执行操作?
  • 创建更新/升级包应尽可能自动化.

我绝对需要一些方法来对根文件系统进行版本控制.这必须以某种方式完成,我可以从中计算某种diff可用于更新目标设备的rootfs的方法.

我已经查看了Subversion,因为我们将它用于源代码,但这对Linux根文件系统(文件权限,特殊文件等)不合适.

我现在已经创建了一些shell脚本,可以给我类似的东西,svn diff但我真的想知道是否已经存在一个可行的,经过测试的解决方案.

使用这样diff的我认为升级将简单地成为包含基于已知根文件系统状态的增量更新的包.

你对此有何看法和想法?你会如何实现这样的系统?我更喜欢一个简单的解决方案,可以在不太长的时间内实现.

linux software-update embedded-linux

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

有加密版本控制系统吗?

我正在寻找一个加密版本控制系统.基本上我想

  • 在发送到服务器之前,将所有文件在本地加密.服务器永远不应该接收任何未加密的文件或数据.

  • 其他所有功能的工作方式与SVN或CVS的功能几乎完全相同.

任何人都可以推荐这样的东西?我做了很多搜索,但我找不到任何东西.

svn security encryption version-control

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

wxPython for Python 3

wxPython是否有Python 3的版本?

如果是的话,我在哪里可以得到它?

wxpython python-3.x

43
推荐指数
2
解决办法
4万
查看次数