Python有一个有趣的for语句,允许您指定一个else子句.
在像这样的结构中:
for i in foo:
if bar(i):
break
else:
baz()
Run Code Online (Sandbox Code Playgroud)
该else子句在之后执行for,但仅在for正常终止时(不是由a break)终止.
我想知道C++中是否有相同的东西?我可以用for ... else吗?
我有几个模型有User as Foreign Key.用户列表显示用户名,但我想自定义它.我是否必须使用自定义模型扩展用户模型并编写自己的__str__函数?有没有更简单的方法?我不认为你可以使用callable for fieldset,对吗?
我正在使用启用了mysql和timezones的django 1.4.1.我向yaml做了一个转储数据,修改了一些字段以创建一些测试数据,并且我试图将其加载回来.但是,即使指定了tz,Django仍然抱怨天真的日期时间
具体来说,我的loaddata有:
fields: {created_date: !!timestamp '2012-09-15 22:17:44+00:00', ...
Run Code Online (Sandbox Code Playgroud)
但loaddata给出错误:
RuntimeWarning: DateTimeField received a naive datetime (2012-09-15 22:17:44) while time zone support is active.
Run Code Online (Sandbox Code Playgroud)
这对我来说没有多大意义,因为它看起来像:
有什么方法可以告诉django这是一个UTC日期吗?
sys.path根据文档,第一个条目是当前脚本的目录.在以下设置中,我想更改此默认值.想象一下以下目录结构:
src/
core/
stuff/
tools/
tool1.py
tool2.py
gui/
morestuff/
gui.py
Run Code Online (Sandbox Code Playgroud)
脚本tool*.py和gui.py旨在为运行脚本,如下所示:
python src/core/tools/tool2.py
python src/gui/gui.py
Run Code Online (Sandbox Code Playgroud)
现在所有工具都从中导入src.core.stuff,并且需要GUI gui.morestuff.这意味着sys.path[0]应该指向src/,但它指向src/core/tools/或src/gui/默认.
我可以调整sys.path[0]每个脚本(使用类似下面的结构,例如,在开头gui.py):
if __name__ == '__main__':
if sys.path[0]: sys.path[0] = os.path.dirname(os.path.abspath(sys.path[0]))
Run Code Online (Sandbox Code Playgroud)
但是,这有点多余,对于拥有数千个脚本的成熟代码库来说,这将变得乏味.我也知道-m开关:
python -m gui.gui
Run Code Online (Sandbox Code Playgroud)
但这需要当前目录src/.
有没有更好的方法来实现所需的结果,例如通过修改__init__.py文件?
编辑:这是为Python 2.7:
~$ python -V
Python 2.7.3
Run Code Online (Sandbox Code Playgroud) 这是我的第一个问题.
我让用户将自己的图像上传到数据库.该图像存储为BLOB.
我成功地做到了这一点.我正在使用MySQL作为数据库.
我遇到问题的部分是在调用时将BLOB显示为网站上的图像.
现在只显示二进制数据,显示许多奇怪的符号.我认为这是HTTP标题的问题.现在它在:
print "Content-Type: text/html"
Run Code Online (Sandbox Code Playgroud)
我试过了:
print "Content-Type: image/jpeg"
Run Code Online (Sandbox Code Playgroud)
我使用Python连接数据库并编写HTML.
编辑:代码:
def showFile():
# do SQL to retrieve blob where filename
conn, cursor = getConnectionAndCursor()
sql = """
select data
from upload
where id=1
"""
cursor.execute(sql)
data = cursor.fetchone()
blob = data[0]
print "<hr>"
print "This is what I'm trying"
print """<img src="data:image/jpeg;base64,%s/>""" % data
######################################################################
if __name__ == "__main__":
form = cgi.FieldStorage()
if "show_file" in form:
print "Content-Type: text/html"
print
printHeaders("Image upload example")
showFile()
printFooter()
Run Code Online (Sandbox Code Playgroud) 我使用的是Python 2.7.我不清楚如何在C++中嵌入Python,如下所示:http://docs.python.org/2.7/extending/embedding.html.
我在一个名为test.py的文件中有一个简单的python示例:
class math:
#def __init__(self):
def add(self, num1, num2):
return num1 + num2
def subtract(self, num1, num2):
return num1 - num2
Run Code Online (Sandbox Code Playgroud)
从python,我会做这样的事情:
>>> from test import math
>>> m = math()
>>> a = m.add(1, 2)
>>> s = m.subtract(1, 2)
Run Code Online (Sandbox Code Playgroud)
我有一些C++代码的开头来做到这一点:
PyObject *pName, *pModule;
Py_Initialize();
pName = PyString_FromString("test");
pModule = PyImport_Import(pName);
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好.但是,这似乎相当于在Python中执行此操作:
import test
Run Code Online (Sandbox Code Playgroud)
如何导入Python类数学?
谢谢
比方说,如果我有一个接受多个输入的方法,如下所示:
def SumOf(Arg1,Arg2,Arg3):
Sum = Arg1+Arg2+Arg3
return sum
Run Code Online (Sandbox Code Playgroud)
我在列表中有Arg1,Arg2,Arg3的值,我想访问该方法
Arguments = Arg1 + "," + Arg2 + "," + Arg 3
Run Code Online (Sandbox Code Playgroud)
我想使用变量Arguments来调用方法SumOf
SumOf(Arguments)
但是我收到以下错误:
SumOf() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
注意:以上只是一个示例,我需要根据方法名称和参数执行不同的方法.
请帮忙.
我在nltk文档中找到了这段代码(http://www.nltk.org/_modules/nltk/sentiment/vader.html)
if (i < len(words_and_emoticons) - 1 and item.lower() == "kind" and \
words_and_emoticons[i+1].lower() == "of") or \
item.lower() in BOOSTER_DICT:
sentiments.append(valence)
continue
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个if条件意味着什么吗?