Questions tagged «python»

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

8
如何学习有效地编写Pythonic代码?
用谷歌搜索“ pythonic”会发现各种各样的解释。在维基百科页面称: Python社区中最常见的新词是pythonic,它具有与程序样式相关的广泛含义。说代码是pythonic就是说它很好地使用了Python习惯用法,它是自然的,或者显示出流利的语言。同样,要说它是pythonic的接口或语言功能,就是说它与Python惯用语配合得很好,并且它的使用与语言的其余部分很好地结合在一起。 它还讨论了术语“ unpythonic”: 相反,非Python代码的标志是它试图用Python编写C ++(或Lisp,Perl或Java)代码-也就是说,提供的是粗略的转录,而不是来自另一种语言的惯用形式的翻译。pythonicity的概念与Python的极简主义的可读性哲学紧密相关,并且避免了“有多种方法可以做到这一点”。不可读的代码或无法理解的习惯用法是难以理解的。 术语“ pythonic”是什么意思?如何学习在实践中有效地应用它?

5
从类方法“返回自我”的目的?
我在一个开源项目中遇到了这样的事情。修改实例属性的方法返回对该实例的引用。这种构造的目的是什么? class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return self


4
Python宽恕与权限和鸭子输入
在Python中,我经常听到“乞求宽恕”(捕获异常)比“询问许可”(类型/条件检查)更好。关于在Python中强制鸭子输入,这是 try: x = foo.bar except AttributeError: pass else: do(x) 胜过或坏于 if hasattr(foo, "bar"): do(foo.bar) else: pass 在性能,可读性,“ pythonic”或其他重要因素方面?

7
为什么此函数O(n ^ 2)最坏的情况?
我正在尝试教自己如何为任意函数计算BigO表示法。我在教科书中找到了此功能。该书断言该函数为O(n 2)。它解释了为什么这样做,但是我一直在努力遵循。我想知道是否有人能够向我展示为什么会这样。从根本上讲,我知道它小于O(n 3),但我无法独立降落在O(n 2)上 假设给定了三个数字序列,A,B和C。我们将假定没有单个序列包含重复值,但是在两个或三个序列中可能存在一些数字。三向不相交问题是确定三个序列的交点是否为空,即是否不存在元素x使得x∈A,x∈B和x∈C。 顺便说一句,这对我来说不是一个作业问题,因为这艘船几年前已经航行过:),只是我想变得更聪明。 def disjoint(A, B, C): """Return True if there is no element common to all three lists.""" for a in A: for b in B: if a == b: # only check C if we found match from A and B for c in C: …
44 python  big-o 

7
非FP人员可以理解少量的函数式编程吗?[关闭]
案例:我在一家公司工作,用Python编写一个处理数组中大量数据的应用程序。我目前是该程序的唯一开发者,但将来(1-3年)可能会被其他一些程序员使用/修改/扩展,目前我还不知道。那时我可能不会在那里直接提供帮助,但是如果有时间的话,也许可以通过电子邮件提供一些支持。 因此,作为一个学习过函数式编程(Haskell)的开发人员,我倾向于解决例如以下过滤问题: filtered = filter(lambda item: included(item.time, dur), measures) 其余的代码是OO,这只是我想解决的一些小案例,因为根据我的说法,它更简单,更漂亮。 问题:今天可以编写这样的代码吗? 没有编写/学习FP的开发人员如何对这样的代码做出反应? 可读吗? 可以修改吗? 我是否应该写文件给孩子解释该行的用途? # Filter out the items from measures for which included(item.time, dur) != True 我问过我的老板,他只是说“ FP是黑魔法,但如果它有效并且是最有效的解决方案,那么可以使用它。” 你对此的看法如何?作为非FP程序员,您如何应对代码?代码是“ googable”的,这样您可以了解它的作用吗?我希望收到反馈。

12
C#开发是否与您使用的IDE有效分离?
我是一名学习C#的Python程序员,他正努力消除烦恼,只是喜欢C#,而不是不断将其与Python进行比较。 我有一个要点:堆栈定义问题的详细说明,缺乏对事物定义位置的明确说明。简而言之:在C#中,using foo不会告诉您提供了哪些名称foo,这类似于from foo import *Python中的一种形式-在Python编码文化中不鼓励使用隐式而不是更显式的形式from foo import bar。 对于C#程序员到此为止的Stack Overflow答案,我颇为震惊,这是在实践中,缺乏明确性并不重要,因为在您的IDE(大概是Visual Studio)中,您可以将鼠标悬停在名称上,并被告知名称来自的系统。例如: 现在,从理论上讲,我意识到这意味着当您使用文本编辑器进行查看时,您无法分辨出C#中的类型来自哪里……但是实际上,我认为这并不是问题。您实际上多久查看一次代码,却无法使用Visual Studio? 这是我的启示。许多Python程序员更喜欢使用文本编辑器进行编码,例如使用Sublime Text 2或vim之类的东西,这些都与代码有关,再加上命令行工具以及对文件夹和文件的直接访问和操作。依赖IDE来理解这种基本级别的代码的想法似乎令人反感。似乎C#文化在这一点上根本不同。而且我想知道我在学习C#时是否只需要接受并接受它。 这使我想到这里的问题:C#开发实际上与您使用的IDE密不可分吗?

13
Python对换行符的处理与JavaScript的自动分号有何不同?
Javascript具有一种称为“自动分号插入”的功能,基本上,如果解析器遇到无效的令牌,而该令牌之前的最后一个令牌是换行符,则解析器将在换行符所在的位置插入分号。这样一来,您基本上可以编写所有不带分号的javascript代码,但是您必须了解一些边缘情况,主要是如果您有return关键字,然后要在新行中返回的值。 function test(){ // This will return 'undefined', because return is a valid statement // and "john" is a valid statement on its own. return "john" } 由于存在这些陷阱,因此有数十篇文章的标题为“自动分号插入是邪恶的”,“始终在Javascript中使用分号”等。 但是在Python中,没有人曾经使用过分号,并且它具有完全相同的陷阱。 def test(): # This will return 'undefined', because return is a valid statement # and "john" is a valid statement on …

6
如果我的函数很复杂并且有很多变量,我应该创建一个类吗?
这个问题在某种程度上与语言无关,但并非完全与语言无关,因为面向对象编程(OOP)在Java中是不同的,而Java没有Python的一流功能。 换句话说,我对用Java之类的语言创建不必要的类感到内gui,但是我觉得在像Python这样少用的语言中可能会有更好的方法。 我的程序需要多次执行相对复杂的操作。该操作需要大量的“簿记”,必须创建和删除一些临时文件,等等。 这就是为什么它还需要调用许多其他“子操作”的原因-将所有内容放入一个巨大的方法中并不是很好,模块化,可读性强等。 现在这些是我想到的方法: 1.制作一个仅具有一个公共方法的类,并将子操作所需的内部状态保留在其实例变量中。 它看起来像这样: class Thing: def __init__(self, var1, var2): self.var1 = var1 self.var2 = var2 self.var3 = [] def the_public_method(self, param1, param2): self.var4 = param1 self.var5 = param2 self.var6 = param1 + param2 * self.var1 self.__suboperation1() self.__suboperation2() self.__suboperation3() def __suboperation1(self): # Do something with self.var1, self.var2, …

3
使用Python的“ PEP-302新导入挂钩”的经验[关闭]
我是Ruby(CRuby)的开发人员之一。我们正在开发Ruby 2.0版本(计划于2012年2月发布)。 Python具有“ PEP302:新导入挂钩”(2003年): 该PEP建议添加一组新的导入挂钩,以更好地自定义Python导入机制。与当前的导入钩子相反,可以将一种新型的钩子注入到现有方案中,从而可以对如何找到模块以及如何加载模块进行更精细的控制。 我们正在考虑将类似于PEP302的功能引入Ruby 2.0(CRuby 2.0)。我想提出一个可以说服Matz的建议。当前,CRuby只能以标准方式从文件系统加载脚本。 如果您对PEP 302有任何经验或考虑,请分享。 例: 这是一个很棒的规格。无需更改。 差不多不错,但是有这个问题... 如果我可以回到2003年,那么我会将规范更改为...

3
为什么Python没有列表的“扁平化”功能?
Erlang和Ruby都具有用于平坦化数组的功能。似乎是一种添加到语言的简单实用的工具。一个可以做到这一点: >>> mess = [[1, [2]], 3, [[[4, 5]], 6]] >>> mess.flatten() [1, 2, 3, 4, 5, 6] 甚至: >>> import itertools >>> mess = [[1, [2]], 3, [[[4, 5]], 6]] >>> list(itertools.flatten(mess)) [1, 2, 3, 4, 5, 6] 取而代之的是,在Python中,必须经历编写从头开始使数组变平的函数的麻烦。对我来说这似乎很愚蠢,将数组展平是一件很平常的事情。这就像必须编写一个自定义函数来连接两个数组。 我已经无能为力地搜索了Google,所以我在这里问。为什么有一个特定的原因,为什么像Python 3这样的成熟语言(附带十万种不同的电池)无法提供简化数组的简单方法?是否曾经讨论过并拒绝包含这种功能的想法?

14
在现实世界中如何使用Python?[关闭]
我正在寻找一份Python程序员的工作。我知道该语言的基础知识,并使用pygame使用它创建了一些游戏。我也开始尝试使用Django。 但是,从就业市场来看,似乎没有多少Python职位与网络相关。在桌面方面,似乎没有多少公司使用流行的GUI库,例如pyQt或wxPython。 公司实际如何使用Python?应该寻找哪些领域的Python程序员职位?
39 python 

5
学习Python的Java开发人员:我需要包扎哪些概念?
背景:我已经完成了一些教程并编写了一些小项目。使用Google和StackOverflow一切都很好。 在过去的几天里,我几次想知道“我想念什么?” -我觉得我在用Python编写代码时仍在思考Java。 StackOverflow上的这个问题充满了关于学习Python需学习哪些资源的提示,但我仍然觉得我是Java开发人员,有字典(无需双关语)可以翻译成Python。 我真正想做的是重构我的头脑,使其能够编写Pythonic Python而不是伪装成Python的Java,而又不会失去我的Java技能。 因此,我的问题的症结在于:Java开发人员真正需要学习什么概念才能思考Pythonic?这包括需要学习的所有内容。 注意:我是在询问语言概念,而不是语言语法。

3
在Python中,什么是“类方法”和“实例方法”?
聊天中已经讨论了一个问题(该问题本身与该问题无关),这表明我可能不知道Python。 在我看来,尽管术语在不同语言之间是不同的,但我们通常可以将功能归类为: [免费]功能 静态方法/静态成员函数 非静态方法/非静态成员函数 显然,在Python中,还有另一种不适用于上述类别的函数,一种是方法,但“不知道其类”。 在Python中,什么是“类方法”和“实例方法”?

3
REPL和交互式外壳之间的区别
新手问题。我仅通过阅读Wikipedia上的定义就无法分辨REPL和交互式外壳之间的区别。 Wiki指出REPL是一种特殊的交互式语言外壳。它是否是适当的子集?Wiki定义似乎将术语REPL限制为类似Lisp的语言,而声明的属性实际上并不包含任何区别功能。 特别是,将IPython称为REPL是否正确?

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.