小编Ale*_*lex的帖子

在python中检查lambda中的断言

我正在尝试使用断言来显示一些不变量(主要是在测试中)因此我想写下面的内容:

values = [ range(10) ] 
expected_values = [ range(10) ]

map (lambda x: assert x[0] == x[1] ,zip( [ run_function(i) for i in values ], expected_values))
Run Code Online (Sandbox Code Playgroud)

如果我将它与unittest.assertEqual一起使用,这可以完美地运行,但是如果我想用断言来编写它就会失败.有没有办法来解决这个问题?

python

6
推荐指数
3
解决办法
4089
查看次数

Python中__func__(来自C)的等价物

我想为python创建某种调试输出,并希望将函数名传递给另一个函数进行输出.

我发现这样做的唯一合理方式是:

def foobar():
  print 'hello world'

  print foobar.__name__
Run Code Online (Sandbox Code Playgroud)

是否有一些东西对当前函数做同样的事情来改进该行的复制和粘贴?

喜欢C等价物printf("%s", __func__).

python python-2.x

6
推荐指数
3
解决办法
7074
查看次数

如何通过提交消息在存储库中找到git提交?

我们最近将SVN存储库转换为GIT.似乎我们通过此转换丢失了一些提交,并希望验证这一点.

因此,我们希望为每个svn提交找到匹配的git提交,以检查转换是否实际发生.

$ git log|grep "some partial commit message" 这是不够的,因为它只是通过直接的先行者而忽略了不是直接祖先的分支.

$ git show <commit-hash> 不会工作,因为svn没有sha1sums.

我发现的最接近的事情是:$ git reflog show --all --grep="releasenotes"|xargs git show --shortstat然而这似乎并不完全有效,因为它似乎在更多的地方grep而不仅仅是提交消息(我们得到了误报).

我也试过用这个: $ git rev-list --all|xargs -n1 bash -c 'git show|head -n10'|grep -i release

基本上我没有一个很好的方法来打印没有差异的提交消息.

[编辑]

我不完全确定,但我想这应该列出存储库中的所有提交消息.

git rev-list --all|xargs -n1 git log -n1
Run Code Online (Sandbox Code Playgroud)

git

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

什么是约束模板?

Herb Sutters在谈话中提到了约束模板(又名Concepts Lite):现代C++:你需要知道什么.

我知道boost有一个概念包已经存在多年了,当模板推导机制无法找到运算符,函数或具有访问冲突模式时,它允许一个非常好的打印错误消息.

我在isocpp博客上遇到过提及已经有一个gcc的实验分支,它实现了提出Concepts Lite文档.但是,通过当前的C++ 14草案,我找不到任何提示,这是否已经成为其中的一部分C++14.

所以问题很简单:

  • Concepts Lite将成为C++ 14的一部分吗?(参考标准首选.我找不到一个,我对标准不是很熟悉.)
  • 它的正确语法是什么?(Herb的提案和幻灯片在这里分歧,我不知道哪一个更新)
  • 你能给出一个约束(谓词)和约束模板的最小例子吗?

注意:如果你等待的时间足够长,我会尝试让gcc分支运行,至少可以说实验实现,但这并不意味着语法的正确性.

c++ c++14

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

如何在grpc中进行有效负载压缩?

我正在开发一个基于grpc的应用程序,其中请求数据可能高达500KB,响应可能更大,所以我想压缩数据.我很难在grpc中找到有关如何操作的文档/示例.clientContext中的set_compression_algorithm有什么作用?我是否必须在服务器端设置一些东西?

或者我应该忘记在grpc上压缩,并自己压缩/解压缩进/出protobuf消息?

c++ grpc

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

为什么在构造函数调用中需要双括号,如:foo x((bar()));

可能重复:
为什么使用一组空括号来调用没有参数的构造函数是错误的?

我已经看到了关于嵌套构造函数调用和支撑的C++ FQA 条目,并且总是想知道C++解析器如何解析两个以及为什么解析器无法解析它.

所以我明白为什么foo xxx();是模棱两可的.然后foo x(bar());是什么使得模糊,因为它显然没有前瞻性声明.(即:应该有一个语法可以成功检测到这一点).

有人可以解释C++语法那部分的局限性和模糊性吗?

c++ compiler-theory most-vexing-parse

4
推荐指数
1
解决办法
805
查看次数

我什么时候应该在C++中使用引用?

我一直在编写C++编程,我开始怀疑规则使用引用应尽可能应用于任何地方.

这个相关的SO帖子不同,我对一种不同的东西感兴趣.

根据我的经验,参考/指针混合会混淆你的代码:

std::vector<Foo *> &x = get_from_somewhere(); // OK? reference as return value
some_func_pass_by_ref(x); // OK reference argument and reference variable
some_func_by_pointer(x[4]); // OK pointer arg, pointer value
some_func_pass_elem_by_ref(*x[5]); // BAD: pointer value, reference argument
some_func_that_requires_vec_ptr(&x); // BAD: reference value, pointer argument
Run Code Online (Sandbox Code Playgroud)

一种选择是,以取代&* constFoo &Foo * const

void some_func_by_ref(const std::vector<Foo * const> * const); // BAD: verbose!
Run Code Online (Sandbox Code Playgroud)

这样至少走遍了.和我重写功能头走了,因为所有的参数将指针......在污染代码的价格const,而不是指针运算(主要是&*).

我想知道在可能的规则下如何 …

c++ pointers c++03

4
推荐指数
1
解决办法
461
查看次数

如何在多个 GIT 存储库中组织大型项目?

我有一个cat依赖于libzzz库的 C++ 项目。它libzzz有自己的 git 存储库,现在我要为该cat项目创建一个存储库。

如何组织 CMake 构建脚本cat

  • 选项1:CMake的脚本cat考虑libzzz建造和安装在系统和cat项目提供FindLibZZZ.cmake脚本搜索libzzz/usr/include/libzzz + /usr/lib/libzzz。但是如何处理非linux平台呢?我个人不喜欢这个选项。

  • 选项 2:在 GIT 存储库中添加某种链接依赖项,这些链接依赖项cat会自动将libzzz源从其源签出到某个cat子目录中。所以cat的 CMakeLists.txt 考虑libzzz放在 somecat的子目录中。怎么做?

c++ git build cmake

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

当用户输入'q'或'quit'时,如何让我的小python程序退出?

我尝试用sys.stdout.flush()刷新stdout但它仍然无法正常工作.它工作正常,直到用户只输入破坏代码的C或F. 后缀是第一个被调用的函数,因此我确保如果用户只输入一个字符,则返回错误.但是一旦返回错误,用户就不能再键入'quit'或'q'.

#!/usr/local/bin/python
#Converts between Celsius and Fahrenheit
import random, sys

def check_version():
    """
    Make sure user is using Python 3k
    """
    if(sys.version_info[0] != 3):
        print("Stop peddling with your feet Fred!")
        print("Only Py3k supported")
        sys.exit()
    else:
        pass

def random_insult():
    """
    Returns a list of random insults with the sole purpose of insulting the user
    """
    insults = ["Kel", "stimpy", "knucklehead"]
    return insults[random.randrange(3)]

def suffix(temp):
    """
    Accepts the input temperature value which should be a string suffixed by C(c) or F(f) …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
1653
查看次数

如何使用相同的名称消除名称空间和类的歧义

考虑以下代码:

struct foo {
    typedef int bar;
};

namespace foo {
    class baz {
        /* code */
    };
}
Run Code Online (Sandbox Code Playgroud)

这是分布在我必须要处理的代码库上,它有时会起作用,我不明白如何.

只要命名空间和类不在同一个源中(在预处理之后)就可以工作(我理解那部分).但是,如果突然将命名空间和类都被预处理器拖入同一个编译单元,它(可能)会发生冲突(我不知道这是否会在源中发生).

是否存在允许编译器始终正确解析代码结构的约定?最合乎逻辑的是禁止名称空间和类具有相同的符号.应用的编码风格允许使用类冲突命名空间,尽管存在歧义,因此我更倾向于使用一种方式告诉编译器使用而不是更改编码约定.

就像是:

use_namespace(foo)::baz b; 
use_class(foo) b;
Run Code Online (Sandbox Code Playgroud)

c++ c++11

2
推荐指数
1
解决办法
1028
查看次数