Python刷题复习一

1、Python严格区分大小写。

2、Python中,元组中的元素值不允许修改。

3、Python中 continue 语句跳出本句循环,但循环仍在继续;而break跳出整个循环。

4、执行下列选项的代码,输出[1, {'age': 10}]的是(D)

A:
a = [1,{'age':10}]
b = a
a[1]['age'] = 12
print(b)
B:
a = [1,{'age':10}]
b = a[:]
a[1]['age'] = 12
print(b)
C:
a = [1,{'age':10}]
b = a.copy()
a[1]['age'] = 12
print(b)
D:
import copy
a = [1,{'age':10}]
b = copy.deepcopy(a)
a[1]['age'] = 12
print(b)

对于上述代码进行解析,

ABC选项:

        列表 a 中的字典是被引用的。

        无论是直接赋值 (b = a)、切片复制 (b = a[:]),还是浅拷贝 (b = a.copy()),都会将 a 中的字典的引用赋值给 b,所以对 a[1]['age'] 的修改会影响 b。结果为 [1, {'age': 12}]。

D选项:

        使用 copy.deepcopy(a) 进行深拷贝。

         深拷贝会创建一个全新的对象,b 中的字典与 a 中的字典是独立的。 因此,修改 a[1]['age'] 不会影响 b,所以 b 仍然是 [1, {'age': 10}]。

5、执行下列程序,输出结果为()

def fun(a,*,b):
    print(b)
fun(1,2,3,4)

        执行上述代码会报错。因为函数 fun 使用了关键字参数标识符 *,这意味着参数 b 必须通过关键字传递,而不能作为位置参数传递。正确的调用方式为:

fun(1, b=2)

6、a与b定义如下,下列哪个选项是正确的? (B)

a = '123'
b = '123'

A:a != b
B:a is b
C:a == 123
D:a + b = 246

解析如下:

在 Python 中,每个对象确实都有三个基本属性:

id():对象的内存地址(唯一标识符)。
type():对象的类型。
value:对象的值。

is 和 == 的区别:

  • is:用于判断两个对象的 id 是否相同,即是否引用同一个对象。
  • ==:用于判断两个对象的 value 是否相等,即它们的值是否相同。

不可变类型(如字符串)的行为:

        在 Python 中,对于一些 不可变类型(如字符串、整数、元组),为了优化性能,Python 会进行 小对象的缓存。对于短的、常用的字符串或小的整数(通常范围在 [-5, 256] 之间的整数),可能会重用同一个对象的内存地址,因此对这些对象使用 is 比较时,可能会发现它们的 id 相同。

关于 a is b 和 a == b 的解释:

        如果 a 和 b 都是不可变类型且值相同,有时会共享内存地址,因此 a is b 可能为 True。这并不意味着所有相等的不可变类型对象都共享地址(在字符串驻留机制外的情况,内存地址可能不同)。

a == b 判断的是对象的值是否相等,不依赖于它们是否是同一个对象。

小总结:

        is 通过 id() 比较两个对象是否是同一个,== 通过 value 判断两个对象的值是否相等。

        不可变类型并不总是指向相同地址,某些情况下 Python 进行内存优化,会让相同值的不可变对象共享地址,但这并不是绝对的。

7、如下类定义,下列描述错误的是?(D)

class A(object):
    pass
 
class B(A):
    pass
 
b = B()

A:isinstance(b, A) == True
B:isinstance(b, object) == True
C:issubclass(B, A) == True
D:issubclass(b, B) == True

解析如下:

A. 因为 B 类继承自 A 类,而 b 是 B 类的实例,所以 b 也可以被认为是 A 类的实例。

B. 在 Python 中,所有类都是 object 的子类,所以 b 也是 object 的实例。

C. 因为 B 继承自 A,因此 B 是 A 的子类。

D. issubclass() 用于检查某个类是否是另一个类的子类,而不是用于实例。这里 b 是一个实例,不

能作为 issubclass() 的第一个参数。正确的使用方法是 issubclass(B, A)。

小总结:

isinstance() 函数来判断一个对象是否是一个已知的类型。

isinstance(object, classinfo);

参数: object -- 实例对象。 classinfo -- 可以是直接或间接类名、基本类型或由它们组成的元组。

如果对象的类型与参数2的类型(classinfo)相同则返回 True,否则返回 False。

issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。

issubclass(class, classinfo);

参数: class -- 类。 classinfo -- 类。

如果 class 是 classinfo 的子类返回 True,否则返回 False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值