
今日在对比shell编程和python编程时,对于关键字、数据类型、流程控制、异常处理这些有了新的看法,同时对“面向过程编程-函数式编程-面向对象编程”的编程思想也有了一些更深的看法,所以准备将这些依次总结一下,整理如下。
对于python数据类型,是变量相关的重要概念,变量三要素:名称、数据类型、操作方法,这三者从三个方面描述了变量,而变量也就成为了整个python编程的重要基础。
我对python中数据类型相关的重要概念,编写在一个python脚本中了,并测试脚本运行正常,通过脚本内容和运行结果,就可以把握python数据类型相关的内容了。
python数据类型相关脚本内容如下:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#################
#python脚本的核心是关键字,变量,流程控制与编程思想;
#################
print '''
python脚本的核心是关键字,变量,流程控制与编程思想.
变量也有三要素:变量名称,变量数据类型,变量操作方法(操作符,操作函数)。
python数据类型,按照特征可以划分为4个大类:数字类型,序列(数组)类型,映像类型,集合类型。
数字类型
整型
布尔型
标准整型
长整型
非整型
双精度浮点型
复数
decimal(不是内建类型)
序列类型(shell中叫数组)
字符串 str
元祖 tuple
列表 list
映像类型
字典 dict
集合类型
可变集合 set
不可变集合 frozenset
python数据类型,安装可变性(是否可变)划分,可以划分为2大类,7小类。
可哈希的,不可变的数据类型
数字类型
不可变集合 frozenset
字符串 str
元祖 tuple
可变的数据类型
字典 dict
列表 list
可变集合 set
'''
#################
#Number数字类型
#################
print "Number数字类型,通常用于存储数字,是最常用的变量类型"
print "整型 int ,有32位或64位长度范围限制"
a = 12
b = -405
c = 0x3A
print "整型取值有,正整数{a},负整数{b},十六进制表示的正整数{c}".format(a=a, b=b, c=c)
print
print "长整型 long integer,数值后面以l或L结尾,没有固定位宽,理论可以表示很长的数值"
a = 1239884
b = -68123912
c = 0xA32B9DDL
print "长整型有,正长整型{a},负长整型{b},十六进制表示的长整型{c}".format(a=a, b=b, c=c)
print
print "布尔型 boolean,多用于判断场景,只有两个值:true,false"
a = False
b = True
print "布尔型,假为{a},真为{b}".format(a=a,b=b)
print
print "双精度浮点数 double-precision floating,可以直接用十进制或科学计数法表示,每个数占8字节,可以在后面加小数点或e"
a = 1.7946
b = -30.
c = 3e8
print "双精度浮点数,普通小数{a},复数浮点数{b},科学计数法{c}".format(a=a,b=b,c=c)
print
print "数值类型的操作符分两类,第一类是算术运算符,如加减乘除;第二类是二进制比特操作,如取反、异或,可以先转化二进制再考虑"
print '''数值类型,算术操作符有13类
a+b 加号,也可以单独放在数字前,用于表示正数
a-b 减号,也可以单独放在数字前,用于表示复数
a*b 乘号
a/b 除号,b不能为0,整数相除仍为整数
a%b 取余数,
结果为a除以b后取余数
a**b 幂操作符,结果为a的b次方
a//b 取整除符,结果为a除以b后的结果的整数部分
not a 取反操作,只用于布尔类型
a>b 判断a是否大于b,结果为true或false
a<b 判断a是否小于b,结果为true或false
a==b 判断a是否等于b,结果为true或false
a>=b 判断a是否大于等于b,结果为true或false
a<=b 判断a是否小于等于b,结果为true或false
'''
3 + 6.4
2 ** 3
6 /4
4.0 /2
7 // 3
9 % 4
not True
3 == 3
print
print '''数值类型,比特操作符有6类
~A 按二进制取反,安装补码规则,结果数字是-(A+1)
A&B 并操作
A|B 或操作
A^B 异或操作
A>>B 按比特位右移
A<<B 按比特位左移
'''
~30
3 & 3
3 & 1
3 ^ 1
3 << 1
print
print "除了算术操作符和比特操作符,python还有内置函数可以操作变量,内置函数可以分为能够操作各种数据类型变量的通用函数,和只能操作数据类型变量的特定函数"
print '''python内置通用函数,即可操作数值类型的变量,也可以操作其他类型的变量
cmp(A, B) 比较二者的大小,如果前者小则为-1,前者大为1,相等为0
str(A) 将参数转换Wie可显示的字符串
type(A) 返回参数的类型对象
bool(A) 将参数转换为布尔类型
int(A) 将参数转换为整数类型,以十进制表示
long(A) 将参数转换为长整型,以十进制表示
float(A) 将参数转换为浮点类型
complex(A) 将参数转换为复数类型
'''
cmp(23, 12.43)
cmp(0, -2)
cmp(0x12, 18)
str(0x20)
type(3L)
type(True)
type(45+5.4j)
bool("True")
long("35")
print
#################
# 序列(数组)类型
#################
print "python除了数字类型,序列类型簇也在python中非常重要,序列类似与shell中数组的概念。"
print "python中序列,就是有序的数列,既然有序,就可以用数组的处理方式,序列包含字符串str,元组tuple,列表三种类型。"
print "字符串str是有字符组成的序列类型,元组tuple是有任意对象组成的不可修改的序列类型,列表list是有任意对象组成的可修改的序列类型。"
print "字符串str,元祖tuple,列表list,既然都是有顺序的数列,就有一些共同的操作符和内置函数来操作。"
print
print '''
python中序列运算,字符串,元组,序列都可以进行的运算,主要包括元素提取、序列连接等"
A[index] 获取序列中第index个元素,取值从0开始,如A[0]
A[index1:index2] 切片操作,获取序列中从index1到index2-1的子序列,如A[1,4]
A in B 判断B中是否有A,如果有则为True,如果没有则为False
A not in B 判断序列B中是否没有A,如果没有则为True,如果有则为False
A + B 连接序列A和B,生成新的序列并返回
A * number 将A重复number次,生成新的序列并返回
A > B 判断A是否大于B,结果为True或False
A < B 判断A是否小于B,结果为True或False
A == B 判断A是否等于B,结果为True或False
A >= B 判断A是否大于等于B,结果为True或False
A <= B 判断A是否小于等于B,结果为True或False
'''
a = "Hello, I like python practice!"
print a
print a[0]
print a[6:13]
print a[:13]
print a[14:]
print "like" in a
print a + "!!"
print a
print 'ABC' * 3
b = a[6:13]
c = [2, 4, "apple", 5]
print b[1:]
print b + c[2]
print
print '''
python中,字符串str,元组tuple,列表list都可以使用的内置函数有求长度、类型转换、排序等
enumerate(A) 对序列A生成一个可枚举对象,对象中每个元素都是一个二位元组,元组内容为(索引号,序列元素)
len(A) 返回序列A的长度
list(A) 转换序列A为list列表类型
max(A) 返回序列A中的最大值
max(a, b, ...) 返回所有参数中的最大值
lin(A) 返回序列A中的最小值
lin(a, b, ...) 返回所有参数中的最小值
reversed(A) 生成A的反向序列
sorted(A, func=None, key=None, reverse=False) 对序列A排序,排序规则安装参数func,key,reverse 指定的规则进行
sum(A, init=0) 对A中的元素求和
tuple(A) 转换序列A为tuple元组类型
'''
a = [34, 2, 1, 887, -0.5]
print a
print len(a)
print max(a)
print min(a)
print list(reversed(a))
print sorted(a)
print
#################
#String字符串类型
#################
print "字符串string是由零个或多个字符组成的有限序列,用单引号或双引号表示,具备序列的通用操作方法,也有自己一些独特的操作方法。"
print "python中字符串的分为普通字符串和Unicode字符串两种,用引号声明的是普通字符串,引号前加u的,就是Unicode字符串,有汉字就应该声明为unicode字符串。"
str1 = "Hello, World!"
str2 = u"Hello, I'm Unicode!"
str3 = u"你好,世界!"
print str1+str2+str3
print str1[5]
print str1[7:]
str1 = str2 = "Hello, World!"
str1 = str1 + "Hello, World!"
print str1
str1 = str1[:6] + str1[-8:]
print str1
print
print "字符串格式化,是按照指定的规则连接、替换字符串并返回新的符合要求的字符串。"
print "字符串格式化有%格式化和format格式化两种,format格式化以后会变成主流"
print '''
python中%格式化字符串的表格式语法为:
format_string % string_to_convent
format_string % (str_to_convent1, str_to_convent2, ...)
'''
charA = 65
charB = 66
print u"ASCII码65代表: %c " % charA
print u"ASCII码%d代表: B " % charB
print '''
字符串格式化时,常用的格式化符号表有:
%c 转为单个字符
%r 转换为repr()函数表达的字符串
%s 转换为str()函数表达的字符串
...
%% 输出 %
python中辅助格式化符号表
* 定义宽度或小数点的精度
- 左对齐
+ 对正数输出正值符号“+”
<sp> 数字大小不足m.n要求时,用空格补位
# 在八进制数千名显示0,在十六进制前面显示0x,或0X
0 数字大小不满足m.n的要求时,用0补位
m.n m是显示的最小总宽度,n是小数点后的位数
格式化字符串中固定内容,处理字母、数字、标点符号,还可以包含不同的显示字符,比如回车、缩进等。
python中称这些字符为转义字符,常见的转义字符有:
转义字符 解释 ASCII值
a 响铃(BEL) 7
退格(BS),将当前位置移到前一列 8
f 换页(FF),将当前位置移到下页开头 12
换行(LF),将当前位置移到下一行开通 10
回车(CR),将当前位置移到本行开头 13
水平制表(HT),跳到下一个tab位置 9
v 垂直制表(VT) 11
\ 代表一个反斜线字符'' 92
' 代表一个单引号(撇号)字符 39
" 代表一个双引号字符 34
? 代表一个问号 63