编辑:好的,我设法隔离了错误和完整的代码来重现它.但它似乎是设计的东西,或python中的错误.
创建两个邻近的包:admin
&General
,每个都有它自己的__init__.py
,当然.在包admin
中将文件'test.py'与以下代码放在一起:
from General.test02 import run
import RunStoppedException
try:
run()
except RunStoppedException.RunStoppedException,e:
print 'right'
except Exception,e:
print 'this is what i got: %s'%type(e)
Run Code Online (Sandbox Code Playgroud)
并admin
使用以下代码放入文件'RunStoppedException.py':
class RunStoppedException(Exception):
def __init__(self):
Exception.__init__(self)
Run Code Online (Sandbox Code Playgroud)
在包General
中将文件test02.py与代码放在一起:
import admin.RunStoppedException
def run():
raise admin.RunStoppedException.RunStoppedException()
Run Code Online (Sandbox Code Playgroud)
打印输出:
this is what i got: <class 'admin.RunStoppedException.RunStoppedException'>
Run Code Online (Sandbox Code Playgroud)
什么时候应该right
.仅当一个文件与异常位于同一目录中时才会发生这种情况,因此它们以不同方式导入它.
这是设计,还是python的bug?
我正在使用python2.6,在eclipse + pydev下运行它
假设我认为我对python的标准库中应该有的一些功能有很好的想法.不是新关键字等大小的东西,只是对另一个装饰器的建议,这将有很大帮助,IMO.
我怎样才能建议考虑"python委员会:)"这样的功能?
我在一些代码上运行了cprofile,其中包括执行大部分工作的几个线程.当我查看分析的输出时,我看到没有记录在线程内调用的所有函数.我确信他们被称为,因为他们做的事情很容易看到,如写入数据库等.
cProfile不会分析线程吗?我错过了什么吗?
如果我得到坐标
coords = get(0,'PointerLocation');
Run Code Online (Sandbox Code Playgroud)
如何将它们转换为通过点获得的积分ginput
?
即,我想从中得到相同的值
coords = get(0,'PointerLocation');
coords=someConversion(coords);
Run Code Online (Sandbox Code Playgroud)
正如我本来打电话的那样
coords=ginput(1);
Run Code Online (Sandbox Code Playgroud)
然后在与前一位代码相同的位置点击图中的鼠标.
我想在Matlab中绘制几个图形,以便它们在同一窗口内彼此相邻("图"是正确的术语?).它是如何实现的?
我[x,y]=meshgrid(1:N,1:M)
在常规2D N x M
网格上定义了一组点.我有另一组点[u,v]
是原始网格的一些变形,即[u,v]=f(x,y)'
(但是我没有实际f
导致变形的点).如何将纹理映射到由" u,v
?"定义的"变形"网格?即,如果给出具有宽高比的图像,N/M
我该如何将其映射到变形网格?
我以为这样做
@f
def g():
print 'hello'
Run Code Online (Sandbox Code Playgroud)
与...完全相同
def g():
print 'hello'
g=f(g)
Run Code Online (Sandbox Code Playgroud)
但是,我有这个代码,它使用contextlib.contextmanager:
@contextlib.contextmanager
def f():
print 1
yield
print 2
with f:
print 3
Run Code Online (Sandbox Code Playgroud)
有效和收益 1 3 2
当我试图改变它
def f():
print 1
yield
print 2
f=contextlib.contextmanager(f)
with f:
print 3
Run Code Online (Sandbox Code Playgroud)
我明白了 AttributeError: 'function' object has no attribute '__exit__'
我错过了什么?在contextlib.contextmanager中是否有一些黑魔法,或者我是否误解了装饰器的工作原理?
我想绘制一个2d rect(使用该rectangle
函数足以满足我的需要),但是使用线性插值颜色,即在底部它应该是红色,在顶部蓝色,并且在两者之间应该有线性插值这两种颜色.我怎样才能做到这一点?
我有一个简单的表单,可以选择一个选项(单选按钮).选择后,表单会自动提交(使用onchange
属性):
class MyForm(forms.Form):
choices=forms.ChoiceField( widget=forms.RadioSelect(attrs={'onchange': 'this.form.submit();'}), choices=[(k,k) for k in options],label="choose one")
Run Code Online (Sandbox Code Playgroud)
这很好,唯一的问题是我在表单的底部仍然有"提交"按钮.是否有可能在没有创建模板的情况下以某种方式使表单呈现而没有提交按钮?
我创建了一个自定义窗口小部件和一个使用它的窗体.以前,我只是有一个简单的模板来显示我调试时的表单:
<form>
{{ run_form.as_p }}
</form>
Run Code Online (Sandbox Code Playgroud)
现在我想将每个表单字段括在div中,所以我将模板更改为
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但现在看来,当我的字段被渲染时,它的所有字符都被html转义,所以现在当我查看它的源代码时,它看起来就像<input type="text" id="id_scriptscrap"/>
应该存在的地方
<input type="text" id="id_scriptscrap"/>
.
有什么我想念的吗?为什么第一个模板会在没有转义的情况下输出它,而第二个模板会逃脱?也许我在创建自定义窗口小部件类时做错了什么?