Questions tagged «python»

Python是一种动态类型化的高级解释型编程语言。它的设计侧重于清晰的语法,一种面向对象编程的直观方法,以及使正确的做事方式变得显而易见的方法。Python支持模块和异常,并具有广泛的标准模块库。Python是通用的,因此从Web到嵌入式系统都得到了广泛的使用。

5
展平重叠范围的算法
我正在寻找一种展平(拆分)可能重叠的数字范围列表的好方法。问题与以下问题非常相似:最快的分割重叠日期范围的方法,还有许多其他方法。 但是,范围不仅是整数,而且我正在寻找一种可以在Javascript或Python等中轻松实现的体面算法。 示例数据: 解决方案示例: 抱歉,如果这是重复的,但是我还没有找到解决方法。

2
纯粹出于美学原因创建嵌套函数?
我一直想知道其他程序员对创建纯美学功能的想法有何看法。 假设我有一个处理大量数据的函数:Function ProcessBigData。说我需要几个处理步骤,仅适用于数据:Step1,Step2,Step3。 我在源代码中看到最多的普通方法是像这样编写注释: Function ProcessBigData: # Does Step1 Step1.. Step1.. #Does Step2 Step2.. Step2.. 我通常做的是,但由于同伴缺乏这种编码风格,总是感到不对劲: Function ProcessBigData: Function Step1: Step1.. Step1.. Function Step2: Step2.. Step2.. Step1() -> Step2() 我主要担心的是,这种样式在Javascript和Python中是否有缺点 我没有其他替代品吗?

4
适应(Python)语言更改的策略
编写仍将运行数年的代码 编程语言会改变。图书馆变化。5、10甚至20年以前的某些代码可能仍会运行并产生预期的结果,而2年之后的某些代码可能会因语法错误而失败。这是部分不可避免的,因为语言会不断发展(至少大多数会这样做)。开发人员有责任维护其代码。但是有时候,稳定性是生产代码中的一个重要要求,并且代码应该只运行10年,而无需每年有人通过代码来适应语言变化。或者,我可能有一些小脚本,例如用于科学数据分析的脚本,在多年不接触它们之后我需要重新访问。例如,在气象部门,即使对于非速度必不可少的部分,也有许多可操作的Fortran代码,而代码稳定性是原因之一。一世' 我们听说过对不稳定的恐惧是他们反对迁移到Python的目的之一(当然,除了语言惯性之外,这还可能是新代码不依赖于旧代码)。当然,稳定代码的一种策略是冻结整个操作系统。但这并不总是可行的。 我以Python为例,但问题不仅限于Python。 有关Python兼容性问题的文档 对于Python,有几个文档概述了向后不兼容更改的策略。 PEP-5 根据PEP 5: 从Python过渡版本的发行到向后不兼容版本的发行,必须至少有一年的过渡期。用户将有至少一年的时间来测试他们的程序,并将其从使用已过时的结构迁移到替代结构。 我个人认为一年是很短的。这意味着我可能会编写一些代码,并且从现在起1.5年前它将不再运行。 PEP 291 PEP 291包含不完整的准则指南清单,应避免使用这些准则以保持向后兼容性。但是,它仅与Python 2.x有关。由于Python 2.7是2.x系列的最终版本,而Python 2.7仅是错误修复,因此该PEP现在仅具有历史意义。 PEP 387 向后不兼容的更改也有PEP 387。PEP 387是草案,不是官方政策。2009年6月,在Python-ideas邮件列表中对此进行了讨论。讨论的一部分重点在于开发人员如何编写可抵御语言更改的强大代码。一篇文章列出了一些关于不该做什么的建议: 随之而来的是,您可以推断出在大多数情况下可能是正确的几条规则:不要调用以开头的东西"_",不要猴子打补丁,不要对除您自己以外的类中的对象使用动态类替换,不要依赖于继承层次结构的深度(例如no ".__bases__[0].__bases__[0]"),请确保您的测试在运行时不会产生任何DeprecationWarnings,将属性添加到从其他库继承的类时,请注意潜在的命名空间冲突。我不认为所有这些东西都写在一个地方。 此外,还有一些关于“矿场”(可能会更改的新功能)和“冻结区域”(实际上已保证几乎售出的API不变)的观点。引用安托万·皮特鲁(Antoine Pitrou): 我认为应该对“冻结区域”进行积极的定义(明确的公共API和明确保证的行为),而不是进行消极的定义(明确的“雷区”)。否则,我们将忘记将一些重要的东西放进雷区,并在以后需要以向后不兼容的方式更改这些东西时被咬住。 这个线程似乎没有任何结论,但是它非常接近我要寻找的核心。该线程已使用了将近四年,因此情况可能已更改或改善。什么样的代码可能会生存,而哪种代码更脆弱? 移植指南 除了上面概述的文档之外,每个Python版本还附带一个移植指南:移植到Python 3.2,移植到Python 3.3等。 有用的兼容性 PEP 3151向我介绍了有用的兼容性的概念。用我自己的话来说,可以归结为这样一个想法,即只有精心编写代码,语言开发人员才需要小心维护兼容性。它并没有真正定义有用的兼容性,但是我认为它与我在上面的PEP 387讨论中引用的想法相似。 从程序员的角度 作为一名程序员,我知道Python将来会发生变化,人们(尤其是我自己)将在几年后尝试使用一个,两个或三个次要版本的Python版本运行我的代码。并非所有的东西都兼容,实际上,很容易提出会失败的代码(我曾经遇到过说明的代码if sys.version[:3] != '2.3': print 'Wrong version, exiting')。我正在寻找一组有关如何执行和 不 执行哪些操作的准则,以增加我的代码将来仍可不变运行的机会。 有没有这样的指导方针?如何编写将来仍会运行的Python代码? 我的问题既涉及Python的核心,其标准库,也常用附加库,特别是numpy,scipy,matplotlib。 …
16 python 

10
在算法编程方面,Python优于C
我一直在研究一些算法,并一直在研究SPOJ.pl TopCoder等网站。我发现程序员通常在大多数算法编程竞赛中都喜欢C或C ++。 现在,我最近遇到了一些麻烦。我对C和Python都了解一些,并且在尝试编写代码时,对于大多数算法,我似乎更喜欢Python而不是C。每当我坐下来写CI的代码时,大约15分钟后就放弃了,因为我觉得它太麻烦了并且倾向于使用python。传递矩阵指针等似乎浪费了我实际上可以用来思考算法本身的时间。 现在,我知道并且听到很多人说C是一种非常重要的语言,并且是许多程序员的后援。 我想知道的是,我的这种方法是否有任何缺点/后果/缺点等。 这不是Python与C的争论。从长远来看,这个关于易用性而不是C首选python的特定实践将如何影响我或任何其他程序员/计算机科学家的问题。 我很乐意听到在行业中使用过这些语言的人,以及/或者开发大型软件/库等的人。

11
为什么推荐使用Python作为入门级编程语言?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 我在P.SE上阅读了更多问题,建议初学者选择Python作为他们的第一门编程语言。 不要误会我的意思,我喜欢Python。我很喜欢!但是它的哲学围绕着“我们都同意这里的成年人”。 从经验/知识的角度来看,初学者不是成年人。这就意味着即使您在伤口中幸存下来,也更容易朝自己的脚射击并养成一些不良习惯。 我在想,用一种“更静态”的语言,用脚踩枪会比较困难,因为它的限制性更大。 回到我的问题。为什么推荐使用Python作为入门级编程语言? 有哪些优点使其适合教授编程语言。还是...顾问的个人喜好?

6
如何防止客户看到用解释语言编写的代码?
我正在用Python构建一个相当复杂的解释程序。几个月以来,我一直在为大多数其他目的使用此代码,因此,我不希望我的客户能够简单地复制并尝试出售它,因为我认为这是值得的。 问题是我需要脚本在客户端付费的服务器上运行,因此有什么方法可以保护我机器上的特定文件夹免受root用户访问,或者使之只能使某个特定用途可以访问目录?操作系统是Ubuntu。

5
Python开发人员在学习Ruby时应该知道什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我从事Python程序员工作大约18个月,其中包括一次实习和一些附带项目,我认为自己对这种语言非常满意。 但是,在编程领域似乎对Ruby有很多关注,但对Python则不再关注。 因此,在学习Ruby时,是否会有Python风格的东西只是Ruby中的不良做法?我应该注意什么,应该避免什么?


2
** wargs是反模式吗?
我们内部代码库中有很多代码在内部调用我们的库-这些库通常有很多参数(例如matplotlib),我们的代码通常仅执行特定任务,然后将其传递**kwargs给下一个调用的函数。 例如: def our_method(dataframe, **kwargs): result = do_something_with_data(dataframe) external_module.draw(result, **kwargs) 虽然**kwargs阻止了我们重复方法声明中的所有参数,但是这也使得在调用时哪些参数有效是非常不透明的our_method-我必须知道调用哪个方法,而我通常不希望知道。 你对此有什么看法?
16 python 

6
如何用近似相等实现浮点哈希
假设我们有以下Python类(Java中存在的问题与equals和相同hashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees degrees开尔文的温度在哪里?现在,我想实现平等的测试和哈希为Temperature的方式, 比较浮点数到ε差,而不是直接相等测试, 并履行a == b隐含的合同hash(a) == hash(b)。 def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? Python文档讨论了一些关于确保数字哈希hash(2) == hash(2.0)的问题,但这并不是完全相同的问题。 我是否在正确的轨道上?如果是这样,在这种情况下实现散列的标准方法是什么? 更新:现在我知道这种浮点数相等性测试消除了==和的可传递性equals。但是,如何将其与浮动的“常识”一起使用,不应该直接进行比较?如果通过比较浮点数实现相等运算符,则静态分析工具会抱怨。他们这样做正确吗?

1
微软为什么要放弃IronRuby和IronPython?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 几年前,微软宣布Ruby和Python即将加入.net。这些项目分别称为IronRuby和IronPython。微软表示,这些项目将建立在.net DLR之上。 WIKIpedia表示,出于所有意图和目的,这些项目已被Microsoft放弃。 微软为什么放弃这些项目?
15 .net  python  ruby  microsoft 

4
仅关注成功或失败时返回布尔值
我经常发现自己从一个方法返回一个布尔值,该方法用于多个位置,以便将一个方法周围的所有逻辑包含在一个地方。所有(内部)调用方法都需要知道该操作是否成功。 我正在使用Python,但问题不一定特定于该语言。我只能想到两种选择 引发异常(尽管情况并不特殊),并记住在调用函数的每个位置都捕获该异常 在执行操作时返回布尔值。 这是一个非常简单的示例,演示了我在说什么。 import os class DoSomething(object): def remove_file(self, filename): try: os.remove(filename) except OSError: return False return True def process_file(self, filename): do_something() if remove_file(filename): do_something_else() 尽管它是功能性的,但我真的不喜欢这种做事的方式,它“闻起来”,有时会导致很多嵌套的if。但是,我想不出一种更简单的方法。 os.path.exists(filename)在尝试删除之前,我可以使用更多的LBYL原理并使用它,但是不能保证文件不会同时被锁定(这不太可能,但是可能),我仍然必须确定删除是否成功。 这是“可接受的”设计吗?如果不是,那么设计它的更好方法是什么?

5
Monkeypatching是否被视为良好的编程习惯?
我一直在印象中,monkeypatching属于快速和肮脏的hack类别,而不是标准的良好编程习惯。虽然我不时使用修复第三方库的小问题,但我认为这是临时性的修复,因此我会向第三方项目提交适当的补丁程序。 但是,我已经将该技术用作主流项目中的“常规方法”,例如在Gevent的gevent.monkey模块中。 Monkeypatching是否已成为主流,正常且可接受的编程实践? 另请参阅:杰夫·阿特伍德(Jeff Atwood)的“ Monkeypatching for Humans”

2
许多小的脚本,一个或多个存储库?
同事和我自己都遇到了一个我们有很多看法的问题。 当前,我们有一个git存储库,我们将所有cronjobs保留在其中。大约有20克朗,它们除了它们都是小型python脚本并且对于某些活动必不可少之外,并没有真正的关联。我们使用一个fabric.py文件来部署和requirements.txt文件管理所有脚本的要求。 基本上,我们的问题是,是否将所有这些脚本都保存在一个git存储库中,还是应该将它们分离到各自的存储库中?通过将它们保存在一个存储库中,可以更轻松地将它们部署到一台服务器上。对于所有脚本,我们只能使用一个cron文件。 但是,这感觉不对,因为20个cronjob在逻辑上不相关。此外,使用一个在requirements.txt文件中的所有脚本,这是很难搞清楚什么是依赖一个特定的脚本,它们都必须使用的软件包的版本相同。 我们可以将所有脚本分离到各自的存储库中,但这会创建20个需要记住和处理的不同存储库。这些脚本中的大多数都不是很大,解决方案似乎过大。 一个相关的问题是,我们是对所有cronjobs使用一个大crontab文件,还是对每个cronjobs使用单独的文件?如果每个人都有自己的设备,那么一个crontab的安装如何避免覆盖另一个19个?这似乎也很痛苦,因为随后需要20个不同的cron文件进行跟踪。 简而言之,我们的主要问题是将它们紧密地捆绑在一起作为一个存储库,还是将它们通过自己的require.txt和fabfile.py分离到自己的存储库中?我们觉得我们也可能正在寻找一些非常简单的解决方案。有没有更简单的方法来解决此问题?

2
什么是钩子?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我在各种编程文章中都经常遇到这个术语。但是我不明白它们是什么,以及如何使用它们。所以我只想知道钩子的概念是什么?如果有人可以将我链接到一些示例,尤其是在Web开发的情况下,那将是很好的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.