Python 由 Guido van Rossum 在 1990 年代初期创建,多年来越来越受欢迎。2016 年,Python 是继 Java、C 和 C++ 之后的第四大流行语言。Python 是一种通用编程语言,可用于各种领域。引用树屋的肯尼斯·洛夫的话——
当我需要构建一个 Web 应用程序时,我会使用 Python。当我需要在我的系统上自动化一些小任务时,我会使用 Python。当我想在图像中找到最常见的颜色时,我会使用 Python。
Python 是编写用于测试和监控的脚本的流行选择。Python 也被用于游戏开发,它与其他语言集成的能力使其在这个过程中非常有价值。Python 如此受欢迎,乔治·卢卡斯 (George Lucas) 的工业光魔 (Industrial Light and Magic )(负责原《星球大战》三部曲中的特效)也使用它来管理其复杂的生产过程。
与 PHP 不同,它不是为 Web 构建的,也没有集成到 Python 中的核心 Web 功能。因此,我们必须使用 Web 框架在 Python 中开发 Web 应用程序。自从 Django 等流行框架兴起以来,Web 开发人员就开始将它用于 Web。
是什么让 Python 成为如今越来越多的开发人员在 Web 开发方面的首选语言?我们将尝试在这篇文章中找到这个问题的答案。
为什么要使用 Python?
适合初学者的 Python
Python 流行的主要原因是代码的优雅——尤其是简洁和可读性。例如,让我们看看 Python 和 Java 在反转数字方面是如何相互叠加的:
在 Java(左)和 Python 2.7.x(右)中反转数字的程序
Python 提供了较短的学习曲线,非常适合初学者学习。除此之外,如果您的项目是基于 Python 的并且新开发人员不熟悉它,那么过渡会更容易。
正如Quora 联合创始人 Adam D'Angelo在选择 Python 进行 Quora 开发时所说的那样——
到目前为止,我们对这个选择非常满意……过去使用其他语言的所有早期员工都乐于过渡到 Python,尤其是那些来自 PHP 的员工。
事实上,网络漫画xkcd制作了一幅漫画,讲述了用 Python 完成工作是多么容易!
此外,Python 具有易于使用的调试工具。尽管有多种调试器和 IDE 工具,但默认的是pdb,这是一种交互式调试工具,允许开发人员在中途停止程序的执行并评估环境以更好地了解运行时错误。
远程服务器上的 Python
在 Python 中管理包(或称为模块)也非常容易。使用 pip 或 easy_install 之类的包安装程序,它可用于安装和删除包。
Python 也非常便携!将开发环境转移到远程机器上的便利性是值得称赞的。您只需要导出这些包,然后使用两个命令将其安装在远程机器上的虚拟环境中。
Python 成为 Web 应用程序的好选择的另一个原因是能够运行未嵌入到 Web 服务器的脚本(与运行 PHP 脚本不同)。脚本作为单独的进程运行。
使用 Python Web 框架进行 Web 开发
Python 的 Web 功能并未内置于其核心特性中,因此,我们需要借助模块来启用 Python 中的 Web 开发。如果你想开发非常基本的应用程序——比如检查服务器是否在运行的页面——你可以使用cgi 模块。
随着需求的增加,人们需要迁移到像Django或Flask这样的 Python 框架,以便能够开发基于 Web 的复杂应用程序。
出于生产目的,这些框架中的大多数都需要与Apache之类的 Web 服务器相结合,而这是存在小瓶颈的地方。与 PHP 相比,如果您是第一次在远程 Web 服务器上进行部署(尽管我们也已经介绍过),那么在远程 Web 服务器上部署的简单性会有些困难。但是,您投入的时间肯定会在以后获得回报。
Instagram、Reddit、Quora和Disqus等流行服务都是使用 Python 开发的。
Django — 最流行的 Python Web 框架
一个问题自然产生:为什么要使用 Python 进行 Web 开发?我的回答是首先停止认为它只是使用“Python”进行 Web 开发。像 Django 和 Flask 这样的框架使 Python 中的 Web 开发功能如此丰富和强大。例如,与任何其他 Web 框架相比,以下是 Django 做得非常好的一些事情:
- 易学曲线。就像 Python 一样,Django 很容易学习。你只需要在 Django 的网站上阅读这个分步教程,它很好地解释了 Django 的基本特性。另一方面,学习 Ruby on Rails 之类的东西可能需要更长的时间。
- 自动创建 SQL 表。一旦您指定了结构,Django 就会为您执行此操作。(注意:SQLAlchemy 也是这样做的,如果你感兴趣的话,Hacker News 上有关于这个的激烈辩论。)
- 生成表格。在 Django 中创建 Form 类并将其链接到模型后,Django 中的表单生成器会负责呈现表单、数据验证和保存数据。
- 管理界面。就像 SQL 表一样,一旦你决定了结构,Django 就会创建一个管理界面,允许你管理数据库。(这就像 Django 中内置的 PhpMyAdmin。)
- 姜戈壳。Django 项目环境中的 Python shell 是 Django shell 提供的。这个特性在调试时很有用,在 PHP 中是比较难的。
如果这些还不够,那么 Python 正在进行前沿开发。Python 中两个令人兴奋的服务是Tornado(用于异步任务)和Celery(用于作业调度)。如果它们满足您的需求,您可能想查看它们。
Django 虚拟主机
开始使用 Django 的最大障碍是网络主机的可用性。显然,由于 PHP 的流行,主机数量较多,主机相对便宜(但不一定物有所值,因为便宜的主机通常是共享的)。然而,像 AWS 和 Heroku 这样的主机允许你免费托管你的 Django 应用程序(在一定的限制内)。对于价格实惠的共享主机,您可以选择像WebFaction这样的主机。
当今最流行的云托管服务,如AWS、Digital Ocean和Microsoft Azure,提供对服务器的 root 访问权限,允许您手动设置环境。Digital Ocean,其实已经想出了一键式 Django 部署。Django 主机可能不像 PHP 主机那样受欢迎,但可以使用不同定价水平的可靠选项。
最后的想法
这篇文章的目的不是告诉你 Python 是所有问题的解决方案!它是为了突出 Python 及其 Web 框架的参数,使 Web 开发人员的生活更轻松。如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!微信公众号【Python大本营】等你来玩奥~
您以前尝试过 Python 及其 Web 框架吗?请在下面的评论中告诉我们。