<python>python 2.7

来源:互联网 发布:sql删除表中的重复数据 编辑:程序博客网 时间:2024/06/05 21:07

由于以后的学习会设计到wxpython,而python3.x没有匹配的wxpython,所以重新装了python 2.7。所以所有的语法均基于python 2.7版本,我看的书是python核心编程。

 

一、语法

1. #后为python的注释

2.\n 换行符

3.\ 续行符

4.分号 用于分割同一行上的两个子句

5.冒号 分割函数,类,控制语句等等的标题和后续子句

# this is an exampleprint 'aaa\nbbb'print 'aaa\bbb'a = 5if a>5:    print 'a>5'

运行:

>>> aaabbbaaabbb

6.赋值操作

python2.7支持以下模式的赋值:

而且,有一点不同于c语言:在交换两个变量的值时,不需要临时变量

7.标识符

首字母为_或字母

后续字符为字母,数字和_

大小写敏感

python的关键字:

and  elif  global  or

assert  else  if  pass

break  except  import  print

class  exec  in  raise

continue  finally  is  return

def  for  lambda  try

del  from  not  while

说说这些关键词的用处吧:

and,or,not  布尔运算符,python中有布尔类型的,值为true,false

几个例子:

在2.7:

在3.3

(上面 3>2>1等价于 3>2 and 2>1)

在python里,数值的非零,字符串的非空可以等价于布尔的true,反之0和空字符串等价到false。

elif == else if

print 输出语句

在2.x中print是一条语句,不需要括号,但在3.x中,print()是一个函数。

 

二、风格

缩进:

python中没有括号,但使用缩进来表示程序的格式,tab键缩进。

 

 

三、内存管理

python 中变量不需要定义,变量没有类型,变量名可以回收使用,del语句可以收回使用中的变量。

关于对象和变量,我的看法是,对象是内存中的一块,存放数值或字符串等等,变量是独立的标识符,无法通过变量修改对象,变量可以关联到对象,从而拥有对象的值和类型。《python核心编程》书上有一种很形象的说法:

对象是内存中的一块,对象就像一个盒子,当赋值出现时,就是将变量关联到盒子上,此时变量的值就是对象的值,变量相当于这块内存的一个别名,每一次赋值,这块内存的引用计数(被引用的次数,即别名的个数),就+1,初始赋值计数为1.

当关联到该内存变量指向了另一块内存(即改变了变量的值)那么引用计数就会-1.当引用计数为0时,该块内存就会被回收。

del语句可以强制用来减少引用计数(即撤销变量)。

内存分配这里,涉及到python的一些小整数和短字符串的优化问题,我想只要大概了解一下就好了,毕竟使用python是不需要程序员掌管内存的使用的。

 

四、对象

python中的对象是有类型和值和内存地址的。即三个特性:实体(identity):可以用id()获取,类型和值

标准数据类型:

1.数值:普通整数,长整数,浮点数,复数

①整数在32位机表示大小:-2**31 -- 2**31-1。整数有10进制,8进制(以0开头),16进制(以0x开头)。

②长整形是整形的超集,在数字后加l或L区别。同样有三种进制。

③浮点数对应于c中的double型,可以用10进制和科学计数法表示。

④复数形如a+bj。

有复数num,num.real获取num的实数部分,num.imag获取虚数,num.conjugate()获取复数记号形式。

数值操作:+,-,*,/,%,**,对整数:~(取反),<< ,>>, &,^,|

数值函数:类型转换函数-int(obj),float(obj),long(obj),complex(obj)/complex(real,imag),

abs(num),取绝对值

coerce(num1,num2),将num1和num2转换成同一种类型,返回一个表列形式的转换结果。

divmod(num1,num2),返回(num1/num2,num1%num2)

pow(num1,num2,mod=1),乘方,若有mod参数,再对乘方求除法余数。

round(flt,ndig=0),返回一个数,其精确到flt小数点后ndig位。若ndig缺省,则返回最接近flt的整数。

进制转化-hex(),oct()

ASCII转换-ord(str),chr(num)

2.字符串string

3.列表list

4.表列tuple

5.字典dictionary

内建数据类型:

1.type 2.none 3.file 4.function 5.module 6.class 7.class instance 8.method

 内部数据类型:

1.code 2.frame 3.traceback 4.slice 5.ellipsis 6.xrange

 

对象的操作:

1.比较

< ,> ,<= ,>= ,== ,!= ,<>(不再使用)  返回值是布尔值true 或false

2.对象的比较

判断变量是否关联到同一个对象。使用is 和 is not。相当于用id()来判断。

例子:

第一个例子中a,b指向同一个1.3可以理解,第二个例子中这两个1.3在内存中位置是不同的。

再看:

发现上述情况,这是python中对小整数和短字符串的优化,使内存中只有一个小整数和短字符串,因为python解释器认为小整数和短字符串经常使用。

大整数,长字符串时:

3.布尔运算

前面已有叙述。

 

内建函数:

cmp(obj1,obj2), repr(obj), 'obj' , str(obj) ,type(obj)

1.cmp(obj1,obj2)比较obj1 和 obj2 的大小,obj1 > obj2 返回值>1,若obj1 < onj2,返回值<1,若两者等于,返回0.

cmp的参数可以是

2.str(obj)与repr(obj)和 'obj'

这三个函数是返回obj的字符串形式。

但三者是有一些区别的.

先说str()和repr()的区别:str(obj)返回的是obj的可打印字符串表达形式。比如:

而repr(obj)返回的是obj的正是字符串:

再谈repr()和' '

两者功能一样,但书写要注意使用转义字符:

 

3.type(obj):该函数返回obj的类型。

该函数可以通过与其他type(obj1)的比较,判断obj的类型。

例子:

可以得出,a是float类型。

 

对象的分类:

1.根据存储摸型分类:

只能存储一个对象的类型称为,文字/离散存储,数字,字符串

反之,称为包容器存储,list,tuple,dictionary

2.根据是否可修改分类:

可修改: list,dictionary

不可修改:数字,字符串,tuple

 3.根据访问模型分类:

直接访问(单个元素):数字

序列方式访问(通过下标访问):字符串,list,tuple

映射图放射访问(通过关键字访问):dictionary
 

 

原创粉丝点击