python介绍、安装及相关语法、python运维、编译与解释

1.python介绍 

  Python英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型高级编程通用型编程语言,由吉多、范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的lisp。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。其本身拥有一个巨大而广泛的标准库。

2.python特点

  优点

    简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

    易学:Python极其容易上手,因为Python有极其简单的说明文档 [7]  。
    速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。 [4] 
    免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
    高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
    可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。
    解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
    面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
    可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
    可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
    丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
    规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
    缺点
   单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
    独特的语法:这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。
    运行速度慢:这里是指与C和C++相比。
3.windows下安装python相关环境
    python官网:https://www.python.org/
    进入官网,下载对应版本的python。下载好后,双击运行。

两种选择,第一种系统选择;第二种自动,将勾选添加环境变量,就后续不用继续添加。next。

然后选择install安装。安装完成后先不要关闭,点击disable……同意是。

    安装集成开发环境PyCharm

PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……

PyCharm下载地址https://www.jetbrains.com/pycharm/download/#section=windows

选择社区版,进行下载。下载好后,直接运行安装。

选择相应的安装目录,next

 

finish。双击运行。在Complete Installation处选择Do not import settings,ok。至此安装完成。

4.linux下开发环境搭建

    上传并解压对应版本安装包:tar xvf Python-3.7.3.tar.xz

    安装python3

    yum install gcc gcc-c++ make zlib* -y

    yum install libffi-devel -y

    cd 进入解压后的Python所在的目录中

    ./configure --prefix=/usr/bin/local/python3

    make && make install

    配置执行文件路径

    cd /usr/bin

    mv /usr/bin/python /usr/bin/pythonbak

     ln -fs /usr/local/python3/bin/python3 /usr/bin/python3

     修改yum配置

     vim  /usr/bin/yum,在第一行后面的python后加上2

     vim /usr/libexec/urlgrabber-ext-down,同上

5.虚拟环境搭建

     什么是python虚拟环境?

    通俗的来讲,虚拟环境就是从电脑独立开辟出来的环境,相当于一个副本或备份,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器。

   为什么要用虚拟环境?

     在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如以下场景:

   场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要来回的卸载安装了,这样很容易就给你的项目带来莫名的错误;

   场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,想想就应该知道,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。

       windows下安装

   运行cmd,输入pip install virtualenv。如果版本环境出现问题,尝试输入python -m pip install --upgrade pip。出现successful,表示成功。

   新建虚拟环境

   virtualenv scrapytest (没有报错,显示done成功,然后在c盘对应的文件下查看是否创建成功)

   virtualenv -p C:……(此处为安装python的位置,包含其启动执行文件) scrapytest(此为刚创建的虚拟环境的名字)

   运行为:cd 进入到之前创建的虚拟环境的目录下activate.bat,结束为deactivate.bat

       linux安装

   yum install python-virtualenv

   virtualenv py2

   virtualenv -p /usr/local/bin/python3 py3

   cd 进入创建的py2

   source activate

   deactivate

 6.基本语法

    控制语句
   if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
     for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
   while语句,当条件为真时,循环运行语句块。
   try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
   class语句,用于定义类型
   def语句,用于定义函数和类型的方法。
   pass语句,表示此行为空,不运行任何操作。
   assert语句,用于程序调试阶段时测试运行条件是否满足。
   with语句,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
   yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
   raise语句,制造一个错误。
   import语句,导入一个模块或包。
   from import语句,从包导入模块或从模块导入某个对象。
   import as语句,将导入的对象赋值给一个变量。
   in语句,判断一个对象是否在一个字符串/列表/元组里。
   表达式
   主要的算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取余。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。
     模块 
   概念
   python中的模块是什么?简而言之,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块可以被项目中的其他模块、一些脚本甚至是交互式的解析器所使用,它可以被其他程序引用,从而使用该模块里的函数等功能,使用Python中的标准库也是采用这种方法。
   分类

在Python中模块分为以下几种:

   系统内置模块,例如:sys、time、json模块等等;

   自定义模块,自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。注意:自定义模块的命名一定不能和系统内置的模块重名了,否则将不能再导入系统的内置模块了。例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;

   第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

   执行过程

   Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。基于C的Python编译出的字节码文件,通常是.pyc格式。除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。

   编译与解释的关系

   首先,我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

   编译型语言   写的程序执行之前,需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言,把源高级程序编译成为机器语言文件。以后就可以直接运行而不需要编译了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。

   解释型语言  写的程序不需要编译。解释型语言在运行的时候才翻译,比如VB语言,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。

   编译型与解释型,两者各有利弊 。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

 

  

 

posted @ 2019-07-15 22:01  wind1234567  阅读(686)  评论(0编辑  收藏  举报