python,pert。java,php编程语言:
脚本编程语言(需要解释器)
写的源代码先要编译
source–>compile–>bytecode字节码–>(这种二进制格式的指令码不是直接在cpu上运行的,要运行在他们的虚拟机pvm上)–>pvm(python virtual mechine)
source–>compile–>bytecode–> pvm
人生苦短,我用python,因为些python的代码量,要比其他编程语言小的多(比如c要用200行代码,python可能只需要50)
java代码要运行在java虚拟机上,java虚拟机是使用c语言研发的,可以抹平底层系统的差异,python也有这个特点,这个虚拟机适用于各种各样 的二进制平台的(各种各样的ABI接口)
解释器本身的代码是专有的
java编程有好几个部分组成,java编程语言本身,java类文件格式,java虚拟机等
python第二个组成要件是python库,这个库有两部分组成,调用库和第三方库,程序员写代码,通过导入调用库或第三方库别人实现的代码并结合自己理解的python的语言和逻辑来写源代码
代码要编译运行,有编程语言和库还不够,需要把这个代码编译器编译,并且有解释器解释运行,这二者是由同一个组件提供的,python编程语言的实现,
这个解释器也可以通过多种不同的语言来实现
PyPy用python来实现python,性能据说比cpython要好
下载一个适用的操作系统平台的就可以适用
python第一版是1989年
执行步骤
1.写出源代码,文件.py结尾,编译器compiler编译后,形成二进制的字节码,.pyc结尾,就由解释器interpreter,pvm解释运行了,这样的pvm解释完以后,解释过程之后,由processor(cpu)运行,
89年的时候硬件跟不上,java和python才冷落
openstack整个程序是python写的
docker是用go编写的
只要不是最小安装,python解释器都会装上
交换式接口,2.7.5的版本
python2和3 的区别很大,很大,库和语言都不兼容
python2<-- 》python3
内嵌的标准库
官网上的编译安装可以全部给你安装
不一定需要yum,可以选择官网
现在就可以使用python了
python使用方式有两种,
1.交互式接口,跟shell一样
python2的版本就不一样
print是个命令,不是函数
**
python是动态类型的编程语言:(面向对象的编程语言,虽然支持过程式编程,但内部都是基于对象)
变量是要在python内存空间单独存放的,叫变量名
在内存有变量名(标识)这个对象的指针指向存储空间,变量自己也要在内存中找个空间,可以存数据,这里面存的是字符串
不可变的对象是对象里的内容是不可被改变的,123不可被改变,只能被先消耗
a=123,a=“hello” 不可变的对象是对象里的内容是不可被改变的
动态指的是,在程序运行过程中,可将变量名称绑定到不同的值,先绑定到一个数值,再绑定到一个字符,再绑定到一个列表等等,可以按需进行修改,这些修改有可能改的是引用关系,而不是变量的值存储本身**
如果两个变量值一样,两个变量标签指向了同一个对象
变量名没有类型,只有变量值本身有类型,变量名可以指向任意的可以引用的对象,只要能赋值就成
python里的变量只要引用计数器为0,就把 归集成一类,就把这些通过垃圾回收器回收,在程序应用中可能不断的创建变量,任何定义的类都会生成一个对象
支持两种编程范式,
一种是过程式编程,以指令为中心,数据服务于指令需要;(解决的思路,往这个思路添加工具即可)
二种是支持对象式编程,以数据为中心,数据就是对象(定义类,把类实例化出来过程是创建对象的过程,不同的对象支持不同的操作方法)指令是服务于数据的;(首先想好哪一种工具可以帮你完成这个过程,基于工具选择到达方式)
python能非常完美的将这两种方式加以支持,而且还能将二者结合起来
如果用bash做一个openstack,调用的命令如cat grep是系统之上可用的执行程序,这些都是c程序,系统程序
安装了python,不光有解释器还有库,写的python代码就是基本语法和调用python库中的基本函数或类来实现。不要依赖系统上的任何命令和工具
linux写的代码,到windows不一定能运行,因为可能是不兼容的
写不依赖系统命令的时候才需要写python
类(定义一个抽象组件)–>class
属性
方法
类的实例化称为创建对象的过程:
向属性赋值:
(比如定义类叫灯light
a=
都支持a.turnon ,a.turnoff
b=)
tab键支持这么多的调用
查看帮助a.count是做什么的
能帮你返回你所指定的字符串长度
b=123,持有的方法就不一样了,只要对象类别不同,他们所指定的方法就不一样,对于python而言,一切皆对象,每一个实现的对象都支持很多种不同的方法,但是同一类的方法是一样的
c=456
abs求绝对值,add加法运算
双下划綫开头,双下划线结尾的是特殊的方法
运算b+c,形成了新的对象
b+c,b.add©这个方法表示把其他内容加到当前的值来,’+'号自动替换成这个方法,本质上是运算方式
动态类型的编程语言:
变量:
数据类型:
核心数据类型:
数值:
字符值:
列表:
字典:
元组:
文件:
其他类型:集合、类、NONE、布尔型
每个对象,定义类的时候有两种组成,属性,方法
属性就是赋值
b=345,属性就是345,有些类支持多个属性
python是强类型语言,
支持动态绑定,也是强类型
动态类型:
强类型:严格区分数据类型的,str(),repr(),format()可以完成转换,可以显式转换
数字类型:
整数
浮点数
复数
字符类型:
1.字符串字面量
这是一个由固定位置,固定次序的字符所组成的字符序列,pyhton支持三种引号,单引号,双引号,三引号(支持多行引用的,支持换行)
每一个字符都是8位的字符串,由一个字节组成的数据,中文不支持,要在前面+u(使用Unicode编码,而不是ascii编码)d
但是python3不用+u,自动能兼容
**字符串是不可变类型
空字符串和null是两个概念
字符串可以乘法运算,加法运算,len取得字符串的长度,字符串也支持成员关系判断(在s中是否有he字符串)
**
str是个类,lower把所有字符换成小写,upper把所有字符换成大写
老串替换成新串,count替换几次
会返回新的串,老的串不会有变化
只不过生成新的大写字符的对象,不会代替原来的对象