• 帮助
    • 博客
    • 相册
    • 网盘
    • 超市
    • Xer吧
  • 登录
  • 注册
【公告】X5dj广告过滤系统上线    【公告】个人空间首页新增“我的专辑”版块    【公告】新功能“我的专辑”上线,珍藏属于你的美好回忆    【公告】X5dj网站网络硬盘用户使用协议    【公告】X5dj新功能汇总贴:新增“密码目录”功能上线    【公告】X5dj.com相册/网盘上传工具发布    
  • Saromman无欲则安
  • http://www.x5dj.com/saromman 复制地址
  • 首页

  • 博客

  • 相册

  • 网盘

  • 人际关系网

  • 我的专辑

loading...
重读PYTHON核心编程(第2版)-------第4天 < 上一篇 下一篇 > 重读PYTHON核心编程(第2版)-------第2天
重读PYTHON核心编程(第2版)-------第3天
saromman 发表于: 2008-12-05 16:19 来源:原创  X度:0  浏览:(116)  评论:(0)
收藏 | 复制地址 | [举报此文章] |  大 中 小 |  引用 删除 修改
所有的 Python 对像都拥有三个特性:身份,类型和值。
身份:
每一个对象都有一个唯一的身份标识自己, 任何对象的身份可以使用内建函数id()来得到。
类型
这个值可以被认为是该对象的内存地址。
内建函数 type()查看 Python 对象的类型
值
对象表示的数据项
下列对象的布尔值是 False。
z  None
z  False (布尔类型)
z  所有的值为零的数:
z  0 (整型)
z  (浮点型)
z  0L (长整型)
z  0.0+0.0j (复数)
z  "" (空字符串)
z  [] (空列表)
z  () (空元组)
z  {} (空字典)
值不是上面列出来的任何值的对象的布尔值都是 True, 例如 non-empty、  non-zero 等等。
用户创建的类实例如果定义了 nonzero(__nonzero__())或 length(__len__())且值为 0,那
么它们的布尔值就是 False。
-----------------------------------------------------------------------
4.4.4  切片对象
当使用 Python 扩展的切片语法时,就会创建切片对象。扩展的切片语法允许对不同的索引
切片操作,包括步进切片, 多维切片,及省略切片。多维切片语法是 sequence[start1 : end1,
start2 : end2], 或使用省略号, sequence[...,start1 : end1 ]. 切片对象也可以由内建
函数  slice()来生成。步进切片允许利用第三个切片元素进行步进切片,它的语法为
sequence[起始索引 : 结束索引 : 步进值]。Python 很早就支持扩展步进切片语法了,但直到
Python2.3 以前都必须依靠 C API 或 Jython 才能工作。 下面是几个步进切片的例子:

>>> foostr = 'abcde'
>>> foostr[::-1]
'edcba'
>>> foostr[::-2]
'eca'
>>> foolist = [123, 'xba', 342.23, 'abc']
>>> foolist[::-1]
['abc', 342.23, 'xba', 123]
  
4.6     标准类型内建函数

除了这些运算符,  我们刚才也看到,  Python提供了一些内建函数用于这些基本对象类型:
cmp(),  repr(), str(),  type(), 和等同于 repr()函数的单反引号(``) 运算符。
=====================================================================
表 4.4    标准类型内建函数

函数              功能
cmp(obj1, obj2)    比较 obj1 和 obj2, 根据比较结果返回整数 i:
i < 0 if obj1 < obj2
i > 0 if obj1 > obj2
i == 0 if obj1 == obj2
repr(obj) 或 `obj`  返回一个对象的字符串表示
str(obj)           返回对象适合可读性好的字符串表示
type(obj)         得到一个对象的类型,并返回相应的 type 对象
=====================================================================
尽管 str(),repr()和``运算在特性和功能方面都非常相似, 事实上 repr() 和 `` 做的
是完全一样的事情,它们返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下
可以通过求值运算(使用 eval()内建函数)重新得到该对象,但 str()则有所不同。str() 致力
于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于 eval()求值, 但很适
合用于 print 语句输出。需要再次提醒一下的是, 并不是所有 repr()返回的字符串都能够用
eval()内建函数得到原来的对象:
也就是说 repr() 输出对 Python 比较友好, 而 str()的输出对人比较友好。虽然如此,
很多情况下这三者的输出仍然都是完全一样的。

核心笔记:为什么我们有了 repr()还需要``?
在 Python学习过程中,你偶尔会遇到某个运算符和某个函数是做同样一件事情。之所以如
此是因为某些场合函数会比运算符更适合使用。举个例子, 当处理类似函数这样的可执行对象
或根据不同的数据项调用不同的函数处理时,函数就比运算符用起来方便。另一个例子就是双
星号(**)乘方运算和 pow()内建函数,x ** y 和 pow(x,y) 执行的都是x的y次方。
译者注:事实上 Python 社区目前已经不鼓励继续使用``运算符。
=====================================================================
对非容器类型可以直接访问。所有的数值类型都归到这一类。

序列类型是指容器内的元素按从 0 开始的索引顺序访问。一次可以访问一个元素或多个元
素,  也就是大家所了解的切片(slice)。 字符串,  列表和元组都归到这一类。 我们前面提到过,
Python 不支持字符类型,因此,虽然字符串是简单文字类型,因为它有能力按照顺序访问子字
符串,所以也将它归到序列类型。

映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素
无序存放,  通过一个唯一的 key 来访问,  这就是映射类型,  它容纳的是哈希键-值对的集合。
数据类型  存储模型  更新模型  访问模型l
数字  Scalar  不可更改  直接访问    
字符串  Scalar  不可更改  顺序访问
列表  Container  可更改  顺序访问
元组  Container  不可更改  顺序访问
字典  Container  可更改  映射访问
=====================================================================
幂运算

幂运算操作符和一元操作符之间的优先级关系比较特别: 幂运算操作符比其左侧操作数
的一元操作符优先级低,比
起右侧操作数的一元操作符的优先级高,由于这个特性你会在算术运算符表中找到两个
** .下面举几个例子:

>>> 3 ** 2
9
>>> -3 ** 2 # ** 优先级高于左侧的 -  
-9
>>> (-3) ** 2  # 加括号提高 -的优先级
9
>>> 4.0 ** -1.0  # ** 优先级低于右侧的  -  
0.25
=====================================================================
表 5.5 数值工厂函数总结
类(工厂函数)                 操作
bool(obj)  b
返回obj对象的布尔值,也就是
obj.__nonzero__()方法的返回值
int(obj, base=10)  返回一个字符串或数值对象的整数表
示,  类似string.atoi();从Python 1.6起,
引入了可选的进制参数。
long(obj, base=10)  返回一个字符或数据对象的长整数表
示,类似string.atol(),  从Python1.6起,  
引入了可选的进制参数
float(obj)  返回一个字符串或数据对象的浮点数
表示,类似string.atof()
complex(str) or
complex(real, imag=0.0)  返回一个字符串的复数表示,或
者根据给定的实数(及一个可选
的虚数部分) 生成一个复数对象。  
功能函数
Python 有五个运算内建函数用于数值运算: abs(), coerce(), divmod(), pow(), pow()
和 round()。我们将对这些函数逐一浏览,并给出一些有用的例子:
------------------------------------------------------------------
divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来
说,它的返回值就是地板除和取余操作的结果。对浮点数来说, 返回的商部分是
math.floor(num1/num2),对复数来说, 商部分是 ath.floor((num1/num2).real)。
>>> divmod(10,3)
(3, 1)
--------------------------------------------------------------------
   函数                 功能
abs(num)              返回 num 的绝对值
coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个  元组的形式
返回。
divmod(num1, num2)   除法-取余运算的结合。 返回一个元组(num1/num2,num1 %
num2)。对浮点数和复数的商进行下舍入(复数仅取实  
数部分的商)
pow(num1, num2, mod=1)  取 num1 的 num2次方,如果提供 mod参数,则计算结果
再对mod进行取余运算
round(flt, ndig=0) 接受一个浮点数  flt  并对其四舍五入,保存  ndig位小数。
若不提供ndig  参数,则默认小数点后0位。
--------------------------------------------------------------------
round()仅用于浮点数。(译者注:整数也可以,  不过并没有什么
实际意义)
hex(num)  将数字转换成十六进制数并以字符串形式返回
oct(num)  将数字转换成八进制数并以字符串形式返回
chr(num)  将ASCII值的数字转换成ASCII字符,范围只
能是0 <= num  <= 255。
ord(chr)  接受一个  ASCII  或  Unicode  字符(长度为1的字符串),返回相应的ASCII
或Unicode  值。
unichr(num)    接受Unicode码值,返回  其对应的Unicode字符。所接受的码值范围依赖于
你的Python是构建于UCS‐2还是UCS‐4。
--------------------------------------------------------
#  重载 __nonzero__() 使它返回 False
>>> class C:
...  def __nonzero__(self):
...  return False
c=C()
bool(c)  返回False
---------------------------------------------------
使用 Decimal 类:
>>> from decimal import Decimal
>>> dec = Decimal('0.1')
------------------------------------------------------
核心模块: random
当你的程序需要随机数功能时,random 模块就能派上用场。该模块包含多个伪随机数发生
器,它们均以当前的时间戳为随机数种子。这样只要载入这个模块就能随时开始工作。下面列
出了该模块中最常用的函数:
两个整数参数,返回二者之间的随机整数
randrange()      它接受和 range()函数一样的参数, 随机返回
range([start,]stop[,step])结果的一项
uniform()  几乎和 randint()一样, 不过它返回的是二者之间的一个浮点数(不包括范围
上限)。
random()  类似 uniform() 只不过下限恒等于 0.0,上限恒等于 1.0
choice()  随机返回给定序列(关于序列,见第六章)的一个元素
 
系统分类:软件·电脑
标签:软件   电脑   
推送: 无分类 归类:Python

一事无成,迷惘的生活,生活不迷茫还能怎么清醒?
 
重读PYTHON核心编程(第2版)-------第4天 < 上一篇 下一篇 > 重读PYTHON核心编程(第2版)-------第2天
用户回复
首页 上一页 1 下一页 尾页 共 1 页
评分与快速回复

博主推荐
相关文章
  • ·在系统组策略中设置自动更新
  • ·在系统组策略中设置自动更新
  • ·电脑报2008年合订本
  • ·电脑报2008年合订本
  • ·苹果工具U盘(一张U盘体验苹果系统)
  • ·苹果工具U盘(一张U盘体验苹果系统)
  • ·Adobe After Effect CS4 v9.01 完美团队版
  • ·Adobe After Effect CS4 v9.01 完美团队版
  • ·Adobe Premiere Pro CS4 V4.01 完美团队版
  • ·Adobe Premiere Pro CS4 V4.01 完美团队版
  • ·在x5dj个人空间里添加时钟和天气预报--教程
  • ·在x5dj个人空间里添加时钟和天气预报--教程
  • ·经典发现:MyTivoli网络收音机 0.0.2┊漂亮、简单、实用 绿色单文件特别版版by dfhwqc
  • ·经典发现:MyTivoli网络收音机 0.0.2┊漂亮、简单、实用 绿色单文件特别版版by dfhwqc
  • ·在线代理-free web proxy-噢喔猪在线代理
  • ·在线代理-free web proxy-噢喔猪在线代理
  • ·联想隐藏分区删除工具 1.0 简体绿色免费版
  • ·联想隐藏分区删除工具 1.0 简体绿色免费版
  • ·UC2008 Beta2 显示IP去广告插件(081224)简体绿色版
  • ·UC2008 Beta2 显示IP去广告插件(081224)简体绿色版
博友热推
  • 一窝蜂现象绝不仅局限于文化产业
  • 我可以选择放弃,但绝不放弃选择
  • 失去了吃醋的位置,所以我要离开
  • 不堪人生背后是恋人们对她的绝情
  • 拼命于执着,别人又怎能救脱你呢
  • 一起走过青春,却最终走不进婚姻
  • 2009年,一个老百姓眼里的不折腾
  • 我不需要在你眼睛里寻找我的存在
  • KFC这么有名我竟不知是卖什么的
  • 到底是男人坏些,还是女人坏些?
关于我们 | X5dj动态 | 加入我们 | 友情链接 | 官方日志 | 免责声明 | 举报不良信息
北京开创明天科技有限公司 版权所有 京ICP证040979号