本篇文章给大家带来的内容是关于python面试题总结(附答案),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
1、下面这段代码的输出结果是什么?请解释。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
def extendList(val, list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3
怎样修改extendList的定义能够产生以下预期的行为?CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
上面代码输出结果将是:CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
很多人都会误认为list1=[10],list3=["a’],因为他们以为每次extendList被调用时,列表参数的默认值都将被设置为[].但实际上的情况是,新的默认列表只在函数被定义的那一刻创建一次。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
当extendList被没有指定特定参数list调用时,这组list的值随后将被使用。这是因为带有默认参数的表达式在函数被定义的时候被计算,不是在调用的时候被计算。因此list1和list3是在同一个默认列表上进行操作(计算)的。而list2是在一个分离的列表上进行操作(计算)的。(通过传递一个自有的空列表作为列表参数的数值)。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
extendList的定义可以作如下修改。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
尽管,创建一个新的列表,没有特定的列表参数。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
下面这段代码可能能够产生想要的结果。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
def extendList(val, list=None):
if list is None:
list = []
list.append(val)
return list
通过上面的修改,输出结果将变成:CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
list1 = [10]
list2 = [123]
list3 = ['a']
2、下面这段代码的输出结果将是什么?请解释。CPS少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
def multipliers():
return [lambda x : i * x for i in range(4)]
print [m(2) for m in multipliers()]
你如何修改上面的multipliers的定义产生想要的结果?CPS少儿编程网-Scratch