作业 1
Q1:简述Python垃圾回收机制
当变量值的引用计数为0的时候,python会自动回收该变量值的占用
(Python使用引用计数机制作为垃圾回收的主要方式,当一个对象的引用计数降到0时,Python会自动释放它所占用的内存。除了引用计数,Python还使用标记-清除(mark-sweep)和分代回收(generation)算法来处理循环引用的情况。)
Q2:分析下述代码
①
x = 10
y = 10
z = 10
del y
10的引用计数为2
②
x = 257
y = x
del x
z = 257
x对应的变量值257在执行del x后的引用计数为1,但在执行z = 257后,其引用计数可能为1或者2,取决于Python解释器是否决定复用已有的整数对象
Q3:简述Python小整数池概念
范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收,其是避免因创建相同的值而重复申请内存空间所带来的效率问题
Q4:对于x = 10,请用Python代码分别打印变量值、变量值内存地址和变量数据类型
x = 10
print(x)
print(id(x))
print(type(x))
Q5:分析如下程序
x = 257
y = x
z = 257
请判断x、y、z的变量值是否相同?x、y、z的所在的内存地址是否相同?请用python代码阐述为什么?
x = 257
y = x
z = 257
print(x == y == z) # 检查变量值是否相同,应该输出True
print(id(x), id(y), id(z)) # 打印内存地址
print(id(x) == id(y)) # x和y的内存地址是否相同,应该输出True
print(id(x) == id(z)) # x和z的内存地址是否相同,输出可能为False
Q6:简述Python的五大数据类型的作用、定义方式、方法
Python的五大数据类型是数字(Number)、字符串(String)、列表(List)、字典(Dictionary)和布尔(Boolean)类型。它们各自的作用、定义方式和方法如下:
数字类型(Number)
- 作用:用于存储数值,包括整型(int)、浮点型(float)、复数(complex)等。
- 定义方式:
- 整型:
num = 10 - 浮点型:
num = 10.5 - 复数:
num = 3.14j
- 整型:
- 方法:数字类型提供了多种运算符进行数学计算,如
+、-、*、/等,以及内置函数如abs()、divmod()、pow()、round()等。
字符串类型(String)
- 作用:用于存储文本数据,可以包含字母、数字、符号和空格。
- 定义方式:使用单引号、双引号或三引号定义字符串。
- 单引号:
s = 'hello' - 双引号:
s = "hello" - 三引号:
s = """hello"""或s = '''hello'''
- 单引号:
- 方法:字符串类型有很多方法,例如
upper()、lower()、join()、split()、replace()、find()、format()等。
列表(List)
- 作用:列表是一个有序的集合,可以包含不同类型的元素,包括数字、字符串、甚至其他列表。
- 定义方式:使用方括号
[]定义列表,并用逗号分隔其中的元素。- 例子:
lst = [1, 'a', 3.14, [2, 'b']]
- 例子:
- 方法:列表提供了多种方法,如
append()、extend()、insert()、remove()、pop()、sort()、reverse()等。
字典(Dictionary)
- 作用:字典是一个无序的键值对集合,键必须是唯一的,而值不必。
- 定义方式:使用大括号
{}定义字典,并用冒号:分隔键和值,逗号,分隔不同的键值对。- 例子:
dct = {'name': 'Alice', 'age': 25, 'is_student': True}
- 例子:
- 方法:字典提供了多种方法,如
get()、items()、keys()、values()、update()、pop()、popitem()等。
布尔型(Boolean)
- 作用:布尔型用于表示逻辑值,只有两种值:
True和False,通常用于条件判断和循环控制。 - 定义方式:直接使用
True或False赋值。- 例子:
is_valid = True
- 例子:
- 方法:布尔型没有特殊的方法,但可以参与逻辑运算符如
and、or、not等的运算。
这些基本类型是Python中构建更复杂数据结构和进行数据操作的基础。每种类型都提供了丰富的方法,以便高效地进行数据处理和操作。
Jupyter快捷键
* shift+enter 运行
* ese 退出代码块
* b 往下扩展代码块
* a 往上扩展代码块
* y 代码模式
* m markdown模式
* dd 删除代码块

浙公网安备 33010602011771号