随着 AI 的发展,凭借易学易用的语法、丰富的库和框架,Python/ target=_blank class=infotextkey>Python 在机器学习、深度学习、自然语言处理和数据科学等领域有着广泛的应用 。然而,对于初学者而言,对于 Python 的很多特性以及使用上依然还存在着巨大的争论 。本文作者 Naren Yellavula 从中挑选了 5 个最为常见的论点,希望能通过实例演示,帮助解答刚入门的程序员们的困惑 。
原文:https://medium.com/dev-bits/does-python-really-sucks-e380711ec3e9
翻译工具 | ChatGPT 责编 | 苏宓
出品 | CSDN(ID:CSDNnews)
以下为译文:
各位开发者,大家好 。今天我想提出一个新话题,用一种轻松的方式解决大家对 Python 编程语言经常提出的几个问题 。最近我看到一些关于 Python 编程语言的负面看法 , 例如:“为什么 Python 无论是对儿童还是成年人来说,都是一门糟糕的入门编程语言?”等等 。这种现象经常出现在使用其他编程语言的开发人员中 。
我经常听到外界对 Python 的五个抱怨是:
- 缩进规则很可怕
- 没有强类型
- 速度慢
- 不适用于大型代码库
- import 系统不可预测
介绍
Leetcoder 建议使用 Python,因为 Python 使他们能够比 JAVA 或 Go 更快地编写代码 。同样 , 研究人员和科学家选择 Python 作为他们创建现代机器学习包(例如 sci-kit、pandas)的主要语言 , 因为它简单易懂 。如果你查阅 Python 的哲学“Python 之禅”(https://peps.python.org/pep-0020/) , 你可以清楚地看到其中的一个原则:
Simple is better than complex(简单胜于复杂)
但是 , 简单有时很容易会被误解为“无能”或“玩具般”的特性 。正因为其简单性,Python 没有 Java 面向对象的细微差别,也没有 Erlang 或 C++ 所拥有的小众市场 。这并不意味着 Python 无法表达强大的想法 。与这种想法相反,Python 允许人们既与计算机交流,又与程序员交流 。
最终结果是,人工智能领域的大多数研究论文都在用 Python 实现其算法 。
Python 的语言设计受到简单选择的强烈影响 。这意味着在需要做决策时,Python 更愿意选择简单的命名、轻量级的包等 。
现在让我们看看行业内有关 Python 的一些抱怨以及如何通过提出一些具体的原因来澄清这些谬论 。
缩进 Python 代码很可怕
如果你从其他编程语言(如 C、C++、C# 或 Java)转向 Python,首先遇到的困难就是代码缩进和缺少花括号{} 。
为什么 Python 代码需要四个空格或一个制表符 TAB 来将一组语句放入一个逻辑块中?为什么他们不能像其他语言一样使用花括号{}来定义函数或逻辑条件?
这是很多新手在使用 Python 时首先关注到的事情 。当他们在缩进方面犯错并尝试运行 Python 程序时,他们可能会收到解释器错误 。让我们通过比较一个简单的 C 程序和它的 Python 对应程序,来可视化这一现象,这个程序用于查找整数数组中的最大元素 。
1#include<stdio.h>
2
3intfind_max(intarr[], intsize){
4intmax = arr[0];
5for(inti = 1; i < size; i++) {
6if(arr[i] > max) {
7max = arr[i];
8}
9}
10returnmax;
11}
12
13intmain{
14intarr[] = {5, 10, 3, 8, 15};
15intsize = sizeof(arr) / sizeof(arr[0]);
16intmax = find_max(arr, size);
17printf("Maximum element in the list: %dn", max);
18return0;
19}
正如你在这里所看到的 , 我们定义了一个名为`find_max`的函数,用于找到整数数组中的最大整数 。第 3-11 行定义了这个函数 。第 6-8 行定义了一个 if 条件 。因为这是 C 语言,你需要用花括号{}来标识给定块的范围 。这一开始听起来是合理的,但你也可以注意到 , 尽管有 C 编译器的自然边界,第 4-10 行的缩进是为了可读性 。可读性?对,就是这个 。C 代码需要为编译器和人类提供提示 , 因此它同时使用花括号和基于空格的缩进 。
现在,让我们看看 Python 对应的程序 。
1def find_max(arr):
2max= arr[0]
3fornum inarr:
4ifnum > max:
5max= num
推荐阅读
- 白鹿也拯救不了《宁安如梦》?热度爆了,但观众弃剧理由很一致
- 谢霆锋王菲张柏芝:三人感情终于尘埃落定!如今真的两不相欠了?
- 长期放在冰箱里的食物,还能吃吗?
- 铁树开花结果能吃吗,巴西木开花冒出粘液很甜能吃
- 黑松露的功效真的很好吗,黑松露薯片136元真有黑松露吗
- 没想到懒得服美役,真的能省下很多钱!
- 金莎坚持婚前分床睡,坦言爸爸看不上孙丞潇!男方妈妈反应很现实
- 如何降低网络延迟 来看看,家里玩吃鸡网络延迟很高怎么办
- 梁朝伟社恐发作,遭网友吐槽,真的离不开刘嘉玲啊
- 吃鲍鱼主要吃头还是足,鲍鱼怎么做才能在吃的时候口感很软香