python错题(三)

print('\n'.join(['a', 'b', 'c']))

join会把换行符当成普通连接字符进行连接,通过换行连接,因此

a
b
c
for i in range(5):
    if i == 2:
        pass
    print(i)

pass是空语句,是为了保持程序结构的完整性,不做任何事情,一般用做占位语句

因此程序打印的数字为 0,1,2,3,4,注意range(5) 生成的列表是从0开始到4,不包含5。

def outer(fn):

    print('outer')

    def inner():

        print('inner')

        return fn

    return inner

@outer

def fun():

    print('fun')

装饰器的一个关键特性是,它在被装饰函数定义后被立即执行,因此运行装饰函数outer,输出结果为outer,内部函数inner没有调用,不会输出任何结果,被装饰函数同样也不会运行,

写法如:    fun = outer(fun)

因此会执行print ('outer')输出一个outer

return inner没有(),所以不会输出inner

如果调用它

if __name__ == '__main__':
    fun()

输出结果将是

outer

inner

如果将return inner加上()再调用它

if __name__ == '__main__':
    fun()

dicts = {}
dicts[([1, 2])] = 'abc'
print(dicts)

字典的键要求可哈希,而list不可哈希,题目中()不能直接将list转成元祖,要使用tuple来转。

当代码变为

dicts = {}
dicts[tuple([1, 2])] = 'abc' 
print(dicts)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值