小编Joh*_*rry的帖子

将迭代器传递给任何执行速度和为什么?

这里总结了一些问题.是的,我知道其中一些答案;)我可以在其他人身上挥手,但我真的很喜欢这里的细节.

  1. 这甚至是个好主意吗?(这个不在下面)
  2. 我想知道地图是否真的能提高速度?为什么?
  3. 为什么世界上会将迭代器传递给任何使代码更快的代码呢?
  4. 为什么我的Counter对象工作,我的print_true函数失败了?
  5. 是否有一个等效于itertools.imap的东西,它会一遍又一遍地调用一个函数,并且可选择一定次数?
  6. 我的胡萝卜在哪里?!?

我只是看着PYCON 2011:Dropbox的是怎么做的和如何Python的帮助了(当然我完成大部分的零件跳过),但最后真正有趣的东西开始在大约22:23.

演讲者主张在C中制作你的内部循环并且"运行一次"的东西不需要太多的优化(有意义)......然后他继续陈述......释义:

将迭代器的组合传递给任何用于大规模速度改进的组合.

这是代码(希望它是相同的):

import itertools, hashlib, time   
_md5 = hashlib.md5()  
def run():
    for i in itertools.repeat("foo", 10000000):
        _md5.update(i)
a = time.time();  run(); time.time() - a  
Out[118]: 9.44077205657959

_md5 = hashlib.md5() 
def run():
    any(itertools.imap(_md5.update, itertools.repeat("foo", 10000000)))    
a = time.time();  run(); time.time() - a
Out[121]: 6.547091007232666
Run Code Online (Sandbox Code Playgroud)

嗯,看起来更高的速度改进,我可以得到一个更快的电脑!(从他的幻灯片来看.)

然后他做了一堆挥手而没有真正详细说明为什么.

我已经知道迭代器从回答pythonic方式做N次而没有索引变量?感谢Alex Martelli.

然后我想,我想知道地图是否真的增加了速度提升?我最后的想法是WTF ??? 传递到任何?真???当然,因为文档定义了不能正确任何为: …

python performance

5
推荐指数
0
解决办法
2038
查看次数

Django 验证表单中的日期和时间

我有一个视图,我在表单提交时验证日期和时间,确保日期 + 时间没有过去。日期和时间是两个独立的字段。它有效,但我知道它的错误方式,并且应该在 Django Forms 中验证日期+时间。

这是在我的 view.py

(可能没有以正确的方式完成,但它有效)

my_date = request.session['reservationdate'] #in "mm/dd/yyyy" format
my_time = request.session['reservationtime'] #in "hh:mm" format
my_date_time = (my_date + ' ' + my_time + ':00') #convert to "mm/dd/yyyy hh:mm:ss"
my_date_time = datetime.strptime(my_date_time, '%m/%d/%Y %H:%M:%S') #convert to valid datetime
if datetime.now() <= my_date_time:
    #do this
else:
     ...
Run Code Online (Sandbox Code Playgroud)

现在我的目标是在 Django 表单中有类似上面的内容:

class MyForm(forms.ModelForm):  

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        self.fields['my_date'].required = True
        self.fields['my_time'].required = True
        ...

    def clean_my_date(self):
        my_date = self.cleaned_data['my_date']
        my_time = self.cleaned_data['my_time']
        my_date_time …
Run Code Online (Sandbox Code Playgroud)

python forms django validation

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

用javascript或jquery替换现有的规范标记

我想为Adobe Muse创建一个小部件,取代Muse自动生成的规范标签.

我知道这对大多数机器人不起作用,因为它们在抓取页面时不会运行任何脚本,但我已经读过Google的机器人在抓取时会运行脚本.

我发现了很多关于如何从链接中替换href的问题,但我似乎无法找到有关替换规范标记的href URL的任何问题.我几乎肯定这是我开始的地方......我只是不知道如何完成它:

<script>
    $(document).ready(function() {
         $('link[rel=canonical]').attr('href' 'NEW_LINK');
    }
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript jquery canonical-link

4
推荐指数
2
解决办法
7200
查看次数

在 Jekyll 中,液体 for 循环可以包含页面变量吗?

假设我有一堆_data文件用于为特定页面创建列表。具有这些列表的所有页面都有一个自定义的前端变量pageName. pageName恰好的值恰好将_data文件与列表匹配。

我不想将 html 代码块粘贴到每个页面中,而是想使用 aninclude来拉入一个通用的 html 块。要做到这一点,包含必须是动态的,或者包含液态标记才能成为动态的。

这可能比您需要的上下文更多,但我的问题归结为这个,可能是这样的:

{% for item in site.data.{{page.pageName}} %}
  {{ item.label }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

除非我遗漏了什么,否则这不起作用,所以我想知道是否有办法实现类似的功能。


我发现了这个类似的问题,但它似乎没有回答是否可以用来访问页面变量来构建文件名。

liquid jekyll

3
推荐指数
1
解决办法
1495
查看次数

如何在实时网站上的 Django 中向 Google 授权应用程序

我正在使用 Google Calendar API,但这适用于他们的任何 API。

我按照他们提供的快速入门示例进行操作,在本地环境中,这效果很好。我面临的主要问题是,在本地环境中,他们提供的代码设置为在需要授权时自动打开 URL 来授权应用程序。在实际环境中情况并非如此,它与这部分代码有关:

flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
Run Code Online (Sandbox Code Playgroud)

但是,我不太明白我应该调用什么。


这是他们提供的完整代码:

from __future__ import print_function
import datetime
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']

def main():
    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar.
    """
    creds = …
Run Code Online (Sandbox Code Playgroud)

python django authorization google-api heroku

3
推荐指数
1
解决办法
2580
查看次数

以编程方式向以编程方式添加到表格单元格的标签添加约束

这是我尝试过的。

我已经将我的行设置为根据它们的内容自动调整大小,如果我手动添加标签并手动向所述标签添加约束,这将完美地工作。

override func viewDidLoad() {
    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 100
}
Run Code Online (Sandbox Code Playgroud)

然后我添加标签及其约束,如下所示:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "TypeCell", for: indexPath) as UITableViewCell

    // Programmatically add a label
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = dataLabels[indexPath.row] // dataLabels is an array of my labels
    label.tag = indexPath.row
    cell.contentView.addSubview(label)

    // Programmatically add constraints
    label.topAnchor.constraint(equalTo: cell.contentView.topAnchor, constant: 15).isActive = true
    label.bottomAnchor.constraint(equalTo: cell.contentView.bottomAnchor, constant: 15).isActive = true

    return cell
}
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,我没有收到任何错误。行的大小似乎与标签的高度一致,并且标签正在响应以编程方式设置的约束,但该行似乎不知道约束存在。这是一个屏幕截图: …

uitableview ios nslayoutconstraint swift swift3

2
推荐指数
1
解决办法
2714
查看次数

如何在 Django 中验证模型 clean 方法中的多个字段

在我的 Django 模型中,我使用clean()方法来验证两组字段的值。我用相同的方法容纳这两个条件clean()。但是我发现系统检查了第一个条件,而忽略了第二个条件。

这是我的模型和字段:

class Rates(models.Model):
    master_doc = models.ForeignKey(Origin, ...
    exit_rate = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, default=0.00)
    from_date = models.DateField(null=True, verbose_name='From date')
    to_date = models.DateField(null=True, verbose_name='To date')

    def clean(self):
        if self.exit_rate <= 0:
            raise ValidationError({'exit_rate': _('The exit rate must be more than 0.')})
        if self.from_date is not None:
            if (self.to_date == self.from_date):
                raise ValidationError({'to_date': _('From Date and end date may not be the same.')})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,仅针对第一个 ie 字段引发验证错误exit_rate如果我颠倒检查的顺序,则仅针对日期字段(而不是费率字段)引发验证错误。

我尝试了这个解决方案并使用error_dict但出现错误 …

django django-models django-validation

0
推荐指数
1
解决办法
5959
查看次数

如何在使用javascript(或jquery)生成新的元标记之前检查现有元标记?

我正在开发一个创建基本SEO标签的小部件,这些标签可能已存在于页面上,所以我想确保小部件在生成新标签之前检查现有标签.

例如,窗口小部件生成的标记之一是

<meta name="description" content="Description of the webpage"/>

由于此标记是大多数页面已有的标记,有没有办法在编写之前使用javascript检查标记?

html javascript jquery meta-tags

-1
推荐指数
1
解决办法
1730
查看次数