Python从入门到放弃(一):概论

一:Python特点

1.软件质量

1.Python程序有很好的可读性,一致性和软件质量。 
2.Python支持软件开发的高级重用机制,例如面向对象等

2.提高开发者效率

1.python作为开发工具均以付出更少的精力完成更多的任务而脱颖而出。

3.可以定义为面向对象的脚本语言。

4.有缺点,是不够快

纯python代码的运行速度介于传统的编译语言和传统的解释语言之间.

5.免费可移植

6.简单可以和其他语言混合编程

二:python如何运行程序

1.python是一门编程语言,同时,python也是一个名为解释器(shell)的软件包(实际上,解释器是代码与硬件之间的软件逻辑层),也就是说,我们常常说python是一门编程语言,但是同时,我们写好了python代码运行的时候,解释代码的解释器的名字也是叫python,语言和一个解释器这个程序之间虽然叫一个名字,但是意义不要弄混淆了 
2.Python安装在机器上之后,它包含了一些最小化的组件:一个解释器(shell)和支持的库.无论怎样,编写的python代码需要在解释器中执行. 
3.从程序员的角度来说,一个Python程序仅仅是一个包含Python语句的文本文件.

4.在本质上,python程序的执行有下面步骤

1.字节码编译

程序执行的时候,Python内部(对用户隐藏)会先将源代码编译成所谓的字节码的形式. 
要是python进程在机器上面有写入权限.那么他将程序的字节码保存为一个以.pyc为扩展名的文件.程序运行后,能够在相应的工作文件目录下面看到这些文件.下一次运行程序的时候,要是以前的源代码没有修改过的话,Python会自动加载.pyc文件就不会再重新编译一次源文件. 
要是python进程没有写入权限.那么程序还是可以运行.字节码在内存中生成.并且在程序结束后丢弃. 
字节码文件具有加速的作用.所以最好是保证在大型程序中能够写入;同样,字节码也是分发程序的方法之一:要是python找到的都是.pyc文件,那么他也很乐意运行这个程序.

2.Python虚拟机

一旦程序编译成为字节码(或者字节码从已经存在的.pyc文件载入),之后的字节码发送到通常称为python虚拟机PVM上来执行. 
PVM是Python的运行引擎.他通常表现为python系统的一部分.并且他是实际运行脚本的组件.(但是事实上,这些都是对用户隐藏的.)

5.运行代码的方式

1.交互模式

交互提示模式是根据用户的输入运行代码并且响应结果.但是他不会把代码保存到一个文件之中.在windows或者linux的控制台下面输入python,就进入了交互模式(首先要安装了python) 
这里写图片描述 
当你对于一段python代码的运行有任何疑问的时候,马上打开交互命令行并且实验代码,看看会发生什么.注意:在交互模式下只能够输入python的命令而不能够输入系统的命令.交互模式下很多结果的显示不需要打印语句.但是脚本中的打印语句需要留意提示符的变换和复合语句.在交互模式中,用一个空行结束复合语句.意味着简单的语句下只要一个回车会直接运行.而在复合语句下要按两下空格)多行代码最好的处理方式就是先复制到一个.py文件中.然后运行这个文件.不要直接把很多行的语句直接复制到交互模式下面运行.

2.脚本模式

1.普通脚本(不带#!) 
写一个文件一后缀.py结尾 
这里写图片描述 
运行方式:Python +文件名 
这里写图片描述

2.可执行脚本(带#!) 
第一行是特定的: #!后面加上解释器的路径(不知道路径的,可以通过which python命令来看一下解释器的路劲在哪里)文件拥有可执行权限(要是没有执行权限,用chmod +x 文件名为其赋予执行权限),那么这个脚本就能够直接执行了。 
这里写图片描述

3.Unix env小技巧 
我们知道,linux下面有一个env程序.可以通过系统的搜索路径的设置,定位某个东西.(要是不知道env在哪里,用命令which env) 
因为#!后面跟的是解释器的路径,我们经常直接在后面加上解释器的路径,但是要是把这个程序原封不动的发给别人,要是别人的机器上的python解释器的路径不是我们写上去的路径,那么这个文件将不能够被正确执行. 
所以,env的技巧将能够搜索python的位置,就算机器装python的位置是不同的也没有关系. 
这里写图片描述 
加上权限之后直接执行就行了.

三.模块导入和重载初步

1.概念

1.每一个以扩展名.py结尾的Python源代码文件都是一个模块,其他的文件能够通过导入一个模块读取这个模块的内容.(导入的本质,就是载入另一个文件,并且能够读取哪个文件的内容.) 
2.一个模块的内容通过这样的属性能够被外部世界使用. 
3.大的程序往往是以多个模块的形式出现.并且导入了其他模块文件的工具.其中一个模块文件设计成主文件,也就是顶层文件,通过它,能够运行整个程序.

2.操作

1.载入一个模块并且运行这个模块(***import语句)*

1.载入的时候加上模块名字就行,但是千万不要加上扩展名.py 
2.在交互界面下载入一个模块会自动运行这个模块 
3.模块载入第一次的时候会运行,但是”不能够”载入同一个模块两次 
这里写图片描述 
如上图,载入第一次的时候自动运行,然后载入第二次的时候就不运行了.因为导入在python中是开销很大的操作,系统默认只会导入一次,第一次导入后就不会再次导入相同的了.(即使该文件被改变.,…)

2.重新载入一个模块(reload()函数)

1.reload是一个函数,在imp标准库模块中(python3.x) 
2.Reload()函数希望获得的参数是一个已经加载了的模块对象的名称. 
这里写图片描述 
注意: 
1.避免用import和reload启动程序

3.模块显要特性:属性

从宏观的角度来说,模块扮演了一个工具库的角色.从一般意义来说,模块往往就是变量名的封装,被认作是命名空间.在一个包中的变量名就是所谓的属性.典型的应用中,导入则得到了模块文件中在顶层所定义的所有变量名. 
例子 
1.建立一个文件a.py 
这里写图片描述 
2.可以通过两种不同的方法获得这个模块中的leo属性 
①import将模块作为一个整体载入 
这里写图片描述 
要使用的话:模块.属性名 
②From xxx import xxx 
这里写图片描述 
使用的话:直接用就行

注意:无论是使用import还是from的来进行导入,模块文件都会被执行.并且导入的组件在顶层文件中得到了变量名的读取权.

4.使用exec运行模块文件

1.Exec(open(“完整模块名”).read())内置函数调用 
2.运行该模块且不载入该模块,相当于在该处粘贴了该模块的代码,也是因为如此,有覆盖前面定义过的同名变量的危险.(所以自己小心就行)

你可能感兴趣的:(python学习)