码迷,mamicode.com
首页 > 其他好文 > 详细

面试题需要注意的坑

时间:2018-11-03 01:59:08      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:def   col   语法   append   end   没有   class   面试   pen   

# 坑1fromkeys:
# fromkeys():生成新字典 语法dict.fromkeys()
# d = {}
# d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# y = d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# print(d)  #  输出结果 {}  因为fromkeys会生成新列表对原列表无影响
# print(y)  # ({jay: None, JJ: None}, [周杰伦, 林俊杰]) 生成新字典

# d = dict.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# d.get("jay").append("杨千嬅")
# print(d)  # {jay: [周杰伦, 林俊杰, 杨千嬅], JJ: [周杰伦, 林俊杰, 杨千嬅]} # 因为jay 和 jj对应的value是同一个列表,当列表发生改变自然都会改变
# 代码中只是更改了jay那个列表. 但是由于jay和JJ?的是同?个列表. 所以. 前?那个改了. 后
# ?那个也会跟着改

# 坑2
# 函数是以代码的形式存储,用起来的时候在赋值运算
# 在获取数据的时候,注意n到底是几
def add(a, b):
    return a + b
def test():
    for r_i in range(4):
        yield r_i
g = test()
for n in [2, 10]:
    g = (add(n, i) for i in g)
print(list(g))
# print(list(g)) 相当于 g = (add(n, i) for i in add(n, i) for i in test())
# 结果[20, 21, 22, 23]

# 坑3
# def extendList(val, list=[]):
#     list.append(val)
#     return list
# list1 = extendList(10)   # [10,a]
# list2 = extendList(123, []) # [1,2,3]
# list3 = extendList(a)  # [10, a]
#
# print(list1=%s % list1)
# print(list2=%s % list2)
# print(list3=%s % list3)
# 结果
# list1=[10, a]
# list2=[123]
# list3=[10, a]
# 此题关键在于list = [],[]为默认值参数当没有传入元素时都是公用同一个list = []
# 此空列表的内存地址是相同的所以当后面的list3在list = []加入一个a时list1结果也跟着改变

 

面试题需要注意的坑

标签:def   col   语法   append   end   没有   class   面试   pen   

原文地址:https://www.cnblogs.com/pythonz/p/9899012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!