python - 关于函数调用的问题
问题描述
def test1(): a = 1 b = 2 def test2(): c = 3 d = c + a print(d)test2这边想实现下面的test2调用上面test1里面的数据,要怎么实现,使用的是python3
问题解答
回答1:首先,你这种需求是不可能且不合理的,两个分立的函数不可能相互访问里面的变量的
如果用闭包倒是可以做到,不过不知道是不是你想要的:
def test1(): a = 1 b = 2 def test2():c = 3d = c + aprint(d) return test2test2 = test1()test2()回答2:
可以将test1封装为一个类
#-*-coding:utf8-*-class test1(): '''docstring for test1''' def __init__(self):self.a=0self.b=0self.test1() def test1(self):self.a=1self.b=2test = test1()def test2(): c=3 d=c+test.a print (d)test2()
初始化可以放在你想调用的位置,并且在初始化的时候默认调用了test1()方法,这样就可以通过类的对象访问数据了。
回答3:可以让test1用return来返回a和b的值:
def test1(): a = 1 b = 2 return a,bdef test2(): c = 3 a,b = test1() d = c + a print(d)test2()回答4:
哈哈,都是人才,闭包、封类、明确返回,以上每一个都是独立的解决办法。
相关文章:
1. python - 如何解决程序运行太久之后被操作系统暂停的情况?2. 闯关的第二个问题的答案是错的吧?3. javascript - sublime怎么支持webp的浏览?4. mysql 能不能创建一个 有列级函数 的联合视图?5. html5 - 为什么浏览器可以显示HTML文档中未被定义的标签?6. python - pig latin问题 总是出现list/string index out of range7. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。8. PhpStudy8.0 CPU过高9. javascript - 图片能在网站显示,但控制台仍旧报错403 (Forbidden)10. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决

网公网安备