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. android - 用textview顯示html時如何寫imagegetter獲取網絡圖片2. css3 - css怎么實現圖片環繞的效果3. 在mac下出現了兩個docker環境4. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?5. css - 定位為absolute的父元素中的子元素 如何設置在父元素的下面?6. JavaScript事件7. 注冊賬戶文字不能左右分離8. javascript - jquery hide()方法無效9. html - vue項目中用到了elementUI問題10. 網頁爬蟲 - 用Python3的requests庫模擬登陸Bilibili總是提示驗證碼錯誤怎么辦?
