小编dao*_*oad的帖子

初始化dict的首选语法是什么:花括号文字{}或dict()函数?

我正在努力学习Python,我正在密切关注常见的编码标准.这可能看起来像是一个毫无意义的挑剔问题,但我正在努力专注于我学习的最佳实践,所以我不必忘记任何"坏"习惯.

我看到两种常用的方法来初始化dict:

a = {
    'a': 'value',
    'another': 'value',
}

b = dict( 
    a='value',
    another='value',
)
Run Code Online (Sandbox Code Playgroud)

哪个被认为是"更加pythonic"?你用哪个?为什么?

python dictionary

204
推荐指数
4
解决办法
31万
查看次数

在Perl中,使用模块比使用文件更好吗?

另一个问题让我想到了不同的代码重用方法:usevs. requirevs.do

我在这里看到很多帖子,其中的问题集中在require加载和执行代码的使用上.在我看来,这显然是一种不好的做法,但我没有找到任何有关我能指出的问题的好资源.

perlfaq8涵盖了use和之间的差异require,但它没有提供任何关于偏好的建议(从5.10开始 - 在5.8.8中有一些建议支持使用).

这个话题似乎缺乏讨论.我有几个问题需要讨论:

  1. Perl中首选的代码重用方法是什么?
    • use ModuleName;
    • require ModuleName;
    • require 'file.pl';
    • do 'file.pl';
  2. require ModuleName和之间有什么区别require "file.pl"
  3. 使用它是不是一个好主意require "file.pl"?为什么或者为什么不?

perl

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

如何将所有匹配的行放入一个缓冲区?

你如何将所有匹配的行放入缓冲区?

给出如下文件:

match 1
skip
skip
match 2
match 3
skip
Run Code Online (Sandbox Code Playgroud)

我希望能够发出一个命令来将所有与模式匹配的行(/ ^匹配/用于此示例)放入单个缓冲区中,以便我可以将其放入另一个文档或摘要或其他任何内容中.

该命令应该在缓冲区中结束:

match 1
match 2
match 3
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是尝试:

:g/^match/y
Run Code Online (Sandbox Code Playgroud)

但我只是得到了最后一场比赛.这是有道理的,因为:g命令有效地重复y每个匹配行.

也许有一种方法可以添加缓冲,而不是覆盖它.我找不到它.

vim

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

如何管理Perl应用程序的开发,构建和部署?

我还没有想出一个令人满意的方法来管理我的Perl应用程序的开发,构建和部署.我想听听你是如何解决这个问题和/或你想要在你现在没有的应用程序构建系统中拥有的.

请描述您的应用程序类型(它是一个Web应用程序,它是在服务器上运行,还是使用PAR或PerlApp捆绑它,以便您可以在perlless系统上运行).

构建系统应提供的关键事项:

  • 控制图书馆.
    • 应该可以将库分发检查到我的开发目录中,以便在我的构建中使用它.
    • @INC使用适当的目录值执行perl应该很容易.
    • 应该可以获得从系统perl安装中获取的模块列表.
  • Makefile/Build集成
    • 通过仅发出一个make test或类似的命令,可以很容易地在整个应用程序中进行全局测试.
  • 版本控制友好
    • 结构不应干扰CVS,SVN和其他版本控制系统的正常使用.
  • 跨平台
    • 系统应至少在Win32和Unix派生系统上运行.
    • 理想情况下,工具在perl运行的所有地方应该具有相同的功能.
  • 单Perl安装
    • 作为设置环境的一部分,不必将perl安装到特殊目录中.
  • 轻松启动
    • 启动应用程序应该是一个主要是自动化的过程 应该可以使用Module :: Starter或h2xs的某些内容来布局基本结构并创建任何标准文件.

Perlmonks交叉发布.

perl

45
推荐指数
2
解决办法
3161
查看次数

如何对Perl中的所有致命错误强制执行堆栈回溯?

在Perl中,有没有办法强制所有致命错误显示像Carp::confess产生的堆栈回溯?

我知道你可以use warnings FATAL => 'all';对目前的词汇范围发出致命警告.

此外,可以使用$SIG{__WARN__} = sub { CORE::die(@_) };所有警告致命(没有本地化SIGWARN处理程序).

有没有干净的方法来做到这一点,还是我需要调整SIGDIE?如果我写一个SIGDIE处理程序,获取跟踪的最佳方法是什么?

理想的解决方案适用于标准测试库Test::More和朋友.

更新: Mark Johnson建议使用SIGDIE处理程序进行调用Carp::confess.它工作得很好.这是代码:

use Carp;
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
Run Code Online (Sandbox Code Playgroud)

perl

24
推荐指数
2
解决办法
3089
查看次数

为什么Perl源过滤器坏了,什么时候可以使用它们?

源过滤器是坏的并且不应该在生产代码中使用是"常识" .

在回答类似但更具体的问题时,我找不到任何好的参考资料,清楚地解释了为什么过滤器是坏的以及何时可以安全使用.我想现在是时候创造一个了.

  1. 为什么源过滤器不好?
  2. 什么时候可以使用源过滤器?

perl source-filter

23
推荐指数
4
解决办法
2491
查看次数

在另一个`.scss`文件中包含`.scss`文件?

我怎样才能将.scss文件包含在另一个.scss文件中?我试图在一个文件中写这个:app.scss:

@include('buttons');
@include('dropzone');

body {

    background: $primaryColor;
    overflow-x: hidden; /*Clip the left/right edges of the content inside the <div> element - if it overflows the element's content area: */
    height: 100%; /* Cover all (100%) of the container for the body with its content */
    padding-top: 70px;
} /* more css code here */
Run Code Online (Sandbox Code Playgroud)

它会返回一个错误: invalid css after @import

我尝试在主scss文件中包含2个其他scss 文件,因此它css最终将被编译为一个文件.这怎么可能?

sass scss-lint

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

什么时候课程太大或太小?

我最近由我公司的一位高级开发人员审核了我的代码.他批评我的设计使用了太多的课程.我很想听听你的反应.

我的任务是创建一个服务,该服务生成一个xml文件,因为它操作了3个其他xml文件.我们将这些命名为aaa.xml,bbb.xmlccc.xml.该服务分两个阶段进行.在第一阶段,它针对bbb.xml清理aaa.xml.在第二阶段,它将第一阶段的产品与ccc.xml合并以产生最终结果.

我选择了一个包含三个类的设计:一个XmlService类,它使用了另外两个类,一个scrubber类和一个merger类.我保持擦洗和合并类是分开的,因为这两个类都很大并且具有不同的逻辑.

我认为我的方法很好,因为它让我的课程变得小而有凝聚力.我的方法也有助于控制我的测试类的大小.

高级开发人员断言,清理和合并类只能由XmlService类使用,因此应该是它的一部分.他觉得这会使XMLService具有凝聚力,这就是他所说的具有凝聚力的意思.他还认为以这种方式分手,会使他们松散凝聚力.

具有讽刺意味的是,我试图打破这些课程以达到凝聚力.你怎么看?谁对或错?我们都对吗?谢谢你的建议.

oop

18
推荐指数
2
解决办法
2060
查看次数

glob('foo*')相对于<foo*>的比较优势是什么?

我只是在看有人可以告诉我如何创建一个目录内容数组?.不出所料,提供文件全球作为答案.让我感到惊讶的是这篇帖子推荐使用glob()而不是<*>.

我用的<*>是因为这是我很久以前学到的,从未想过它.这不是一个好理由.

您喜欢使用什么语法进行通配,为什么?

perl glob

15
推荐指数
2
解决办法
395
查看次数

Perl的unpack()是否比substr()更快?

我读过几次unpack()比这更快substr(),特别是随着子串数量的增加.但是,这个基准建议不然.我的基准测试是否存在缺陷,或者是unpack()旧版Perl的保留所谓的性能优势?

use strict;
use warnings;
use Benchmark;

my ($data, $format_string, $n_substrings);

my %methods = (
    unpack => sub { return unpack $format_string, $data },
    substr => sub { return map {substr $data, $_, 1} 0 .. $n_substrings - 1 },
);

for my $exp (1 .. 5){
    $n_substrings = 10 ** $exp;
    print $n_substrings, "\n";
    $format_string = 'a1' x $n_substrings;
    $data          =   9  x $n_substrings;
    Benchmark::cmpthese -2, \%methods;
}
Run Code Online (Sandbox Code Playgroud)

输出(在Windows上):

10
           Rate unpack substr …
Run Code Online (Sandbox Code Playgroud)

perl

14
推荐指数
3
解决办法
4102
查看次数

标签 统计

perl ×6

dictionary ×1

glob ×1

oop ×1

python ×1

sass ×1

scss-lint ×1

source-filter ×1

vim ×1