让我们考虑以下脚本:
def a():
def b():
smth = 3
print smth
有没有办法让对象smth不是在全局范围内定义,而是在a()函数的范围内定义,尽管我们在b()函数中创建它?
类似的东西:
def a():
def b():
smth = 3
a_bit_more_global smth
print smth
原因如下:
class Blabla(object):
def __init__(self,q,w)
self.q = q
self.w=w
def a():
def b():
smth_2 = smth_1 + 1
global smth_2
smth_1 = 2
fen1 = Tk()
...
...
Button(...,command=b).grid()
my_blabla = Blabla(smth_1,smth_2)
return my_blabla
我首先不知道如何将额外的参数传递给函数b()。我终于认为我可以把b()放在一个()中。然后,同样的问题,我想使用在b()中创建的对象来创建对象my_blabla。你会如何处理这个问题?
我希望我的解释有意义!他们呢?
谢谢!
答案 0 :(得分:2)
您可以使用返回语句,例如
def a():
def b():
smth = 3
return smth
smth = b()
print smth
答案 1 :(得分:1)
正如约什所说:
替换类中的函数并将smth_2存储为self.smth_2
答案 2 :(得分:0)
不在python中。您可以使用以下
来表达它def a():
smth = []
def b():
smth = 3
if smth != []:
print smth
我强烈反对这一点,因为你打开了一系列难以修复的潜在错误。我建议您的b()
函数返回它在其他地方创建的任何内容
def b():
smth = 3
return smth
如果你绝对必须做这样的事情,我会考虑另一种语言,比如C ++,你可以动态分配smth
答案 3 :(得分:0)
一个例子等于一千个答案:
def a():
def b():
smth = 3
return smth
smth = b()
print smth