小编int*_*tar的帖子

为什么Python装饰器而不是闭包?

我仍然没有掌握Python中的装饰器.

我已经开始使用很多闭包来做自定义函数和编码中的类.

例如.

class Node :
    def __init__(self,val,children) :
        self.val = val
        self.children = children

def makeRunner(f) :
    def run(node) :
        f(node)
        for x in node.children :
            run(x)
    return run

tree=Node(1,[Node(2,[]),Node(3,[Node(4,[]),Node(5,[])])])

def pp(n) : print "%s," % n.val
printTree = makeRunner(pp)
printTree(tree)
Run Code Online (Sandbox Code Playgroud)

据我所知,装饰器只是用于做类似事情的不同语法.

代替

def pp(n) : print "%s," % n.val
printTree = makeRunner(pp)
Run Code Online (Sandbox Code Playgroud)

我会写:

@makeRunner
def printTree(n) : print "%s," % n.val
Run Code Online (Sandbox Code Playgroud)

这一切都是装饰者吗?或者我错过了一个根本的区别?

python decorator

16
推荐指数
3
解决办法
6991
查看次数

Python os.stat和unicode文件名

在我的Django应用程序中,用户上传了名称中带有unicode字符的文件.

当我下载文件时,我正在打电话:

os.path.exists(media)
Run Code Online (Sandbox Code Playgroud)

测试文件是否存在.反过来,这似乎在呼唤

st = os.stat(path)
Run Code Online (Sandbox Code Playgroud)

然后会出现错误:

UnicodeEncodeError:'ascii'编解码器无法对位置92中的字符u'\ xcf'进行编码:序数不在范围内(128)

我该怎么办?是否有path.exists选项来处理它?

更新:实际上,我所要做的就是将参数编码为exists,即.

os.path.exists(media.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

谢谢所有回答的人.

python unicode operating-system

16
推荐指数
3
解决办法
1万
查看次数

Erlang:不允许的节点/可能是Cookie问题

试图让两个erlang节点相互通信:一个在Ubuntu机器上,另一个在Windows XP上.

我们得到一个" 来自不允许节点的连接尝试 "消息,该消息阻止一个节点从另一个节点接收消息.

他们都使用5.XXX版本的Erlang OTP.

两个节点都有相同的cookie(.erlang.cookie)

我们正在启动接收器节点:

erl -name fred@ipaddress
Run Code Online (Sandbox Code Playgroud)

并使用'fred @ ipaddress'(单引号)调用其上的函数

我们关闭了防火墙.

那么还有什么可能阻止连接呢?

更新:我们使用erlang:get_cookie()检查两个节点上的cookie,值不同.这就是问题所在.我们认为我们通过将相同的.erlang.cookie文件放在我们在两台机器上运行erlang的目录中来设置cookie.但也许这是错误的地方?

更新2:感谢大家的答案.我们选择Ranok作为我们的答案,因为它对我们很有用.我确信一些设置cookie的替代方法也可以.

security erlang erlang-otp

14
推荐指数
2
解决办法
8530
查看次数

Django表单:隐藏字段中的外键

我的表格:

class PlanForm(forms.ModelForm):    
    owner = forms.ModelChoiceField(label="",
                                  queryset=Profile.objects.all(),
                                  widget=forms.HiddenInput())
    etc...

    class Meta:
        model = Plan
Run Code Online (Sandbox Code Playgroud)

模型中的所有者是个人资料的ForeignKey.

当我设置此表单时,我将"owner"的值设置为Profile对象.

但是当这个出现在表单上时,它似乎包含了这样的配置文件的名称:

<input type="hidden" name="owner" value="phil" id="id_owner" />
Run Code Online (Sandbox Code Playgroud)

当提交表单并返回到我的views.py时,我尝试像这样处理它:

    form = PlanForm(request.POST)
    ...
    if form.is_valid():                
        plan = form.save()
        return HttpResponseRedirect('/plans/%s'%plan.id) # Redirect after POST
Run Code Online (Sandbox Code Playgroud)

但是,我得到的是类型转换错误,因为它无法将字符串"phil"(保存到"owner"字段中的用户名称)转换为Int以将其转换为ForeignKey.

那么这里发生了什么.ModelForm是否应将外键表示为数字并透明地处理它?或者我是否需要将自己的ID提取到表单的所有者字段中?如果是这样,在我尝试验证表单之前,如何以及何时将其映射回去?

python forms django

13
推荐指数
3
解决办法
3万
查看次数

使用Arduino将USB发送到USB

我有兴趣制作一个基于Arduino的MIDI控制器与我的电脑对话.看看Arduino MIDI的其他例子(例如,使用Arduino的MIDI输出),它们似乎都连接了一个专用的5针DIN.这是有道理的,因为这是将键盘,扩展器和音序器连接在一起的原始电缆.

但是,我想将MIDI发送到我的电脑.5针DIN必须插入转换盒,通过USB连接到我的PC.我已经有一根USB线将我的Arduino连接到我的电脑上.那我为什么不能用这个呢?

我假设什么会阻止我,这些转换盒都带有驱动程序,知道如何处理通过USB传入的信号.然而,比如说,我的计算机上的虚拟合成器不会期望或知道如何处理通过串行端口进入的原始字节.那么我可以将这些驱动程序的标准版本或免费版本用于我自己的项目吗?或者,如果没有,写一个会怎么样?我在哪里可以找到更多相关信息?

embedded usb midi arduino midi-interface

13
推荐指数
2
解决办法
2万
查看次数

基于浏览器的大纲的库

我正在寻找一个在浏览器中工作的免费(GPL或BSD类型许可证)大纲库.

它不必太复杂,只需允许键盘控制折叠和扩展项目,以及更改它们的顺序.

有人知道一个好的图书馆吗?任何大的UI组件库都有一个大纲吗?如果没有,我将如何从头开始编写它?(例如,从jQuery开始会更好吗?还是其他什么?)

browser ajax jquery gpl outlining

12
推荐指数
1
解决办法
1066
查看次数

django:使用admin datepicker

我正在尝试在我自己的django表单中使用admin datepicker.

大致在此讨论:http://www.mail-archive.com/django-users@googlegroups.com/msg72138.html

我有

a)在我的forms.py中包含该行

from django.contrib.admin import widgets
Run Code Online (Sandbox Code Playgroud)

b)并使用这样的小部件:

date = forms.DateTimeField(widget=widgets.AdminDateWidget())
Run Code Online (Sandbox Code Playgroud)

c)在我的实际模板中,我添加了:

{{form.media}}
Run Code Online (Sandbox Code Playgroud)

包括js /样式等

但是,当我尝试查看我的表单时,我得到的不是很好的小部件; 只是一个普通的文本框.Firefox javascript错误控制台告诉我:

gettext未在calendar.js中定义(第26行)

DateTimeShortcuts.js中未定义addEvent(第254行)

有什么建议?这是Django自己的JavaScript库中的错误吗?

更新:基本上,需要包含核心和(或假的)i18lization

更新2:Carl指出这与使用自定义形式的Django时间/日期小部件完全相同(尽管从不同的位置开始)

python forms django date django-forms

12
推荐指数
1
解决办法
2万
查看次数

Python既不是真也不是假的东西

我刚发现这个:

a = (None,)
print (a is True)
print (a is False)
print (a == True)
print (a == False)
print (a == None)
print (a is None)
if a : print "hello"
if not a : print "goodbye"
Run Code Online (Sandbox Code Playgroud)

产生:

False
False
False
False
False
False
hello
Run Code Online (Sandbox Code Playgroud)

所以既不是,也不等于True或False,但在if语句中表现为True.

为什么?

更新:

实际上,我刚刚意识到这并不像我想象的那么模糊.我得到a = 2的相同结果(虽然不是a = 0或a = 1,它们分别被认为等于False和True)

python boolean

12
推荐指数
2
解决办法
7205
查看次数

HTML5 Canvas与SVG + Raphael.js的优点和缺点是什么?

我刚刚使用Canvas开始了一个项目.但我需要的一件事就是跟踪可移动的,可点击的盒子,如下例所示:http://raphaeljs.com/graffle.html所以我想知道Raphael-js + SVG会不会更好.

你会用哪个?为什么?

javascript svg raphael html5-animation

12
推荐指数
2
解决办法
1万
查看次数

HTML/CSS中嵌套列表中的缩进

我已经开始使用Twitter Bootstrap,这对我(作为程序员)有用,可以获得一个体面的网站,而无需编写太多的CSS.

然而有些事情让我发疯.我有一个嵌套列表

<ul>
  <li>Hello</li>
  <li>World 
    <ul>
      <li>Wide</li>
      <li>Web</li>
    </ul>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

但是这个列表的第一级和第二级不会缩进(即,它们在左侧彼此对齐)

在普通的html嵌套列表中,更深层次的子列表缩进更多.但样式表中的某些内容必须将其关闭.我如何找到控制它的内容?我无法在任何文档中看到li元素的CSS"list indent"属性.

html css

12
推荐指数
5
解决办法
4万
查看次数