4-1
- ID值 内存的地址值,可以有id( ) 函数查看
- 类型 每种Python对象都有一种类型,可由 type( )函数查看
- 值 对象的数据项
4-2
不可更改指的是Python某个对象的值经过改变后就不是原来的对象
不可更改: 数值、字符串、元组
可更改: 列表、字典
4-3
直接存储: 数值
顺序:字符串、列表、元组
映射:字典
映射的访问下标可以是任意的类型,而顺序访问的类型下标只能是数值索引
4-4
type()函数查看Python对象的类型,返回的对象是 type类型对象
4-5
查阅资料
尽管str(),repr()和``运算在特性和功能方面都非常相似,
事实上repr()和``做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求值运算(使用内建函数eval())重新得到该对象。
但str()则有所不同,str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适合用于print语句输出。
需要再次提醒的是,并不是所有repr()返回的字符串都能够用 eval()内建函数得到原来的对象。 也就是说 repr() 输出对 Python比较友好,而str()的输出对用户比较友好。
虽然如此,很多情况下这三者的输出仍然都是完全一样的。
4-6
== 与 is 的区别就像是 Java中 equals()方法与 == 的区别,一个是判断值,一个是判断 内存地址(即是否是同一对象)
但是!我在题目中看不出有什么区别,都用type() 函数得到是类型对象,这个跟 判断又没关系
比如说,
>>> a = '1'
>>> b = '2'
>>> type(a) == type(b)
True
>>> type(a) is type(b)
True
isinstance() 函数 与 type( )函数的区别
一个明显的区别是在判断子类。
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
class Foo(object):
pass
class Bar(Foo):
pass
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
输出:
True
False
True
4-7
>>> import types
>>> dir(types)
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>>
4-8
列表与元组
相同:访问模式相同 都是顺序访问,存储模式都容器类型
不同:更新模式不同,列表是可更新的,元组是不可更新的
4-9
交互环境中
>>> a = 10
>>> b =10
>>> c = 100
>>> d = 100
>>> e = 10.0
>>> f = 10.0
>>> id(e)
41743560
>>> id(f)
41743544
>>> a is b
True
>>> c is d
True
>>> e is f
False
>>> x = 10.0;y = 10.0
>>> x is y
True
编辑器中
__author__ = 'Yuriy'
a = 10
b = 10
c = 100
d = 100
e = 10.0
f = 10.0
print a is b
print c is d
print e is f
True
True
True
原因暂时不知。只有引用 该博客中的解释,http://www.cnblogs.com/CaiBaoZi/archive/2013/06/13/3134261.html
网友评论