将上下文(没有特定类型)传递给函数的正确方法是什么? 有多种方法,每种方法都在其签名中接受上下文。每个函数都知道它应该在上下文中查找哪个变量(在下面的示例中,f1知道它应该查找" a")。我无法弄清楚如何定义上下文并为其中一个属性设置值。
我正在考虑用C背景写这个,所以在python世界中看起来有点尴尬,任何关于如何重做这整件事的建议也被接受了。在C中,应该为它可能设置的所有变量完全定义上下文。在python中,因为它是动态的,我的印象是我们不需要上下文变量的类型,但是我不确定没有定义上下文我如何设置context.a。
我想要做的简化示例如下所示:
def f1(context):
a = context.a
print "a: " + a
def f2(context):
b = context.b
print "b: " + b
context1.a = "testing1"
f1(context1)
context2.b = "testing2"
f2(context2)
答案 0 :(得分:2)
你可以定义一个"空" class,并在代码中动态地将变量添加到该类的实例中:
#!python3
class Context:
pass
def f1(context):
a = context.a
print("a:", a)
def f2(context):
b = context.b
print("b:", b)
c = Context()
c.a = 1
c.b = "alfalfa"
f1(c)
f2(c)
答案 1 :(得分:1)
Python是一种动态语言,因此您可以将任意类型作为任何参数传递,并且由函数中的代码决定是否做正确的事。