Qui*_*Par 20 c# python programming-languages
对于那些喜欢在C#编程很长一段时间并计划学习新语言的人,我发现Python社区比其他许多人更紧密.
个人动态打字让我失望,但我对Python社区围绕它的方式感到着迷.还有很多其他的东西,我希望我会错过Python(LINQ,表达式树等)
开发人员喜欢的Python有哪些好处?比C#更令我兴奋的东西.
Bry*_*ore 18
对我来说,它的灵活性和优雅,但我希望可以从其他语言中提取一些东西(更好的线程,更强大的表达).
在典型的情况下,我可以在python中编写一些代码,并且比许多其他语言中的相同数量的行做得更多.此外,在python代码形式中,最重要的是语法使其自身具有高度可读性和干净的代码.那当然有助于维护.
我喜欢有一个命令行解释器,我可以快速原型化算法,而不必启动新的项目,代码,编译,测试,重复.更不用说我可以使用它来帮助我自动化我的服务器维护(我作为我的公司的SA加倍).
最后想到的是大量的库.有很多东西已经解决了,内置的库有很多东西可以提供,第三方的很多次很好(但并不总是如此).
Vit*_*aly 11
我主要是.NET开发人员,并为我个人项目使用Python.
开发人员喜欢python有什么好处?
我可以自己说 - Python就像一股清新的空气.
1)学习简单,晚上花了一个星期的时间.我说的是Python + Django.Python语法非常简单.
2)使用简单.在Windows上安装Python + Django没有麻烦.
3)它可以在Windows和UNIX上运行.
4)我需要它用于网络,所以我得到比ASP.NET更便宜的托管.
5)Python语言优于C#的所有优点.像元组一样 - 非常有用!
我唯一不喜欢的是我最喜欢的IDE Visual Studio不支持它(我知道IronPython,你不用担心).
Rob*_*ney 11
我是C#和Python的重要用户; 我用这两种语言构建了非常复杂的应用程序,并且我还在我的主要C#应用程序中嵌入了Python脚本.我现在并没有使用任何一种方式来做网络工作,但除此之外,我觉得我很有资格回答这个问题.
关于Python的事情让我很兴奋,特别是:
将生成器深入集成到语言中.这是让我意识到我需要长时间认真研究Python的第一件事.自从我熟悉了这个itertools看起来像是一套漂亮的工具但实际上是一种新的生活方式的模块以来,我对此的理解已经大大加深了.
动态类型的耦合以及一切都是对象的事实使得非常复杂的技术实现起来非常简单.用Python中的表替换逻辑是非常容易的(例如,o = class_map[k]()代替if k='foo': o = Foo()),它变成了一种基本技术.在Python中编写将方法作为参数的方法是很正常的,当你看到它时你不会引起人们的注意d = defaultdict(list).
zip,以及为此设计的方法.在你能够直观地掌握什么dict(zip(k, v))和d.update(zip(k, v))正在做什么之前需要一段时间,但是当你到达那里时,这是一个范式转换的时刻.只需使用一个函数,就可以消除整个无趣且可能错误的代码.然后你开始设计函数和类,期望它们将被一起使用zip,突然你的代码变得更简单,更容易.(Protip:或itertools.izip.或itertools.izip_longest.)
说到词典,它们深深融入语言的方式.理解一行代码self.__dict__.update(**kwargs)所做的是另一个范式转换时刻.
列举理解和生成器表达,当然.
廉价的例外.
交互式解释器.
功能装饰器.
IronPython,使用起来比我们有任何期望的要简单得多.
而这甚至没有进入标准模块中的非凡功能,或者像BeautifulSoup或SQL Alchemy或Pylons这样的第三方工具的荒谬恩惠.
我从深入Python中获得的最直接的好处之一就是它大大改进了我的C#代码.我通常可以理解其中包含变量类型的代码Dictionary<string, Action<Foo>>,但编写它似乎并不自然.(我用静态辞典更换频繁得多今天比我一年以前硬编码的逻辑.)我没有难以理解LINQ现在正在做的,不然怎么IEnumerable<T>和return yield工作.
那么我不喜欢Python呢?
动态类型确实限制了静态代码分析的功能.不仅没有像Resharper for Python这样的工具,在一种语言中,它可以写getattr(x, y)()在那里真的不可能.
它有一堆不雅的惯例.我多么希望能够及时回过头来尝试与GVR讨论lambda表达式应该用这个词引入的想法lambda- 它非常诅咒像lambda表达式这样基本的东西在C#中应该比它们更简洁在Python中.领先和尾随的双下划线惯例是可怕的,人们默默地默认这一事实证明了陀思妥耶夫斯基的观察,即人是可以适应任何事物的动物.并且不要让我开始这样一个事实,即一个名为的模块StringIO被允许出门.
使Python在多个平台上运行的一些功能也让人感到莫名其妙.它易于使用 import,但实际上并不容易理解它到底在做什么.(它在哪里?做__init__.py什么?等等)
令人惊讶的丰富的标准模块库非常丰富,很难知道其中的内容.编写函数通常比查找标准库中是否有某些东西做同样的事情更容易 - 我在看着你,itertools.chain.
Pat*_*t O 10
你的问题有点像水管工,问为什么木匠总是在谈论锤子.毕竟水管工没有锤子,从来没有错过它.Python(甚至是IronPython)和C#针对不同类型的开发人员和不同类型的程序.我对Python非常熟悉,并且可以自由地专注于业务规则,而不会被语言的语法要求分散注意力.另一方面,我已经在C#中编写了一些相当实用的代码,如果我在Python中执行相同的任务,我会非常担心缺少类型安全性.这并不是说Python是一种"玩具"语言.您可以(并且人们)用Python编写完整的中型或大型应用程序.你有动态打字的自由,但你也有责任保持一切(框架帮助).类似地,您可以在C#中编写一个小应用程序,但是您将带来一些您不太可能需要的开销.
因此,如果问题是钉子使用锤子,如果问题是螺丝使用螺丝刀.换句话说,花一些时间来学习Python,了解它的强度(文本处理,快速编码循环,简单干净的代码等)然后当你正在寻找解决一个新问题时,问你是否会在Python或C#.有一点是肯定的.只要C#是您所知道的唯一编程语言,它就是您唯一使用的编程语言.
帕特奥