目录

COMP1117复习:第一弹


整理了一些易错点,发到博客上帮大家查缺补漏。

考虑以下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的是元组。

评论