python核心编程第四章 python对象

4–1. Python 对象。与所有 Python 对象有关的三个属性是什么?请简单的描述一下。  身份,类型和值。

4–2. 类型。不可更改(immutable)指的是什么?Python 的哪些类型是可更改的 (mutable),哪些不是?

如果对象支持更新操作,那么它的值就可以改变,否则它的值也是只读的。对象的值是否 可以更改被称为对象的可改变性(mutability)

数字 Scalar 不可更改 直接访问

字符串 Scalar 不可更改 顺序访问

列表 Container 可更改 顺序访问

元组 Container 不可更改 顺序访问

字典 Container 可更改 映射访问

不可更改指的是一旦修改,原有的变量会回收,重新分配ID,然后赋新值

而可更改,赋新值后,id并不发生改变。

4–3. 类型。哪些 Python 类型是按照顺序访问的,它们和映射类型的不同是什么?

对非容器类型可以直接访问。所有的数值类型都归到这一类。

序列类型是指容器内的元素按从 0 开始的索引顺序访问。一次可以访问一个元素或多个元 素, 也就是大家所了解的切片(slice)。 字符串, 列表和元组都归到这一类

映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素 无序存放, 通过一个唯一的 key 来访问, 这就是映射类型, 它容纳的是哈希键-值对的集合。

直接访问 数字
顺序访问 字符串、列表、元组
映射访问 字典

基本数据类型5/6/7整数,列表,元组,字典

4–4. type()。内建函数 type()做什么?type()返回的对象是什么?

通过调用 type()函数你能够得到特定对象的类型 信息:

4–4. str() 和 repr()。 内建函数 str()与 repr()之间的不同是什么?哪一个等价于反 引号(``)运算符?。

内建函数 str() 和 repr() =反引号运算符(``) 可以方便的以字符串的方式获取对象的 内容、类型、数值属性等信息。str()函数得到的字符串可读性好, 而 repr()函数得到的字符 串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的。

repr() 输出对 Python 比较友好, 而 str()的输出对人比较友好

4–6. 对象相等。 您认为 type(a) == type(b)和 type(a) is type(b)之间的不同是什么? 为什么会选择后者?函数 isinstance()与这有什么关系?

print type(a) == type(b)#判断同类型对象是否相等

print type(a) is type(b) #a is b这个表达式等价于id(a) == id(b)

#我们用对象身份的比较来替代对象值的比较。如果对象是不同的,那意

#味着原来的变量一定是不同类型的。(因为每一个类型只有一个类型对象),我们就没有必要去

#检查(值)了。

if isinstance(num, int) 等价于 if type(num) is IntType

4–7. 内建函数 dir()。在第二章的几个练习中,我们用内建函数 dir()做了几个实验, 它接受一个对象,然后给出相应的属性。请对 types 模块做相同的实验。记下您熟悉的类型, 包括您对这些类型的认识,然后记下你还不熟悉的类型。在学习 Python 的过程中,你要逐步将 “不熟悉”的类型变得“熟悉”起来。
Edit By Vheavens
Edit By Vheavens

4–8. 列表和元组。列表和元组的相同点是什么?不同点是什么?

列表 Container 可更改 顺序访问

元组 Container 不可更改 顺序访问

4–9. 练习,给定以下赋值:
a = 10
b = 10
c = 100
d = 100
e = 10.0
f = 10.0 请问下面各表达式的输出是什么?为什么?

a = 1   #第一个数字对象被创建,赋值给a,是第一个对象的引用

b = 1

d = c = 10 #c和d指向相同的对象

内建”,是由于这些类型是 Python 默认就提供的

时间: 2024-10-13 19:48:20

python核心编程第四章 python对象的相关文章

python核心编程-第四章-个人笔记

1.所有的python对象都拥有三个特性: ①身份:每个对象都有唯一的身份标识自己,可用内建函数id()来得到.基本不会用到,不用太关心 >>> a = 2 >>> id(2) 39411616L >>> id(a) 39411616L 这个例子也同时说明python中赋值其实是"引用" ②类型:对象的类型决定可以保存什么类型的值.用内建函数type()可以得到对象的类型. >>> type(2) <type

python核心编程-第四章-习题

1.身份.类型.值.其中,身份是每个对象的标识,与内存地址密切相关,可用id()返回:类型决定了对象可以保存什么类型的值,用type()函数.isinstance()函数可以得到对象的类型:值就是对象表示的数据 2.不可更改指对象创建以后值不可以更新.python中,列表.字典是可更改的,数字.字符串.元组是不可更改的 3.类型 字符串.列表.元组是按照顺序访问的,也就是具有切片的特性. 映射类型(字典)类似序列的索引,但它的索引不是按顺序的数字来切片,而是通过一个唯一的键或者说关键字来访问,容

python核心编程--第六章 6.22 练习

6.22 练习 初学python,如果代码有问题,欢迎指正. #!/usr/bin/python # -*- coding: utf-8 -*- #6–1. 字符串.string 模块中是否有一种字符串方法或者函数 #可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? import string ss = "I'm chinese." substr = 'chinese' index = ss.find(substr) if index == -1: print("No

[python核心编程] 第五章练习题

第五章 数字 5-2. 操作符,写一个函数,计算并返回两个数的乘积“整理的时候才看到我把题目看成两个数的和了” 5-3. 标准类型操作符.写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F) A:90~100 B:80~89 C:70~79 D:60~69 F:<60 5-4. 取余.判断给定年份是否是闰年.使用下面的公式. 一个闰年后就是指他可以被4整除,但不能被100整除,或者它可以被400整除. [python核心编程] 第五章练习题,布布扣,bubuko.com

Python核心编程第五章习题

Python核心编程-第五章-习题 5.1  整形,讲讲Python普通整形与长整形的区别? Python的标准整形类型是最通用的数字类型.在大多数32位机器上,标准整形类型的取值范围是-2**32-2**32 - 1. Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数. 长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,3.0版本已经统一称为为整

python核心编程--第其章 7.12 练习

7.12 练习 #!/usr/bin/python # -*- coding: utf-8 -*- # 7–5. userpw2.py. 下面的问题和例题7.1 中管理名字-密码的键值对数据的程序有关. # (a) 修改那个脚本,使它能记录用户上次的登录日期和时间(用time 模块), # 并与用户密码一起保存起来.程序的界面有要求用户输入用户名和密码的提示. # 无论户名是否成功登录,都应有提示,在户名成功登录后,应更新相应用户的上次 # 登录时间戳.如果本次登录与上次登录在时间上相差不超过4

Python核心编程基础教程之Python运算符、运算符优先级、表达式简介--20150717

Python核心编程基础教程之Python运算符.运算符优先级.表达式简介 1.Python运算符与表达式: (1)认识Pyhton运算符1:什么是运算符 在Python运算中,有时候我们需要对一个或者多个数字或者一个或者多个字符串进行运算操作,*,+ (2)认识Pyhton运算符2:运算符有哪些以及运算符的使用方法 + :加 - :减 * :乘 / :除 ** :幂 < :小于 > :大于 != :不等于 // :求相除的整数部分 % :求相除的余数部分 & :按位与 | :按位或

Python核心编程_第二章课后习题

以下是自己在学习Python核心编程时,做的课后练习题.现在把它们贴出来,以记录自己的学习过程.小弟是机械出身,很多练习题目写的很是机械.虽然写出来的脚本都能满足题目要求,但效率可能不是最好的,所以,小弟还是厚着脸皮把它们给贴出来,一来可以让高手指点,二来可以与我一样在学习Python的兄弟共同学习. 以下的程序均以题目标号命名,如2-3这个题目,程序名就为2_3.py. 习题2_3.py #!/usr/bin/env python A = 10 B = 4 print "A plus B is

【7】python核心编程 第十一章-函数和函数式编程

1.*函数(与方法)装饰器 装饰器背后的主要动机源自python 面向对象编程.装饰器是在函数调用之上的修饰.这些修饰 仅是当声明一个函数或者方法的时候,才会应用的额外调用. 装饰器的语法以@开头,接着是装饰器函数的名字和可选的参数.紧跟着装饰器声明的是被修饰 的函数,和装饰函数的可选参数.装饰器看起来会是这样: @decorator(dec_opt_args) def func2Bdecorated(func_opt_args): : 那么什么是装饰器? 现在我们知道装饰器实际就是函数.我们也