python课后题答案第四章_Python核心编程课后习题-第四章

本文探讨了Python中对象的类型、标识符以及可变性。解释了type()和is的区别,强调了isinstance()在判断继承关系时的特殊性。此外,还介绍了id()函数用于查看内存地址,以及列表、元组、字符串等类型的存储和访问模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值