• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python语言是不是有设计缺陷?

python 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论
文章目录[隐藏]

看python写的源码,很多不知道类型到底是什么,亦不知道该调用什么方法,常用方法的返回值也不知道是什么类型,中文处理相当不好,乱码十分严重,为什么还有人推荐?

回复内容:

python3不是加function annotation了吗,用function annotation或isinstance方法,IDE都能找到可用的方法,实在不行还有REPL呢这个问题下面的答案戾气好重… 不敢说话了…
只好祭出别人的文章, 大家不要喷我了, 我看不懂链接内的文字, 也不知道他在说啥… 我贴这个链接并不表示我赞同或反对这个链接里面的任何观点. 个人瑾保持独立乐观开放的心态对待python.
Python is ugly
Wit.io对于问题本身,不知道类型是什么。

治标的方法是用 JetBrains PyCharm,有类型推导(注意要加类型标注)。

治本的方法是改用强类型静态类型的语言。比如我现在沉迷的 Rust 语言。

另外 Python 正考虑引入类型检查(mypy)[Python-ideas] Proposal: Use mypy syntax for function annotations。本身 Python 3 就支持类型注释。

<code class="language-python"><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">foo</span><span class="p">:</span> <span class="n">Foo</span><span class="p">)</span> <span class="o">-></span> <span class="n">Bar</span><span class="p">:</span>    <span class="n">Bar</span><span class="p">(</span><span class="n">foo</span><span class="p">)</span></code>

看到python缺陷笑了,还是来谈谈JavaScript吧,这门语言十(ni)分(ma)灵(keng)活(duo)Python 作为动态类型的语言,使用的时“鸭子类型”的概念,即如果一个生物走起来像鸭子,叫起来像鸭子,他就是鸭子。对于Python编程来说,解释器不管你这个对象是什么类型,只管这个对象有没有对应的方法和属性。所以你希望他是什么类型,你就调用什么方法就行了,如果类型错误解释器会告诉你,你所调用的方法不存在。而可以使用”dir(obj)”这样的命令查看这个对象有什么方法和属性,当然也可以通过”type(obj)”来查看这个对象当前的类型。关于中文乱码,题主用的是Windows吧,Python默认编码是Unicode,*nix系统一般都是兼容的,而Windows用的是万恶的gbk编码, 如果需要统一文字编码,建议使用下面的程序转换编码:

<code class="language-python"><span class="c"># 尝试将字符串转成utf-8的,如果失败转为gbk的</span><span class="k">try</span><span class="p">:</span>    <span class="n">doc</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">)</span><span class="k">except</span> <span class="ne">UnicodeEncodeError</span><span class="p">:</span>    <span class="n">doc</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'gbk'</span><span class="p">,</span> <span class="s">'ignore'</span><span class="p">)</span></code>

Python确实有垃圾的地方,可是你问题描述里列的这些都不是:

看python写的源码,很多不知道类型到底是什么,亦不知道该调用什么方法,常用方法的返回值也不知道是什么类型,中文处理相当垃圾,乱码十分严重,浪费时间,为什么还有人推荐?竟然这么多评论的,吓尿了。

其实这东西都是仁者见仁智者见智的,争来争去没什么意思,都是个人品味的东西,如果是bug早就被修复了。

大家可以去看 @徐酿泉的答案,从另一个角度来看这些问题。

顺便给大家安利一下,rust大法好,类型系统保平安。

==================================

LZ你喷python都喷不到点子上啊。

1. python号称是面向对象语言。

那让我们来看看list类:list.append(), list.count(), 嗯看起来很不错的样子。….. 但是,等一下! len(list) 什么鬼! consistence被狗吃了么。。 以为自己是STL的Algorithm库????

2. 命名风格不忍直视。

getstatusoutput ← 这是什么东西。。???

3. 闭包。

诶,python有lambda表达式诶,那有没有闭包呢? 让我们来试一下

<code class="language-python"><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>    <span class="k">return</span> <span class="k">lambda</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="n">g</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="k">print</span> <span class="p">(</span><span class="n">g</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span></code>

scala大法好题主这种症状,动态语言赶紧灭退保,去写Java或者C#吧前面你说的类型的问题,动态类型的语言都是这样,题主只学过C/C++/Java?
中文乱码这个可以试试Python3.x

ps:我猜题主学了erlang来4源gaodaimacom搞#代%码*网/haskell之后会说连循环都没有,什么垃圾语言


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python语言是不是有设计缺陷?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址