yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理

内建类型None表示一个空对象,没有方法和属性。

None是一个特殊的常量。

None和False不同。

None不是0。

None不是空字符串。

None和任何其他的数据类型比较永远返回False。

None有自己的数据类型NoneType。

你可以将None复制给任何变量,但是你不能创建其他NoneType对象。

 

一、Python对象

要理解这个,首先要理解Python对象:

python对象具有三个特性:身份、类型、值。

三特性在对象创建时被赋值。只有值可以改变,其他只读。

类型本身也是对象。

二、Null与None

是Python的特殊类型,Null对象或者是None Type它只有一个值None.

它不支持任何运算也没有任何内建方法.

None和任何其他的数据类型比较永远返回False。

None有自己的数据类型NoneType。

你可以将None复制给任何变量,但是你不能创建其他NoneType对象。

复制代码
>>> type(None)
<class 'NoneType'>
>>> None == 0
False
>>> None == ' '
False
>>> None == None
True
>>> None == False
False

 

以下的文章是对Python对象整理的相关介绍以及Python空对象整理的相关代码的详细介绍,如果你对其有想了解的欲望时,你就可以点击以下的文章对其相关的详细的内容有一个更好的了解。

本篇主要整理一下Null与None两种类型的区别

  1. <!--[if !supportLists]-->一、<!--[endif]-->None 

Python的 Null对象

Python有一个特殊的类型,被称为 Null 对象或者 NoneType,Python对象整理只有一个值,那就是 None。它不支持任何运算也没有任何内建方法。如果非常熟悉C语言,就会知道和None类型最接近的C类型就是void,None类型的值和C的 NULL值非常相似(其他类似的对象和值包括Perl的undef和Java的void类型与null值)。None没有什么有用的属性,它的布尔值总是 False。

示例:

  1. resultset = Server.getOptionType(value) 

查询数据库返回其相关信息

  1. if resultset == None: 

表示此数据集为NULL对象的。

Python Objects,所有的Python对象整理都有下列三个特征:

id:对象间相互区别的唯一标识符。任何对象的id均可通过内建的id()函数获得,其值为内存地址。(对象的标识符ID)类型:对象的类型指示对 象能保持的类型、能应用的操作。可使用内建的type()函数显示对象的类型。值:对象表示的数据项。确定的Python对象有熟悉、数据值或可执行代码 (如方法)等。

None,Python有一个特殊的None对象,它仅有一个值,None。None值等同于C语言的null。None没有属性,总等于布尔值的false。

 

python学习笔记之内置数据类型

时间:2013 年 04 月 06 日 分类:学习笔记 Python

python的内置数据类型非常丰富,大致可以分为五类:None、数字类型、序列类型、映射类型和集合类型。下面我将分别对他们进行介绍,做个总结以备以后查看。下面的表列出了各个类别下的具体数据类型。注:本文所讲的内容都是基于python2的,python3会有些不同

类型分类类型名称描述
None Type(None) null对象None
数字类型 int 整数
long 长整数,任意精度(python2)
float 浮点数
complex 复数
bool 布尔值(True或False)
序列类型 str 字符串
unicode Unicode字符串(python2)
list 列表
tuple 元组
xrange xrang()创建的整数范围
映射类型 dic 字典
集合类型 set 可变集合
frozenset 不可变集合

1.None

None表示一个null对象,这是一个空对象,如果一个函数没有返回值,则返回null对象。None没有任何属性,在布尔表达式中表示False。

2.数字类型

除了布尔类型外,所有数字类型都是有符号的。整数的表示范围在-2147483648和2147483647之间,长整数可以表示任意长度,只受可用内存大小的限制。
  1. #整数
  2. i = 123
  3. i = int(123)
  4. #长整数
  5. l = 123L
  6. l = long(123)

浮点数是双精度类型(64bit),和c语言中double相同,数值范围-1.710(-308)到1.710(308)。

  1. f = 12.3
  2. f = float(12.3)

复数使用一对浮点数表示,分为实部和虚部,使用real和imag访问,虚部后缀j或J。

  1. c = 1.0 + 2.3j
  2. c = complex(1.0, 2.3)
  3. print c.real,c.imag

布尔值只有True和False两个值,分别映射为整数1和0。

  1. b = False
  2. b = bool(True)

2.1.数字运算

除了布尔类型外,int、long、float和complex都可以使用的运算为:加、减、乘、除、整除、幂运算和取余。下面分别举例说明。

  1. >>> 1 + 2 # 加法
  2. 3
  3. >>> 1 - 2 # 减法
  4. -1
  5. >>> 2 * 3 # 乘
  6. 6
  7. >>> 2 / 4 # 整数除
  8. 0
  9. >>> 2 / 4.0 # 浮点除
  10. 0.5
  11. >>> 3 // 2.0 # 整除
  12. 1.0
  13. >>> 2 % 3 # 取余
  14. 2
  15. >>> 3 ** 2 # 幂运算 =3^2
  16. 9

对于整数还可以进行位运算,共有6种位运算:取反(~)、左移(<<)、右移(>>)、异或(^)、按位或(|)、按位与(&)。

  1. >>> ~1 # 1取反后为-2的补码
  2. -2
  3. >>> 8 << 1 # 左移
  4. 16
  5. >>> 8 >> 2 # 右移
  6. 2
  7. >>> 1 ^ 3 # 01 和 11 异或得到10,就是2
  8. 2
  9. >>> 1 | 3 # 01 和 11 位或得到11,就是3
  10. 3
  11. >>> 1 & 3 # 01 和 11 位与得到01,就是1
  12. 1

布尔类型可以通过布尔表达式取值,布尔比较运算符有6种:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(!=)。

  1. >>> 1 < 2
  2. True
  3. >>> 1 <= 2
  4. True
  5. >>> 1 > 2
  6. False
  7. >>> 1 >= 2
  8. False
  9. >>> 1 == 2
  10. False
  11. >>> 1 != 2
  12. True

对于布尔类型还可以进行逻辑运算,有3种运算:逻辑非(not)、逻辑非或(or)、逻辑与(and)。

  1. >>> not True
  2. False
  3. >>> True or False
  4. True
  5. >>> True and False
  6. False

2.2.常用数字类型函数

abs():返回给定对象的绝对值。

  1. >>> abs(-2)
  2. 2

divmod():把除法和取余运算结合起来,返回一个包含商和余数的元组。

  1. >>> divmod(10, 3)
  2. (3, 1)

pow():两个参数,幂运算。三个参数,乘方后取余。

  1. >>> pow(2, 5),pow(2, 5, 10)
  2. (32, 2)

round():四舍五入

  1. >>> round(3.4),round(3.6)
  2. (3.0, 4.0)

floor():向下取整, ceil():向上取整, sqrt():开方, 需要math模块。

  1. >>> from math import floor,ceil,sqrt
  2. >>> floor(3.6),ceil(3.6),sqrt(9)
  3. (3.0, 4.0, 3.0)

conjugate():复数取共轭

  1. >>> c = 2 + 3j
  2. >>> c.conjugate()
  3. (2-3j)

3.序列类型

序列表示索引为非负数的有序对象集合,包括字符串、列表和元组。字符串是字符的序列,列表和元组是任意对象的序列。字符串和元组是不可变的,而列表可以插入、删除和替换。所有序列支持迭代。

3.1.字符串

创建一个字符串很简单,但表示字符串的方法有很多。
  1. s = 'string'
  2. s = "string" # 和上面单引号一样
  3. s = '''string''' # 三引号之间的内容都被保留,用于多行输入
  4. s = r"string" # 原生字符,关掉字符串中的转义。
  5. s = u"string" # unicode字符串

字符串的方法很多,但不会改变字符串里的内容,常用的如下表所示。

方法描述
index(sub[,start[,end]]) 找到子字符串sub首次出现的位置,否则返回-1
find(sub[,start[,end]]) 找到子字符串sub首次出现的位置,否则报错
startswith(prefix[,start[,end]]) 检查是否以prefix开头
count(sub[,start[,end]]) 计算子字符串sub出现的次数
decode([encoding[, errors]]) 以encoding解码字符串,返回unicode字符串(只用于字节字符串)
encode([encoding[, errors]]) 以encoding编码字符串(只用于unicode字符串)
upper() 返回大写形式
lower() 返回小写形式
split(sep[,maxsplit]) 以sep为分隔符分割字符串,maxsplit为最大分割次数
join(t) 使用当前字符串为分隔符连接t中的字符串
format(*args, kwargs) 格式化字符串
举个format的例子,{0}表示*args的第一个值,{name}表示kwargs中name的值。
  1. >>> "Here is {0},I'm {name}.".format("wuyuans.com", name="wuyuan")
  2. "Here is wuyuans.com,I'm wuyuan"

3.2.列表和元组

列表的内容可变,可以包含任意对象,使用中括号表示。
元组的内容不可变,可以包含任意对象,使用圆括号表示。

  1. l = [1, 2, 3, '4', '5'] # 列表
  2. l = list((1, 2, 3, '4', '5'))
  3. t = (1, 2, 3, '4', '5') # 元组
  4. t = tuple("1234")

列表的方法主要用于改变里面的内容,下面列出列表常用的方法。

方法描述
list(s) 将s转化为一个列表
s.append(x) 将新元素x加到s的尾部
s.extend(t) 将新列表t加到s的尾部
s.count(x) 计算x的出现次数
s.index(x[, start[, stop]]) 搜索x元素
s.insert(i, x) 在i处添加x
s.pop([i]) 弹出第i个元素,如果省略i,弹出最后一个
s.remove(x) 移除x
s.reverse(x) 反转列表
s.sort([key[, reverse]]) 排序
也可以通过索引来删除列表中的元素。
  1. >>> l = [1, 2, 3, 4, 5]
  2. >>> del l[1]
  3. >>> l
  4. [1, 3, 4, 5]

3.3.序列通用操作

所有序列都可以通过索引来访问,第一个元素的索引为0,-1为最后一个元素,-2倒数第二个,一次类推。
切片操作:指定索引范围,返回相应的子序列。
还有一些常用的,如下所示

  1. >>> t = (1, 2, 3, 4, 5)
  2. >>> l = [1, 2, 3, 4, 5]
  3. >>> t[0]
  4. 1
  5. >>> t[1:4] # 索引1~4
  6. (2, 3, 4)
  7. >>> t[1:4:2] # 索引1~4,步进为2
  8. (2, 4)
  9. >>> len(t) # 序列长度
  10. 5
  11. >>> max(t) # 最大值
  12. 5
  13. >>> min(t) # 最小值
  14. 1
  15. >>> sum(t) # 序列求和
  16. 15

3.4.xrange()对象

xrange()对象比较特殊,他表示一个整数范围,只有访问它时才会计算他的值,所以切片操作是不能用于xrange对象的。xrange对象由xrange([i, ] j [, stride])函数创建,i为起始值,stride为步进值。

  1. >>> x = xrange(1,10,2)
  2. >>> for i in x:
  3. print i
  4. 1
  5. 3
  6. 5
  7. 7
  8. 9

4.映射类型

字典(dict)是python为唯一的内置映射类型,任何不可变对象都可以用作字典的键值,如字符串、数字、元组等。字典使用大括号表示,键和值之间用冒号分割,各个键值间用逗号隔开。映射对象是无序的。

  1. d = dict((['name', 'wuyuan'], ['age', 23]))
  2. d = {'name': 'wuyuan', 'blog': 'wuyuans.com', 'age': 23}
  3. d['school'] = 'HDU' # 添加一项

字典的常用方法和操作

方法和操作描述
len(d) 返回字典d的项目数
d[k] d中键k的值
del d[k] 删除d[k]
k in d 如果k是d的键值,返回True
d.clear() 清空d
d.copy() 返回d的一个拷贝
d.fromkeys(s[, value]) 返回一个新字典,s中的所有元素作为新字典的键,值为value
d.get(k[, v]) 返回d[k],没有则返回v
d.items() 返回由键值组成的序列,主要用于历遍
d.keys() 返回由键组成的序列
d.values() 返回由值组成的序列
d.pop(k[, default]) 弹出d[k],没有则返回default
d.update(b) 将b中对象添加到d中
字典的历遍方式:
  1. #使用键历遍
  2. for i in d:
  3. print i,d[i]
  4. #使用键值历遍
  5. for k,v in d.items():
  6. print k,v

5.集合类型

集合是唯一项的无序集,集合不提供索引或切片操作,集合的长度可变,但放入里面的必须是不可变的。集合分为两种:可变集合(set)和不可变集合(frozenset)。

  1. s = set([1, 2, 3])
  2. fs = frozenset([1, 2, 3])

集合通用方法和操作

方法和操作描述
len(s) 返回集合s的项目数
s.copy() 返回集合s的一份副本
s.difference(t) 求差集,返回在s中,但不在t中的项目
s.intersection(t) 求交集,返回同时在s和t中的项目
s.isdisjoint(t) s和t中没有相同项,返回True
s.issubset(t) s是t的子集,返回True
s.issuperset(t) s是t的超集,返回True
s.union(t) 求并集,返回在s或t中的项目
可变集合set的方法和操作
方法和操作描述
s.add(item) 添加item
s.clear() 清空集合s
s.difference_update(t) 在s中删除同时在s和t中的项目
s.discard(item) 删除item
s.pop() 弹出任一项
s.remove(item) 删除item,没有则引发异常
s.update(t) 将t中所有项添加到t中,t为任意支持迭代对象

写完收工。。。

作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: http://wuyuans.com/2013/04/python-data-type/

 

 

posted on 2015-08-07 14:13  xxxxxxxx1x2xxxxxxx  阅读(988)  评论(0编辑  收藏  举报