python入门知识,python需要掌握的知识

  python入门知识,python需要掌握的知识

  Python初学者应该了解的知识

  1. 前言

  欢迎来到“Python高级”专栏!每一个来这里的人应该都学习了很多Python的基础知识,并且正在努力成长。在这期间,我一定遇到了很多困惑,对自己未来的学习方向感到迷茫。我完全理解你面临的情况。我从2007年开始接触python这种编程语言。从2009年开始,我独自使用python处理所有的开发工作,直到今天。回顾自己的学习过程,遇到过无数的困难,也有过迷茫和困惑。本专栏的目的是帮助和我当年一样迷茫的Python初学者,走出困境,快速成长。希望我的经历能真正帮助到你。

  

2. 明确学习目标,不急于求成,不好高骛远

现在是一个喧嚣浮躁的时代。我们总是被生活中大量的热点所吸引,很少有时间和机会进行深度的阅读和思考。我一直认为学习需要静下心来慢慢学习,而且是长期的;同时,学习也不应该被赋予太多的功利色彩。一个Python程序员的成长路线图应该是这样的:基础语法——语感训练——项目实践——不同方向的继续学习——中级程序员——拓展深度和广度——高级程序员。

  但是,很多新手的学习路线图是这样的:学了基础语法之后,不知道http协议和Ajax异步请求,就抢着学爬虫;或者,学完基础语法,再去视觉识别,甚至看不懂OpenCV的数据结构;甚至,学完基础语法,直接去学神经网络,结果就是从头重复到放弃。

  我给新手的建议是,不要急于求成,不要好高骛远,循序渐进,稳扎稳打,成功自然会到来。不急于求成,可以少走弯路。它不但不会减缓你的成长,反而会节省你的时间。不要好高骛远,实现一个目标,再定下一个。通过不断的成功和进步,你可以建立自信,激发更强的学习兴趣。

  

3. 在开始学习 Python 之前,你需要做一些准备

现在总比没有好,

  尽管从来没有比现在更好。这是Python的禅宗里的一句话。翻译过来,就是说做可能比不做好,但是不做更好。的确,在开始学习Python之前,你需要了解一些背景,做一些选择,在电脑上做好准备。

  

2.1 Python 的各种发行版

Python是龟叔的独生子,但是他有很多堂兄弟姐妹,有好几个很有名的。如果你不确定哪个对你更友好,建议你选择Python——,这是你自己的。即使以后需要和其他表亲打交道,也是驾轻就熟。不建议新手选择AnacondaPython和ActivePython。在我看来,他们提供的便利还不如他们给用户带来的麻烦多。

  Cpython

  CPython属于Python参考实现方案,可以看作是所有其他Python衍生发行版的一组标准化版本。CPython是用C语言编写的,它的编写者包括很多Python语言最高决策层的核心人员。CPython在优化方面是最保守的。当然,这不是缺点,而是设计导向。Python的维护者希望让CPython成为Python最广泛兼容和标准化的实现方案。CPython最适合对Python标准的兼容性和一致性有较高要求的用户。此外,CPython也适合那些希望以最基本的方式使用Python,并愿意为之放弃一些便利的专业人士。

  Anaconda Python

  blockquote>Anaconda 源自 Anaconda 公司之手(原名为 Continuum Analytics),其设计目标在于服务那些需要由商业供应商提供支持且具备企业支持服务的 Python 开发者。Anaconda Python 的主要用例包括数学、统计学、工程、数据分析、机器学习以及其他相关应用。Anaconda 捆绑有 Python 商业与科学使用场景当中的各类常用库——包括 SciPy、NumPy 以及 Numba 等等,同时通过一套定制化软件包管理系统提供更多库访问能力。

  ActivePython

  

与Anaconda类似,ActivePython同样由营利性企业创建及维护——ActiveState公司。该公司还在销售多种语言运行时以及多语言Komodo IDE。ActivePython主要面向企业用户与数据科学家——即希望使用Python语言,但又不愿把大量精力浪费在Python的组装与管理方面。ActivePython使用Python中的常规pip软件包管理器,但同时亦以认证压缩包的形式提供数百套通用库,外加英特尔数学核心库等其他一些具有第三方依赖关系的公共库。

  

PyPy

  

PyPy 属于CPython解释器的替代品,其利用即时(JIT)编译以加速Python程序的执行。根据实际执行的任务情况,其性能提升可能非常显著。人们对于Python——特别是CPython的抱怨之声,主要围绕其速度表现展开。在默认情况下,Python的运行速度远不及C语言——差距甚至可能达到数百倍。PyPy JIT将Python代码编译为机器语言,从而带来平均7.7倍于CPython的运行速度。在某些特定任务中,其提速效果能够达到50倍。

  

Jython

  

JVM(Java虚拟机)能够作为除Java之外的多种语言的运行时选项。这份长的名单包括Groovy、Scala、Clojure、Kotlin、Python以及——没错,当然还有Jython 。Jython最大的弊端在于其仅支持Python的2.x版本。目前对Python 3.x版本的支持能力尚在开发当中,但仍需要相当一段时间。当下,还没有任何相关版本放出。

  

IronPython

  

类似于Jython的JVM上Python实现方案定位,IronPython属于一套立足.Net运行时——或者CLR(公共语言运行时)——的Python实现方案。IronPython利用CLR的DLR(动态语言运行时)以允许Python程序以等同于CPython的动态水平实现运行。与Jython类似,IronPython目前只支持Python 2.x版本。不过IronPython 3.x实现方案已经处于紧锣密鼓的开发当中。

  

2.2 安装 Python

从 Python 官网下载时,请注意选择正确的版本。如果是用于学习,下载最新版没有问题,如果是用于生产,则要考虑你开发需要的第三方模块是否支持最新版的 Python。安装时不要忘记勾选最下面的两个复选框,否则会给后续的模块安装带来一些麻烦。推荐使用默认方式安装。

  

2.3 选择一款趁手的开发工具

学习一种编程语言,首先要找一款合用的集成开发工具,似乎是自然而然的想法。为什么不呢?IDE可以自动补齐,可以一键运行,还可以断点调试。使用IDE开发项目,就像驾驶一辆内饰豪华的汽车,尽情享受驾驶的乐趣就好了,谁还去关心引擎盖里面发动机是如何工作的呢?我的年轻同事们也都是IDE的拥趸,最初使用pycharm,后来是时下大热的vscode。

  可是,我始终认为,编程就像是驾驶,程序员就是司机,而且是职业司机,不是把驾驶当成通勤技能的各色白领金领。既然是职业司机,就不能满足于打着领结、戴着白手套驾驶内饰豪华、配置高端的汽车,而是必须具备打开引擎盖子维修和保养的能力。

  基于这个观点,我不建议初学者一开始就使用集成开发工具——至少,在开始第一个星期不要使用IDE。对于python这样一种解释型的脚本语言,一款趁手的编辑器就足够了。linux平台上,vim或者emacs都足够好(如果你通晓二者或者其中之一的话,请接受我的敬意);windows平台上,我推荐使用notepad++。python初学者使用编辑器而非IDE的好处是:

  

  1. 专注于python本身,而不是被工具使用问题所困扰。君不见,知乎上关于pycharm和vscode的使用说明、常见问题的解决方案,多得几乎超过了讨论python本身
  2. 手工运行代码,可以更直观、更深刻地了解脚本的解释执行过程
  3. 手工调试代码,有助于代码优化,提高代码把控能力
  4. 可以更好地使用pip安装和管理第三方模块

3. 习惯使用IDLE,这是学习python最好的方式

解释型语言的优势,就是可以写一句执行一句,想到哪儿写到哪儿,不必像编译型语言那样得把程序全部写完,编译成功后才能运行。我特别喜欢使用python的IDLE,甚至拿它当计算器用。很多时候,我用IDLE验证代码的写法是否正确,查看模块是否安装成功以及版本号。IDLE支持tab键自动补齐,我经常用这个功能查看某个对象的方法和属性。

  

>>> import numpy as np>>> np.__version__'1.17.0'>>> np.hypot(3,4)5.0>>> def factorial(n): # 计算n的阶乘

   if n == 0: # 递归出口

   return 1

   return n*factorial(n-1) # 向递归出口方向靠近的自身调用>>> factorial(5)120>>> _*2-100140

小技巧

  

  1. tab键自动补齐
  2. 光标移动到执行过的语句上敲击回车,可以重复这个命令
  3. 下划线(_)可以获取最后一次执行结果
实际上,IDLE就是一个IDE,你可以用它来创建或打开.py脚本文件,可以编辑、运行和调试。

  

4. 严格遵从编码规范

Linux 平台上,一个 python 源码文件应该以下部分组成。Windows 平台上,可以省略第一项。

  解释器声明

  编码格式声明

  模块注释或文档字符串

  模块导入

  常量和全局变量声明

  顶级定义(函数或类定义)

  执行代码

  附上一个 demo,仅供参考。更详细的编码规范,请参考拙作《我的 Python 编码规范》。

  

#!/usr/bin/env python# -*- coding: utf-8 -*-"""通常这里是关于本文档的说明(docstring),须以半角的句号、 问号或惊叹号结尾!

  本行之前应当空一行,继续完成关于本文档的说明

  如果文档说明可以在一行内结束,结尾的三个双引号不需要换行;否则,就要像下面这样

  """import os, timeimport datetimeimport mathimport numpy as npimport xlrd, xlwt, xlutilsimport youth_mongodbimport youth_curl

  BASE_PATH = r"d:\YouthGit"LOG_FILE = u"运行日志.txt"class GameRoom(object):

   """对局室"""

   def __init__(self, name, limit=100, **kwds):

   """构造函数!

   name 对局室名字

   limit 人数上限

   kwds 参数字典

   """

   passdef craete_and_start():

   """创建并启动对局室"""

   passif __name__ == '__main__':

   # 开启游戏服务

   start()

5. 代码的运行、调试

如果你使用的集成开发工具,那么代码的运行和调试,就完全依赖于工具了。如果你使用编辑器开写代码,那就需要手工运行和调试代码。运行代码分成两步:

  第1步,打开一个命令行窗口,路径切换到脚本所在的文件夹。我习惯在脚本所在窗口的空白位置(确保没有选中任何对象),按下shift键点击鼠标右键,在弹出的菜单中选择打开Powershell窗口。如下图所示。

  第2步,输入python+空格+脚本文件名,回车即可运行。输入脚本文件名时,按tab可以自动补齐。脚本的运行信息、错误信息、运行结果等,都可以显示在这个窗口中。这是最原始的信息。你在其他开发工具中看到信息,都是对这些信息的再加工。

  当然,很多编辑器也支持自定义运行命令,可以实现一键运行python脚本。以Notdpan++为例,点击“运行”->“运行”菜单,在弹出的窗口中输入:

  

cmd /k cd /d “$(CURRENT_DIRECTORY)” & python “$(FULL_CURRENT_PATH)” & echo. & pause & exit
因为转义缘故,复制该命令的话,请检查$符号前面是否有\符号,如有,请删除。接下来,点击“保存”按钮,在弹出的窗口中输入新增命令的名称,比如PyRun,定义快捷键,最后点击“确定”按钮。

  完成以上设置后,就可以在Notepad++中使用菜单命令或者快捷键运行Python代码了。

  手工调试代码的手段不多,除了 print 信息,几乎只有把调试信息写成调试文件了。听起来,好像问题很严重,其实只是理念和取向不同而已。反过来想,手段单一,不恰好意味着简单、简明吗?十几年来,我一直使用 print 调试,坚信没有比它更好的了。

  

5. 模块管理

在python语言的发展过程中,安装和管理第三方模块的方法也历经变化。现在,我们终于等来了pip这个近乎完美的工具。pip除了安装(install)和删除(uninstall)这两大功能,还可以指定模块的安装版本(无需预先删除当前已安装版本),可以显示所有已安装的模块,还可以通过 upgrade 自主升级。

  很多同学在使用pip时会遇到各种各样稀奇古怪的问题,我在这里解释一下:

  

5.1 同时安装了py2/py3

同时安装了py2/py3,将会存在多个版本的pip.exe,你如果直接运行:

  

pip install <模块名>
则有可能因为pip.exe版本不对而出错。正确的做法是指定python版本,-m是python解释器的参数,意思是把pip模块做为脚本运行,完整命令如下:

  

py -3 -m pip install <模块名>

5.2 使用Anaconda,或者通过IDE来安装模块

如果你使用的是Anaconda Python,或者你是通过IDE来安装模块,则需要检查它们的配置和设置,情况各有不同,没有统一的解决方案。

  

5.3 仅安装了py2 或 py3

如果你的计算机只安装了py2 或者 py3,那么上面两种安装方法应该都没有问题。如果你的电脑找不到pip.exe文件,则可以使用这个命令生成:

  

python -m ensurepip

5.4 pip应用演示

下面,就以同时安装了py2/py3的计算机为例(如果只安装了py2或py3,需要将下面演示中的py -3替换成python),演示pip模块的用法。不管任何情况,我都建议使用-m参数调用pip模块,而不是直接使用 pip.exe 安装模块。

  

# 虽然可以这样使用pip安装模块(以numpy为例)PS D:\XufiveGit\wxgl> pip install numpy# 但我建议这样使用pipPS D:\XufiveGit\wxgl> py -3 -m pip install numpy# 删除模块PS D:\XufiveGit\wxgl> py -3 -m pip uninstall numpy# 安装模块,指定版本PS D:\XufiveGit\wxgl> py -3 -m pip install numpy=1.15.0# 自主升级PS D:\XufiveGit\wxgl> py -3 -m pip install --upgrade pip# 显示已安装的模块PS D:\XufiveGit\wxgl> py -3 -m pip list

  Package Version

  ----------------- -----------

  -pencv-python 4.1.1

  argh 0.26.2

  attrs 19.1.0

  Automat 0.7.0

  basemap 1.2.0

  beautifulsoup4 4.6.3

  bleach 3.1.0

  cefpython3 66.0... ...

pip也用来安装本地whl文件:

  

PS D:\PyPackage\py3> py -3 -m pip install .\basemap-1.2.0-cp37-cp37m-win_amd64.whl
感谢大家的阅读,希望大家收益多多。

  推荐教程:《python教程》以上就是Python初学者应该了解的知识的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: