Comp1117_1
目录
考虑以下Python代码。如果add_item()函数被调用两次,第二次调用会打印什么?
def add_item(item,basket=[]):
basket.append(item)
print(basket)
add_item('apple')
add_item('banana')答案是[apple,banana]
注意到Lecture 5中提到
Default arguments are evaluated at definition time, not function run time.
同类型还有一道题
nums = [1, 2, 3]
for i in range(len(nums)):
nums.append(i)
print(i, end=" ")输出是?
不是无限循环!
是0 1 2啦,因为len(nums)只算一次
def update_list(data):
data.append(4)
data = [1,2]
my_list = [8,9]
update_list(my_list)
print(my_list)没搞懂的可以在pythontutor.com上跑一遍代码。
应该输出[8,9,4]而不是[1,2]
append(4)直接修改了原列表,而data = [1,2]是在函数内的局部变量赋值。
matrix = [[0]] * 3
matrix[0][0] = 5
print(matrix)是[[5],[5],[5]],而非[[0],[0],[0]]
* 操作符复制的是引用(地址)而不是对象本身
A._1_2_3
B.1_2_3_
C.A_1.com
哪个是valid的?
答案:A
在课程里提到了两次valid的问题
- 文件名
- 变量名
对于前者,结尾是.py就可以
对于后者有两项要求:
- 变量名必须以字母或者下划线开头,数字不行
- 变量名只能包含字母、数字和下划线,
.,-都不行。
一个冷知识,return多个值的时候,其实return的是元组。
评论