Questions tagged «python»

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

3
为什么没有针对本地机器代码的python编译器?
据我了解,造成编译语言与python之间速度差异的原因是,第一个方法将代码一直编译到本机计算机的代码,而python编译为python字节码,由PVM解释。我看到这种方式python代码可以在多个操作系统上使用(至少在大多数情况下),但是我不明白,为什么没有额外的(和可选的)python编译器,其编译方式与传统编译器相同。这将留给程序员选择,这对他们来说更重要。本机上的多平台可执行性或性能。一般来说; 为什么没有可以同时编译和解释的语言?

7
我们应该使用python 2.6还是2.7或3.x?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 我正在使用的python版本是2.6,并且有2.7和3.x。通常我将python用于一些琐碎的程序/片段。我意识到2.x和3.x之间有一些主要区别。我真的很想知道,如果我要使用python创建更大的项目,应该使用哪个版本的python? 我应该升级到2.7,还是升级到3.x或继续使用2.6? 该决定应基于以下条款: 互联网上作为社区的用户数。更多的用户意味着更多的开源软件包和他们的帮助。 功能性。 官方开发团队的支持。 与现有模块/软件包的兼容性。 谢谢!
25 python 

8
Python面试问题[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我将在两周内面试一次涉及Python编程的实习。 谁能建议我应该抛光哪些区域?我在面试中寻找Python开口方面的常见问题。除了我已经使用该语言已有一年多的事实之外,我没有意识到他们会问我什么。 像进行C或C ++面试一样,有很多问题,从字符串反转到建立链接列表,但对于Python面试,我一无所知。 欢迎个人经验和/或建议。
25 python  interview 

4
功能样式异常处理
有人告诉我,在函数式编程中,不应抛出和/或观察异常。取而代之的是,应将错误的计算结果视为底值。在Python(或其他不完全鼓励函数式编程的语言)中,只要出现“保持纯净”的错误,就可以返回None(或另一种替代方法,尽管None它严格地不符合定义)。所以必须首先观察到错误,即 def fn(*args): try: ... do something except SomeException: return None 这违反纯洁吗?如果是这样,是否意味着不可能仅用Python处理错误? 更新资料 埃里克·利珀特(Eric Lippert)在他的评论中使我想起了FP中处理异常的另一种方法。尽管我从未在实践中看到过用Python完成的工作,但一年前我学习FP时我还是玩过它。在这里,任何optional装饰函数返回的Optional值对于正常输出以及指定的异常列表都可以为空(未指定的异常仍可以终止执行)。Carry创建一个延迟的评估,其中每个步骤(延迟的函数调用)要么Optional从上一步获取非空输出,然后继续传递,要么通过一个new评估自身Optional。最后,最终值是normal或Empty。此处,该try/except块隐藏在装饰器后面,因此可以将指定的异常视为返回类型签名的一部分。 class Empty: def __repr__(self): return "Empty" class Optional: def __init__(self, value=Empty): self._value = value @property def value(self): return Empty if self.isempty else self._value @property def isempty(self): return isinstance(self._value, BaseException) or self._value is Empty def __bool__(self): …

1
单个python文件分发:模块还是包?
假设我有一个有用的python函数或类(或任何类)useful_thing,该函数或类存在于单个文件中。本质上有两种组织源树的方法。第一种方法使用单个模块: - setup.py - README.rst - ...etc... - foo.py 在useful_thing中定义的位置foo.py。第二种策略是制作一个包装: - setup.py - README.rst - ...etc... - foo |-module.py |-__init__.py 在useful_thing中定义的位置module.py。在包装的情况下__init__.py看起来像这样 from foo.module import useful_thing 这样在两种情况下都可以from foo import useful_thing。 问题:首选哪种方式,为什么? 编辑:由于用户说这个问题的格式不正确,因此我要补充一点,官方python打包教程似乎并未评论上述哪种方法是首选方法。我明确不提供自己的利弊清单,因为我对是否存在社区首选方法感兴趣,而不是对利弊进行讨论:)

3
Python-'if foo in dict'vs'try:dict [foo]'
我想这不是关于鸭子类型的本质的问题,而是关于保持pythonic的问题。 首先-当处理字典时,尤其是当字典的结构是相当可预测的并且给定的密钥通常不存在但有时存在时,我首先想到两种方法: if myKey in dict: do_some_work(dict[myKey]) else: pass 当然,Ye Olde的“宽恕与许可”方法。 try: do_some_work(dict[myKey]) except KeyError: pass 作为一名Python的熟练手,我觉得后者是很多人的首选,我觉得这很奇怪,因为在Python文档中try/excepts,当出现实际错误时,似乎是首选,而不是…… 没有成功? 如果偶然的dict在myDict中没有密钥,并且已知它并不总是具有该密钥,那么try / except在上下文上是否会引起误解?这不是编程错误,只是数据的事实-该字典没有特定的键。 当您查看try / except / else语法时,这似乎特别重要,当确保try不会捕获太多错误时,这似乎非常有用。您可以执行以下操作: try: foo += bar except TypeError: pass else: return some_more_work(foo) 这是否会导致吞没可能是某些错误代码导致的各种奇怪错误?上面的代码可能只是在阻止您看到您要添加的内容,2 + {}并且您可能永远都不会意识到代码的某些部分出现了严重错误。我不建议我们检查所有类型,这就是为什么它是Python而不是JavaScript的原因-但是在try / except的上下文中,似乎应该捕获程序正在执行的本来应该做的事情,而不是使它能够继续下去。 我意识到上面的例子是一个草率的论点,实际上是故意的。但是,鉴于better to ask forgiveness than permission我的Python信条,我不禁要问一个问题,那就是在if / else与try / …
24 python 

8
框架是否放置过多抽象?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我已经进行了不到一年的编程,并且在编写系统应用程序,Web应用程序和用于企业/组织的脚本方面有一些经验。但是,我从未真正完成的一件事是使用Django,Rails或Zend之类的框架。 回顾Django框架,我对框架中提取了多少东西感到沮丧。我了解DRY和最少的代码的核心目标,但是对不同模块的过度依赖以及对核心功能的过度抽象有些感觉是这样的: 由于模块/框架的不断变化的性质,使得程序的过时速度非常快, 由于存在大量可用的框架和模块及其所有特质,使得代码难以理解, 除非您已阅读所有文档,否则使代码的逻辑性降低。也就是说,我可以通读一些列表理解和条件逻辑,弄清楚程序在做什么,但是当您看到需要传入任意字符串和字典的函数时,除非您已经是一位高手,否则事情会变得有些难以理解。给定的模块;和: 使得在框架之间进行切换既困难又乏味。在语言之间进行切换已经是一个挑战,但是如果您对语言的核心功能/理念有足够的了解,这是可以管理的。框架之间的切换似乎更多是死记硬背的问题,从某些方面看,这似乎鼓励了这些框架旨在消除的低效率。 我们真的需要在像MySQL查询这样简单的内容上放置50层抽象吗?为什么不使用类似PHP的PDO接口那样的功能,在该接口中可以处理准备好的语句/输入测试,但是通用的SQL查询仍然是该功能的一部分? 这些抽象真的有用吗?功能膨胀是否会使它们无用,从而使应用程序比没有使用框架编写的类似应用程序更加困难?

7
Python生产力VS Java生产力
在SO上,我遇到了一个问题,即哪种Java或Python最适合在Google AppEngine上开发。许多人吹嘘使用Python而不是Java可以提高生产率。关于Python与Java生产率的争论,我要说的一件事是,Java具有出色的IDE来加快开发速度,而Python由于其动态特性而在该领域确实缺乏。 因此,即使我更喜欢将Python用作语言,但我认为与Java相比,它不能显着提高生产率,特别是在使用新框架时。显然,如果它是Java vs Python,并且您可以使用的唯一编辑器是VIM,那么Python可以极大地提高您的生产率,但是当将IDE引入方程式时,它就不是那么明确了。 我认为Java的优点通常仅在语言水平上评估,并且常常基于过时的假设,但是Java在语言本身之外具有许多优点,例如JVM(经常受到批评,但潜力巨大),出色的IDE和工具,大量的第三种政党图书馆,平台等。 问题,Python /相关的动态语言是否真的可以带来经常提到的巨大的生产率提升?(考虑使用新框架并使用中型到大型应用程序)。

8
Ruby还是Python?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 这个问题是非常主观和开放的。甚至听起来我应该自己研究并做出自己的决定。但是我想把它放在那里,并从别人那里得到一些想法。 长话短说-我对老鼠赛跑感到精疲力尽,今年参加了自费休假。这主要是为了摆脱公司的磨练和四处旅行,但是我也想尝试新技术并做一些自学项目,以跟上编程的速度,而且-我只是喜欢与他人打交道。编程,没有压力! 事情是这样的:我是一生的C / C ++ / Java程序员。自从我在整个编程生涯中一直使用这种语言家族以来,我有点bracket不休。因此,我想学习与该组在语法上没有紧密联系的语言。我基本上想寻找的是一种相对通用的语言,易于学习,具有一些不同于C ++ / Java的新概念,并且拥有一个良好的社区。第二个考虑因素是它具有良好的Web开发框架。第三,要考虑的是它并不完全是学术性的(请阅读:使用它在现实世界中有很多工作)。 我将其范围缩小到了Ruby或Python。我对Ruby的印象是它非常面向Web,它的唯一真正应用是作为服务器端脚本语言来做Web东西(主要是Ruby on Rails)。我对Python几乎没有任何印象,只是它似乎具有热情的支持者,并且似乎是一种相当通用的语言。 TL; DR并尽可能简洁地说:对于C ++ / Java的人来说,学习哪种新的编程观点会更好?哪个更开放,更通用并适用于更广泛的应用程序?目前,我倾向于Ruby,但在某种程度上来说,我担心它似乎只不过是服务器端网络语言而已。
24 learning  python  ruby 

4
如何在Python库模块中处理数据库连接
我已经在Python中创建了一个库,其中包含用于访问数据库的函数。这是一个围绕第三方应用程序数据库的包装库,由于第三方应用程序未提供像样的API的事实而编写。现在,我最初让每个函数在正常的函数调用期间打开数据库连接,直到我的程序逻辑对函数使用嵌套调用为止,然后我将调用特定函数数千次。这不是很出色。分析这表明开销在数据库连接设置中-每个函数调用一次。因此,我将打开的连接从函数内部移动到模块本身,以便在导入库模块时将打开数据库连接。这给了我令人满意的表现。 现在我有两个问题。首先,我是否需要担心我不再显式关闭数据库连接,并且如何通过此设置显式地进行操作?其次,我所做的工作是否接近良好实践的领域?否则我将如何处理呢?
23 python 

6
如何解决嵌套评论的问题
不能嵌套注释的语言不只是一种。您对此问题有很好的解决方案吗?在C / C ++和Java中,一种解决方法是仅使用单行注释,但是注释掉较大的块将变得不可能。我正面临着这样的事情: </li><!-- <li><!-- Save --> 因此,我必须手动浏览并编辑评论。您能以多种语言建议我们应该如何处理吗?我不确定,但是python '''可能为此提供了解决方案,可以#在python中添加注释?`
23 java  c++  python  c  comments 

9
为什么Java / C ++中没有幂运算符?
尽管有这样的运算符- **在Python中,我想知道为什么Java和C ++也没有。 使用运算符重载为用C ++定义的类创建一个对象很容易(而且我相信Java中也可以做到这一点),但是在谈论基本类型(例如int,double等)时,您必须使用库功能类似Math.power(通常必须将两者都强制转换为两倍)。 那么-为什么不为原始类型定义这样的运算符?
23 java  c++  python 

1
为什么某些语言的文档说“等于”而不是“是”?
为什么某些语言的文档说“等于”而不是“是”? 例如,Python文档说 itertools.chain(*iterables) ... 等效于: def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element 或者,这个C ++参考的find_if: 该功能模板的行为等效于: template<class InputIterator, class UnaryPredicate> InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred) { while (first!=last) { if (pred(*first)) return first; …

2
具有两个python进程访问它的SQLite:一次阅读,一次写作
我正在开发一个包含两个组件的小型系统:一个从互联网资源中轮询数据,然后将其转换为sql数据以将其持久化在本地;第二个从本地实例读取该sql数据,并通过json和一个平稳的api提供服务。 我本来打算使用postgresql保留数据,但是由于应用程序将要存储的数据量非常小,无法提供服务,因此我认为这太过分了。SQLite是否可以胜任?我喜欢占用空间小的想法,并且不需要为此任务维护另一台sql服务器,但是我担心并发性。 似乎在启用预写日志记录的情况下,可以在不将任何进程锁定在数据库之外的情况下同时进行SQLite数据库的读写。 如果只有一个SQLite实例读取并且另一个写入,则单个SQLite实例能否维持两个并发进程对其进行访问?我开始编写代码,但想知道这是否是SQLite的错误应用。

9
我感到陷入了Python的中心,如何超越初学者[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 如果这不遵循SO规则,我真的很抱歉,但是我需要一点帮助,我个人仍然将自己归类为python的初学者,但是我写了一个非常小且非常不切实际的程序供老板使用。 我知道我仍然是一个初学者,因为简单的事情仍然困扰我,但是老实说,我读给初学者的每一本书只是重新表达了我已经知道的内容,但是每本“更高级”的书并不能真正让我学习,它们取决于示例文件我从来不真正理解为什么他们建立了“说”功能或“说”类。所以我的问题... 在书上是否有任何建议或其他建议使我脱离这一阶段,我先使用了头,通常它们确实很好,但是我的问题是他们让我回溯只是为了再次前进,它在HTML中有效,但是它在Python中令人困惑,基本上,我认为我需要在继续的同时构建一个程序,我再次喜欢HeadFirst的风格,但是我需要的东西不会让我不得不记住一件事而忘记它... 作为记录,我已经检查了一些O'Reilly的书
22 python 

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.