Python 类型运算符和类型工厂函数总结
2015-03-25 20:05
375 查看
1.str()和 repr() (及 `` 运算符)
内建函数 str() 和 repr() 或反引号运算符(``) 可以方便的以字符串的方式获取对象的
内容、类型、数值属性等信息。str()函数得到的字符串可读性好, 而 repr()函数得到的字符串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象做为其参数, 返回适当的字符串。在下面的例子里, 我们会随机取一些 Python 对象来查看他们的字符串表示。
>>> str(4.53-2j)
'(4.53-2j)'
>>> str(1)
'1'
>>> str(2e10)
'20000000000.0'
>>> str([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>> repr([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>> `[0, 5, 9, 9]`
'[0, 5, 9, 9]'
尽管 str(),repr()和``运算在特性和功能方面都非常相似, 事实上 repr() 和 `` 做的
是完全一样的事情,它们返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下可以通过求值运算(使用 eval()内建函数)重新得到该对象,但 str()则有所不同。str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值, 但很适合用于 print 语句输出。需要再次提醒一下的是, 并不是所有 repr()返回的字符串都能够用eval()内建函数得到原来的对象:
>>> eval(`type(type))`)
File "<stdin>", line 1
eval(`type(type))`)
^
SyntaxError: invalid syntax
也就是说 repr() 输出对 Python 比较友好, 而 str()的输出对人比较友好。虽然如此,
很多情况下这三者的输出仍然都是完全一样的。
核心笔记:为什么我们有了 repr()还需要``?
在 Python 学习过程中,你偶尔会遇到某个运算符和某个函数是做同样一件事情。之所以如此是因为某些场合函数会比运算符更适合使用。举个例子, 当处理类似函数这样的可执行对象或根据不同的数据项调用不同的函数处理时,函数就比运算符用起来方便。另一个例子就是双星号(**)乘方运算和 pow()内建函数,x ** y 和 pow(x,y) 执行的都 是x的y次方。
译者注:事实上 Python 社区目前已经不鼓励继续使用``运算符。
2.标准类型运算符和内建函数
3.类型工厂函数
Python 2.2 统一了类型和类, 所有的内建类型现在也都是类, 在这基础之上, 原来的所谓内建转换函数象 int(), type(), list() 等等, 现在都成了工厂函数。 也就是说虽然他们看上去有点象函数, 实质上他们是类。当你调用它们时, 实际上是生成了该类型的一个实例, 就象工厂生产货物一样。 下面这些大家熟悉的工厂函数在老的 Python 版里被称为内建函数:
int(), long(), float(), complex()
str(), unicode(), basestring()
list(), tuple()
type()
以前没有工厂函数的其他类型,现在也都有了工厂函数。除此之外,那些支持新风格的类的全新的数据类型,也添加了相应的工厂函数。下面列出了这些工厂函数:
dict()
bool() set(), frozenset()
object() classmethod()
staticmethod() super()
property() file()
4.标准类型的分类
如果让我们最啰嗦的描述标准类型,我们也许会称它们是 Python 的“基本内建数据对象原始类型”。
“基本”,是指这些类型都是 Python 提供的标准或核心类型。
“内建”,是由于这些类型是 Python 默认就提供的
“数据”,因为他们用于一般数据存储
“对象”,因为对象是数据和功能的默认抽象
“原始”,因为这些类型提供的是最底层的粒度数据存储
“类型”,因为他们就是数据类型
不过, 上面这些描述实际上并没有告诉你每个类型如何工作以及它们能发挥什么作用。事实上, 几个类型共享某一些的特性,比如功能的实现手段, 另一些类型则在访问数据值方面有一些共同之处。我们感兴趣的还有这些类型的数据如何更新以及它们能提供什么样的存储。有三种不同的模型可以帮助我们对基本类型进行分类,每种模型都展示给我们这些类型之间的相互关系。这些模型可以帮助我们更好的理解类型之间的相互关系以及他们的工作原理。
内建函数 str() 和 repr() 或反引号运算符(``) 可以方便的以字符串的方式获取对象的
内容、类型、数值属性等信息。str()函数得到的字符串可读性好, 而 repr()函数得到的字符串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象做为其参数, 返回适当的字符串。在下面的例子里, 我们会随机取一些 Python 对象来查看他们的字符串表示。
>>> str(4.53-2j)
'(4.53-2j)'
>>> str(1)
'1'
>>> str(2e10)
'20000000000.0'
>>> str([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>> repr([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>> `[0, 5, 9, 9]`
'[0, 5, 9, 9]'
尽管 str(),repr()和``运算在特性和功能方面都非常相似, 事实上 repr() 和 `` 做的
是完全一样的事情,它们返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下可以通过求值运算(使用 eval()内建函数)重新得到该对象,但 str()则有所不同。str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值, 但很适合用于 print 语句输出。需要再次提醒一下的是, 并不是所有 repr()返回的字符串都能够用eval()内建函数得到原来的对象:
>>> eval(`type(type))`)
File "<stdin>", line 1
eval(`type(type))`)
^
SyntaxError: invalid syntax
也就是说 repr() 输出对 Python 比较友好, 而 str()的输出对人比较友好。虽然如此,
很多情况下这三者的输出仍然都是完全一样的。
核心笔记:为什么我们有了 repr()还需要``?
在 Python 学习过程中,你偶尔会遇到某个运算符和某个函数是做同样一件事情。之所以如此是因为某些场合函数会比运算符更适合使用。举个例子, 当处理类似函数这样的可执行对象或根据不同的数据项调用不同的函数处理时,函数就比运算符用起来方便。另一个例子就是双星号(**)乘方运算和 pow()内建函数,x ** y 和 pow(x,y) 执行的都 是x的y次方。
译者注:事实上 Python 社区目前已经不鼓励继续使用``运算符。
2.标准类型运算符和内建函数
3.类型工厂函数
Python 2.2 统一了类型和类, 所有的内建类型现在也都是类, 在这基础之上, 原来的所谓内建转换函数象 int(), type(), list() 等等, 现在都成了工厂函数。 也就是说虽然他们看上去有点象函数, 实质上他们是类。当你调用它们时, 实际上是生成了该类型的一个实例, 就象工厂生产货物一样。 下面这些大家熟悉的工厂函数在老的 Python 版里被称为内建函数:
int(), long(), float(), complex()
str(), unicode(), basestring()
list(), tuple()
type()
以前没有工厂函数的其他类型,现在也都有了工厂函数。除此之外,那些支持新风格的类的全新的数据类型,也添加了相应的工厂函数。下面列出了这些工厂函数:
dict()
bool() set(), frozenset()
object() classmethod()
staticmethod() super()
property() file()
4.标准类型的分类
如果让我们最啰嗦的描述标准类型,我们也许会称它们是 Python 的“基本内建数据对象原始类型”。
“基本”,是指这些类型都是 Python 提供的标准或核心类型。
“内建”,是由于这些类型是 Python 默认就提供的
“数据”,因为他们用于一般数据存储
“对象”,因为对象是数据和功能的默认抽象
“原始”,因为这些类型提供的是最底层的粒度数据存储
“类型”,因为他们就是数据类型
不过, 上面这些描述实际上并没有告诉你每个类型如何工作以及它们能发挥什么作用。事实上, 几个类型共享某一些的特性,比如功能的实现手段, 另一些类型则在访问数据值方面有一些共同之处。我们感兴趣的还有这些类型的数据如何更新以及它们能提供什么样的存储。有三种不同的模型可以帮助我们对基本类型进行分类,每种模型都展示给我们这些类型之间的相互关系。这些模型可以帮助我们更好的理解类型之间的相互关系以及他们的工作原理。
相关文章推荐
- Python基础类型的基础函数总结
- 详解Python中映射类型的内建函数和工厂函数
- 详解Python中映射类型的内建函数和工厂函数
- python函数参数类型总结
- Python映射类型内建函数与工厂函数操作实例源代码
- 关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结
- python学习总结---列表、元组、字符串、字典中一些常用函数
- Python之工厂函数
- Python函数参数总结
- Python数据类型一:数字与运算符
- Python学习总结(五)——函数定义及类的定义
- 第二次作业及总结——数据类型和运算符
- python之函数的多类型传值和冗余参数【进阶篇】
- Python基础:数据类型、变量定义、输入/输出、逻辑、函数/模块(导入)/类、异常处理
- JavaScript之变量、基本类型、数组、运算符、流程控制语句、函数
- C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符. 分类: iOS学习 c语言基础 2015-06-10 21:39 25人阅读 评论(0) 收藏
- python基础:函数、占位符、运算符、序列
- Python变量、数据类型与运算符
- python变量、运算符、表达式、数据类型
- (1) Mysql ---- ABC 数据库基本操作、数据类型和运算符、函数 《MYSQL 5.5从零开始学》笔记