我正在尝试使用断言来显示一些不变量(主要是在测试中)因此我想写下面的内容:
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创建某种调试输出,并希望将函数名传递给另一个函数进行输出.
我发现这样做的唯一合理方式是:
def foobar():
print 'hello world'
print foobar.__name__
Run Code Online (Sandbox Code Playgroud)
是否有一些东西对当前函数做同样的事情来改进该行的复制和粘贴?
喜欢C等价物printf("%s", __func__).
我们最近将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) Herb Sutters在谈话中提到了约束模板(又名Concepts Lite):现代C++:你需要知道什么.
我知道boost有一个概念包已经存在多年了,当模板推导机制无法找到运算符,函数或具有访问冲突模式时,它允许一个非常好的打印错误消息.
我在isocpp博客上遇到过提及已经有一个gcc的实验分支,它实现了提出Concepts Lite的文档.但是,通过当前的C++ 14草案,我找不到任何提示,这是否已经成为其中的一部分C++14.
所以问题很简单:
注意:如果你等待的时间足够长,我会尝试让gcc分支运行,至少可以说实验实现,但这并不意味着语法的正确性.
我正在开发一个基于grpc的应用程序,其中请求数据可能高达500KB,响应可能更大,所以我想压缩数据.我很难在grpc中找到有关如何操作的文档/示例.clientContext中的set_compression_algorithm有什么作用?我是否必须在服务器端设置一些东西?
或者我应该忘记在grpc上压缩,并自己压缩/解压缩进/出protobuf消息?
我一直在编写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)
一种选择是,以取代&与* const像Foo &用Foo * const
void some_func_by_ref(const std::vector<Foo * const> * const); // BAD: verbose!
Run Code Online (Sandbox Code Playgroud)
这样至少走遍了.和我重写功能头走了,因为所有的参数将指针......在污染代码的价格const,而不是指针运算(主要是&和*).
我想知道在可能的规则下如何 …
我有一个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的子目录中。怎么做?
我尝试用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) 考虑以下代码:
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)