小编Luk*_*ley的帖子

通过属性和索引访问递归访问dict?

我希望能够做到这样的事情:

from dotDict import dotdictify

life = {'bigBang':
           {'stars':
               {'planets': []}
           }
       }

dotdictify(life)

# This would be the regular way:
life['bigBang']['stars']['planets'] = {'earth': {'singleCellLife': {}}}
# But how can we make this work?
life.bigBang.stars.planets.earth = {'singleCellLife': {}}

#Also creating new child objects if none exist, using the following syntax:
life.bigBang.stars.planets.earth.multiCellLife = {'reptiles':{},'mammals':{}}
Run Code Online (Sandbox Code Playgroud)

我的动机是改进代码的简洁性,如果可能的话,使用与Javascript类似的语法来访问JSON对象,以实现高效的跨平台开发.(我也使用Py2JS和类似的.)

python oop dictionary getattr

26
推荐指数
2
解决办法
9690
查看次数

什么是最支持DOM访问的Pythonic XHTML/HTML解析器/生成器/模板模块?

它应该能够以高度面向对象的方式创建,修改读取 X/HTML,它仍然感觉DOM喜欢但不肥胖,并且真的是Pythonic.最好它也会处理格式错误的HTML,但我们可以跳过这个模板.

例如,我想这样做:

>> from someAmazingTemplate import *
>> html = Template('<html><head><title>Hi</title></head><body></body></html>')
>> html.head.append('<link type="text/css" href="main.css" rel="stylesheet" />')
>> html.head.title
Hi
>> html['head']['title']
Hi
Run Code Online (Sandbox Code Playgroud)

我应该能够使用/定义短函数并像这样使用它们:

>> html.head.append(stylesheet(href="main.css"))
>> html.body.append(h1('BIG TITLE!12',Class="roflol"))
>> html.body.SOURCE
<body>
    <h1 class="roflol">
        BIG TITLE!12
    </h1>
</body>
Run Code Online (Sandbox Code Playgroud)

注意:如果它不存在,我将使用BSD/MIT/Python许可证.非常欢迎帮助.任何有助于更多Pythonic Web应用程序开发的东西都会很棒.非常感谢!

-Luke Stanley

python xhtml parsing dom template-engine

8
推荐指数
1
解决办法
1505
查看次数

Git GUI就像Bzr Explorer一样,但对于Git?

GIT有哪些GUI就像Bazaar Explorer一样?

最好是Linux.

截图http://www.ubuntugeek.com/wp-content/uploads/2009/11/home-page-screenshot.png

很高兴在答案中包含或链接到屏幕截图.

如果你可以将每个应用程序作为一个答案,他们可以单独投票.

linux git user-interface bazaar git-gui

8
推荐指数
1
解决办法
1137
查看次数

Python探查器输出的Treemap可视化视图?

是否有Python的分析器可以渲染像Kcachegrind的Callee地图视图?

kcachegrind Callee地图视图

python profiling visualization data-visualization

7
推荐指数
1
解决办法
1374
查看次数

用于编译Python/Boo/Ruby语法的工具,用于C/C++/LLVM/Javascript(使用JS ArrayBuffer提高速度)

我正在尝试将使用Pythonic语义编写的代码自动编译/转换为本机和快速Javascript代码.

有什么工具可以做到这一点,可以像Java等一样提供良好的调试支持?

有没有人这样做过?

为什么?

我正在尝试用复杂的主循环,时间轴,一些物理模拟和一些复杂的交互来编写一些可视化代码.IE:它是一个实际的CPU绑定问题.

使用Javascript编写并在其浏览器环境中进行测试比在一个体面的IDE中运行的Java,.NET或Python更难调试.但是对于使用复杂的客户端代码进行实际的大规模Web开发,至少需要编译为Javascript,如果不直接写入它.

背景:最新进展

Emscripten允许将C/C++编译为Javascript,由于ArrayBuffer的类型化阵列支持和新的浏览器JS引擎,可以在浏览器中提高效率,因为ASM.jsLLJS利用了Mozilla最近的速度改进(其他供应商可能很快跟随).

Altjs.org有一个Javascript holternaltives的清单,但是还没有专注于最近的速度改进或特别好的语义,但它已成为人们用更好的工具为浏览器编码的常见地方.特别是Emscripten有很多令人惊叹的演示.

已考虑的可能选择:

  • Shedskin - 目前我已经尝试过让Shedskin工作,但我的C++/C技能有限(Emscripten只为它使用的Boehm灵感垃圾收集器公开了一个C API,Shedskin需要一个C++垃圾收集类来处理它的对象,它不存在然而).
  • UnLden Swallow/RPython,到LLVM - 尚未能在Ubuntu上正确设置
  • Boo到Java然后到LLVM(还没能在我的Ubuntu系统上安装)

附加限制:

  • 我需要在我的Ubuntu系统上使用它.
  • 编译的Javascript应该小于1 MB
  • 仍然可以使用本地语言(也是交叉编译)进行调试,从而可以利用现有的调试工具.

"构建指令表的这个过程应该非常有趣.它不需要成为苦差事的真正危险,因为任何非常机械的过程都可能被转移到机器本身." - 艾伦·图灵,1946年

javascript python firefox pypy llvm

7
推荐指数
1
解决办法
1374
查看次数

Django Models/SQLAlchemy臃肿!有没有真正的Pythonic数据库模型?

" 让事情变得尽可能简单,但并不简单. "

我们能找到修复Python数据库世界的解决方案吗?

更新:Alex Martelli编写了一个'lustdb'原型 - 如果你知道任何有多个后端的轻量级,高级数据库库,我们可以包含语法糖蜂蜜,请称重!

from someAmazingDB import *  
#we imported a smart model class and db object which talk to database adapter/s
class Task (model): 
    title = ''
    done = False #native types not a custom object we have to think about!

db.taskList = []
#or
db.taskList = expandableTypeCollection(Task) #not sure what this syntax would be

db['taskList'].append(Task(title='Beat old sql interfaces',done=False))
db.taskList.append(Task('Illustrate different syntax modes',True)) # ok maybe we should just use kwargs

#at this point …
Run Code Online (Sandbox Code Playgroud)

python database nosql

6
推荐指数
2
解决办法
1670
查看次数

比Web.py更有效的Web框架?非常Pythonic请!

我喜欢webpy,它真的很Pythonic但我不喜欢添加url映射并创建一个类,通常只有一个函数在其中.我有兴趣尽快减少代码输入和原型设计.

有没有人有任何即将到来的建议,如Bobo,Nagare,Bottle,Flask,Denied,对于webpy的好事情的人来说,这是多么的好事?

是什么让它成为一个好理由?

另外我不介意遗漏(强烈)基于文本的模板系统,我使用面向对象的HTML生成.代码应该看起来像这样:

def addTask(task):
    db.tasks.append({'task':task,'done':False})
    return 'Task Added'
def listTasks():
    d = doc()
    d.body.Add(Ol(id='tasks'))
    for task in db.tasks:
        taskStatus = 'notDoneTask'
        if task.done: taskStatus = 'doneTask'
        d.body.tasks.Add(Li(task.task,Class=taskStatus))
    return d
Run Code Online (Sandbox Code Playgroud)

极简主义的CherryPy目前看起来像是一个强有力的竞争者.还有最后一分钟会被另一个人保存吗?

python web-applications cherrypy web.py

5
推荐指数
2
解决办法
6331
查看次数