我想使用argparse来解析写为"--foo True"或"--foo False"的布尔命令行参数.例如:
my_program --my_boolean_flag False
Run Code Online (Sandbox Code Playgroud)
但是,以下测试代码不能满足我的要求:
import argparse
parser = argparse.ArgumentParser(description="My parser")
parser.add_argument("--my_bool", type=bool)
cmd_line = ["--my_bool", "False"]
parsed_args = parser.parse(cmd_line)
Run Code Online (Sandbox Code Playgroud)
可悲的是,parsed_args.my_bool评估为True.这种情况即使我改变cmd_line为["--my_bool", ""],这是令人惊讶的,因为bool("")重新评估False.
如何让argparse解析"False","F"以及它们的小写变体False?
我有一些以地球为中心的坐标点,以纬度和经度(WGS-84)给出.
如何将它们转换为笛卡尔坐标(x,y,z),原点位于地球的中心?
我可能遗漏了一些显而易见的东西但无论如何
当您os在python中导入包时,您可以使用任何子模块/子包.例如,这有效:
>>> import os
>>> os.path.abspath(...)
Run Code Online (Sandbox Code Playgroud)
但是我有自己的包,其结构如下:
FooPackage/
__init__.py
foo.py
Run Code Online (Sandbox Code Playgroud)
这里相同的逻辑不起作用:
>>> import FooPackage
>>> FooPackage.foo
AttributeError: 'module' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
如何在不显示轴的情况下制作3D绘图?
在绘制三维绘图时,Matplotlib不仅绘制x,y和z轴,还在xy,yz和xz平面上绘制浅灰色网格.我想绘制一个"自由浮动"的3D图,没有这些元素.
我试过的东西:
# Doesn't work; this hides the plot, not the axes
my_3d_axes.set_visible(False)
# Doesn't do anything. Also, there's no get_zaxis() function.
my_3d_axes.get_xaxis().set_visible(False)
my_3d_axes.get_yaxis().set_visible(False)
Run Code Online (Sandbox Code Playgroud) 有时我会从命令行启动带有2个文件的emacs,如下所示:
emacs foo.txt bar.txt
Run Code Online (Sandbox Code Playgroud)
这将打开emacs窗口,垂直拆分:
foo.txt
-------
bar.txt
Run Code Online (Sandbox Code Playgroud)
如何编辑我的.emacs文件,以便它们并排显示,如下所示?:
|
foo.txt | bar.txt
|
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,我知道如何在 emacs启动后实现这一点(Mx 0,Mx 3,然后在右侧窗口重新访问bar.txt).我只是希望emacs在我启动时默认并排拆分,所以我没有必要.
我使用两个显示器,并经常使用两个框架打开的emacs; 每个监视器一个.每个框架被分成两个并排的窗口,如下所示:
a | b <-- frame 1 in monitor 1
-------
c | d <-- frame 2 in monitor 2
Run Code Online (Sandbox Code Playgroud)
当我在窗口a中点击"编译"按钮时,编译缓冲区在其旁边的缓冲区中打开.到现在为止还挺好:
a | compilation
-----------------
c | d
Run Code Online (Sandbox Code Playgroud)
但是,如果我然后移动到窗口c来编辑一些东西,然后再次点击编译,窗口d也会访问编译缓冲区:
a | compilation
------------------
c | compilation
Run Code Online (Sandbox Code Playgroud)
所以现在我有一半的屏幕空间占用了同一个编译缓冲区的两个副本,想知道为什么我有两个显示器:)
当我的光标位于当前打开的编译缓冲区旁边的缓冲区中时,我可以通过认真地仅仅点击编译键来防止这种情况,但是我很早就打了'编译',而且我经常没有心思这样做.我觉得必须有一些我可以调整的东西.emacs所以我不应该这样做.
有什么建议?理想情况下,当我点击'compile'时,当前打开的编译缓冲区应该从之前的窗口移动到当前使用的窗口旁边的窗口.如果这太复杂了,我很容易解决让emacs 没有访问相邻窗口中的编译缓冲区,如果它已经在另一个窗口中打开了.
我从这个条目中看到虚拟继承将sizeof(指针)添加到对象的内存占用.除此之外,默认情况下使用虚拟继承是否有任何缺点,只有在需要时才使用常规继承?这似乎会带来更具前瞻性的课堂设计,但也许我错过了一些陷阱.
我有时会故意省略宏观论点.例如,对于类似函数的宏
#define MY_MACRO(A, B, C) ...
Run Code Online (Sandbox Code Playgroud)
我可以称之为:
MY_MACRO(, bar, baz)
Run Code Online (Sandbox Code Playgroud)
技术上还有3个论点; 只是第一个是"空的".这个问题不是关于可变参数的宏.
当我这样做时,我在使用-ansi(又名-std=c++98)编译时会收到来自g ++的警告,但是当我使用时却没有-std=c++0x.这是否意味着新的宏args在新的C++标准中是合法的?
这是我的全部问题,但期待"你为什么要这样做?" 回复,这是一个例子.我喜欢保持.h文件不被函数体整理,但是在.h文件之外实现简单的访问器是很乏味的.因此我写了以下宏:
#define IMPLEMENT_ACCESSORS(TEMPLATE_DECL, RETURN_TYPE, CLASS, FUNCTION, MEMBER) \
TEMPLATE_DECL \
inline RETURN_TYPE* CLASS::Mutable##FUNCTION() { \
return &MEMBER; \
} \
\
TEMPLATE_DECL \
inline const RETURN_TYPE& CLASS::FUNCTION() const { \
return MEMBER; \
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何将它用于包含被int调用的类模板int_:
IMPLEMENT_ACCESSORS(template<typename T>, int, MyTemplate<T>, Int, int_)
Run Code Online (Sandbox Code Playgroud)
对于非模板类,我不需要template<typename T>,所以我省略了这个宏参数:
IMPLEMENT_ACCESORS(, int, MyClass, Int, int_)
Run Code Online (Sandbox Code Playgroud) 我听说McCarthy发明Lisp的原始动机之一是编写一个自动区分系统.尽管如此,我的Google搜索还没有为此做出任何库/宏.是否有任何Scheme/Common Lisp/Clojure库(宏)用于获取函数F并返回计算F的导数的函数dF/dx?
我希望它能用多个参数支持F'.用户可以选择哪个是x来区分.理想情况下,微分器甚至可以用于矢量值F和x.
编辑:有几个人提到了象征性的差异化.符号微分和自动微分之间的区别是微妙的,但它在维基百科中得到了很好的总结,特别是在这张图片中.这种区别在lisp中并不那么强烈,其中符号表达式可以按原样转换为工作程序,但仍存在潜在的困难:
符号微分要求表达式被区分为由具有已知衍生物的操作组成.例如,有人提到了SICP的一个宏的例子,它通过简单的性行为进行搅拌(+ y (* (x y))),并使用链规则,以及如何区分+和*返回代表衍生物的性别的知识.我需要使用表达式,例如(* (foo x y) (bar x)),where foo和barmay可以依次调用其微分时间不知道其衍生物的其他函数.
如果有采取类似的表达方式,这将是罚款(foo x y),并以其函数体替换,替换参数中的任何提及与x和y在卫生型的方式.在那儿?
此外,上述任何一个都没有解决在将向量值函数与向量值参数区分开来时出现的复杂情况......这是大多数自动微分实现的适应性.
lisp scheme clojure automatic-differentiation numerical-methods
有没有办法在makefile或CMake文件中并行循环多个列表?
我想在CMake中执行类似下面的操作,但AFAICT不支持此语法:
set(a_values a0 a1 a2)
set(b_values b0 b1 b2)
foreach(a in a_values b in b_values)
do_something_with(a b)
endforeach(a b)
Run Code Online (Sandbox Code Playgroud)
这将执行:
do_something_with(a0 b0)
do_something_with(a1 b1)
do_something_with(a2 b2)
Run Code Online (Sandbox Code Playgroud)
我会接受CMake或Make的答案,但CMake会更受欢迎.谢谢!