使用自身值的python字典函数调用
在Python中,如何在调用同一字典中引用的函数时反引用字典的值 例如(愚蠢的):使用自身值的python字典函数调用,python,dictionary,user-defined-functions,elements,Python,Dictionary,User Defined Functions,Elements,在Python中,如何在调用同一字典中引用的函数时反引用字典的值 例如(愚蠢的): 我知道你可以在课堂上做到这一点。当然但是,你能用字典做到这一点吗?你不能在文本中做到这一点,因为当对文本进行计算时,字典还不存在。所以没有办法参考它 但是,您可以稍后插入它: >>> player = { 'x' : 0, 'y' : 22, 'z' : -37} >>> player['f'] = f1(player['x'], player['y'], player['z'
我知道你可以在课堂上做到这一点。当然但是,你能用字典做到这一点吗?你不能在文本中做到这一点,因为当对文本进行计算时,字典还不存在。所以没有办法参考它 但是,您可以稍后插入它:
>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = f1(player['x'], player['y'], player['z'])
>>> player
{'f': -0.5945945945945946, 'x': 0, 'y': 22, 'z': -37}
或者,如果它应该是动态的,您可以使用包装器。例如lambda
函数:
>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = lambda: f1(player['x'], player['y'], player['z'])
>>> player['f']()
-0.5945945945945946
>>> player['x'] = 10
>>> player['f']()
-0.8648648648648649
>>> player['x'] = 100
>>> player['f']()
-3.2972972972972974
但我想,仅仅是将
Player
制作成一个类将更具可读性,更易于维护。而且,类使这类事情变得几乎微不足道,而不需要lambda或诸如此类的东西。你不能在文本中这样做,因为在对文本求值时,字典还不存在。所以没有办法参考它
但是,您可以稍后插入它:
>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = f1(player['x'], player['y'], player['z'])
>>> player
{'f': -0.5945945945945946, 'x': 0, 'y': 22, 'z': -37}
或者,如果它应该是动态的,您可以使用包装器。例如lambda
函数:
>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = lambda: f1(player['x'], player['y'], player['z'])
>>> player['f']()
-0.5945945945945946
>>> player['x'] = 10
>>> player['f']()
-0.8648648648648649
>>> player['x'] = 100
>>> player['f']()
-3.2972972972972974
但我想,仅仅是将Player
制作成一个类将更具可读性,更易于维护。同样,类使这类事情变得几乎微不足道,而不需要lambda或类似的东西。def f1(x,y,z):
返回(x+y)/z
l=[10,4,7,f1]
l[3](l[0],l[1],l[2])def f1(x,y,z):
返回(x+y)/z
l=[10,4,7,f1]
l[3](l[0],l[1],l[2])您不能,因为所有键和值表达式都是在构造字典之前首先解析的。因此,在创建字典之前,不能引用字典中的值。此外,大多数语言都有一些特殊的关键字,如
this
或self
。Python没有。只有由于元类的缘故,self
才被正确地“注入”。大多数人把\uuuu init\uuuu
看作一个构造函数,但是通过元类可以省略\uuuu init\uuuu
。在\uuuu init\uuuu
被构造时,实例已经被构造。我不明白这个问题。我必须试一试。@jeanfrancoisfab:SaraToo在为'f'
构造值时,希望获得与'x'
键关联的th值。您不能,因为所有键和值表达式都是在构造字典之前先解析的。因此,在创建字典之前,不能引用字典中的值。此外,大多数语言都有一些特殊的关键字,如this
或self
。Python没有。只有由于元类的缘故,self
才被正确地“注入”。大多数人把\uuuu init\uuuu
看作一个构造函数,但是通过元类可以省略\uuuu init\uuuu
。在\uuuu init\uuuu
被构造时,实例已经被构造。我不明白这个问题。我必须试一试。@jeanfrancoisfab:SaraToo在为'f'
构造值时,希望获得与'x'
键关联的th值。