小编mac*_*mac的帖子

为什么早退比其他人慢?

这是我几天前给出的回答的后续问题.编辑:似乎该问题的OP已经使用了我发给他的代码来问同样的问题,但我没有意识到它.道歉.提供的答案虽然不同!

我基本上观察到:

>>> def without_else(param=False):
...     if param:
...         return 1
...     return 0
>>> def with_else(param=False):
...     if param:
...         return 1
...     else:
...         return 0
>>> from timeit import Timer as T
>>> T(lambda : without_else()).repeat()
[0.3011460304260254, 0.2866089344024658, 0.2871549129486084]
>>> T(lambda : with_else()).repeat()
[0.27536892890930176, 0.2693932056427002, 0.27011704444885254]
>>> T(lambda : without_else(True)).repeat()
[0.3383951187133789, 0.32756996154785156, 0.3279120922088623]
>>> T(lambda : with_else(True)).repeat()
[0.3305950164794922, 0.32186388969421387, 0.3209099769592285]
Run Code Online (Sandbox Code Playgroud)

......或换句话说:else无论if条件是否被触发,使条款更快.

我假设它与两者生成的不同字节码有关,但有人能够详细确认/解释吗?

编辑:似乎不是每个人都能重现我的时间,所以我认为在我的系统上提供一些信息可能是有用的.我正在安装默认的python运行Ubuntu 11.10 64位.python …

python optimization python-2.7

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

为什么不可能使用正则表达式来解析HTML/XML:外行人的术语中的正式解释

在没有关于解析(X)HTML或XML并且询问正则表达式的问题的情况下,SO上没有任何日子.

虽然相对容易想出用于演示此任务的正则表达式的不可行性的示例或用表达概念的表达式集合,我仍然无法在SO上找到为什么在外行人中无法做到这一点的正式解释条款.

到目前为止我在这个网站上找到的唯一正式解释可能非常准确,但对于自学成才的程序员来说也很神秘:

这里的缺陷是HTML是Chomsky Type 2语法(无上下文语法)而RegEx是Chomsky Type 3语法(正则表达式)

要么:

正则表达式只能匹配常规语言,但HTML是无上下文的语言.

要么:

有限自动机(它是正则表达式下面的数据结构)除了它所处的状态之外没有内存,如果你有任意深度的嵌套,你需要一个任意大的自动机,它与有限自动机的概念相冲突.

要么:

常规语言的Pumping引理是你不能这样做的原因.

[公平地说:以上大多数解释链接到维基百科页面,但这些并不比答案本身更容易理解].

所以我的问题是:有人可以提供一个外行人的上述正式解释的翻译,为什么不可能使用正则表达式来解析(X)HTML/XML?

编辑:在读完第一个答案之后,我认为我应该澄清:我正在寻找一个"翻译",它也简要地解释了它试图翻译的概念:在答案的最后,读者应该有一个粗略的想法 - 例如 - "常规语言"和"无语境语法"是什么意思......

regex language-agnostic

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

Python:为什么*和**比/和sqrt()更快?

在优化我的代码时,我意识到以下内容:

>>> from timeit import Timer as T
>>> T(lambda : 1234567890 / 4.0).repeat()
[0.22256922721862793, 0.20560789108276367, 0.20530295372009277]
>>> from __future__ import division
>>> T(lambda : 1234567890 / 4).repeat()
[0.14969301223754883, 0.14155197143554688, 0.14141488075256348]
>>> T(lambda : 1234567890 * 0.25).repeat()
[0.13619112968444824, 0.1281130313873291, 0.12830305099487305]
Run Code Online (Sandbox Code Playgroud)

并且:

>>> from math import sqrt
>>> T(lambda : sqrt(1234567890)).repeat()
[0.2597470283508301, 0.2498021125793457, 0.24994492530822754]
>>> T(lambda : 1234567890 ** 0.5).repeat()
[0.15409398078918457, 0.14059877395629883, 0.14049601554870605]
Run Code Online (Sandbox Code Playgroud)

我假设它与C实现python的方式有关,但我想知道是否有人会解释为什么会如此?

c python performance python-2.7 python-internals

79
推荐指数
1
解决办法
5585
查看次数

为分发Python程序创建debian包的标准方法?

有很多关于如何做到这一点的信息,但由于"有一种方法可以给猫皮肤",所以涵盖一些过程的所有教程/手册似乎都做出了与其他不同的某些假设.教程,我仍然无法掌握它.

到目前为止,这是我认为我理解的.

  1. 我的最终目标应该是创建一个"二进制".deb包.这样的包将是平台独立的(32/64位),因为所有的python程序都是这样的.
  2. 要创建"二进制"包,我首先需要创建一个源包.
  3. 要创建源包,我可以使用CDBSdebhelper.Debhelper是初学者的推荐方式.
  4. 创建源包的核心是在源目录中填充DEBIAN目录,其中包含许多文件,说明文件需要复制的位置,它们受到的版权和许可方案,它们具有哪些依赖关系等等......
  5. 如果 python源还附带了distutils 脚本,那么步骤#4可以在很大程度上自动化DEBIAN命令.dh_make

现在我的问题:

  1. 我对这个过程的理解是否正确?我有什么遗失,或者我错了什么?
  2. 第五步真的让我感到困惑:特别是对我来说最难以理解的两点是:
    • 如何编写setup.py安装独立程序的脚本? 编辑:通过独立程序我的意思是一个程序供桌面用户使用(而不是我理解的模块,就像导入后其他软件使用的功能集合).在我的具体情况下,我实际上需要两个这样的"程序":主软件和一个单独的实用程序(实际上是第二个"程序",应该与另一个程序包在同一个程序包中).
    • DEB包的这种脚本有什么特点?官方文档似乎只涉及RPM和Windows的东西......

顺便说一句:这些是迄今为止我能找到的最好的信息来源.如果你有什么比这更好的,请分享!:)

python debian packaging distutils debhelper

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

将NumPy数组映射到位

是否可以映射NumPy阵列?如果有,怎么样?

给定a_values- 二维数组 - 这是我现在可以解决的一些代码:

for row in range(len(a_values)):
    for col in range(len(a_values[0])):
        a_values[row][col] = dim(a_values[row][col])
Run Code Online (Sandbox Code Playgroud)

但它太难看了,我怀疑在NumPy中的某个地方必须有一个功能可以做同样的事情:

a_values.map_in_place(dim)
Run Code Online (Sandbox Code Playgroud)

但如果存在上述情况,我一直无法找到它.

python arrays mapping numpy multidimensional-array

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

我正在寻找以智能方式学习Vim或Emacs的技巧

我是一个非常开心的Eclipse用户(我主要使用PHP和Python开发),但是我找到了"Vim/Emacs在GUI文本编辑器上提供了哪些具体的生产力提升?"的答案.足够有趣,让我希望尝试VimEmacs,看看它们是否会成为一个更好的解决方案.

我普遍认为Vim和Emacs并不是你通过"玩它"而学习的那种编辑器.我有这样的印象,你必须花一些时间和精力来"研究"它们,然后才能从它们的力量中获益.

所以,我对社区有两个问题:

  1. 在链接的线程中,响应者基本上通过评论Vim来回答(经常提到:"我确信Emacs具有相同的").Google趋势似乎表明Vim是两者之间最常采用的,但我的第一个问题是:我知道我之前没有任何经验,而且我在GNU/Linux上使用和开发(主要是PHP和Python)系统(Ubuntu,Arch Linux),是否有两个代表更好的选择?(要明确的是:我的问题不是关于编辑的质量,而是关于在我的情况下在战略上更好地学习的内容).

  2. 对于如何学习使用它/他们,您会给我什么建议?我知道这是一个广泛的问题,但故意是这样.看看这个答案(不相关的主题),了解我正在寻找的那种信息/风格的答案[但不要觉得有必要以这种方式回答......任何形式的欢迎都会受到欢迎!]

编辑(选择"接受的答案")

我选择了一个答案作为刚才接受的答案,但我想对所有分享经验和建议的人说"谢谢" :几乎所有人都以某种方式对我有用.这个帖子肯定超出了我的期望!谢谢!:)

ide vim emacs editor

38
推荐指数
4
解决办法
9236
查看次数

FB.logout()在没有访问令牌的情况下调用

我正试图退出我用Facebook集成创建的网站.登录工作正常,但是当我想要注销时,Firebug一直给我这个错误:

FB.logout() 没有访问令牌调用.

我正在使用Facebook JavaScript SDK,我必须注销的代码如下所示:

$(document).ready($(function () {
    $("#fblogout").click(facebooklogout);
}));

function facebooklogout() {
    FB.logout(function (response) {
    }
)};
Run Code Online (Sandbox Code Playgroud)

这是在Facebook开发人员文档中指定的注销代码,只是在document.ready上分配了一个按钮

在此代码之前我有FB.init()方法,一切运行正常.

如果有人知道为什么FB.logout没有访问令牌,那么我们将不胜感激.

javascript facebook facebook-javascript-sdk

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

在javascript中设置HTML元素的样式属性

我有一堆旧的经典ASP页面,其中许多在表格中显示数据库数据.这些页面都没有内置任何排序功能:您可以使用原始开发人员认为适合使用的任何ORDER BY子句.

我正在快速修复以通过客户端javascript进行排序.我已经编写了一个主要完成我需要的脚本.但是,我仍然需要添加一点功能.这些页面中的表格行通常具有交替的行颜色,用于实现此目的的机制因页面而异.它可能就像更改CSS类一样简单,或者样式可能已由ASP代码内联呈现.

在对表格进行排序之后,每一行都保持着色方案被渲染,因此交替的行不再交替.我希望用这样简单的东西修复它:

/* "table" is a var for the table element I'm sorting.
   I've already verified it exists, and that there are at least three rows.
   At this point the first row (index 0) is always the header row.
 */

// check for alternating row styles:
var RowStyle = table.rows[1].style;
var AltStyle = table.rows[2].style;

// SORT HAPPENS HERE!!
//  snip  

// Apply alternating row styles
if (RowStyle === AltStyle) return true; 
for (var i=1,il=table.rows.length;i<il;i+=1)
{
    if (i%2==0) table.rows[i].style=RowStyle; …
Run Code Online (Sandbox Code Playgroud)

html javascript styles

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

Bitmap从BitmapFactory.decodeFile(filename)返回null

当我调用此函数时,图像视图中没有bitmapFactory.decodefile(filename)显示null的图像 ..请帮忙.

这是我的代码:

public Bitmap ShowImage(String imageName,String userImageName ) 
{

    File sdcard_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile();

    File file = new File(sdcard_mainDirectory, userImageName).getAbsoluteFile();

    if (file != null) {

        try {

            String imageInSD = "/sdcard/UserImages/"+userImageName;

            Bitmap bitmap = BitmapFactory.decodeFile(imageInSD);

            return bitmap;

        }
        catch (Exception e) {

            e.printStackTrace();
        }

    }

    return null;

}
Run Code Online (Sandbox Code Playgroud)

android

32
推荐指数
6
解决办法
6万
查看次数

初学者:试图了解应用程序如何在Django中进行交互

我刚刚完成了第二次使用Django教程,现在我已经更加清楚地理解了这些内容.但是,我仍然不清楚网站内的应用程序如何互相交互.

例如,假设我正在编写一个博客应用程序(显然是一个相当受欢迎的活动).博客文章和评论倾向于一起,但它们足够明显,应该将它们构建到单独的应用程序中,这是Djano开发的一般理念.

请考虑以下示例.实际上我实际上并不会自己编写评论应用程序,因为网上已经存在好的代码,但这是为了演示/练习目的:

mysite的/博客/ models.py

from django.db import models

class post(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    content = models.TextField()
Run Code Online (Sandbox Code Playgroud)

mysite的/评论/ models.py

from django.db import models
from mysite.blog.models import post

class comment(models.Model):
    id = models.AutoField()
    post = models.ForeignKey(post)
    author = models.CharField(max_length=200)
    text = models.TextField()
Run Code Online (Sandbox Code Playgroud)

我上面写的是,从另一个应用程序导入模型并将其设置为外键,Django应用程序如何交互?或者是否有一个不同/更好的方法来构成一个网站进行交互?

更新
根据一个响应中的建议,我正在阅读contrib.contenttypes的文档.如果我正确读到这个,我可以像这样重写我的示例评论应用:

from django.db import models  
from django.contrib.contenttypes.models import ContentType
from django.contrib.contentypes import generic

class comment(models.Model):  
    id = models.AutoField()  
    author = models.CharField(max_length=200)  
    text = models.TextField()  
    content_type = models.ForeignKey(ContentType)  
    content_object = generic.GenericForeignKey(content_type, id)  
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

python django django-models django-apps

29
推荐指数
1
解决办法
6644
查看次数