各位大大好,目前我有兩個.py檔如下:
A.py
def A_1():
x = [1,2,3]
x_1 = [3,4,5]
return x
def A_2(num):
if num == 1:
y = x * 3
elif num == 2:
y = x_1 * 3
return y
B.py
import A
x = A.A_1()
A.A_2(num=1)
error:
NameError: name 'x' is not defined
我想要在A_2這個函數使用x這個list,但python似乎讀不到這個變數。
試過在A_1中加入global,還是沒辦法。
為什麼不直接在A_2中多加一個變數去讀取list,是因為想利用num控制參數,方便使用者調用函數,另外num大概會有五種狀況,使用不同的list。
所以想請問一下,有甚麼方法能夠解決此問題?
感謝大大們抽空回答!
你的情形適合用class
把A.py改成下面就可以了
import numpy as np
class A():
def __init__(self):
self.x = None
def A_1(self):
x = np.array([1, 2, 3])
x_1 = np.array([3, 4, 5])
self.x = x
return x.tolist()
def A_2(self, num):
if num == 1:
y = self.x * 3
elif num == 2:
y = self.x_1 * 3
return y.tolist()
有更好的方式啊...
dict。
然後要list內元素都乘3,你也不一定要numpy。
[3*elm for elm in lst]
感謝 a26833765 大大,一直不是很了解class的操作,剛剛稍微review了class的用法。
問題大概能夠解決了!感謝大大!
A.py
_data = {
1: [1, 2, 3],
2: [3, 4, 5]
}
def a(num=1):
return _data.get(num, [])*3