我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.
我的代码看起来像这样:
my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)
但后来我想,这样写它会不会更好?
my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)
它更具可读性,如果需要性能,可以取出lambda来获得一些东西.
问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?
在Chrome控制台中执行此代码段:
function foo() {
return typeof null === 'undefined';
}
for(var i = 0; i < 1000; i++) console.log(foo());Run Code Online (Sandbox Code Playgroud)
应打印1000次false,但在某些机器上将打印false多次迭代,然后true用于其余部分.
为什么会这样?这只是一个错误吗?
我今天读到Django 1.3 alpha正在发售,最引人注目的新功能是引入基于类的视图.
我已经阅读了相关的文档,但我发现很难看到使用它们可以获得的大优势,所以我在这里要求一些帮助来理解它们.
让我们从文档中获取一个高级示例.
from books.views import PublisherBookListView
urlpatterns = patterns('',
(r'^books/(\w+)/$', PublisherBookListView.as_view()),
)
Run Code Online (Sandbox Code Playgroud)
from django.shortcuts import get_object_or_404
from django.views.generic import ListView
from books.models import Book, Publisher
class PublisherBookListView(ListView):
context_object_name = "book_list"
template_name = "books/books_by_publisher.html",
def get_queryset(self):
self.publisher = get_object_or_404(Publisher, name__iexact=self.args[0])
return Book.objects.filter(publisher=self.publisher)
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(PublisherBookListView, self).get_context_data(**kwargs)
# Add in the publisher
context['publisher'] = self.publisher
return …Run Code Online (Sandbox Code Playgroud) 我希望你能帮助我找到在不使用密码的情况下实现手动(服务器端启动)登录的最佳方法.让我解释一下工作流程:
我想要做的是在用户点击电子邮件链接后登录用户,这样他就可以立即开始使用该网站.
我不能使用他的密码,因为它是在DB中加密的,是编写自定义身份验证后端的唯一选择吗?
有时我需要确保某些情况下是从查询集排除.
这是我通常这样做的方式:
unwanted_instance = MyModel.objects.get(pk=bad_luck_number)
uninteresting_stuff_happens()
my_results = MyModel.objects.exclude(id=unwanted_instance.id)
Run Code Online (Sandbox Code Playgroud)
或者,如果我有更多的:
my_results = MyModel.objects.exclude(id_in=[uw_in1.id, uw_in2.id, uw_in3.id])
Run Code Online (Sandbox Code Playgroud)
这'感觉'有点笨重,所以我试过:
my_ideally_obtained_results = MyModel.objects.exclude(unwanted_instance)
Run Code Online (Sandbox Code Playgroud)
哪个不起作用.不过,我看到这里的SO是一个可以使用子查询作为参数排除.
我运气不好吗?我缺少一些功能(检查文档,但没有发现任何有用的指针)
我很困惑从PHP脚本发送邮件时遇到问题.一些数据:
这是代码:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$to = "myaddress@mydomain.com";
$subject = "Hi";
$body = "Test 1\nTest 2\nTest 3";
$headers = 'From: info@domain.com' . "\r\n" .
'errors-to: myaddress@mydomain.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body, $headers)) {
echo("Message successfully sent");
} else {
echo("Message sending failed");
}
require('class.phpmailer.php');
$message = "Hello world";
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->AddAddress("myaddress@mydomain.com", "Agos");
$mail->SetFrom("info@domain.com","My Site");
$mail->Subject = "Test Message";
$mail->Body = $message;
$mail->Send();
?>
Run Code Online (Sandbox Code Playgroud)
这就是我得到的: …
我正在重构一个函数,给定一系列隐式定义区间的端点,检查区间中是否包含一个数字,然后返回一个对应的(以任何可计算的方式不相关).现在处理工作的代码是:
if p <= 100:
return 0
elif p > 100 and p <= 300:
return 1
elif p > 300 and p <= 500:
return 2
elif p > 500 and p <= 800:
return 3
elif p > 800 and p <= 1000:
return 4
elif p > 1000:
return 5
Run Code Online (Sandbox Code Playgroud)
这是IMO非常可怕,缺乏间隔和返回值都是硬编码的.当然可以使用任何数据结构.
我试图看看是否可以在图像上放置一些文本而不使用position:absolute或者将图像作为元素的背景.
限制的原因是HTML代码进入电子邮件,事实证明hotmail既不支持也不支持.
我记得当我第一次开始学习CSS时,摆弄图像周围的浮动文本时,我常常最后快速地将图像传遍整个图像.可悲的是,我不能重现那种行为.
全文(编辑):
我从图形设计师那里得到了一个精美的布局.它基本上是一个很好的背景图片,标识链接到网站,基本上是中间的"文本到达"区域.
像往常一样,在这些情况下,我正在使用表来确保所有内容都保持原位并运行crossbrowser + crossmailclient.
问题来自于中间的"文本到此处"区域不是白色矩形,而是具有一些背景图形.
经过一些测试,看起来Live Hotmail似乎不喜欢这两个位置:绝对或背景图像; 相对利润也不好,因为它们会破坏其余的布局.
当前版本,适用于任何其他邮件客户端/网站:
...
<td>
<img src='myimage.jpg' width='600' height='400' alt=''>
<p style="position: absolute; top: 120px; width: 500px; padding-left: 30px;">
blablabla<br>
yadda yadda<br>
</p>
</td>
...
Run Code Online (Sandbox Code Playgroud)
当然,"这是不可能的"可能是一个完全可以接受的答案,但我希望不是;)
简短版本:
我有一个正在开发和测试的Django项目(尚未投入生产),这个项目正在慢慢变得"不那么小",最近我一直想知道为了保持可管理性而将事情分开.
项目布局:
该项目包括我不开发的各种可重用应用程序,例如avatar,django_evolution,压缩器,以及由我开发的更大的单片,我说的应用程序,其中包含该站点的主要功能.视图文件达到1k行,有12个模型,但功能几乎全部到位(即我不期望它们增长10倍).
疑问:
可以将模型和视图区分为三个"组",从而导致分成三个应用程序,但是:
最后,我的问题:
我可以通过拆分我的应用程序获得任何优势吗?
如果仅仅是为了"大"文件的可读性和可维护性,我可以将这些文件拆分并放在一个文件夹中(正如许多相关问题的答案所示).
我有一个React+vite应用程序,我正在为其编写测试以涵盖应用程序启动时的前端路由重定向逻辑。
路由由 v6 处理react-router,所有与路由相关的组件都包装在React.lazy. 测试是由运行的vitest,我正在使用react-testing-library助手
所有测试都是相似的,看起来像这样
it('Redirects from app root to red room if the user has a red shirt', async () => {
getUser.mockReturnValue(redShirtUser);
render(MyTestedComponent, { wrapper });
await waitFor(() => expect(screen.getByText('Welcome to the red room'));
expect(history.location.pathname).toBe('/red-room');
});
Run Code Online (Sandbox Code Playgroud)
然而,其中一项测试花费的时间比其他测试要长得多,甚至waitFor超时。我可以指定更长的超时waitFor,但它仍然无法在 CI 上可靠地运行。如果测试是其文件中唯一的测试/唯一正在执行的测试,也会发生这种情况。
我已经将缓慢的部分(通过调试的魔力console.log)缩小为惰性import()语句 - 导入并执行模块需要花费很多时间(秒)。
我该如何调试这个?是否有已知的因素会导致(惰性)导入变慢?