Python简介、对比、解释器介绍

目录

一、python简介

二、凡事都要刨根究底么?

三、安装

四、Python解释器

* Python 代码是怎么执行的?

五、Hello wolrd


        Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

Guido van Rossum

为啥叫Python

很多人可能觉得Python书和图标中有很多爬行动物,就是命名由来,其实不是的,Python以英国喜剧组“Monty Python”命名,Monty Python 堪称喜剧届的披头士,龟叔是其粉丝。

 

一、python简介

相较于C、Java,Python语法有以下特点:

  1. 代码少:(人生苦短,我用python)

    完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。

    所以Python是一种相当高级的语言。

  2. 速度慢:运行速度慢,C程序运行1秒钟,Java程序可能需要2秒,而Python程序可能就需要10秒(是不是想退出了?别急,往下看)。

  3. 解释性:编译型语言如C、C++写的程序从源文件转换为一个你的计算机使用的语言(二进制代码),这个过程通过编译器和不同的标记、选项完成。当你运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并运行。而Python程序不需要编译成二进制代码,可以直接从源代码运行程序。计算机内部python解释器会把你的代码转换成字节码的中间形式,然后把它翻译成计算机使用的机器语言并与运行。

  4. 面向对象:相比C++、Java, python的面向对象是非常简单而强大的方式实现。

  5. 丰富的库:python丰富的库可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、等等。

 

用Python可以做什么?

  • 可以做日常任务,比如自动备份你的MP3。
  • 可以做网站,很多著名的网站包括YouTube就是Python写的。
  • 可以做网络游戏的后台,许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。总之就是能干很多很多事啦。
  • 操作系统管理、服务器运维的自动化脚本。
  • 科学计算:NumPy、SciPy、Matplotlib等可以编写科学计算。
  • 爬虫。

Python当然也有不能干的事情

  • 比如写操作系统,这个只能用C语言写;
  • 写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);
  • 写3D游戏,最好用C或C++。

        C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。

 

二、凡事都要刨根究底么?

NO !  商业模式,效率为重

       当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。

        Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。

        除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

缺点:

1.运行速度慢:

        和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

  • 但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。0.1s  vs 0.001s  用户体验差别不大。

2.不能加密

 

三、安装

        Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。

       要开始学习Python编程,首先就得把Python安装到你的电脑里。安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境。

  • 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。

 

四、Python解释器

        当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

        虽然大多数时候python都被作为一门编程语言来介绍,但是从目前的实现来讲,python也是一个名为解释器的软件包。解释器是一种让其他程序运行起来的程序,是代码与机器的计算机硬件之间的软件逻辑层。

       由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

 

CPython(使用最广泛

        当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行Python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

 

IPython

        IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

 

PyPy:注重速度

        PyPy:一个现成的CPython替代品,它能更快地运行大多数程序(尝试使用Python代码来实现Python PVM的项目),它的目标是执行速度。PyPy采用JIT技术(即时编译器,可在安全环境中运行不信任代码的“沙箱”模型),对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

        绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

缺点:Pypy无法支持官方的CPython API,导致无法使用例如Numpy,Scipy等重要的第三方库。这也是现在Pypy没有被广泛使用的原因吧。

 

Jython

        Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行,要比Cpython 慢而且也不够健壮,往往被看作一个主要面向寻找Java代码前端脚本语言的JAVA开发者的工具。

 

IronPython

        IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

 

* Python 代码是怎么执行的?

当python运行脚本的时候,代码开始处理前,会编译成所谓的‘字节码’,编译是一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式,概括的说:python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度(比起源代码,字节码运行速度快的多),字节码会保存为以.pyc为扩展名的文件(.pyc就是编译后的.py源码),python这样保存字节码也是一种启动速度的优化,下次运行未更改的源码时,可以跳过编译直接加载.pyc文件。

关于pyc: Python3.2之前,生成的pyc在同一目录下,Python3.2之后存储在__pycache__文件夹中。另外pyc(字节码)只针对被导入文件生成,如a.py  中 import b.py  才会生成 b.pyc

 

Python 虚拟机(PVM)

一旦程序编译成字节码(or 从.pyc中载入字节码),之后将其转发到所谓的‘Python虚拟机’中来执行。PVM不是独立的程序,不需要安装。事实上PVM就是迭代运行字节码指令的大循环,一个接一个的完成操作。PVM是python运行引擎,它平时表现为Python系统的一部分,从技术上讲,它是所谓Python 解释器的最后一步。

字节码的编译是自动完成的,PVM也仅仅是安装在机器上的Python的一部分,程序员只需编写代码并运行包含语句的文件。

关于性能(为啥不快)

Python字节码专属于Python的表现形式,不是二进制代码。这也是Python代码无法像C、 C++一样快的原因,PVM(而不是CPU)仍然需要解释字节码 ,  并且字节码指令与CPU指令相比需要更多的工作。

另一方面,这里仍有内部的编译步骤:Python并不需要反复的重分析,重分解每一行语句。实际效果就是纯Python代码运行速度介于传统的编译语言和解释性语言之间。

 

五、Hello wolrd

所有语言的学习首先是Hello world  , 下面就是Python的Hello world:

# -*- coding:utf-8 -*-
# 上面一行不是注释,是python2对编码的说明,python2为ascii编码,写这个是为了对中文的支持
print('Hello world, 你好')

变量及类型:

  • 所谓变量,可以理解为袋子,如果需要存储多个数据,最简单的方式是多个变量,当然也可以用一个。
  • 程序是用来处理数据的,变量就是用来存储数据的。

 

那么变量应该占用多大空间?保存什么样的数据?

在程序中,为了充分利用内存空间以及更有效率的内存管理,变量是有不同类型的。

常见类型:

  • 数字(又分为int, long, float, complex(复数))
  • 布尔型 :(True or False)
  • 字符串:String
  • 列表:List
  • 元组:Tuple
  • 字典:Dictionary

Python中,只要定义一个变量,并且它有数据,那么它的类型就已经确定了。

  • 可以用type(变量名)查看变量类型。
>>> a = 5
>>> type(a)
<type 'int'>

 

变量命名:

  • 小驼峰(lower camel case): 第一个单词字母小写,第二个单词首字母大写, 如:myName, aDog。
  • 大驼峰(upper camel case): 每个单词首字母都采用大写。 FirstName, LastName。
  • 流行的另一种用法:用下划线'_'来连接所有单词, 比如send_buf。

说了这么多,下面看一个简单的分数评级demo:

score = input('please input your score:')

# python 通过缩进实现逻辑嵌套,无需花括号,语句结束也不需要 ‘;’
if score >100 or socre < 0: 
   print('----error num -----')
elif socre >= 90 and score <=100:
   print('------A------')
elif score>= 80 and score < 90:
   print('------B------')
elif score>= 70 and socre < 80:
   print('------C------')
elif score>=0 and score < 60:
   print('------D------')

上面的例子就是python的 if 循环,elif 就是else if,下面写一个求生代码:

i = 0
while i<10000000:
      print('老婆, 我错了!')
      i += 1

下面是 for 循环例子:

name = 'hello'
for x in name:
    print(x)
    if x == 'l':
       break
else:
    print('==for 循环中,如果没有break则执行===')

运行结果:
h
e
l

关于break 和 continue:

  • break 结束整个循环。
  • continue 结束本次循环,紧接着执行下一次循环。
  • break,continue只能用在循环中,除此之外不能单独使用。
  • break,continue在嵌套循环中,只对最近一层循环起作用。

综合 python while 循环的 demo:

i = 1
while i <= 5:
    print('*'*i)
    if i == 5:
        i -= 1
        while i >=1:
            print('*'*i)
            i -= 1
        break
    i += 1

运行结果:

*
**
***
****
*****
****
***
**
*

本篇简单介绍了Python的由来及特性,和一些简单demo。

 

 

更多:Python 目录

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值