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。