我今天使用git删除了最新的代码,我收到以下错误:
ImportError at /
cannot import name Like
Run Code Online (Sandbox Code Playgroud)
这可能与循环导入有关.我检查了追溯:
Traceback:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
File "/Users/Desktop/python/mystuff/Project/Project/urls.py" in <module>
7. admin.autodiscover()
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/contrib/admin/__init__.py" in autodiscover
29. import_module('%s.admin' % app)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
Run Code Online (Sandbox Code Playgroud)
看起来可能导致问题的唯一代码是urls.py.那有以下代码:
from django.contrib import admin
admin.autodiscover()
Run Code Online (Sandbox Code Playgroud)
所以在这个时候我注意到我们之前编写的admin.py文件在最新的合并中被删除了但是admin.pyc仍然存在.删除.pyc文件继续修复循环导入错误,现在似乎工作正常.
我的问题是:这到底发生了什么?Git配置为忽略所有pyc文件,因此在合并之后,即使.py被删除,.pyc也会卡住.但是,如果.py本身被删除,那么python是否应该足够聪明,不要尝试调用.pyc中的任何编译代码?
我想知道如何打破主函数的递归循环.我正在尝试做一个简单的回文练习.该函数应为"redivider"返回True,但返回True将传递给is_pal()并且函数不会中断.如果没有向is_pal添加第二个变量来跟踪True/False,那么打破这个递归循环的正确方法是什么?谢谢.
def first(word):
return word[0]
def last(word):
return word[-1]
def middle(word):
return word[1:-1]
def is_pal(str):
if len(str) == 1:
return True
if first(str) == last(str) and len(str) > 1:
is_pal(middle(str))
print is_pal("redivider")
Run Code Online (Sandbox Code Playgroud) 我正在使用一个 C 库,与下面不同,我无法控制它。我需要将指向也包含指针的数组的指针传递给 C 函数。
package main
/*
#include <stdio.h>
typedef int* pInt;
void foo(pInt p[]) {
printf("foo()\n");
}
*/
import "C"
import "unsafe"
func main() {
var i C.int
var p1 C.pInt = (*C.int)(unsafe.Pointer(&i))
var p2 C.pInt = (*C.int)(unsafe.Pointer(&i))
var ps []C.pInt = []C.pInt{p1, p2}
C.foo(unsafe.Pointer(&ps[0]))
}
Run Code Online (Sandbox Code Playgroud)
此代码导致错误panic: runtime error: cgo argument has Go pointer to Go pointer。我想知道如何重写此代码的 Go 部分,使其满足 Cgo 的指针规则。我希望我可以在不必编写 C 帮助程序代码的情况下做到这一点。
a = {2: 4, 3: 2, 5: 1, 7: 1}
Run Code Online (Sandbox Code Playgroud)
键代表质数;这些值代表计数器。我想通过迭代字典键*值并求和来计算你得到的数字。什么是最 Pythonic 的方式来做到这一点?
>>> [k*v for k,v in a.items()]
[8, 6, 5, 7]
Run Code Online (Sandbox Code Playgroud)
但
>>> sum(k*v for k,v in a.items())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
Run Code Online (Sandbox Code Playgroud) 我对Clojure的compojure库中的一些代码有疑问.
(defn compile-route
"Compile a route in the form (method path & body) into a function."
[method route bindings body]
`(make-route
~method ~(prepare-route route)
(fn [request#]
(let-request [~bindings request#] ~@body))))
Run Code Online (Sandbox Code Playgroud)
我只看到了在宏的上下文中使用的gensyms,它们用于防止宏中使用的绑定和本地作用域中的绑定之间的冲突.
我认为,由于以上是一个功能而不是宏,它对此免疫.因此,我想知道像宏一样编写这个函数的理由是什么.
(如果你想知道,我检查了提交历史,看看这个函数最初是作为一个宏编写的.它不是.)
有人可以解释下面的匿名函数如何评估?
(defn min-by [f coll]
(when (seq coll)
(reduce (fn [min this]
(if (> (f min) (f this)) this min))
coll)))
(min-by :cost [{:cost 100} {:cost 36} {:cost 9}])
;=> {:cost 9}
Run Code Online (Sandbox Code Playgroud)
我不明白争论的来源min和this来源.似乎coll可能是隐式破坏的.
我怎样才能更好地理解这个功能在做什么?
clojure.core/apply
([f args] [f x args] [f x y args] [f x y z args] [f a b c d & args])
Applies fn f to the argument list formed by prepending intervening arguments to args.
user=> (apply str (reverse "racecar"))
"racecar"
user=> (str (reverse "racecar"))
"(\\r \\a \\c \\e \\c \\a \\r)"
Run Code Online (Sandbox Code Playgroud)
我不明白这种行为是如何与文档一致的.我错过了什么?
((fn [coll] (letfn [(add-item [acc coll idx]
(conj acc (nth coll idx)))
(add-group [acc coll]
(conj acc (create-group coll)))
(decrease-coll [coll acc]
(drop (count (last acc)) coll))
(not-group-member? [idx coll]
(not= (first coll) (nth coll idx)))
(out-of-bounds? [idx coll]
(or (empty? coll) (> idx (count coll))))
(create-group [coll] (loop [idx 0
coll coll
acc []]
(if (or (out-of-bounds? idx coll)
(not-group-member? idx coll))
acc
(recur (inc idx) coll (add-item acc coll idx)))))
(process-coll [coll] (loop [coll coll
acc []]
(if …Run Code Online (Sandbox Code Playgroud) test :: [Int] -> [Int]
test l | (length l) > 5 = l
| otherwise = test l ++ take 1 searchSpace
where searchSpace = zipWith (*) [100..999] [100..999]
Run Code Online (Sandbox Code Playgroud)
上面的代码为我提供了堆栈溢出.我假设Haskell正在完全评估并在searchSpace中存储zipWith的结果.如果我只想逐步申请我的程序,那么创建此列表的懒惰方式是take 1什么?
check x = filter((==0) . (\(x,y) -> x `mod` y)) $ zip (replicate 20 x) [1..20]
main = do
print $ take 1 $ filter ((==20) . length) [check x | x <- [1..]]
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行上面的通道,http://www.compileonline.com/compile_haskell_online.php但它似乎使用了太多的资源,因为被评估的数量增加,所以我可以搜索filter(==18)但不是filter(>=19).反正是否有优化表达式以便运行?
MELPA上最新版本的CIDER为0.7.最新的Github是0.8,还没有推出MELPA.
在这种情况下,升级CIDER的最佳方法是什么?我对emacs比较陌生,所以请详细说明你究竟要做什么.
编辑:我意识到了我的问题.我的init文件定义了MELPA,指的是Melpa-Stable服务器.常规服务器似乎更新.