python的创始人为吉多·范罗苏姆(Guido vanPython是平等门解释性语言。

1.Hello World程序

     
长期以来,编程界都发生一个圣神的庆典,现在自己吗协调加冕,那就是于屏幕及出示信息“hello
world!”程序,学习python的率先赖就是这般一行代码。

>>> print("hello world!")
hello world!

于编辑器中运行hello_world.py;

#!/bin/python

print("hello world!")

[root@localhost /]# python3 /dj/hello_world.py 
hello world!
  1. Python是同一宗解释型语言?

2.Python简介

  python的创始人为吉多·范罗苏姆(Guido van
Rossum)。1989年的圣诞节期间,吉多·范罗苏姆以当阿姆斯特丹打发时光,决心开发一个新的脚本解释程序,作为ABC语言的平等种植持续。
 

  Python可以动用被众天地,如:数据解析、组件集成、网络服务、图像处理、数值计算和科学计算等多领域。目前业内几乎拥有大中型互联网商家还当采取Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车的家、美团等。

眼下Python主要应用领域:

  • 云计算: 云计算最恼火的语言, 典型以OpenStack
  • WEB开发: 众多美好之WEB框架,众多特大型网站都为Python开发,Youtube,
    Dropbox, 豆瓣。。。, 典型WEB框架来Django
  • 不错运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought
    librarys,pandas
  • 系运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在经济工程领域,Python不但当用,且用底太多,而且根本日益提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析还生牛逼,生产效率远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

Python在有企业之采取: 

 

  • 谷歌:Google App Engine 、code.google.com 、Google earth
    、谷歌爬虫、Google广告等类还当大气用Python开发
  • CIA: 美国中情局网站就是是因此Python开发的
  • NASA: 美国宇航局(NASA)大量下Python进行数量解析及运算
  • YouTube:世界上太充分的视频网站YouTube就是用Python开发之
  • Dropbox:美国无与伦比老之在线云存储网站,全部所以Python实现,每天网站拍卖10亿只文本之上传和下载
  • Instagram:美国顶充分之图形分享社交网站,每天超过3千万摆相片被分享,全部之所以python开发
  • Facebook:大量的底子库均经过Python实现之
  • Redhat:
    世界上极其盛行的Linux发行本中之yum包管理工具就是用python开发的
  • 豆类: 公司几乎有的事务都是通过Python开发之
  • 知乎: 国内最为深的问答社区,通过Python开发(国外Quora)
  • 春雨医生:国内著名的在线医疗网站是故Python开发的
  • 除外上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝
    、土豆、新浪、果壳等店铺还当运Python完成各种各样的任务。 

Python与其它语言相较优势来什么?

C 和 Python、Java、C#等

    C语言: 代码编译得到 机器码
,机器码在处理器上一直执行,每一样条指令控制CPU工作

另语言: 代码编译得到 字节码
,虚拟机执行字节码并转移成机器码再后在计算机上实行

Python和C Python这宗语言是由C开发而来

  对于下:Python的类库齐全而用简单,如果如兑现均等的功效,Python
10行代码可以解决,C可能就用100尽还更多.
  对于速:Python的运行速度相较与C,绝逼是慢性了

Python 和 Java、C#等

  对于用:Linux原装Python,其他语言没有;以上几乎山头语言都起非常丰富的类库支持
  对于速:Python在进度直达可能稍显逊色

据此,Python和任何语言没有呀本质区别,其他区别在:擅长某领域、人才丰富、先抱为主。

 

Python的种类

  • Cpython
       
    Python的官版,使用C语言实现,使用最普遍,CPython实现会晤以自文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
  • Jyhton
       
    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后于JVM上运行。
  • IronPython
       
    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
  • PyPy(特殊)
        Python实现的Python,将Python的配节码字节码再编译成机器码。
  • RubyPython、Brython …

自身初学Python时,听到的有关Python的第一句话虽是,Python是千篇一律宗解释性语言,我就这么一直相信下去,直到发现了.pyc文件的存在。如果是解释型语言,那么生成的.pyc文件是呀吧?c应该是compiled的缩写才对啊!
为以防万一其他学习Python的食指吗叫立词话误解,那么我们即便在中和遭遇来正本清源下是题材,并且将部分基础概念让理清。

 3.认识python中之变量和简单的数据类型

     变量的命名规则:1.变量称为只能分包字母数字下划线,且未能够以数字开头;

                               
2.变量誉为受到未克包含空格,一般我们运用下划线来分隔其中的单词;

                               
3.耿耿于怀不可将python中的函数名和根本字用作变量称(python保留用于特殊用途的单词);

                                4.变量名应遵从简短而有描述性;

                                5.慎就此小写l与特别写O容易为误以为是1和0。

     变量的运用方法:

message = "hello python world!"
_age = 18
print(message)
print(_age)

    注:每个变量都存储一个值(与变量相关联的音信)。

   
字符串:字符串就是一模一样多样字符。在python中,用引号括起来的都是字符串,其中的引号可以是单引号也可是夹引号。

print("this is a string")
print('this is also a string')

    字符串的拼接:

    我们好以加号来

print('hello\t'+'world')

    在python中,我们得以下办法对数码实行操作。注释用井号标识。

print('\nhello world\r'.strip())#去除空白
print('hello world'.title())#首字母大写
print('hello world'.upper())#全部大写
print('hello world'.lower())#全部小写
  1. 解释型语言和编译型语言

4.每当python中数据类型十分主要,错误的数据类型可能致程序运行错误

    如下程序:

#coding=utf-8
age = 24
i = 1
while i <= 3:
    guss =  raw_input("you guss:") 
    if guss > age:
        print("so big")
    elif guss < age:
        print("so small")
    else:
        print("you are wright")
        break
    i = i+1
    if i == 4:
        ask = raw_input("are you ok?y/n")
        if ask == 'y':
            i = 1
        else:
            exit()
    continue
else:
     exit()

   
这是一个猜年龄的稍序,这里是一个问题,我们输入的guss实际上是一个字符串类型,我们将她同整型进行比较,这由逻辑上是张冠李戴的,python解释器从语法上判断是没错的,但是就确是一个逻辑错误。所以我们用针对guss类型进行纠正。

guss = int( raw_input("you guss:") )#将guss改为整型

电脑是未能够分辨高级语言的,所以当我们运行一个高等语言程序的下,就得一个“翻译机”来致力把高档语言转变成为计算机能念懂的机器语言的进程。这个历程分成两近似,第一种植是编译,第二种是解说。
编译型语言在程序执行之前,先会经过编译器对程序执行一个编译的经过,把程序转变成为机器语言。运行时即便无待翻译,而一直实施就可以了。最杰出的例证就是是c语言。
解释型语言就不曾是编译的历程,而是在程序运行的当儿,通过解释器对先后逐行作出说明,然后径直运行,最突出的例证是Ruby。
通过上述之例子,我们得以来总结一下解释型语言及编译型语言的利害,因为编译型语言在程序运行之前就已针对性程序做出了“翻译”,所以当运作时虽不见掉了“翻译”的进程,所以效率比较高。但是咱为无可知相提并论,一些解释型语言也得由此解释器的优化来当针对程序做出翻译时对全程序做出优化,从而以效率达跳编译型语言。
另外,随着Java等因虚拟机的语言的起来,我们同时不能够管语言纯粹地分成解释型和编译型这有限栽。
之所以Java来比喻,Java首先是通过编译器编译成字节码文件,然后在运转时通过解释器给说成机器文件。所以我们说Java是同栽先编译后说的语言。
再换成C#,C#第一是通过编译器将C#文件编译成IL文件,然后在通过CLR将IL文件编译成机器文件。所以我们说C#举凡同等帮派纯编译语言,但是C#凡平门户要二赖编译的言语。同理也可等学运用到基于.NET平台上的别样语言。

 5.pyc是什么

  Python是均等派解释型语言?

 

  我初学Python时,听到的关于Python的首先句子话就是是,Python是同一派别解释性语言,我就这么一直相信下去,直到发现了*.pyc文件的在。如果是解释型语言,那么生成的*.pyc文件是什么啊?c应该是compiled的缩写才对啊!

  为了以防其他学习Python的人也受立刻句话误解,那么我们不怕于平和被来正本清源下之题目,并且把有基础概念给理清。

  

   解释型语言和编译型语言 

  计算机是不能够辨识高级语言的,所以当我们运行一个高级语言程序的时段,就需要一个“翻译机”来从事把高档语言转变成计算机能诵懂的机器语言的经过。这个过程分成两近乎,第一种植是编译,第二种是说。

  编译型语言在程序执行之前,先会透过编译器对程序执行一个编译的长河,把程序转变成机器语言。运行时便不需要翻译,而直白实施就足以了。最特异的事例就是是C语言。

  解释型语言就是从不这编译的过程,而是在程序运行的时,通过解释器对程序逐行作出说明,然后径直运行,最登峰造极的事例是Ruby。

  通过以上之例证,我们好来总一下解释型语言和编译型语言的得失,因为编译型语言在程序运行之前便已经针对程序做出了“翻译”,所以在运转时就丢掉了“翻译”的历程,所以效率比较大。但是咱也不能够相提并论,一些解释型语言为得以经过解释器的优化来当针对程序做出翻译时对所有程序做出优化,从而以效率上超越编译型语言。

  此外,随着Java等根据虚拟机的言语的起,我们又无可知把语言纯粹地分成解释型和编译型这点儿种植。

  用Java来比喻,Java首先是经编译器编译成字节码文件,然后于运行时经过解释器给讲成机器文件。所以我们说Java是均等种植先编译后解释的语言。

 

   Python到底是呀 

  其实Python和Java/C#平等,也是同一帮派基于虚拟机的语言,我们事先来打表上粗略地询问一下Python程序的运作过程吧。

  当我们于指令执行吃输入python
hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你只要开工作了。可是在“解释”之前,其实执行之第一件工作和Java一样,是编译。

  熟悉Java的同班可以想转手我们于指令行中如何实施一个Java的次:

  javac hello.java

  java hello

 图片 1

 

  只是我们于于是Eclipse之类的IDE时,将即时简单总理为融合化了同一部而已。其实Python也一致,当我们实践python
hello.py时,他也同等实行了如此一个经过,所以我们相应这么来讲述Python,Python是均等山头先编译后解释的语言。

   简述Python的运行过程

  以说之问题之前,我们先来说两单概念,PyCodeObject和pyc文件。

  我们以硬盘上望底pyc自然不必多说,而事实上PyCodeObject则是Python编译器真正编译成的结果。我们先简单明了就可以了,继续朝下看。

  当python程序运行时,编译的结果虽是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则以PyCodeObject写回到pyc文件中。

  当python程序第二蹩脚运行时,首先程序会在硬盘中搜索pyc文件,如果找到,则直载入,否则就是再次上面的进程。

  所以我们应该如此来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的如出一辙种持久化保存方法。

   pyc文件在py2和py3的区别

  python 字节码文件
  python3 会创造一个__pycache__目录,存放
  python2 于本土转移一个pyc文件

  手动执行不克挺成pyc文件,只来该py文件为别py文件调用时,才见面变动而且实行前会比较py和pyc
文件之日子穿,如果不等同则再度编译。

  python的源码进行编译成pyc形式之字节码,然后这些字节码在python虚拟机中开展一个循环往复,其庐山真面目就是迭代整个pyc文件的字节码,所以python的虚拟机实际上做的便是python解释器的业务。

  注:这里要要先举行声明,python因为该本来面目也动态语言,这象征他煞是为难直接让编译成机器码。

  1. Python到底是啊

  附加:python安装

  1.安装包下载

  2.安装:默认安装路径:C:\python27

  3.部署环境变量:【右键计算机】``-``-``》【属性】``-``-``》【高级系统设置】``-``-``》【高级】``-``-``》【环境变量】``-``-``》【在第二个内容框中找到 变量名为Path 的一行,双击】 ``-``-``> 【Python安装目录追加到变值值中,用 ; 分割】

  如:原来的价;C:\python27,切记前面有分公司

其实Python和Java/C#无异于,也是同派系基于虚拟机的言语,我们事先来打表面上大概地问询一下Python程序的周转过程吧。
当我们当指令执行中输入python
hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要是从头工作了。可是以“解释”之前,其实执行之首先宗工作暨Java一样,是编译。
熟识Java的同室可以想转手我们当命令行中如何实行一个Java的次第:
javac hello.java
Java hello
只是我们当为此Eclipse之类的IDE时,将马上点儿管深受融合成为了相同管辖而已。其实Python也同等,当我们履行python
hello.py时,他吧一如既往实行了这般一个历程,所以我们应有这样来讲述Python,Python是一模一样流派先编译后说的言语。

  1. 简述Python的运作过程

当说这个问题之前,我们事先来说两只概念,PyCodeObject和pyc文件。
咱以硬盘上看的pyc自然不必多说,而实在PyCodeObject则是Python编译器真正编译成的结果。我们先简单明了就可以了,继续于下看。
当python程序运行时,编译的结果虽是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则用PyCodeObject写回到pyc文件被。
当python程序第二坏运行时,首先程序会于硬盘中找寻pyc文件,如果找到,则直载入,否则就是再次上面的经过。
据此我们应当如此来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的平等种持久化保存方法。

  1. 运作一截Python程序

俺们来描写一段落先后实际运行一下:

图片 2

先后本身毫无意义。我们继续羁押:

图片 3

唯独我们于次中并不曾观看pyc文件,仍然是test.py孤零零地呆在那!
那我们换一种写法,我们将print_str方法换到另外的一个python模块中:

图片 4

图片 5

接下来运行程序:

图片 6

其一时pyc文件出现了,其实认真想一下无为难获由,我们考虑一下实际的事情情况。

  1. pyc的目的是用

回顾本文的次段以说明编译型语言及解释型语言的得失时,我说编译型语言的长处在,我们可以在程序运行时不用解释,而直接使用已“翻译”过之文本。也就是说,我们因而要管py文件编译成pyc文件,最要命之优点在于我们在运转程序时,不需再次对拖欠模块进行再次的讲。
从而,我们要编译成pyc文件之应当是那些可以引用的模块,这叫我们以规划软件类时是一样的目的。所以Python的解释器认为:只有import进来的模块,才是待被圈定的模块。
以此时节或有人会说,不对啊!你的此问题远非受解释通啊,我之test.py不是吧需运行么,虽然非是一个模块,但是下我每次运行吧可以节省时间啊!
OK,我们从实际状况出发,思考下我们于啊时才可能运行python
xxx.py文件:
A. 执行测试时。
B. 被一个Web进程时。
C. 执行一个顺序脚本。
咱逐个来说,第一种植状况咱尽管绝不多说了,这个上就是有的文书都不曾pyc文件还是无所谓的。
次种状况,我们试想一个webpy的次序把,我们一般这样实践:

图片 7

抑或者:

图片 8

接下来是顺序就算仿佛于一个守护进程同直接监视在8181/9002端口,而使中断,只可能是次为杀死,或者其它的竟然状况,那么您用恢复如开的凡管方方面面的Web服务还开。那么既然一直监视在,把PyCodeObject一直在内存中就够了,完全没有必要持久化到硬盘上。
末了一个情形,执行一个顺序脚本,一个次的主入口其实很相近于Web程序中之Controller,也就是说,他承受的应有是Model之间的调度,而未分包其他的主逻辑在内,如自当http://www.cnblogs.com/kym/archive/2010/07/19/1780407.html未遭所涉嫌,Controller应该就是是一个Facade,无任何的底细逻辑,只是把参数转来改变去而已,那么一旦做算法的同班可以掌握,在平段落算法脚本中,最轻改之哪怕是算法的依次参数,那么是时段让持久化成pyc文件就难免有点画蛇添足了。
故此我们好如此敞亮Python解释器的来意,Python解释器只把咱可能用到的模块持久化成pyc文件。

  1. pyc的逾期时

说了了pyc文件,可能有人会想到,每次Python的解释器都拿模块于持久化成了pyc文件,那么当自己之模块出了转之下,是勿是还设手动地拿先的pyc文件remove掉吧?
当然Python的设计者是匪见面作这样白痴的失实的。而以此历程实际上就在于PyCodeObject是怎样勾勒入pyc文件被之。
我们来拘禁一下import过程的源码吧:

图片 9

就段代码比较长,我们唯有来拘禁自己标注了之代码,其实他以写入pyc文件的时刻,写了一个Long型变量,变量的情节则是文件的近年窜日期,同理,我们重新看下载入pyc的代码:

图片 10

图片 11

匪用仔细看代码,我们可很明白地见到原理,其实每次在载入之前还见面先检查一下py文件与pyc文件保留的终极修改日期,如果无均等则另行生成一卖pyc文件。

  1. 形容以末之

实际了解Python程序的尽过程对于多数程序员,包括Python程序员来说意义都是纤维的,那么真正发生含义的凡,我们得以打Python的解释器的做法上到什么,我道生如此的几接触:
A.
其实Python是否保存成pyc文件和我们在筹划缓存系统时常是同的,我们好仔细想,到底什么是值得扔在缓存里之,什么是勿值得扔在缓存里之。
B.
在跑一个耗时的Python脚本时,我们如何能微微压榨一些主次的运行时,就是拿模块于主模块分开。(虽然数就都未是瓶颈)
C.
在设计一个软件系统不时,重用和非重用的物是匪是吧该分别来对比,这是软件设计原则的严重性片段。
D.
在计划缓存系统(或者其它系统)时,我们怎样来避免程序的晚点,其实Python的解释器也为我们提供了一个专门大而实用之化解方案。

相关文章