【发布时间】:2016-07-12 08:16:32
【问题描述】:
我试图了解为什么以下工作的背景:
def part_string(items):
if len(items) == 1:
item = items[0]
def g(obj):
return obj[item]
else:
def g(obj):
return tuple(obj[item] for item in items)
return g
my_indexes = (2,1)
my_string = 'ABCDEFG'
function_instance = part_string(my_indexes)
print(function_instance(my_string))
# also works: print(part_string(my_indexes)(my_string))
为什么我可以将 my_string 传递给 function_instance 对象,即使我已经将 my_indexes 属性传递给 part_string() 创建function_instance时?为什么 Python 隐式接受 my_string?
我猜这与以下内容有关,所以这里有更多问题: g(obj) 中的 obj 是什么?这可以是其他的吗? g(stuff) (就像 self 这只是一个约定)? 如果我想将 2 个对象传递给 function_instance 怎么办?我如何在 g(obj) 中引用它们?
你能推荐一些关于这个的阅读吗?
【问题讨论】: