Python基本情况

Python(发音:/ˈpaɪθən/ )是一种强大的编程语言,它简单易学,提供众多高级的数据结构,让我们可以面向对象进行编程。Python 的语法优雅,由于是一个解释性语言,更贴近人类自然语言,符合人类惯常的认识逻辑。

Python 跨平台,它能够运行在所有的常见操作系统上。它在近期热门的大数据、科学研究、机器学习、人工智能等领域大显身手,同时 Python 几乎在所有领域都有所应用,对于学习它来说十分划算。

历史

Python 由 吉多·范罗苏姆(荷兰语:Guido van Rossum,1956年1月31日-) 创造,第一版发布于1991年。对于为何有 Python 这个项目,1996年吉多·范罗苏姆曾写到:

六年前,在1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间。我的办公室会关门,但我有一台家用电脑,而且没有太多其它东西。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是 ABC 语言的后代,对 UNIX / C 程序员会有吸引力。作为一个略微有些无关想法的人,和一个蒙提·派森的飞行马戏团的狂热爱好者,我选择了Python作为项目的标题。

《蒙提·派森的飞行马戏团》(英语:Monty Python's Flying Circus),是 BBC 播出的英国六人喜剧团体电视喜剧系列,所以,Python 虽然原意是蟒蛇,但作为一门开发语言的命名,并不是作者对蟒蛇的喜爱,因此大家并不需要恐惧。

Python 2.0 于 2000 年 10 月 16 日发布。Python 3.0 于 2008 年 12 月 3 日发布,此版不完全兼容之前的 Python 源代码,目前正式版已经发布到 3.10.x, 已经不再维护 2.0 ,因此作为初学者(包括已经在学习的)建议至少多 3.8 版本开始学习,之后的版本功能差异不会太大。

与其他语言对比

语言对比

开发语言非常多,我们为什么学 Python 呢?正如之前介绍的那样,它简单、优雅、明确、代码量少等特点,同时还是一个通用性的语言,这就意味差我们可以用它来做任何事情(基本上是这样的)。

注意

这里说的一些语言特性不理解没有关系,形成大致印象,并且坚信 Python 能行,不要听其他人对 Python 的各种指责,相信 Python 是最适合自己的,同时也相信作者,一定不会骗你。

当然它也有一些缺点,不过这些缺点,是可以弥补的,对我们普通人,非工业级的使用不会造成影响。下边列出一些和其他语言的对比;

语言类型运行速度代码量应用范围
C编译为机器码非常快非常多业务底层
Java编译为字节码较广
Python解析执行通用
R解析执行统计分析

优缺点

针对优点:

  • 代码量少:这是简洁、优雅、明确、众多三方库带来的效果,可以让我们在处理同一个需求时相较其他语言撰写更少的代码量,大大节省了我们的时间,提高了效率;
  • 应用范围广:可以做数据处理、机器学习、AI、图形视频处理、游戏、软件、网站等等,一种技能解决更多的问题,不用为了解决某个需要去专门学习对应的语言。

针对缺点:

  • :只有在大规模工业化的使用时才突显,对于我们日常使用差别很小,同时也可以用提高硬件配置的方案对冲,因为硬件的成本对于我们的时间来说时间更为宝贵。同时,目前也有一些解决方案来处理这方面的问题;
  • 开源:这个其实是一个优点,开源可以带去分享,让我们有更多的学习资源,网络上 Python 的资料往往是比其他语言更多的。至于之前卖给别人软件担心别人看到源代码的顾虑,现在已经越来越没有必要,大多软件服务都是提供 Saas 服务、云服务的形式,将软件部署在自己的服务器上,给客户开一个账号就可以了。

能做什么

Python 的应用范围非常广泛,几乎所有领域它都能起到作用,这里列举一些典型的和常见的应用方向。YouTube、Google、Yahoo!、NASA 都在内部大量地使用 Python。

提示

下文会说到「库」、「框架」、「包」等词汇,就是别人造好的轮子,你直接用就行,当然用之前还得看看它的说明书怎么用。正是众多的覆盖所有领域的框架,让我们使用 Python 可以简单高效,不用关注技术细节。

Web 开发

简单说就是网络站点,包括 PC 站点、移动站点(m 站)、APP 小程序的数据接口,一些流行的 Python 框架可以让我们省时又省力,如 Django、Flask、Tornado 等。像国内的「知乎」、「豆瓣」等就是使用 Python 的知名网站。本网站「盖若」就是用 Python 开发的。

网络爬虫

爬虫模拟用户登录网站,拿下我们需要的数据,只要你能看到的信息它都可以给你批量、定时、快速地拿下来并整理好。还可以帮你进行注册登录、提交数据。Python 自带的 urllib 库,第三方的 requests、 Scrappy 都是做这个事的高手。

计算与数据分析

研究人员需要对数据进行分析处理,NumPy,SciPy,Matplotlib 等三方库可以进行科学计算。数据处理是我们工作学习中的日常,各种 Excel 都可以方便地用 Python 进行处理,除了高效还能实现批量和自动化,不用再每天做用户的工作,提供包括可视化之内的一揽子解决方案的 Pandas 越来越受欢迎,成为 Python 培训公司的吸金课程。数据可视化有 Matplotlib、ploty、seaborn,国内的 pyecharts,是基于百度开发的 echarts,也越来越受欢迎。

界面(GUI)开发

Python 自带的 Tkinter 库可以支持 GUI 的开发,让用户通过图形界面进行交互。还可以选择 wxPython 或者 PyQt 等三方 GUI 库开发跨平台的桌面软件。通过 PyInstaller 将程序发布为独立的安装程序包,在 Windows、 MAC 让安装运行。

人工智能

机器学习、神经网络、深度学习等人工智能领域,近年来越来越离不开 Python, 它已经是这方面的主流的编程语言。Facebook 的神经网络框架 PyTorch 和 Google 的 TensorFlow 都采用了Python语言。Sci-kit Learn 也是一个非常强大的机器学习库。

游戏开发

Python 可以编写一些小游戏,当然在大型游戏中也扮演重要的角色,如很多大型游戏用 C++ 编写图形显示等高性能模块,用 Python 编辑一些逻辑模块。PyGame 库也可用于直接开发一些简单游戏,其他的还包括 Turtle、Pymumk、Arcade、Pyglet 以及 Cocos 2d等。知名游戏 Sid Meier's Civilization(文明)就是使用 Python 实现的。

图形图像

Python 可以处理图像,做视频渲染,众多工业级的大型软件都开放了 Python 接口,供使用者自己编辑处理程序。图形图像可以应用在医学影像分析、影视制作、人脸识别、无人驾驶等方面。相关的库包有 PIL、OpenCV、SimpleITK、Pydicom 等。

其他

Python 是 IT 行业运维人员、黑客的主要工作语言,云计算搭建、用 PyRo 工具包进行机器人控制编程已经有众多的业务实践。

版本选择

提示

如果是 0 基础,这块儿不用看了,听我的,直接安装 3.9, 具体的安装下节会详细说明。

如果时间倒回到五年前,我会给你详尽地说说为什么要选择 Python 3 , 可是当下 3.10 已经正式发布,版本的选择已经不是一个可以讨论的话题了,热门的三方库已经做好了 Python 3 的适配,等你来用。

当然,Python 3 也不是最新就好,但至少应该在 Python 3.6 及以上,我觉得 Python 3.9 是个不错的选择,再到 2022 年就推荐 3.10 了。因为新的版本发布,各个三方库总有一个兼容的开发周期。

学习方法

作为 0 基础过来人的我,在学习方法上我觉得其实是一个心理建设的过程。试想,一个人面对一个全新的领域,自己一无所知,同时还有些神秘,自然会手足无措。我们不要忘记学习目的,我们不是要就对考试,而是能够使用它,编辑它。以下是几点经验和建议:

要动手写

这和我们的目的一致,不管你看多少视频、多少书,听别人讲了多少内容,如果从不自己动手去写它,还是无法实践;

确定并坚定目标

想清楚学习动机是什么,想到达到什么样的目标,所有的学习都围绕着目标进行。比如,对于普通人,我们想解决日常重复性的数据表格处理、绘制出漂亮的可视化图形,那么掌握基础的语法后就马上直接学习 pandas 库,直接上手写。

不要过于系统学习

以往的学习是要了解来龙去脉,然后一步一步进阶,但作为一个实用型技术,太注重系统化往往会让我们止足不前,进展缓慢。系统化的训练应该在你掌握了基本技术的前提下进行。

不要太多关注理论

理论往往是枯燥的,就像我们的生活,它也是晦涩的,在没有计算机背景的情况下,对我们无疑是一种打击。我们要做的就是越过理论的屏障去关注它的使用应用层面。在你掌握一定技能后你发现,一些理论并不那么难懂。

先模仿再总结归纳

不管是前期还是后期的学习,先按照教程把代码敲下来,执行,让返回结果和其他人一样,这就已经是一个巨大的进步了。事实上,你如果是一个老手,面对一个新的库,也只能先模仿。Python 解决问题都有最佳实践,我们模仿的内容往往是我们以后经常用到的方法。在模仿的过程中自己发现规律,总结方法,一步一步前进!

掌握自己解决问题的能力

如果我们从母体成为婴儿一样,总要独立前行,遇到的问题千千万万,无法枚举,但其中解决问题的方法需要建立。Python 代码执行错误会有报错,将报错信息在搜索引擎中查询会得到很多答案,然后找到能够解决自己问题的答案,慢慢地就会对此非常敏感。

尽快进入到库的学习

以数据分析为例,原生 python 是不具备实战意义的数据分析能力,因为它没有类似 R 语言那样的基本向量数据结构。 但 Numpy 的数组实际上就是向量,能够首先对结构化数据的向量运算。所以 python 做数据分析的基础就是 Numpy 只有深度理解 ndarray 数组的原理、操作和数学运算才能从根本上理解 python 数据分析。同时,由于 Numpy 过于底层,在数据分析应用层就要学习 pandas,它也是基于 Numpy 的。

因此,在学习了基础的语法、函数等操作后,要尽快进入了应用库的学习。

最后强调,优先学新版本而不是旧版本、优先看官方文档而不是第三方教程、优先看英文文档而不是中文文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA编写Java编程代码提示插件

网址: aiXcoder idea软件中使用代码提示: aixcoder

uniapp使用@microsoft/signalr(报错“ReferenceError: require is not defined“)

后台老哥要用微软的signalr&#xff0c;总结了一些经验和问题 引入方法 1、npm npm i microsoft/signalr 2、下载他的js或者cdn <script src"https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/6.0.1/signalr.js"></script>在uniapp中&…

Python vs C#:首先学习哪种编程语言最好?

进入编码可能很困难。 最艰难的部分? 决定先学什么语言。 当谈到 Python 与 C# 时,可能很难知道在您的决定中要考虑哪些因素。 我们为您提供了有关这些全明星编程语言的所有信息。 什么是 C#? 自 2000 年作为 Microsoft Visual Studio 的一部分开发 C# 以来,它一直是开发人…

Vue前端框架11 组件事件与v-mode配合使用、组件数据传递(父传子)、插槽Slot、具名插槽、插槽中的数据传递(双向)

文章目录 一、组件事件与v-model配合使用二、组件数据传递&#xff08;子传父&#xff09;三、插槽Slots四、具名插槽五、插槽中的数据传递 一、组件事件与v-model配合使用 组件A的数据变化 组件B可以实时显示 <template><h3>Main</h3><p>搜索内容为…

Postman使用_Tests Script(断言测试)

断言测试可以在Collection、Folder和Request的 pre-request script 和 test script中编写&#xff0c;测试脚本可以检测请求响应的各个方面&#xff0c;包括正文、状态代码、头、cookie、响应时间等&#xff0c;只有测试符合自定义的要求后才能通过。 pm对象提供了测试相关功能…

常用的8位单片机+2.4g遥控芯片的“化学”反应

8位单片机通常是微控制器&#xff0c;它们具有相对简单的处理能力&#xff0c;但对于许多嵌入式系统和低复杂度应用而言&#xff0c;它们足够使用。这些芯片通常具有较低的功耗&#xff0c;价格相对实惠。 2.4GHz无线通信芯片&#xff0c;则具备强大的无线通信能力。它们可以实…

golang获取时区报错的问题

golang<1.20版本的time包 time.LoadLocation(timezone) 读取某些时区会报错&#xff0c;升级到1.20可以解决 顺便&#xff0c;某些开发把error直接置为_隐藏掉的习惯真的差评 func Test3(t *testing.T) {timezone : "America/Ciudad_Juarez"timezone "Euro…

van-button根据参数改变字体颜色,实现高度自定义

本来van-button没有属性去单独自定义字体颜色。通过研究&#xff0c;我发现可以通过:style来实现这一需求。 <van-button class"case-btn" :color"item.BtnBgColor":style"{ color : item.BtnColor }"click"jumpToUrl(item)" >…

datax同步clickhouse数据到hive

1.准备数据 1.1 clickhouse建表并插入数据 CREATE TABLE cell_towers_10 (radio Enum8( = 0, CDMA = 1,

windows 下docker安装宝塔镜像 宝塔docker获取镜像

1. docker 安装宝塔 打开链接&#xff1a;https://www.docker.com/get-started&#xff0c;找对应的版本下载docker&#xff0c;安装docker打开百度云盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1DGIjpKkNDAmy4roaKGLA_w 提取码&#xff1a;u8bi 2. 设置镜像 点…

java设计模式之观察者模式

. 基本概念 观察者&#xff08;Observer&#xff09;模式中包含两种对象&#xff0c;分别是目标对象和观察者对象。在目标对象和观察者对象间存在着一种一对多的对应关系&#xff0c;当这个目标对象的状态发生变化时&#xff0c;所有依赖于它的观察者对象都会得到通知并执行它…

网页结构基础

网页结构解析是指对网页进行分析和解析&#xff0c;提取出其中的各个组成部分&#xff0c;如标签、元素、属性等。通过网页结构解析&#xff0c;可以对网页进行进一步处理和操作。 HTML&#xff08;超文本标记语言&#xff09;&#xff1a;HTML用于定义网页的结构和内容。常见的…

1、MongoDb综述

1. MongoDb综述 1.1. 什么是Nosql NoSQL&#xff1a;Not Only SQL ,本质也是一种数据库的技术&#xff0c;相对于传统数据库技术&#xff0c;它不会遵循一些约束&#xff0c;比如&#xff1a;sql标准、ACID属性&#xff0c;表结构等。 Nosql优点 l 满足对数据库的高并发读写…

创建查询系统,提升工作效率

今天我要和大家分享一个非常实用的小技巧&#xff0c;能够让老师们在短短三分钟内创建一个非常方便的查询系统&#xff01;是的&#xff0c;通过使用易查分这个神奇的工具&#xff0c;你可以轻松满足各种查询需求&#xff01; 首先&#xff0c;老师们只需要注册一个易查分账号。…

使用两个队列模拟栈

整体思路如下图&#xff1a; 代码实现 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;/*** author: Arbicoral* Description: 使用2个队列模拟栈的 push() pop() top(), 自己实现打印 print()*/ public class QueueMoniStack2 {public stati…

uniapp 模糊搜索(小白必看)

实现模糊搜索很简单,按照下面的步骤: 1. 搜索栏 <view class"search-box"><uni-search-bar class"uni-mt-10" radius"100" placeholder"请输入移交信息" clearButton"auto" bgColor"#F8F8F8"cancelBut…

SpringMvc决战-【SpringMVC之自定义注解】

目录 一、前言 1.1.什么是注解 1.2.注解的用处 1.3.注解的原理 二.注解父类 1.注解包括那些 2.JDK基本注解 3. JDK元注解 4.自定义注解 5.如何使用自定义注解&#xff08;包括&#xff1a;注解标记【没有任何东西】&#xff0c;元数据注解&#xff09;&#xff1f; 三…

Linux下使用lookbusy加载cpu负载

Lookbusy 是一个用于在 Linux 系统上生成合成负载的简单应用程序。它可以在 CPU 上生成固定的、可预测的负载&#xff0c;保持选定数量的内存处于活动状态&#xff0c;并生成您需要的任意数量的磁盘流量。 官方地址&#xff1a;lookbusy -- a synthetic load generator 编译 …

Java面试八股文宝典:初识数据结构-数组

数组&#xff08;Array&#xff09; 数组是计算机编程中最基本的数据结构之一。它是一个有序的元素集合&#xff0c;每个元素都可以通过索引进行访问。本文将详细介绍数组的特性、用法和注意事项。 数组的基本特性 数组具有以下基本特性&#xff1a; 有序性&#xff1a; 数…

@ControllerAdvice和@RestControllerAdivice的区别

在使用Spring框架时&#xff0c;我们经常会遇到需要处理异常的情况。而ControllerAdvice和RestControllerAdvice就是两种处理异常的方式。虽然它们的名字看起来很相似&#xff0c;但实际上有一些区别。 ControllerAdvice是用来处理Controller层抛出的异常的。当Controller层抛…