有没有办法调试python脚本而不是在*nix系统中保留vim(执行脚本,设置断点,在监视列表中显示变量等)?
有人知道如何在每次调用vim时强制.vimrc自动打开NERDTree吗?操作系统是*nix.
美好的一天.
你能解决我遇到的一个小问题吗?
我在github上有一个jekyll博客.问题是在我更新了我的旧帖子,提交并推送它之后,博客文章没有显示任何更改,但我看到提交已成功推送.
如果我在本地运行jekyll --server,它会显示更新的博客帖子,并且不会报告任何错误.我没有安装jekyll插件.
我做错了什么或误解了什么?非常感谢.
Nawaz补充道:
我面临完全相同的问题.我推了添加了一个降价帖和几个CSS,并修改了布局和包含,然后我将它们推送到github.它成功完成了.我的github显示了存储库中的所有更改,但github博客(即从markdown生成的html帖子)仍然相同.根本没有变化.它显示了一些甚至不存在于存储库中的帖子.但是当我在jekyll --server本地工作时,每个更新都会显示在我托管的本地博客上http://localhost:4000.
请帮我!
假设我有以下文本(为了清晰起见,我对行进行了编号),光标位于第5行的开头:
1
2 var x = 1;
3 var y = 2;
4
5 if (true) {
6 print("Hey!");
7 }
Run Code Online (Sandbox Code Playgroud)
好的,现在我尝试削减第5,6,7行(所有"如果"的东西).为此我做:
Vjjd.现在看来我在第4行的开头是一个空字符串.
我的问题:此刻是否有可能删除第4行而不会丢失之前复制的第5,6,7行(即"if"thingy),以便我可以将它们粘贴到其他地方,例如1号后来?
首先,让我引用一篇来自"专家Python编程"一书的文章:
在下面的示例中,使用__init__方法调用其基类的C类将使B类被调用两次!
class A(object):
def __init__(self):
print "A"
super(A, self).__init__()
class B(object):
def __init__(self):
print "B"
super(B, self).__init__()
class C(A,B):
def __init__(self):
print "C"
A.__init__(self)
B.__init__(self)
print "MRO:", [x.__name__ for x in C.__mro__] #prints MRO: ['C', 'A', 'B', 'object']
C() #prints C A B B
Run Code Online (Sandbox Code Playgroud)
最后,这里是对这里发生的事情的解释:
这是由于A .__ init __(self)调用,它是由C实例进行的,因此使super(A,self).__ init __()调用B的构造函数.换句话说,super应该用于整个类层次结构.问题是有时这个层次结构的一部分位于第三方代码中.
我不知道为什么" super(A, self).__init__()调用B的构造函数".请解释这一刻.非常感谢.
考虑以下伪代码演示我的问题:
import pytest
@pytest.fixture
def param1():
# return smth
yield "wilma"
@pytest.fixture
def param2():
# return smth
yield "fred"
@pytest.fixture
def bar(param1, param2):
#do smth
return [Bar(param1, param2), Bar(param1, param2)]
@pytest.fixture
def first_bar(bar):
return bar[0]
class Test_first_bar:
# FIXME: how do I do that?
#def setup_smth???(self, first_bar):
# self.bar = first_bar
def test_first_bar_has_wilma(self):
# some meaningful check number 1
assert self.bar.wilma == "wilma"
def test_first_bar_some_other_check(self):
# some meaningful check number 2
assert self.bar.fred == "fred"
Run Code Online (Sandbox Code Playgroud)
基本上我想将first_bar夹具传递给我的Test_first_bar类,以便在其所有测试方法中重用该对象。遇到这种情况我该怎么办? …
from random import randrange
data = [(randrange(8), randrange(8)) for x in range(8)]
Run Code Online (Sandbox Code Playgroud)
我们必须测试第一个项目是否等于尾部之一.我很好奇我们怎么会做的最简单的方法不复制尾项新的名单?请考虑到这一段代码获取,比如说,update()方法执行多次,因此它必须是快速地.
使用额外的列表(不必要的内存浪费,我猜):
head = data[0]
result = head in data[1:]
Run Code Online (Sandbox Code Playgroud)
好的,这是另一种方式(太冗长):
i = 1
while i < len(data):
result = head == data[i]
if result:
break
i+=1
Run Code Online (Sandbox Code Playgroud)
解决这个问题的Pythonic方法是什么?谢谢.
我一直对Perl执行的常量折叠优化感到好奇,但是当代码中有Moose涉及的机会是不会执行常量折叠时(如果我错了请纠正我).
我有Moose代码,其中包含如下方法:
sub foo {
my ($self) = shift;
my $test_y = $self->pos->[1];
#...
if ($self->is_map_val($self->pos->[0]+8, $test_y+32) ||
$self->is_map_val($self->pos->[0]+32-8, $test_y+32)) {
{
heavy_stuff();
}
#...
}
Run Code Online (Sandbox Code Playgroud)
当我运行时,perl -MO=Deparse ./program.pl我得到几乎相同的代码行:
if ($self->is_map_val($self->pos->[0] + 8, $test_y + 32) or
$self->is_map_val($self->pos->[0] + 32 - 8, $test_y + 32))
{
heavy_stuff();
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么Perl没有优化32-8为24?是否有任何真正的原因Perl没有这样做(也许Moose子系统让生活变得更难?).
如果它有帮助,我运行Perl(v.5.14.2)
美好的一天.
我过去一直在使用提升精神经典,现在我正在努力坚持更新的,提升精神2.x. 有人可以如此友善地指出我如何处理关键字?比如,我想区分"foo"和"int",其中"foo"是标识符,"int"只是一个关键字.我想保护我的语法免于错误的解析,比如"intfoo".
好的,我有
struct my_keywords : boost::spirit::qi::symbols<char, std::string> {
my_keywords() {
add
("void")
("string")
("float")
("int")
("bool")
//TODO: add others
;
}
} keywords_table_;
Run Code Online (Sandbox Code Playgroud)
并且标识规则声明为:
boost::spirit::qi::rule<Iterator, std::string(), ascii::space_type> ident;
ident = raw[lexeme[((alpha | char_('_')) >> *(alnum | char_('_'))) - keywords_table_]];
Run Code Online (Sandbox Code Playgroud)
并且,比方说,一些规则:
boost::spirit::qi::rule<Iterator, ident_decl_node(), ascii::space_type> ident_decl;
ident_decl = ("void" | "float" | "string" | "bool") >> ident;
Run Code Online (Sandbox Code Playgroud)
如何正确地写它,说"void","float"等是关键字?提前致谢.
我有以下场景:
有一些服务我用来检索一些数据传递给我输入.
有一些输入参数我需要针对上述服务执行N个请求,收集输出并为每个输出执行一些CPU繁重的任务.
我试图使用核心/异步通道实现这一目标.
这是我的尝试(示意图)哪种有效,但它不表现我想要它.将对如何改进它的任何提示表示感谢.
(defn produce-inputs
[in-chan inputs]
(let input-names-seq (map #(:name %) inputs)]
(doseq [input-name input-names-seq]
(async/go
(async/>! in-chan input-name)))))
(defn consume
[inputs]
(let [in-chan (async/chan 1)
out-chan (async/chan 1)]
(do
(produce-inputs in-chan inputs)
(async/go-loop []
(let [input-name (async/<! in-chan)]
(do
(retrieve-resource-from-service input-name
; response handler
(fn [resp]
(async/go
(let [result (:result resp)]
(async/>! out-chan result)))))
(when input-name
(recur)))))
; read from out-chan and do some heavy work for each entry
(async/go-loop []
(let [result (async/<! out-chan)]
(do-some-cpu-heavy-work …Run Code Online (Sandbox Code Playgroud) 是否有可能重构以下代码以消除重复?
我希望我的GameObject实现"更新"任务的逻辑,调用不同的更新处理程序(比如我的"AfterUpdate").当前版本有效,但有两个"更新"实现,它们是相同的.在GameObject上调用的AfterUpdate应该对其属性进行操作,在HeroGameObject上调用的AfterUpdate应该可以访问HeroGameObject的属性(例如"健康").
我能做得更好吗?谢谢.
package main
import "fmt"
type Point struct {
x, y int
}
///////////////////////
type GameObject struct {
Point
title string
status int
ticks float32
spriteIndex int
}
func (g *GameObject) Update() {
if g.ticks == 0 {
g.spriteIndex++
g.AfterUpdate()
}
}
func (g *GameObject) AfterUpdate() {
g.status = 0 //suppose it does something meaningful
fmt.Println("GameObject afterUpdate handler invoked")
}
///////////////////////
type HeroGameObject struct {
GameObject
health float32
}
func (h *HeroGameObject) Update() {
if h.ticks == 0 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将注释嵌入到Clojure中的正则表达式中的方法,以解释这段代码或这段代码的作用。我在文档中找不到此类功能。
Clojure中具有以下正则表达式:
#"\$[A-Z]+|\((?:(?:\$[A-Z]+|[\w\'\-\_]+)(?:\|(?:\$[A-Z]+|[\w\'\-\_]+))*)\)"
Run Code Online (Sandbox Code Playgroud)
如何在正则表达式中添加注释?在Perl中,我会坚持使用尾随/x修饰符,例如:
$_ =~ m/ abc # some comment explaining what abc is about
/x;
Run Code Online (Sandbox Code Playgroud)
这样几天后就可以轻松处理它。
我该如何在Clojure中进行操作?
这应该是相当微不足道的,但我无法自己解决这个问题.有了下面的代码,有没有办法摆脱许多调用dirname(rel2abs($0))?
package Foo;
use File::Basename;
use File::Spec::Functions qw/rel2abs/;
use Carp qw/croak/;
use 5.010;
use constant BAR_NAMES => {
WATER => dirname(rel2abs($0)) . '/../data/water.png',
FIRE => dirname(rel2abs($0)) .'/../data/fire.png',
GRASS => dirname(rel2abs($0)) .'/../data/grass.png'#,
#and so on
};
sub get {
my ($self, $name) = (shift, shift);
if (exists BAR_NAMES->{$name}) {
#return some calculated data based on $name value
} else {
croak("Constant `$name` is not declared.");
}
};
1;
Run Code Online (Sandbox Code Playgroud)
谢谢.