Python Python基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Python基础相关的知识,希望对你有一定的参考价值。

一、编程语言简介

1、高级语言与低级语言

一般来讲高级语言和低级语言有一下特点:

高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好

低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差

       我们都知道CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码,但是为什么实现会有以上众多差异呢?下面以C语言为高级语言代表,汇编语言为低级语言代表来解释一下。

越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。也就是说你用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器(即编译器),从而人力得到了解放。因为机器就是用来为人类提供便利的,所以说高级语言的出现是计算机发展的必然结果。

      完成一项工作的工作量是不变的,机器做的 多了,人就做的就少了,同时人对程序的很多细节的控制性也减弱了。各种语言都是在这个平衡点附近纠结。从C/C++的注重机器运算效率的优化,到C#/JAVA注重开发效率的优化。人操作起来更加方便了,更高效了,代价就是,机器要处理的东西更多,运算效率被进一步压缩。但是这个压缩在许可范围内,那么这也是一种进步


2、编译性语言、解释性语言

       计算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。

    翻译的方式有两种,一个是编译,一个是解释

    两种方式只是翻译的时间不同。编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

    解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。


3、脚本语言

        脚本语言(Script languages,scripting programming languages,scripting languages)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。


4、动态语言和静态语言

静态语言

      是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C#等。

动态语言

      是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。例如:Python、Ruby、Perl等。


5、面向过程和面向对象

        面向过程(Proceduce Oriented)是一种面向过程的思维方式。当我们面临一个问题时,我们首先关注处理这个问题的流程(过程)。

      以指令为中心,由指令处理数据;如何组织代码解决问题

    比如,我们面临一个问题:“将大象装入冰箱”。最常用的思路就是直接关注过程,这样更加直接、更加有效,很快就可以完成问题。

解决方案如下:

    第一步、打开冰箱

    第二步、装入大象(大象如何抱起?本步骤可能面临非常多的细节问题)

    第三步、关上冰箱

       通过上述事例,在日常生活中面临很多问题,我们都是采用面向过程的思维方式来处理。日常问题一般都可以使用面向过程来处理。但是,如果面临复杂的问题,面向过程可能无能为力,这时候就需要使用面向对象的思维方式。

 

       面向对象(Object Oriented)就是以分类的方式进行思考和解决问题。面向对象的思维方式适合于处理复杂的问题。那么,什么叫做复杂的问题? 

       以数据为中心,所有的处理代码都围绕数据展开;如何设计数据结构组织数据,并提供对此类数据所允许的处理操作。

    复杂,往往指的就是“数量相当庞大”。在哲学上,我们有句话叫“量变引起质变”。当数量达到一定级别,就会出现复杂的管理问题。比如:我约一个人晚上吃饭,这个事情很简单,我只要关注整个过程就可以了。但是,如果我今天晚上约了3万人共进晚餐。这时候,首要的问题不是每个人吃饭的问题,而是这3万人怎么处理的问题?最直接的想法就是首先对着3万人进行分类处理。3万人可以分为:不吃饭的、喝粥的、吃素的、吃荤的、吃烧烤的等等。这样,我就可以让员工分类对各种情况进行合理的处理。

    这种简单的、朴素的分类思想,实质上就是面向对象的思维方式。依次我们发现,这种分类思想也是管理学的一个核心理念。


面向过程和面向对象的区别:

       面向过程适合处理简单的事情,直接关注流程,简单有效。

      面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。

面向过程和面向对象的联系:

       面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。

     面向对象如何离开了面向过程,就无法实现真正的落地,成为无源之水。

用最简短的话来解释“面向过程”和“面向对象”的区别该怎么说?

       面向过程是一件事“该怎么做“,面向对象是一件事“该让谁来做”,然后那个“谁”就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把事做好就行了。


二、Python简介

1、Python简介

         Python是一种面向对象、解释型计算机程序设计语言,

        由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

        Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。

        Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

        Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

  

2、Python使用场景

shell编程

      bash脚本更易于实现;自找麻烦,大材小用

编程(控制)语言:胶水语言

框架:使用框架完成特定应用程序开发,如web,Django开发


3、Python程序执行流程

技术分享

源码 --> 在PVM中编译字节码 -->在PVM(解释器,python虚拟机)中执行


4、Python的实现(解释器)

CPython

         原始、标准的实现方式

Jython

         用于与Java语言集成的实现

IronPython

         用于与.NET框架集成的实现


5、Python性能优化工具

Psyco

      Python语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定成都上提高程序的执行速度,尤其是在程序中有大量循环时。

      目前开发工作已经停止,由PyPy所接替

PyPy

      PyPy是Python实现的Python解释器,

      Python语言的动态编译器,是Psyco的猴急项目

      可以运行在linux的32位和64位,MacOSX和Windows 32位平台中

Shed Skin

       Python编译器,能够将Python代码转换成优化的C++代码,


三、python程序

1、编写、执行Python代码

交互式解释器

      直接启动python,其显示信息取决于程序版本及操作系统等


python程序文件

      交互式模式下的程序执行完成后难以再次运行

      将编写的程序保存至文件(.py)中方便多次运行

               python的此类包含了一些列预编写好的语句的程序文件称为模块

               能够直接运行的模块文件通常称作脚本(即程序的顶层文件)


2、pythoen源程序文件

       python源程序通常以.py为扩展名

例如,新建一个名为firstpycode.py的文件,内容如下:

#!/usr/bin/python
import platform
print platform.uname()

第一行为shebang,即执行脚本时通知内核要启动的解释器

第二行通过import导入一个python模块platform

第三行打印platform模块的uname方法的执行结果

给予此脚本执行权限,并执行即可


python程序可以分解成模块、语句,表达式和对象

        程序由模块构成

        模块包含语句

        语句包含表达式

        表达式建立并处理对象 

                表达式是”某事“,而语句是”做某事(即指令)“

                         例如:”3+4“是某事,而”print 3+4“则是做某事

                 语句的特性:他们改变了事物,

                          例如:赋值语句改变了变量,print语句改变了屏幕输出等


3、python IDE(集成开发环境)

IDLE:标准python环境提供

Eclipse和PyDev

PythonWin

Komodo

Wingware

PyCharm


python过程型程序设计快速入门,,

python支持面向过程也支持面向对象


四、Python的安装

1、使用新版本的Python

简单方法:

 1)编译安装新版本至某特定路径

           不要动系统默认版本的Python,很多程序都依赖于python

2)pyenv


python编译安装:

[[email protected] ~]# yum install readline-devel    #先安装这个依赖包,没有安装的化,在python里删除和方向都不方便使用

[[email protected] ~]# tar xf Python-2.7.6.tar.xz 
[[email protected] ~]#  cd Python-2.7.6
[[email protected] Python-2.7.6]# ./configure --prefix=/usr/local/python27
[[email protected] Python-2.7.6]# make && make install

安装ipython:

         ipython是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

[[email protected] ~]# tar xf ipython-1.2.1.tar.gz 
[[email protected] ~]# cd ipython-1.2.1
[[email protected] ipython-1.2.1]# ls
COPYING.txt  examples  PKG-INFO    scripts       setupegg.py  setup.py
docs         IPython   README.rst  setupbase.py  setupext

[[email protected] ipython-1.2.1]# /usr/local/python27/bin/python2.7 setup.py build
[[email protected] ipython-1.2.1]# /usr/local/python27/bin/python2.7 setup.py install

[[email protected] ~]# ls /usr/local/python27/bin/
2to3       ipcontroller  iptest   pycolor  python2           python2-config
idle       ipengine      ipython  pydoc    python2.7         python-config
ipcluster  iplogger      irunner  python   python2.7-config  smtpd.py
[[email protected] ~]# ln -sv /usr/local/python27/bin/python2.7 /usr/local/bin
[[email protected] ~]# ln -sv /usr/local/python27/bin/ipython /usr/local/bin/ipython


以上是关于Python Python基础的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

Python 向 Postman 请求代码片段

使用 Python 代码片段编写 LaTeX 文档

python [代码片段]一些有趣的代码#sort

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

Python 函数声明和调用