Python

2020 Python 开发者调查结果

2020 Python 开发者调查结果

这是官方年度 Python 开发者调查的第四次迭代,由 Python Software Foundation 和 JetBrains 共同开展。2020 年 10 月,来自近 200 个国家/地区的超过 28,000 名 Python 开发者和爱好者参与了调查,以揭示该语言及其周围生态系统的现状。

查看 2017 年2018 年2019 年2021 年2022 年2023 年 Python 开发者调查的结果。

一般 Python 使用情况

Python 作为主要语言与作为次要语言

85%主要
15%次要

85% 的受访者使用 Python 作为主要编程语言。

Python 与其他语言的使用

> 100%
主要次要组合
2020 年
2019
42%/43%39%/40%36%/40%34%/37%27%/28%18%/19%10%/10% 9%/10% 8%/9% 8%/8% 6%/7% 4%/5%JavaScriptHTML/CSSBash/ShellSQLC/C++JavaC#PHPGoTypeScriptRRust
所有结果

JavaScript 是开发者最喜欢与 Python 搭配使用的语言。它们与 HTML/CSS、Bash/Shell 和 SQL 共同形成语言堆栈,每 5 名 Python 开发者中就有 2 名至少使用其中一门语言。

在使用 Python 作为次要语言的开发者中,JavaScript 和 C/C++ 是最常见的主要语言。

适用于 Web 和数据科学的语言

> 100%
数据科学
网络开发
43%/49%39%/46%37%/73%35%/62%34%/19%21%/16%17%/2%11%/9% 8%/13% 8%/19% 7%/13% 4%/2% 4%/6% 4%/4%11%/10% 8%/3%SQLBash/ShellJavaScriptHTML/CSSC/C++JavaRC#PHPTypeScriptGoVisual BasicRustKotlin其他

Web 开发是指回答“您最常使用 Python 做什么?”这一问题时选择“Web 开发”的人群;数据科学是指同一问题下选择“数据分析”或“机器学习”的人群。

在执行数据相关任务的 Python 开发者中,只有 8% 不使用任何额外语言,而只有 3% 的 Web 开发者仅使用 Python。不足为奇的是,75% 的 Web 开发者同时使用 Python 和 JavaScript。

使用 Python 的目的

我们在这一部分提出了一些问题,试图了解人们使用 Python 的目的、参与的开发类型,及其结合多种用途的方式。

您主要出于什么目的使用 Python?

54%用于工作和个人项目
26%用于个人、教育或编外项目
19%用于工作项目

您使用 Python 做什么?

> 100%
主要次要组合
2020 年
2019
55%/59%50%/51%40%/40%38%/39%36%/37%29%/31%27%/26%23%/25%19%/18%19%/21%13%/14% 9%/7% 8%/8% 7%/6% 5%/4% 7%/6%数据分析Web 开发机器学习DevOps/系统管理/编写自动化脚本Web 解析器/采集器/抓取工具编程软件测试/编写自动化测试教育目的软件原型设计桌面开发网络编程计算机图形游戏开发嵌入式开发移动开发多媒体应用程序开发其他

Python 用例的细微变化可以解释为受访者中学生所占比例较大 (此次调查为 13%,去年为 10%)。在教育领域有所增加,而受访者的其他类型 Python 活动均有所减少。

您参与以下活动的程度如何?

> 100%
主要活动
次要活动
爱好
62%23%15%49%27%24%48%34%18%45%39%17%43%26%32%43%47%10%41%45%14%41%27%33%40%39%21%39%30%31%39%28%33%35%30%34%35%28%37%28%38%34%26%16%57%68%12%20%Web 开发机器学习数据分析软件原型设计教育目的软件测试/编写自动化测试DevOps/系统管理/编写自动化脚本嵌入式开发网络编程桌面开发移动开发计算机图形多媒体应用程序开发Web 解析器/采集器/抓取工具编程游戏开发其他

您最常使用 Python 做什么?

主要次要组合
2020 年
2019
27%/28%17%/18%13%/13% 9%/9% 7%/6% 4%/4% 4%/3% 3%/3% 3%/4% 3%/3% 1%/1% 1%/1% 1%/1% 1%/1% 0%/0% 5%/5%Web 开发数据分析机器学习DevOps/系统管理/编写自动化脚本教育目的桌面开发Web 解析器/采集器/抓取工具编程网络编程软件原型设计软件测试/编写自动化测试计算机图形嵌入式开发游戏开发移动开发多媒体应用程序开发其他

您是否认为自己是数据科学家?

其他
63%32%5%

在参与数据分析和机器学习的 Python 开发者中,只有 32% 认为自己是数据科学家。

数据科学家使用 Anaconda 更新 Python 版本的可能性是其他 Python 用户的两倍多,而其他 Python 用户更喜欢 Python.org。

只有参与数据分析和机器学习的受访者回答了这个问题。

Python 版本

Python 3 与 Python 2

Python 2
Python 3
25%75%16%84%10%90%6%94%2017201820192020 年

Python 版本用例

> 100%
Python 3
Python 2
57%/34%51%/32%40%/30%40%/17%37%/18%30%/24%27%/19%25%/16%19%/16%19%/19%10%/22% 8%/8% 8%/13% 5%/12% 4%/7% 7%/6%数据分析Web 开发DevOps/系统管理/编写自动化脚本机器学习Web 解析器/采集器/抓取工具编程软件测试/编写自动化测试教育目的软件原型设计桌面开发网络编程计算机图形嵌入式开发游戏开发移动开发多媒体应用程序开发其他

Python 3 版本

3%Python 3.5 或更低版本
14%Python 3.6
28%Python 3.7
44%Python 3.8
12%Python 3.9

Python 安装和升级

> 100%
34%33%19%17%15% 6% 5% 3% 1% 1% 1% 3%12%Python.org开源项目提供的 Python(通过 apt-get、yum、homebrew 等)AnacondaDocker 容器pyenv从源代码构建有人为我管理 Python 更新通过云服务提供商自动升级ActivePythonPython 的 Intel 发行版pythonz其他我不更新

Windows 用户倾向于从 Python.org 安装 Python,而 Linux 和 macOS 用户通常使用操作系统提供的 Python、pyenv 或 Docker 容器。

Python 环境隔离

> 100%
54%32%22%18% 8% 5% 3%22%VirtualenvDockerCondaPipenvPoetryVagrant/虚拟机其他

IDE 和环境隔离工具之间存在着有趣的依赖关系:

  • 超过一半的 Jupyter Notebook 和 JupyterLab 用户选择 Conda。Conda 在其他编辑器用户中的份额仅有约 20%。
  • PyCharm Professional Edition 在 Virtualenv 和 Docker 用户中处于领先地位。
  • 在使用 Pipenv 的 Python 用户中,VS Code 和 PyCharm 的份额最大。
  • 在使用 Vagrant 和 Poetry 的 Python 用户中,Vim 处在领先地位。

Python 功能

热门 Python 功能

这些结果基于“您最喜欢 Python 语言中的哪 3 个功能?”这一问题的回答。

37%30%21%21%20%20%14% 9% 8% 7% 6% 5% 5% 5% 5% 4% 4% 3% 3% 2% 2%32%简单的语法、语法糖、易于学习易于读写代码、高级语言列表推导式、生成器多功能性、适用于任何问题的库动态类型、鸭子类型强大的标准库、内置数据结构、表达式、开箱即用*大型社区、库支持、清晰的文档、Python 增强建议书多范式快速原型设计大型数据科学生态系统简化字符串处理和格式设置列表和字典可移植性跨平台装饰器并发和并行(异步 I/O、多线程、多进程)解释型语言、无编译时间Python shell、解释器、IDE上下文管理器Lambda 函数导入系统其他 **

* 不包括标准库、内置数据结构和提取到单独集群中的表达式:

  • 列表推导式、生成器
  • 列表和字典
  • 装饰器
  • Asyncio、线程化、多进程
  • 上下文管理器
  • Lambda 函数

** <1% 的受访者指定的其他主题。

需要的 Python 功能

这些结果基于“您想将哪 3 种语言功能添加到 Python 中?”这一问题的回答。

21%20%15%12%11% 9% 7% 7% 6% 5% 5% 4% 4% 3% 2% 2% 2% 1% 1%56%静态类型、严格的类型提示性能改进改进并发和并行能力模式匹配、switch 语句官方 Python 编译器、JIT 编译器改进标准库*改进软件包管理、软件包安装程序标准化适用于移动端开发的库和框架改进对函数式编程、多行匿名函数的支持改进对 GUI 库的支持、改进 Tkinter常量变量、私有方法、改进数据类改进/移除 GIL采用其他语言的运算符:none 感知运算符、管道运算符等改进版本管理、向后兼容性改进导入管理、循环导入解析手动内存管理、指针函数/方法重载尾递归优化支持大括号/分号代替缩进其他 **

* 不包括提取到其他集群中的标准库的改进:

** <1% 的受访者指定的其他主题。

框架和库

Web 框架

> 100%
46%43%12% 4% 3% 3% 2% 2% 2% 1% 6%27%FlaskDjangoFastAPITornadoweb2pyBottlePyramidCherryPyFalconHug其他

FastAPI 在此次调查迭代中首次被引为选项,表现为 Python 第三流行的 Web 框架。

数据科学框架和库

> 100%
62%56%46%33%31%25%19%18%17%12% 4% 2% 1% 4%27%NumPyPandasMatplotlibSciPySciKit-LearnTensorFlowKerasSeabornPyTorchNLTKGensimTheanoMXNet其他

NumPy 用户比其他 Python 用户更有可能使用 Conda 隔离其 Python 环境。(32% 对 22%)

单元测试框架

> 100%
49%28%13% 7% 4% 4% 4% 1%37%pytestunittestmockToxdoctestnoseHypothesis其他

单元测试框架的使用与专业经验的年数有很好的相关性。年轻的 Python 开发者进行单元测试的可能性相对非常低。

另外,与 Web 开发者和 DevOps 相比,从事数据分析和机器学习的开发者更常使用单元测试框架。可以预见,最常使用单元测试框架的开发者是参与软件测试和编写自动化测试的开发者。

其他框架和库

> 100%
54%32%22%19%16%16%13%11%10% 5% 5% 4% 4% 8%18%RequestsPillowAsyncioTkinterScrapyPyQTaiohttpPygameSixKivywxPythonTwistedPyGTK其他

选择 AWS 的开发者中有 72% 使用 Requests 框架。

Tkinter 和 Pygame 的用户大多是经验不足一年的年轻专家。

ORM

> 100%
35%35%32%14% 5% 3% 1% 1% 1% 4%无数据库开发SQLAlchemyDjango ORM原始 SQLSQLObjectPeeweeTortoise ORMPonyORMDejavu其他

大多数使用 Flask 的 Python 用户更喜欢 SQLAlchemy,而 Django 用户使用的则是 Django ORM。是不是有点不可思议?

数据库

> 100%
45%39%38%19%18%11% 6% 3% 2% 2% 1% 1% 1% 1% 6%18%PostgreSQLSQLiteMySQLMongoDBRedisMS SQL ServerOracle DatabaseAmazon RedshiftNeo4jCassandraDB2HBaseCouchbaseh2其他

PostgreSQL 是 Python 开发者中最受欢迎的数据库,在 AWS 用户中更加普及,占比高达 65%。

大数据工具

> 100%
11% 9% 6% 5% 4% 2% 2% 1% 1% 1% 2%76%Apache SparkApache KafkaApache Hadoop/MapReduceDaskApache HiveApache BeamClickHouseApache FlinkApache TezApache Samza其他

大数据工具的大多数用户更喜欢 JupiterLab。对于 Apache Spark 和 Dask 用户来说尤其如此。第二名是 Jupyter Notebook,但 PyCharm Professional 是 Apache Kafka 用户最喜欢的选择。

技术和云

最热门云平台

> 100%
53%33%23%21%20%13% 5% 5% 4% 1% 8%AWSGoogle Cloud PlatformHerokuMicrosoft AzureDigitalOceanPythonAnywhereLinodeOpenStackOpenShiftRackspace其他

Heroku 和 PythonAnywhere 在具有 2 年以内专业经验的年轻专业人士中较受欢迎,而 AWS 和 DigitalOcean 则更受经验丰富的 Python 程序员欢迎。

您如何在云端(生产环境中)运行代码?

> 100%
2020 年
2019
47%/47%43%/46%27%/25%25%/24% 2%/2%11%/11%在容器内在虚拟机中在平台即服务上无服务器其他

在容器内运行代码仍然是最受欢迎的方法,而虚拟机的受欢迎程度有所下降,2020 年只有 43% 的用户使用虚拟机。在 2018 年,虚拟机的份额为 47%,是最受欢迎的选择。

您如何进行云开发?

> 100%
2020 年
2019
56%/56%40%/41%21%/22%18%/18%17%/17% 8%/9% 1%/1% 9%/8%使用 virtualenv 本地开发在 Docker 容器中在虚拟机中使用本地系统解释器在远程开发环境中直接在生产环境中其他

在使用 Docker 容器进行云开发的人群中,大多数为测试人员。

与其他类型的开发者相比,Web 开发者在远程开发环境和虚拟机中开发的可能性明显较低。他们更喜欢在本地使用 virtualenv 工作。

开发工具

操作系统

> 100%
Linux

68%

Linux

Windows

48%

Windows

macOS

29%

macOS

BSD

2%

BSD

1%

其他

Python 开发者经验越丰富,越有可能使用 Linux 和 macOS 作为开发环境,而选择 Windows 的可能性也就越小。

持续集成 (CI) 系统

> 100%
23%21%12% 7% 2% 2% 2% 1%10%46%Gitlab CIJenkins/HudsonTravis CICircleCITeamCityBambooAppVeyorCruiseControl其他

2020 年,Gitlab CI 在持续集成系统类别中超越了之前的领先者 - Jenkins/Hudson。

测试人员是使用持续集成系统最多的用户。几乎 80% 参与软件测试或编写自动化测试的开发者都使用 CI 系统。

配置管理工具

> 100%
17% 9% 4% 3% 2% 3%69%Ansible定制解决方案PuppetSaltChef其他

编辑器和 IDE

主要数据科学Web
33%29% 8% 4% 4% 3% 2% 2% 2% 2% 2% 1%PyCharmVS CodeVimSublime TextJupyter NotebookAtomEmacsSpyderIDLEJupyterLabIntelliJ IDEANotepad++
所有结果

为了确定最受欢迎的编辑器和 IDE,我们提出了一个单选问题“您为当前的 Python 开发使用的主要编辑器是什么?”。在 2019 年使用率不足 0.5% 的选项被合并在一起,归入“其他”选项。

PyCharm Community Edition 和 Professional Edition 的合计份额为 33%,与去年结果一致。VS Code 继续增长,比去年增加了 5% 的份额。与此同时,大多数文本编辑器,如 Vim 或 Sublime 文本,都失去了一些份额。

Jupyter Notebook、Jupiter Lab 和 Spyder 从数据科学领域中获得了更多用户。

从事数据工作的 VS Code 用户和 Web 开发者的比例大致相当。

PyCharm 用户中 Web 开发者的比例大约是从事数据处理的用户的两倍,在 PyCharm 专业版上的差异尤其明显。

适用于 Python 开发的工具和功能

> 100%
至少有时
从不或几乎从不
89%11%89%11%87%13%85%15%79%21%78%22%77%23%73%27%71%29%64%36%63%37%61%39%51%49%42%58%41%59%使用版本控制系统在编辑器中使用自动补全重构代码为项目使用 Python 虚拟环境使用代码 lint 分析为代码编写测试使用 SQL 数据库使用调试器使用可选的类型提示在远程机器上运行/调试或编辑代码使用问题跟踪器使用持续集成工具使用代码覆盖率使用 Python 分析器使用 NoSQL 数据库

这个问题列出的大部分操作都带有明显转变,转向更有经验的用户。开发者从事这一行业的时间越长,他们就越有可能使用列出的技术。然而,对于可选的类型提示和自动补全,这种关系并不成立。拥有 11 年以上经验的 Python 用户与编码了 3-5 年的 Python 用户相比,经常执行这些操作的可能性更小。

就业状况和工作

团队工作与独立工作

48%在团队中工作
48%独立完成自己的项目
4%担任外部顾问或培训师

参与项目

42%参与许多不同的项目
41%参与一个主项目和几个编外项目
17%只参与一个项目

团队规模

75%2-7 人
16%8-12 人
5%13-20 人
2%21-40 人
2%超过 40 人

就业状况

62%13% 7% 6% 6% 4% 1% 2%公司/组织全职员工学生在职学生自雇人士自由职业者公司/组织兼职员工退休其他

公司规模

7%13%18%24% 6%10%19% 3%只有我自己2-10 人11-50 人51-500 人501-1000 人1001-5000 人超过 5000 人不确定

公司行业

42% 7% 6% 5% 4% 4% 3% 2%信息技术/软件开发科学教育/培训会计/金融/保险医药/健康制造业银行/房地产/抵押贷款销售/分销/业务发展
所有结果

目标行业

45% 5% 4% 4% 3% 3% 3% 3%信息技术/软件开发会计/金融/保险销售/分销/业务发展银行/房地产/抵押贷款医药/健康制造业物流/交通商业/战略管理
所有结果

工作角色

> 100%
72%19%19%18% 9% 7% 7% 6% 6% 5% 5% 4%14%开发者/程序员架构师数据分析师团队主管技术支持系统分析师首席信息官/首席执行官/首席技术官产品经理QA 工程师数据库管理员业务分析师技术文档撰写人其他

Python 经验

24%22%28%15%10%不足 1 年1-2 年3-5 年6-10 年11 年以上

专业编码经验

34%19%19%12%16%不足 1 年1-2 年3-5 年6-10 年11 年以上

年龄段

10%40%31%12% 5% 2%18-20 岁21-29 岁30-39 岁40-49 岁50-59 岁60 岁或以上

您居住在哪个国家/地区?

所有不足 1% 的国家/地区都已合并到“其他”。

16%11% 7% 5% 5% 4% 4% 3% 3% 2% 2% 2% 2% 2% 1% 1% 1% 1% 1% 1% 1% 1%23%美国印度德国英国法国中国俄罗斯联邦巴西加拿大波兰荷兰西班牙意大利澳大利亚乌克兰以色列捷克共和国瑞典日本土耳其墨西哥瑞士其他

方法和原始数据

想进一步挖掘数据吗?下载匿名调查回复,看看您能学到什么!在 Twitter 上使用标签 #pythondevsurvey 提及 @jetbrains@ThePSF,分享您的发现和见解。

在剖析这些数据之前,请注意以下重要信息:

1

数据集仅包括来自 Python Software Foundation 官方渠道的回复。滤除重复和不可信的回复后,数据集含有超过 28,000 份回复。这些回复在 2020 年 10 月和 11 月收集自 python.orgPSF 博客PSF TwitterLinkedIn 帐户、官方 Python 邮件列表和 Python 相关 Reddit 看板的调查推广。为了防止调查偏向于任何特定的工具或技术,未使用任何与产品、服务或供应商相关的渠道收集回复。

2

数据均已匿名,不含个人信息或详细地理位置。此外,为了防止经逐字评论识别任何个别受访者身份,已删除所有开放式字段。

3

为了帮助您更好地理解调查的逻辑,我们将共享数据集、调查问题以及所有调查逻辑。我们对答案选项采用了不同的排序方式(字母排序、随机排序和直接排序),每个问题的答案顺序都经过特殊指定。

下载调查的原始数据

我们再次代表 Python Software Foundation 和 JetBrains 感谢每一位调查参与者。在您的帮助下,我们得以更准确地描绘出 Python 社区的全貌!

查看 2017 年2018 年2019 年2021 年2022 年2023 年 Python 开发者调查的结果。

感谢您的参与!

我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。

参加今后的调查:

我同意我的个人数据将为此目的进行处理。

如果您对此调查有任何疑问或对未来有任何建议,请通过 surveys@jetbrains.compsf@python.org 与我们联系。

© 2000-2021 JetBrains s.r.o. 保留所有权利。