Questions tagged «python»

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

1
为什么在python中编写Tkinter GUI时使用类
我主要使用python进行编程,并使用Tkinter编写了几个GUI,我见过的每个教程都建议为该GUI定义和使用一个类,但是我的GUI可以仅使用过程而完美运行,而无需使用类。 为什么要上课?在我看来,这似乎只是复杂性和不必要代码的额外一层。
19 python  gui  class 

3
使用GPLv3 Python模块,我的整个项目是否必须获得GPLv3许可?
我现在正在开发一个小型项目,因此我计划根据开放源代码许可证进行发布(尚未决定哪个版本)。我的问题是,我使用的Python模块之一已获得GPLv3许可。由于我没有对库进行任何修改(按原样使用),我是否仍可以根据自己选择的许可来许可我的项目,还是会被迫也将其制作为GPLv3?
19 python  licensing  gpl 

5
Python和Django选择Java / .NET Web开发人员有多难?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 几个月前,我刚刚在一家小公司开始了新工作,目前负责目前和将来的所有开发工作。我个人从Java到.NET方面都有多年的软件设计和开发经验。我在职业生涯的后期很轻松地学习了.NET,几乎不需要任何培训就可以投入工作,最重要的是,它通过看到两种不同的观点,帮助我真正地掌握和欣赏了许多最佳实践和通用主题的普遍性。解决相同的问题。 我的老板旁边有一家初创公司,并且在不泄露过多信息的情况下,他需要一个中等复杂的Web应用程序,该应用程序可以集成到Google Maps中以构建路线。 他将他们过度承诺的Web应用程序外包了出去,主要是交付不足,并在截止日期前运行。他目前正在努力争取至少收回他所投资的一些资金。他现在拥有该网站的源代码,但是在上线之前有一份清单,他希望对其进行修复和补充。 他问我是否愿意为此花一些额外的钱,但是问题是该网站是使用Django用Python编写的,我对此没有任何经验。我告诉他我真的不是最好的人,因为我对Python或Django几乎一无所知,因此必须从头开始学习。我觉得如果我利用这段时间学习语言和平台,对我来说按小时计费是不公平的。 根据我的经验水平的总结,您认为我要花多长时间或多少时间?如果您认为这很浪费时间,那么有人可以建议在哪里找到有经验的Python Web开发人员吗?金钱现在对他来说很重要,因此他不再有最大的预算。

3
“ Java OOP”和“ Pythonic OOP”之间的区别?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我从ActionScript 2.0开始,然后又从Java开始。从那以后,我已经学习或至少使用了一堆语言,包括Python(可能是我的最爱)。 恐怕我的面向对象编程风格非常不符合Python风格,更像带有Python语法的Java OOP。是什么使Java like和Pythonic OOP彼此不同?用Python编写面向对象的代码时,Java程序员经常做什么?

3
在Python中的同一文件中可以有多个类吗?
经过数年的Java和PHP生涯,我才刚刚进入Python世界。尽管语言本身非常简单明了,但我仍在努力解决一些我无法解决的“小问题”,并且到目前为止,我在众多文档和教程中都找不到答案。 对于有经验的Python从业者来说,这个问题似乎很愚蠢,但是我确实想要一个答案,因此我可以继续使用该语言: 在Java和PHP中(虽然不是严格要求),但您最好将每个class文件写在自己的文件中,class最佳做法是使用文件名。 但是在Python,至少在我检查的教程,这是确定要在同一个文件中的多类。 该规则是在生产型,可部署的代码中保留吗?还是为了简洁起见,仅在具有教育意义的代码中执行?

8
有什么好的单元测试来覆盖滚动模具的用例?
我正在努力掌握单元测试。 假设我们有一个模具,其默认面数可以等于6(但可以是4、5面,等等): import random class Die(): def __init__(self, sides=6): self._sides = sides def roll(self): return random.randint(1, self._sides) 以下是有效/有用的单元测试吗? 测试6面模具的1-6范围内的辊 测试6面模具的0卷 测试6面模具的7卷 测试3面模具的1-3范围内的辊 测试3面模具的0卷 测试一卷4的3面模具 我只是认为这些都是浪费时间,因为随机模块已经存在了很长时间,但是我认为如果随机模块得到更新(比如我更新了我的Python版本),那么至少我会被覆盖。 另外,在这种情况下,我是否还需要测试模具辊的其他变化,例如3,还是覆盖另一个已初始化的模具状态好吗?

4
Python装饰器和Lisp宏
在查看Python装饰器时,有人声明,它们与Lisp宏(尤其是Clojure)一样强大。 看一下PEP 318中给出的示例,在我看来,它们只是在Lisp中使用普通的旧高阶函数的一种奇特方式: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) return f return decorate @attrs(versionadded="2.2", author="Guido van Rossum") def mymethod(f): ... 在任何示例中都没有看到任何代码转换,如Clojure Macro的解剖中所述。另外,Python缺少同源性 可能使代码转换变得不可能。 那么,这两个如何比较,您能说他们在做事上大致相等吗?证据似乎与此相反。 编辑:根据评论,我正在寻找两件事:比较“功能强大”和“易于处理”。
18 python  lisp  clojure  macros 

1
python 3新功能解决了哪些问题?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 Python 3的新功能说: 我们主要是修复众所周知的烦恼和疣,并清除大量旧屑 它提到了什么不同(修复),但没有提到为什么(问题)。我还没有发现问题所在。修复程序解决了哪些问题?

8
Python编码标准与生产力
我为一个大型人道主义组织工作,开发了一个项目构建软件,该软件可以通过加快食品分配来在紧急情况下挽救生命。许多NGO迫切需要我们的软件,而我们比原计划晚了几周。 在这个项目中让我担心的一件事是,我认为过分注重编码标准。我们使用python / django编写并使用PEP0008版本,并进行了各种修改,例如,行长最多可以达到160个字符,并且如果可能的话,所有行都应该走那么长,导入之间没有空行,仅适用于某些种类的换行规则类,我们必须使用很多模板,即使它们不是解决问题的最佳方法等。 一位核心开发人员花了一周的时间重写系统的主要部分以满足当时的新编码标准,并丢弃了过程中的几套测试,因为重写意味着它们“无效”。我们花了两个星期来重写所有丢失的功能,并修复错误。他是首席开发人员,他的话语具有影响力,因此他说服了项目经理这些标准是必要的。初级开发人员按照他们的指示做。我觉得项目经理对所有这些都有强烈的认知失调感,但是尽管他不确定要做什么,但还是非常赞同。 今天,我遇到了严重的麻烦,因为我忘记在关键字参数中的逗号后加上一些空格。在Skype通话期间,我确实被其他两个开发人员和项目经理大喊大叫。就我个人而言,我认为编码标准很重要,但同时我们也认为我们浪费了大量时间来沉迷于它们,当我口头表达这时,它引起了人们的愤怒。我被视为团队的麻烦制造者,一个正在寻找失败者的替罪羊。自从引入编码标准以来,团队的生产力已显着下降,但这只会加剧这种痴迷,即首席开发人员只是将我们不遵守标准归咎于缺乏进步。他认为,如果我们不遵守约定,我们将无法阅读彼此的代码。 这开始变得粘滞。现在,我正在尝试修改各种脚本(autopep8,pep8ify和PythonTidy)以尝试匹配约定。我们还对源代码运行pep8,但是对我们的标准有很多隐式修改,以至于很难跟踪它们。首席开发人员简单地挑出了pep8脚本没有拾取的错误,并在下一次站立会议中向我们大喊。每周都有新的编码标准增加,迫使我们重写现有的,有效的,经过测试的代码。谢天谢地,我们仍然有测试,(我还原了一些提交,并修复了一堆他删除的提交)。 一直以来,满足截止日期的压力越来越大。 我认为一个基本问题是,首席开发人员和另一个核心开发人员拒绝信任其他开发人员来完成工作。但是如何处理呢?我们无法完成工作,因为我们正忙于重写所有内容。 在软件工程团队中,我从未遇到过这种动态。我对他们是否遵守编码标准提出质疑吗?是否还有其他人遇到过类似情况,他们如何成功处理?(我不是在讨论人们只是找到实际解决方案的讨论)

10
为什么继承和多态性被广泛使用?
我越了解不同的编程范例(例如函数式编程),就越开始质疑OOP概念(如继承和多态性)的智慧。我最初在学校学习继承和多态性,当时,多态性似乎是编写允许轻松扩展的通用代码的绝妙方法。 但是面对鸭子类型(动态和静态)以及诸如高阶函数之类的功能特性,我已经开始将继承和多态性视为基于对象之间脆弱的一组关系施加了不必要的限制。多态性背后的一般想法是,您只需编写一次函数,以后便可以在不更改原始函数的情况下向程序中添加新功能-您要做的就是创建另一个实现必要方法的派生类。 但是,无论是使用动态语言(例如Python)还是使用静态语言(例如C ++),通过鸭子输入都可以轻松实现这一点。 例如,请考虑以下Python函数,后跟等效的静态C ++: def foo(obj): obj.doSomething() template <class Obj> void foo(Obj& obj) { obj.doSomething(); } 相当于OOP的类似于以下Java代码: public void foo(DoSomethingable obj) { obj.doSomething(); } 当然,主要区别在于Java版本需要先创建接口或继承层次结构,然后才能起作用。因此,Java版本涉及更多工作,并且灵活性较差。此外,我发现大多数现实世界中的继承层次结构都有些不稳定。我们都已经看到了人为的形状和动物的示例,但是在现实世界中,随着业务需求的变化和新功能的添加,很难真正完成任何工作,然后才能真正扩展子类,或者重新建模/重构层次结构以包含更多的基类或接口,以适应新的需求。使用鸭子类型,您无需担心要建模的任何事情-您只需要担心所需的功能。 但是,继承和多态性是如此流行,以至于我怀疑将它们称为可扩展性和代码重用的主要策略是否过于夸张。那么,为什么继承和多态性如此成功呢?我是否忽略了继承/多态性比鸭子类型具有的一些重要优势?

4
IO monad模式处理副作用的好处是否纯粹是学术上的?
对不起,还有另一个FP +副作用问题,但是我找不到一个可以完全回答我的问题。 我对函数式编程的(有限的)理解是,应将状态/副作用最小化并与无状态逻辑分开。 我还收集了Haskell的方法,即IO monad,它通过将有状态的动作包装在一个容器中以供以后执行(被认为超出程序本身的范围)来实现。 我试图理解这种模式,但实际上是确定是否在Python项目中使用它,因此要避免使用Haskell规范。 粗暴的例子来了。 如果我的程序将XML文件转换为JSON文件: def main(): xml_data = read_file('input.xml') # impure json_data = convert(xml_data) # pure write_file('output.json', json_data) # impure IO monad的方法不是有效地做到这一点: steps = list( read_file, convert, write_file, ) 然后通过不实际调用这些步骤来放任自己的责任,而是让口译员这样做? 换一种说法,就像写: def main(): # pure def inner(): # impure xml_data = read_file('input.xml') json_data = convert(xml_data) write_file('output.json', …

7
对于浏览器中的客户端而言,Python会太慢吗?
我听到过这样的说法:Python太慢了,无法在浏览器中使用。 我认为JavaScript仅在这方面具有优势,因为Google之类的公司之所以需要它(并且使其变得很快)是因为他们需要它才能生存,但是我可能错了。 Python和Javascript的设计方式是否存在差异,从而影响它们(将)在浏览器中的执行方式? 由于到目前为止还没有客户端Python实现,所以我的问题来自某人发表的声明,因此也许它与语言本身有关(尽管我不相信)。

5
为什么Python比Java慢但比PHP快[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经多次看过各种基准测试,这些基准测试表明一堆语言如何执行给定任务。 这些基准测试始终表明Python比Java慢,比PHP快,我不知道为什么会这样。 Java,Python和PHP在虚拟机中运行 所有这三种语言都将其程序转换为可在操作系统之上运行的自定义字节码-因此,没有一种语言可在本地运行 Java和Python都可以“编译”(.pyc对于Python),但Python的__main__模块未编译 Python和PHP是动态类型的,而Java是静态类型的-这就是Java速度更快的原因,如果是,请说明这如何影响速度。 而且,即使dynamic-vs-static参数正确,也不能解释为什么PHP比Python慢​​-因为两者都是动态语言。 你可以看到一些基准这里和这里,并在这里

5
为什么将单元测试专用方法视为不良做法?
内容: 我目前正在使用Python进行一个小项目。我通常使用一些公开的方法来构造我的类,这些方法已记录在案,但主要处理高级概念(类的用户应了解和使用的内容),以及一堆隐藏的(从下划线开始)负责方法的类。复杂或低级别的处理。 我知道测试对于确保代码的信心并确保以后进行的任何修改都不会破坏以前的行为至关重要。 问题: 为了在受信任的基础上构建更高级别的公共方法,我通常会测试私有方法。我发现查找代码修改是否已引入回归以及在何处更容易。这意味着这些内部测试可能会因次要修订而中断,并且需要修复/替换 但是我也知道,单元测试私有方法至少是一个有争议的概念,或者更经常被认为是不好的做法。原因是:仅应测试公共行为(参考) 题: 我确实关心以下最佳做法,并希望了解: 为什么在私有/隐藏方法上使用单元测试不好(有什么风险)? 当公共方法可以使用低级和/或复杂处理时,最佳实践是什么? 精度: 这不是一个如何的问题。Python没有真正的隐私概念,隐藏的方法根本没有列出,但是当您知道它们的名称时就可以使用 我从没学过编程规则和模式:我的上一堂课是80年代的...我主要通过尝试和失败以及在Internet上的引用来学习语言(多年来,Stack Exchange是我的最爱)

2
序列化和反序列化应该由要序列化的类负责吗?
我目前处于C#.NET应用程序的几个模型类的(重新)设计阶段。(模型与MVC中的M相同)。模型类已经具有大量精心设计的数据,行为和相互关系。我正在将模型从Python重写为C#。 在旧的Python模型中,我认为我看到了疣。每个模型都知道如何进行序列化,而序列化逻辑与任何类的其余行为无关。例如,假设: Image类的.toJPG(String filePath) .fromJPG(String filePath)方法 ImageMetaData.toString()和.fromString(String serialized)方法的类。 您可以想象这些序列化方法与该类的其余部分之间是否没有凝聚力,但是只能保证该类知道足够的数据来对其自身进行序列化。 上课知道如何序列化和反序列化是一种常见的做法吗?还是我错过了通用模式?

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.