4-1.Python对象。与所有Python对象有关的三个属性是什么?请简单的描述一下。
身份id():每一个对象都有一个唯一的身份标识自己,所有对象的身份都可以使用内建函数id()显示。
类型type():对象的类型决定了对象可以存储什么类型的值,可以进行什么操作,遵循什么样的规则。可以使用内建函数type()
来查看对象的类型。
值:对象所表示的数据项。
4-2.类型。不可更改(immutable)指的是什么?Python的哪些类型是可更改的(mutable),哪些不是?
不可更改指的是对象创建后的值无法更新。
immutable:整型,字符串,元组
mutable:列表,字典
4-3.类型。哪些Python类型是按照顺序访问的,它们和映射类型的不同是什么?
顺序访问:列表,元组,字符串
映射类型:字典
顺序和映射的区别:顺序访问是指容器内的值从0开始索引访问,映射类型的访问通过唯一的键来找到相应的值,Python语言唯一的映射类型就是字典,字典内元素是无序排放的,它容纳的是哈希键-值对的集合。
4-4.type()。内建函数type()做什么?type()返回的对象是什么?
通过调用type()函数能够得到特定对象的类型信息。
4-5.str()和repr()。内建函数str()与repr()之间的不同是什么?哪一个等价于反引号('')操作符?
repr()是将字符串转换为合法的表达式来显示,而str()则是将字符串转换为更容易让用户理解的形式。也就是说repr()输出对python比较友好,而str()的输出对用户比较友好。
repr()与‘’等价:返回一个对象的字符串表示。
4-6.对象相等。你认为type(a) == type(b)和type(a) is type(b)之间的不同是什么?为什么会选择后者?函数isinstance()与这有什么关系?
type(a)==type(b)是一种对象值的bool比较,通过type()函数求得变量类型;type(a) is type(b)是一种对象类型比较。在进行多次比较时后者效率更高。
isinstance()内建函数用来判断两个类型是否相同等价于type(a) is type(b),但更推荐使用isinstance()函数。
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.列表和元组。列表和元组的相同点是什么?不同点是什么?
相同点:列表和元组都可以当成普通的“数组”,他能保存任意数量任意类型的python对象。和数组一样,通过从0开始的数字索引访问元素,但是列表和元组都可以储存不同类型的对象。
不同点:列表元素用中括号包裹,元素的个数及元素的值可以改变。元组元素用小括号包裹,不可以更改。元组可以看成是只读的列表。
4-9.>>> a = 10
>>> b = 10
>>> c = 100
>>> d = 100
>>> e = 10.0
>>> f = 10.0
>>> a is b
True
>>> c is d
True
>>> e is f
False
>>> id(a)
84566096L
>>> id(b)
84566096L
>>> id(e)
84627096L
>>> id(f)
84627072L