我想知道是否有区别 class Test(object): def __init__(self): print self.__class__.__name__ 和 class Test(object): def __init__(self): print type(self).__name__ ? 是有理由更喜欢一个或另一个? (在我的使用情况下,我想用它来确定logging器的名称,但我想这没关系)
我正在使用SQL Alchemy的ORM,我发现当我返回一列时,我得到如下结果: [(result,), (result_2,)] # etc… 有了这样一个集合,我发现我必须经常这样做: results = [r[0] for r in results] # So that I just have a list of result values 这不是“坏”,因为我的结果集通常很小,但如果它们不是这样会增加大量的开销。 最大的问题是我觉得混乱的源头,错过了这一步是我碰到一个相当常见的错误。 有没有办法避免这个额外的步骤? 一个相关的因素:在这种情况下,orm的这种行为似乎很不方便,但另一种情况是我的结果集是[(id,value)],结果如下: [(result_1_id, result_1_val), (result_2_id, result_2_val)] 然后我可以做: results = dict(results) # so I have a map of id to value 在返回结果之后,这个作为一个有用的步骤是有意义的。 这真的是一个问题,或者我只是一个挑剔的和后处理得到的结果集是有道理的两种情况? 我确定我们可以考虑一些其他常见的后处理操作,以使结果集在应用程序代码中更加可用。 是否有全面的高性能和便捷的解决scheme,或者后期处理是不可避免的,只是需要不同的应用程序? 当我的应用程序实际上可以利用由SQL Alchemy的ORM返回的对象时,它看起来非常有用,但是在我不能或不可以的情况下,并不是那么多。 这只是ORM的普遍问题吗? 在这种情况下,我最好不要使用ORM层? […]
我刚开始潜入Android世界。 我有很多使用Python编程的经验,所以我在寻找一个“Android + Python”的好组合,我想我已经find了它: Kivy 。 我需要制作能够从互联网上下载和上传内容的应用程序,也许有一些与Android中包含的地图组件的连接以及更多的东西来制作一个漂亮的Android应用程序。 但是我真的不想把时间浪费在可能无法解决的问题上。 那么,有没有人有使用Kivy开发Android应用程序的一些经验? 它真的有用,简单,可能吗? 还是有一个更好的select,你在想什么?
我正在为一个python项目编写一个设置文档给其他开发人员,我一直在阅读PYTHONPATH环境variables。 我正在看我目前的开发系统,并认为我有一些事情设置错误,导致我的IDE(IntelliJ)在查找python库时performance不正确。 我已经看了这里和这里的文档,我仍然不确定PYTHONPATH环境variables应该是什么。 我有PYTHONHOME指向`C:\ Python27'。 我目前的PYTHONPATH被设置为PYTHONHOME 。 我是否也应该从sys.path添加目录? 更新: 根据以下信息,除非有非标准的库,您希望python默认可以find,否则不需要设置PYTHONPATH 。 例如,当我从安装程序安装wxPython时,它会将它的库添加到PYTHONPATH 。 我设置PYTHONHOME到python安装的根目录,以便我可以将它添加到我的系统PATH环境variables,以便我可以从任何地方运行python。
我对Pandas在决定从数据框中select原始数据框的副本或原始视图时使用的规则感到困惑。 如果我有,例如, df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9)) 我明白, query返回一个副本,以便类似的东西 foo = df.query('2 < index <= 5') foo.loc[:,'E'] = 40 将不会对原始dataframedf 。 我也明白,标量或命名切片返回一个视图,以便这些分配,如 df.iloc[3] = 70 要么 df.ix[1,'B':'E'] = 222 会改变df 。 但是当涉及到更复杂的情况时,我却迷失了方向。 例如, df[df.C <= df.B] = 7654321 改变df ,但是 df[df.C <= df.B].ix[:,'B':'E'] 才不是。 有一个简单的规则,pandas使用,我只是失踪? 这些具体情况是怎么回事? 特别是,如何在满足特定查询的数据框中更改所有值(或值的子集)(如我在上面的示例中试图做的那样)? 注:这与这个问题不一样, 我已经阅读了文档 ,但没有受到启发。 我也读过了关于这个主题的“相关”的问题,但是我仍然错过了pandas正在使用的简单规则,以及如何将它应用到 – 例如 – 修改值(或值的子集)在满足特定查询的数据框中。
我有时会编写Python程序,很难确定在执行之前要使用多less内存。 因此,我有时会调用一个Python程序,试图分配大量的RAM,导致内核大量交换并降低其他正在运行的进程的性能。 正因为如此,我想限制一个Python堆可以增长多less内存。 当达到限制时,程序可能会崩溃。 什么是最好的方法来做到这一点? 如果重要的话,Cython会写很多代码,所以应该考虑到在那里分配的内存。 我并不是纯粹的Python解决scheme(它不需要是可移植的),所以Linux上的任何东西都可以。
我打算把Django QuerySet转换成一个pandasDataFrame ,如下所示: qs = SomeModel.objects.select_related().filter(date__year=2012) q = qs.values('date', 'OtherField') df = pd.DataFrame.from_records(q) 它的工作,但是有一个更有效的方法?
方法一:使用http://flask.pocoo.org/docs/tutorial/dbcon/和http://flask.pocoo.org/docs/patterns/sqlite3/中的特殊g对象 import sqlite3 from flask import g DATABASE = '/path/to/database.db' def connect_db(): return sqlite3.connect(DATABASE) @app.before_request def before_request(): g.db = connect_db() @app.teardown_request def teardown_request(exception): if hasattr(g, 'db'): g.db.close() 方法二:从https://github.com/mitsuhiko/flask/blob/master/examples/flaskr/flaskr.py使用神秘的_app_ctx_stack from sqlite3 import dbapi2 as sqlite3 from flask import Flask, request, session, g, redirect, url_for, abort, \ render_template, flash, _app_ctx_stack def get_db(): """Opens a new database connection […]
我安装了Python 2.7和Python 2.6.5。 我不知道出了什么问题,但是没有任何与Python有关的东西似乎再也行不通了。 例如“setup.py安装”某些软件包不能识别“安装”参数和其他奇怪的现象… 我想完全从我的系统中删除Python。 我试着运行2.7和2.6 msi文件,select删除Python,然后只运行2.6并重新安装。 仍然东西不工作。 我如何彻底删除Python – 从一切? (!) 我不想仅仅因为安装Python而重新安装整个机器…
是否有一个简单的方法/模块来正确测量在Python中经过的时间? 我知道,我可以简单地调用time.time()两次,并采取不同的结果,但如果系统时间改变,这将产生错误的结果。 当然,这并不经常发生,但这确实表明我正在测量错误的东西。 使用time.time()来衡量持续时间,当你想到它的时候是非常迂回的。 根据持续时间测量(由定时器执行)和已知绝对时间(手动设置或通过ntp设置)构build的两个绝对时间测量结果的差值,您根本不感兴趣。 那么,有没有办法直接查询这个“计时器时间”? 我会想象它可以表示为一个毫秒或微秒的值,没有有意义的绝对表示(因此不需要用系统时间进行调整)。 回顾一下,这似乎正是System.nanoTime()在Java中所做的,但是我没有find相应的Python函数,尽pipe它应该比硬件(技术上)更容易提供,而不是time.time() 。 编辑:为了避免混淆,并解决下面的答案:这不是关于DST的变化,我也不想CPU时间 – 我想要经过的物理时间。 它不需要非常精细,甚至不是特别准确。 只是因为有人决定将系统时钟设置为不同的值,它不应该给我负面的持续时间或持续时间的几个数量级(高于粒度)。 以下是Python文档关于'time.time()'的说法: “虽然此函数通常返回非递减值,但如果系统时钟已经在两次调用之间回退,它可以返回比先前调用更低的值” 这正是我想要避免的,因为它会导致时间计算中的负值等奇怪的事情。 目前我可以解决这个问题,但是我相信在可行的情况下学习使用适当的解决scheme是一个好主意,因为有一天这些问题将会回来咬你。 编辑2:一些研究表明,你可以通过使用GetTickCount64()在Windows中获得像我想要的系统时间独立测量,在Linux下,你可以得到times()的返回值。 但是,我仍然无法find一个在Python中提供这个function的模块。