Tag:

Pythonic组织模块和软件包的方式

我来自一个背景,我通常每个class级创build一个文件。 我也在目录下组织普通的类。 这种做法对我来说很直观,已被certificate在C ++,PHP,JavaSript等方面是有效的。 我很难把这个隐喻带入Python:文件不再是文件,而是正式的模块。 在一个模块中只有一个类是不正确的 – 大多数类都是自己无用的。 如果我有一辆automobile.py ,一辆Automobile ,总是把它称为automobile.Automobile , automobile.Automobile也是很愚蠢的。 但是,与此同时,将一吨代码放入一个文件并称之为一天似乎并不合适。 显然,一个非常复杂的应用程序应该有超过5个文件。 什么是正确的或pythonic的方式? (或者如果没有正确的方法,你最喜欢的方式是什么?为什么?)我应该在Python模块中投入多less代码?

检查需求是否是最新的

我正在使用pip 需求文件保持我的依赖列表。 我也尝试遵循pipe理依赖关系的最佳实践,并在需求文件中提供精确的包版本。 例如: Django==1.5.1 lxml==3.0 问题是:有没有一种方法可以告诉Python程序包索引中有什么新版本的软件包可以在requirements.txt列出来? 对于这个特定的例子,当前最新的可用版本分别是Django和lxml的1.6.2和3.3.4。 我试过pip install –upgrade -r requirements.txt – 升级pip install –upgrade -r requirements.txt ,但它说,所有是最新的: $ pip install –upgrade -r requirements.txt Requirement already up-to-date: Django==1.5.1 … 请注意,在这一点上,我不想运行实际的升级 – 我只是想看看是否有任何更新可用。

编写健壮的R代码:命名空间,屏蔽和使用`::`运算符

简洁版本 对于那些不想通读我的“案例”的人来说,这就是本质: 什么是推荐的方法,尽量减less新包打破现有代码的机会,即使你写的代码尽可能健壮 ? 在什么时候最好地使用命名空间机制是推荐的方法 a)只使用贡献的软件包(比如在一些R分析项目中)? b)关于开发自己的软件包? 如何避免与正式类 (主要是参考类在我的情况下)的冲突,因为甚至没有一个类似于:: for classes(AFAIU)的命名空间机制? R宇宙的工作方式 这是在我脑海中徘徊了两年的东西,但我不觉得我已经达到了令人满意的解决scheme。 另外我觉得情况越来越糟。 我们看到在CRAN , github , R-Forge等等上的软件包数量不断增加,这真是太棒了。 在这样一个分散的环境中,组成R的代码库(为了简单起见,这就是基础R和贡献R )的代码基础在鲁棒性方面将偏离理想状态:人们遵循不同的惯例,有S3,S4 ,“S4参考课程”等等。如果有一个强制执行的“ 中央清算实例 ”,事情就不可能像“alignment”一样。 没关系。 问题 鉴于上述情况,使用R编写健壮的代码可能非常困难。 并非所有你需要的都在R基础上。对于某些项目,你最终会加载相当多的贡献包。 恕我直言,在这方面最大的问题是命名空间概念在R中使用的方式:R允许简单地写一个特定的函数/方法的名称,而不明确要求它的名称空间(即foo与namespace::foo ) 。 所以为了简单起见,这就是大家正在做的事情。 但是这样一来,名称冲突,破坏代码以及重写/重构代码的需要只是时间问题(或者加载的不同包的数量)。 充其量,你会知道哪些现有的function被新添加的软件包掩盖/重载。 最糟糕的是,你将不知道,直到你的代码中断。 几个例子: 尝试加载RMySQL和RSQLite的时候,他们不太一样 RMongo也会覆盖RMySQL的某些function 预测掩盖了许多与ARIMA相关的function方面的内容 R.utils甚至掩盖了base::parse例程 (我不记得哪些function特别是导致问题,但如果有兴趣,我愿意再看一遍) 令人惊讶的是,这似乎并没有打扰那里的很多程序员。 我试图在r-devel几次提高兴趣,没有任何意义。 使用::运算符的缺点 正如Dominick Samperi 指出的那样,使用::运算符可能会严重影响效率。 在开发你自己的包的时候,你甚至不能在自己的代码中使用::运算符,因为你的代码还没有真正的包,因此也没有名称空间。 所以我将不得不一直坚持foo方式,build立,testing,然后回去改变一切到namespace::foo 。 不是真的。 避免这些问题的可能解决scheme 将每个包中的每个函数重新分配给一个遵循特定命名约定的variables,例如namespace..foo ,以避免与namespace::foo (我在此概述一次)相关的低效率。 […]

entry_points / console_scripts和setup.py中的脚本之间的区别?

基本上有两种方法通过setup.py将Python控制台脚本安装到我的path中: setup( … entry_points = { 'console_scripts': [ 'foo = package.module:func', ], } ) 和 setup( … scripts = [ 'scripts/myscript.sh' ] ) 有什么区别? 我看到第一种方法允许我为脚本select好的,特定的名称,但是还有其他的区别吗? 不同的原始目的,兼容性(setuptools,distutils,…?),用法,…? 我很困惑,一个精心制作的答复可以帮助我(也可能是其他人)正确理解这一切。 更新:因为我问了这个问题, PyPA 在这个话题上发表了这些很酷的文档 。

未使用的导入和对象是否具有性能影响

我怀疑Java代码中未使用的导入和未使用的对象是否会对性能产生影响? 假设一个对象被初始化并且没有被使用,会发生什么? 什么是未使用的import成本

Python包名称约定

是否有像Java的com.company.actualpackage一样的Python命名约定? 大多数情况下,我看到简单的,可能碰撞包名称,如“ networking ”。 如果没有这样的约定,是有原因的吗? 你如何看待在Python世界中使用Java命名约定?

检查是否设置了额外function

有没有什么办法来检查是否有一个额外的时候已经通过了一个活动? 我想做一些像(在活动中的onCreate() ): Bundle extras = getIntent().getExtras(); String extraStr = extras.getString("extra"); if (extraStr == null) { extraStr = "extra not set"; } 但是这是抛出一个java.lang.NullPointerException 。 谢谢。

Java包与文件夹结构? 有什么不同

我想知道Eclipse IDE中用于Java EE开发的文件夹结构和包之间有什么区别。 我们什么时候使用哪一个,为什么? 什么应该是实践 创build一个像src / com / utils这样的文件夹结构,然后在里面创build一个类 创build一个类似src.com.util的包,然后在其中创build一个类 哪个选项会更好,更容易部署,如果我必须稍后编写一个ant脚本进行部署? 如果我去的文件夹结构将部署是复制文件从开发到部署目标一样简单?

MVC4 StyleBundle:你可以在debugging模式下添加caching查询string吗?

我有一个MVC应用程序,我使用StyleBundle类来渲染出如下的CSS文件: bundles.Add(new StyleBundle("~/bundles/css").Include("~/Content/*.css")); 我遇到的问题是,在Debug模式下,CSSurl单独渲染,我有一个网页代理,积极caching这些url。 在Release模式下,我知道一个查询string被添加到最终的URL,使每个版本的任何caching失效。 是否有可能configurationStyleBundle以Debug模式添加一个随机的查询string以及产生以下输出来解决caching问题? <link href="/stylesheet.css?random=some_random_string" rel="stylesheet"/>

如何构buildMeteor智能包

如何构build一个meteor list中将出现的Meteor智能包 ? Building Atmosphere软件包是有据可查的 ,但是build立Meteor软件包却不是。