感谢来自这里的人们的帮助,我能够得到我的塔斯马尼亚骆驼拼图代码工作。 然而,这是非常慢的(我想,我不确定,因为这是我的第一个Python程序)。 运行在代码底部的例子需要很长时间才能在我的机器上解决: dumrat@dumrat:~/programming/python$ time python camels.py [['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F', 'F', 'G', 'F', 'B', 'B', 'B'], ['F', 'F', 'B', 'F', 'G', 'B', 'B'], ['F', 'F', 'B', 'F', 'B', 'G', 'B'], ['F', 'F', 'B', 'G', 'B', 'F', 'B'], ['F', 'G', 'B', 'F', 'B', 'F', 'B'], ['G', 'F', 'B', 'F', 'B', 'F', […]
Python re模块中的search()和match()函数有什么区别? 我读过文档 ( 目前的文档 ),但我似乎从来没有记住它。 我一直不得不查看并重新学习它。 我希望有人会用例子来清楚地回答这个问题,以便(也许)它会坚持在我的脑海中。 或者至less我会有一个更好的地方来回答我的问题,这将需要更less的时间来重新学习它。
join清单: >>> ''.join([ str(_) for _ in xrange(10) ]) '0123456789' join必须采取迭代。 显然, join的参数是[ str(_) for _ in xrange(10) ] x [ str(_) for _ in xrange(10) ] ,这是一个列表理解 。 看这个: >>>''.join( str(_) for _ in xrange(10) ) '0123456789' 现在, str(_) for _ in xrange(10) ,no [] , join的参数就是str(_) for _ in xrange(10) ,但结果是一样的。 为什么? str(_) […]
最近我开始玩Python,并且在closures工作的时候遇到了一些奇怪的事情。 考虑下面的代码: adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) 它构build了一个简单的函数数组,它接受一个单一的input并返回一个数字所添加的input。 这个函数是在for循环里构造的,迭代器从0到3运行。 对于这些数字中的每一个,都会创build一个lambda函数来捕获i并将其添加到函数的input中。 最后一行以3作为参数调用第二个lambda函数。 令我惊讶的是,输出是6 。 我预计4 。 我的推理是:在Python中,一切都是一个对象,因此每个variables都是必不可less的指针。 当为i创buildlambdaclosures时,我期望它存储一个指向i当前指向的整数对象。 这意味着当i分配一个新的整数对象时,它不应该影响以前创build的闭包。 可悲的是,在debugging器中检查adders数组显示它。 所有的lambda函数都指向i的最后一个值3 ,这导致adders[1](3)返回6 。 这使我想知道以下几点: 什么closures准确捕获? 说服lambda函数捕捉i的当前值的最优雅的方式是什么,当i改变它的值时不会受到影响?
想象一下这个目录结构: app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py 我编码mod1 ,我需要从mod2导入的东西。 我应该怎么做? 我试过from ..sub2 import mod2但我得到一个“尝试相对导入非包”。 我googlesearch,但只发现“ sys.path操纵”黑客。 有没有一个干净的方式? 编辑:我所有的__init__.py目前是空的 编辑2:我试图做到这一点,因为sub2包含通过子包( sub1 , subX等)共享的类。 编辑3:我正在寻找的行为是相同的PEP 366 (谢谢约翰乙)
Python 2.6引入了str.format()方法,其语法与现有的%运算符略有不同。 哪个更好,哪些情况? 以下使用每种方法,并有相同的结果,所以有什么区别? #!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a python string!" print c […]
什么是Python源代码目录中的__init__.py ?
我使用以下命令启动subprocess: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) 但是,当我试图杀死使用: p.terminate() 要么 p.kill() 该命令一直在后台运行,所以我想知道如何才能真正终止进程。 请注意,当我运行命令: p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) 发出p.terminate()时,它终止成功。
你如何附加到文件而不是覆盖它? 是否有附加到文件的特殊function?
所以这很尴尬。 我有一个应用程序,我扔在一起Flask ,现在它只是提供一个静态的HTML页面,一些链接到CSS和JS。 而且我无法findFlask描述的返回静态文件的位置。 是的,我可以使用render_template但我知道数据不是模板化的。 我以为send_file或url_for是正确的,但我无法让这些工作。 与此同时,我正在打开文件,阅读内容,并安装适当的mimetype Response : import os.path from flask import Flask, Response app = Flask(__name__) app.config.from_object(__name__) def root_dir(): # pragma: no cover return os.path.abspath(os.path.dirname(__file__)) def get_file(filename): # pragma: no cover try: src = os.path.join(root_dir(), filename) # Figure out how flask returns static files # Tried: # – render_template # – send_file […]