易错题

def num():
    return [lambda x:i*x for i in range(4)]
i = 5
print([m(2) for m in num()])

 

3.1 下面代码的输出结果将是什么?(2018-3-30-lxy)
1. list = ['a', 'b', 'c', 'd', 'e']
2. print list[10:]
下面的代码将输出[],不会产生IndexError错误。就像所期望的那样,尝试用超出成员的个数的index
来获取某个列表的成员。
例如,尝试获取 list[10]和之后的成员,会导致 IndexError。
然而,尝试获取列表的切片,开始的 index 超过了成员个数不会产生 IndexError,而是仅仅返回一
个空列表。这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致 bug 很难被追踪到。
 
3.7 下面这段代码的输出结果是什么?请解释?(2018-4-16-lxy)
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)
输出结果:
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
新的默认列表只在函数被定义的那一刻创建一次。当 extendList 被没有指定特定参数 list 调用时,这组 list 的值
随后将被使用。这是因为带有默认参数的表达式在函数被定义的时候被计算,不是在调用的时候被计算。
 
下列代码的输出结果是?
 
def num():
    return [lambda x:i*x for i in range(4)]
i = 5
print([m(2) for m in num()])

 输出

[6,6,6,6]

 

转载于:https://www.cnblogs.com/ryxiong-blog/p/11354959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值