网站首页 > 基础教程 正文
9个棘手的Python问题,我相信大多数读者在不作弊的情况下,至少无法正确回答其中7个问题。我想让你证明我错了。
作弊意味着:运行代码,查找东西等,你得到它
我们走吧
1)装饰器的东西
def add(符号):
def wrapper1(func):
def wrapper2(*args, **kwargs):
返回func(*args,**kwargs)+符号
退货包装1
@add('!!')
def hello(名称):
返回“你好”+姓名
打印(你好('汤姆'))
打印了什么?
- A) hello tom
- B) hello tom!
- C)hello tom!!
- D)<function add.<locals>.wrapper1.<locals>.wrapper2 at 0x1053c1080>
- E)TypeError: ‘NoneType’ object is not callable
- F)SyntaxError: iterable argument unpacking follows keyword argument unpacking
2)一些神奇的方法
狗类:
def __init__(自我,名称):
self.name = 名称
def __getattr__(自我,密钥):
归还“苹果”
def __getattribute__(自我,密钥):
返回“橙色”
def __getitem__(自我,密钥):
返回“pear”
狗=狗('rocky')
打印(狗名)#??
这个打印的是什么?
- A)'rocky'
- B)'apple'
- C)'orange'
- D)'pear'
- E)出现语法
- F)发生KeyError
3)一群星星
x = [*[1,2]*2*3]
打印(x)
打印x是做什么的?
- A)语法错误
- B)ValueError:值太多,无法解压
- C)[1, 2, 2, 3]
- D)[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
- E)[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
- F)[[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]]
4)列出理解诡计
出来 = []
对于我在[1,2,3]:
行 = []
对于j在[4,5,6]:
row.append(i+j)
out.append(行)
哪个列表理解与上述相同?
- A)out = [[i+j for j in [4,5,6]] for i in [1,2,3]]
- B)out = [[i+j for i in [4,5,6]] for j in [1,2,3]]
- C)out = [i+j for i in [4,5,6] for j in [1,2,3]]
- D)out = [i+j for j in [1,2,3] for i in [4,5,6]]
- E)out = [i+j for i,j in zip([1,2,3], [4,5,6])]
- F)out = [[i,j] for i,j in enumerate(zip(*[1,2,3], *[4,5,6]))]
5)切换诡计
a,b,c,d = 1,2,3,4
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
打印(a、b、c、d)
这里印了什么?
- A)1 2 3 4
- B)2 3 4 1
- C)3 4 1 2
- D)4 1 2 3
- E)4 3 2 1
- F)1 4 3 2
6)Lambda函数
哪个lambda函数无效?
- A)lambda a, b, c: [*(a, b, c)]
- B)lambda *a, **b: print(a, b)
- C)lambda **b, *a: print(a, b)
- D)lambda a, b: map(int, [a, b])
- E)上述所有lambda函数
- F)上面没有lambda函数
7)班神诡计
狗类:
def __getattr__(自我,密钥):
返回狗()
def __getitem__(自我,密钥):
返回0
狗=狗()
以下哪个选项会导致错误?
- A)dog._.__._.___._.__._______._.___._____.__
- B)dog.狗.狗.狗.狗.狗.狗.狗.狗.狗.狗.狗
- C)dog.狗.狗['apple 3.14159']
- D)dog.__123._1234.___654
- E)dog[dog]
- F)dog.14_._14.14_._14
8)-
x = -1-2----3----4-----5
打印(x)
当我们打印x时会发生什么?
- A)语法错误
- B)操作员错误
- C)缩进错误
- D)内存错误
- E)-1
- F)-3
9)Bitwise Shenanigans
x = 9
x = ~~~~x << 5 >> 2 << 5 >> 8 | 9 & 9 ^ 16 ^ 16
打印(x)
当我们打印x时会发生什么?
- A)0
- B)-9
- C)9
- D)25
- E)零分区错误
- F)语法错误
警告——答案如下
一定要花点时间试试这些,尽量不要作弊!
以下是答案
1)装饰器的东西
def add(符号):
def wrapper1(func):
def wrapper2(*args, **kwargs):
返回func(*args,**kwargs)+符号
退货包装1
@add('!!')
def hello(名称):
返回“你好”+姓名
打印(你好('汤姆'))
打印了什么?
- A) hello tom
- B) hello tom!
- C)hello tom!!
- D)<function add.<locals>.wrapper1.<locals>.wrapper2 at 0x1053c1080>
- E)TypeError: ‘NoneType’ object is not callable
- F)SyntaxError: iterable argument unpacking follows keyword argument unpacking
答案:E)TypeError:NoneType对象不可调用
请注意,在wrapper1中,wrapper2返回。因此,默认情况下,callingwrapperwrapper1返回None。这就是为什么我们有NoneType object is not callable
2)一些神奇的方法
狗类:
def __init__(自我,名称):
self.name = 名称
def __getattr__(自我,密钥):
归还“苹果”
def __getattribute__(自我,密钥):
返回“橙色”
def __getitem__(自我,密钥):
返回“pear”
狗=狗('rocky')
打印(狗名)#??
这个打印的是什么?
- A)'rocky'
- B)'apple'
- C)'orange'
- D)'pear'
- E)出现语法
- F)发生KeyError
答案:C)“橙色”
- __getattr__当我们dog.key和key不存在时,定义行为
- __getattribute__定义我们dog.key时的行为,无论密钥是否存在。这覆盖了__getattr__
- __getitem__定义我们dog[key]时的行为,这不被使用
3)一群星星
x = [*[1,2]*2*3]
打印(x)
打印x是做什么的?
- A)语法错误
- B)ValueError:值太多,无法解压
- C)[1, 2, 2, 3]
- D)[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
- E)[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
- F)[[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]]
答案:E
x = [*[1,2]*2*3]
= [* ([1,2]*2*3) ]
= [* ([1,2,1,2]*3) ]
= [* [1,2,1,2,1,2,1,2,1,2,1,2] ]
= [1,2,1,2,1,2,1,2,1,2,1,2]
^第一个*解包,而后一个*乘以
4)列出理解诡计
出来 = []
对于我在[1,2,3]:
行 = []
对于j在[4,5,6]:
row.append(i+j)
out.append(行)
哪个列表理解与上述相同?
- A)out = [[i+j for j in [4,5,6]] for i in [1,2,3]]
- B)out = [i+j for i,j in [i for i in [[1,2,3],[4,5,6]]]]
- C)out = [i+j for i in [4,5,6] for j in [1,2,3]]
- D)out = [i+j for j in [1,2,3] for i in [4,5,6]]
- E)out = [i+j for i,j in zip([1,2,3], [4,5,6])]
- F)out = [[i,j] for i,j in enumerate(zip(*[1,2,3], *[4,5,6]))]
答案:A
B、E和F是胡说八道。C和D不会产生嵌套列表。
5)切换诡计
a,b,c,d = 1,2,3,4
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
a,b,c,d = b,c,d,a
打印(a、b、c、d)
这里印了什么?
- A)1 2 3 4
- B)2 3 4 1
- C)3 4 1 2
- D)4 1 2 3
- E)4 3 2 1
- F)1 4 3 2
答案:A)1 2 3 4
a, b, c, d = 1, 2, 3, 4 # a=1 b=2 c=3 d=4
a, b, c, d = b, c, d, a # a=2 b=3 c=4 d=1
a, b, c, d = b, c, d, a # a=3 b=4 c=1 d=2
a, b, c, d = b, c, d, a # a=4 b=1 c=2 d=3
a, b, c, d = b, c, d, a # a=1 b=2 c=3 d=4
每次我们a, b, c, d = b, c, d, a,我们把a,b,c,d的值向右移动一步。但如果我们做4次,我们就会回到圆圈1, 2, 3, 4
6)Lambda函数
哪个lambda函数无效?
- A)lambda a, b, c: [*(a, b, c)]
- B)lambda *a, **b: print(a, b)
- C)lambda **b, *a: print(a, b)
- D)lambda a, b: map(int, [a, b])
- E)上述所有lambda函数
- F)上面没有lambda函数
答案:C
当我们定义函数(这包括lambda函数)时,任何*args必须在任何**kwargs之前定义。在C中,**b在*a之前定义,所以这是错误的。
7)班神诡计
狗类:
def __getattr__(自我,密钥):
返回狗()
def __getitem__(自我,密钥):
返回0
狗=狗()
以下哪个选项会导致错误?
- A)dog._.__._.___._.__._______._.___._____.__
- B)dog.狗.狗.狗.狗.狗.狗.狗.狗.狗.狗.狗
- C)dog.狗.狗['apple 3.14159']
- D)dog.__123._1234.___654
- E)dog[dog]
- F)dog.14_._14.14_._14
答案:F
- A)由于__getattr__返回另一个Dog对象,无论我们使用多少.__等,我们都会继续获得Dog对象
- B)与A相同,但只是使用中文Unicode字符——这是一个有效的变量名
- C)与A相同。但我们最后是dog[key],所以我们得到了0
- D)与A相同。变量名可以以__开头并包含数字
- E)这将简单地返回0
- F)变量名不能以数字开头。所以这是错误的
8)-
x = -1-2----3----4-----5
打印(x)
当我们打印x时会发生什么?
- A)语法错误
- B)操作员错误
- C)缩进错误
- D)内存错误
- E)-1
- F)-3
答案:F
x = -5 # x 是 -5
x = --5 # x 是 5
x = ---5 # x 是 -5
x = ----5 # x 是 5
x = -----5 # x 是 -5
^添加更多-在5之前只会不断翻转其符号,因为负5等于5。
x = -1-2----3----4-----5
= -1-(-2)-(--3)-(---4)-(----5)
= -1-(-2)-(3)-(-4)-(5)
= -1+2-3+4-5
= -3
9)Bitwise Shenanigans
x = 9
x = ~~~~x << 5 >> 2 << 5 >> 8 | 9 & 9 ^ 16 ^ 16
打印(x)
当我们打印x时会发生什么?
- A)0
- B)-9
- C)9
- D)25
- E)零分区错误
- F)语法错误
答案:C)9
- ~~x翻转x两次,所以~~x等于x
- ~~~~x因此也等于x
- x << 5 >> 2 << 5 >> 8左移x乘5,右移x乘2,左移x乘5,右移x乘8。这对x没有任何影响,所以在这种情况下,x将保持为9
- 9 | 9只会给我们9
- 9 & 9只会给我们9
- 9 ^ 16(XOR操作员)将给我们25
- 但如果我们XOR两次,我们会拿回9
- (9 ^ 16) ^ 16会再次给我们9
结论
你设法在没有作弊的情况下正确回答了其中多少个?
- 如果你设法正确回答了所有问题,那就干得好!
- 如果你设法至少正确回答了7个,那还是做得很好!
- 否则,没关系——这并不意味着你不擅长Python
希望你尝试这些问题时玩得开心!
- 上一篇: python魔法函数__call__你不知道的秘密
- 下一篇: Python常用内置对象的几种类型
猜你喜欢
- 2024-11-18 Python函数工具类 functools 完全指南
- 2024-11-18 Python常用内置对象的几种类型
- 2024-11-18 python魔法函数__call__你不知道的秘密
- 2024-11-18 Python中命名规范之三 duner方法和魔法函数
- 2024-11-18 写 Python 代码不可不知的函数式编程技术
- 2024-11-18 python第八讲函数式编程python高阶函数#程序员
- 2024-11-18 python语言的匿名函数、7种可调用对象以及用户定义的可调用类型
- 2024-11-18 Python线程池之ThreadPoolExecutor详解
- 2024-11-18 Python之鸭子类型:函数是对象,对象也可以像函数一样使用
- 2024-11-18 Python之面向对象:万类霜天竞自由
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)