小编det*_*tly的帖子

寻找表生成宏成语的好解释

我想在前面说清楚:我知道这个技巧是如何工作的,我想要的是一个明确的解释与其他人分享的链接.

C宏问题的答案之一谈到了"X宏"或"尚未定义的宏"的习语.这包括定义如下内容:

#define MAGIC_LIST \
    X(name_1, default_1) \
    X(name_2, default_2) \
    ...
Run Code Online (Sandbox Code Playgroud)

然后创建一个具有命名索引的值数组:

typedef enum {
#define X(name, val) name,

    MAGIC_LIST

#undef X
} NamedDefaults;
Run Code Online (Sandbox Code Playgroud)

您可以使用不同的#definefor 重复该过程X()来创建值数组,也可以调试字符串等.

我想要一个关于如何工作的明确解释的链接,与那些熟悉C的人交往.我不知道每个人通常称之为这种模式,所以我到目前为止尝试在网上搜索它已经失败了.

(如果对SO有这样的解释,那就没事了......)

macros c-preprocessor

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

什么是U + 215F(分数分子一)?

当我遇到U + 215F时,我正在寻找一个特定的Unicode字符:分数分子1(?)

它到底是为了什么?这是在特定的东西(有用的其他不仅仅是对于具有1漂浮在空格的缘故)?它可以以某种方式与其他字形组合以创建其他分数吗?在那个酒吧下面真的有什么东西只有真正聪明的人才能看到吗?

unicode

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

如何使用autodoc覆盖Sphinx中的构造函数参数?

假设我有这样一个类:

class MyClass(object):
    """ Summary docs for my class.

    Extended documentation for my class.
    """

    def __init__(self, *args):
        self.values = np.asarray(args)
Run Code Online (Sandbox Code Playgroud)

如果我使用带有autodoc扩展名的Sphinx 来记录这个类,如下所示:

.. automodule:: mymodule
   :members:
Run Code Online (Sandbox Code Playgroud)

...构造函数签名显示为MyClass(*args).我宁愿覆盖它并将其记录为,比方说MyClass(first, second, third).

如果这是一个函数,我可以覆盖docstring第一行中的签名.但是这个技巧似乎不适用于类docstring.那么如何覆盖构造函数签名呢?

python python-sphinx

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

是否可以使用 Python 的 argparse 重建命令行?

我有一个 Python 脚本,它读取一个包含某些其他工具的命令行调用的文件。我想在调用该工具之前修改此调用的选项。例如,我可能会转变:

my_util --input file1.txt --option1 red --option2 blue
Run Code Online (Sandbox Code Playgroud)

...对此:

my_util --input file1_001.txt --option1 red --option3 green
Run Code Online (Sandbox Code Playgroud)

(更准确地说,我将以列表的形式处理参数。)

我认为使用该argparse模块将是最简单的方法:我可以解析参数,根据需要更改、添加或删除选项,然后重建命令行。

但最后一步我该怎么做呢?给定Namespace返回的对象parse_args(),我可以轻松地重建命令行选项列表,例如可以传递给 吗subprocess.Popen()

python subprocess argparse

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

如何在 Pandas 中整理(融化)数据并保留所有其他列?

考虑这个 Pandas 数据框:

df = pd.DataFrame({
    'User ID': [1, 2, 2, 3],
    'Cupcakes': [1, 5, 4, 2],
    'Biscuits': [2, 5, 3, 3],
    'Score': [0.65, 0.12, 0.15, 0.9]
})
Run Code Online (Sandbox Code Playgroud)

IE。

   User ID  Cupcakes  Biscuits  Score
0        1         1         2   0.65
1        2         5         5   0.12
2        2         4         3   0.15
3        3         2         3   0.90
Run Code Online (Sandbox Code Playgroud)

我想整理(“融化”)这些数据,以便甜点类型是单独的观察结果。但我也想保留每个用户的分数。

melt()直接使用不起作用:

df.melt(
    id_vars=['User ID'],
    value_vars=['Cupcakes', 'Biscuits'],
    var_name='Dessert', value_name='Enjoyment'
)
Run Code Online (Sandbox Code Playgroud)

...给出:

   User ID   Dessert  Enjoyment
0        1  Cupcakes          1
1        2 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

带有评论包装的文本编辑器

我通常在Debian(GNU/Linux)下使用Geany或Hi-Tide进行固件开发,主要是C(但也读旧的汇编程序).我使用单行注释来记录代码,当我重新输入某些内容并且必须手动重新打破每个后续行以使其保持在80个字符的边距时,它真的很烦人.

是否有文本编辑器可以重新包装连续的单行注释(并在我键入时自动执行此操作)?那是,给定:

/// This is a really long line that should have been wrapped at "that" but was not.
/// This sentence is in the same
/// paragraph as the last.
Run Code Online (Sandbox Code Playgroud)

...我想要一个能重新包装它的编辑器

/// This is a really long line that
/// should have been wrapped at "that"
/// but was not. This sentence is in
/// the same paragraph as the last.
Run Code Online (Sandbox Code Playgroud)

...最好在我输入时明智地做这件事.

我试过了:

  • Hi-Tide(基于Eclipse 3.3)
  • Geany
  • jEdit的
  • UniversalIndentGUI +一堆美化剂(我找不到任何有效的格式化工具,而且它也不是一个很好的工作流程)
  • GVim - 下一行开始//should have been...而不是/// should have …

comments text-editor editor

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

从内联字节重组浮点数

我在PIC32MX系列微处理器上使用HiTech PICC32,但我认为这个问题对于C中的任何人来说都是足够普遍的.(这几乎相当于C90,sizeof(int)= sizeof(long)= sizeof(float )= 4.)

假设我读了一个代表a的4字节数据字float.我可以使用以下命令快速将其转换为实际的浮点值:

#define FLOAT_FROM_WORD(WORD_VALUE) (*((float*) &(WORD_VALUE)))
Run Code Online (Sandbox Code Playgroud)

但这只适用于左值.例如,我不能在函数返回值上使用它,如:

FLOAT_FROM_WORD(eeprom_read_word(addr));
Run Code Online (Sandbox Code Playgroud)

是否有一种简短而甜蜜的方式来内联,即没有函数调用或临时变量?说实话,我没有任何理由避免函数调用或额外变量,但它让我烦恼.必须有一种方法我不见了.

补充:我没有意识到这WORD实际上是一个常见的typedef.我已经更改了宏参数的名称以避免混淆.

c embedded type-punning

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

Python类和__init__方法

我正在通过深入python学习python.即使通过文档,也几乎没有问题也无法理解.

1)BaseClass

2)InheritClass

当我们将InheritClass实例分配给变量时,当InheritClass不包含__init__方法而BaseClass是什么时,会发生什么?

  • 是否自动调用BaseClass __init__方法
  • 另外,告诉我在引擎盖下发生的其他事情.

实际上fileInfo.py的例子让我很头疼,我只是无法理解事情是如何运作的.以下

python

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

让py2exe与zope.interface一起使用

我有一个基于Twisted和PyGTK的Python应用程序.扭曲本身取决于zope.interface,我不直接导入它.

不幸的是,当我尝试运行我的应用程序时,错误日志中会出现以下错误:

Traceback (most recent call last):
  File "tasks.py", line 4, in <module>
  File "ui\__init__.pyc", line 14, in <module>
  File "twisted\python\log.pyc", line 17, in <module>
ImportError: No module named zope.interface
Traceback (most recent call last):
  File "tasks.py", line 4, in <module>
  File "ui\__init__.pyc", line 14, in <module>
  File "twisted\python\log.pyc", line 17, in <module>
ImportError: No module named zope.interface
Traceback (most recent call last):
  File "tasks.py", line 4, in <module>
  File "ui\__init__.pyc", line 14, in <module>
  File "twisted\python\log.pyc", line 17, in …
Run Code Online (Sandbox Code Playgroud)

python pygtk twisted py2exe zope.interface

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

如何嵌套任意数量的Python文件上下文管理器?

我想采用任意数量的路径来表示嵌套的tar档案,并对最里面的档案执行操作.问题是,嵌套可以是任意的,因此我需要的上下文管理器的数量也是任意的.

举个例子:

ARCHIVE_PATH = "path/to/archive.tar"

INNER_PATHS = (
    "nested/within/archive/one.tar",
    "nested/within/archive/two.tar",
    # Arbitary number of these
)

def list_inner_contents(archive_path, inner_paths):
    with TarFile(archive_path) as tf1:
        with TarFile(fileobj=tf1.extractfile(inner_paths[0])) as tf2:
            with TarFile(fileobj=tf2.extractfile(inner_paths[1])) as tf3:
                # ...arbitary level of these!
                return tfX.getnames()

contents = list_inner_contents(ARCHIVE_PATH, INNER_PATHS))
Run Code Online (Sandbox Code Playgroud)

我不能使用with语句的嵌套语法,因为可以嵌套任意数量的级别.我无法使用,contextlib.nested因为文档在那里说:

... nested()用于打开两个文件是一个编程错误,因为如果在打开第二个文件时抛出异常,第一个文件将不会立即关闭.

有没有办法使用语言结构来执行此操作,还是需要手动管理我自己的打开文件对象堆栈?

python contextmanager python-2.7

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