我有这段代码:
def dataExtractor():
# ***
# some code here
# ***
for tr in rows:
cols = tr.findAll('td')
if 'cell_c' in cols[0]['class']:
# ***
# some code here
# ***
stringed_list_of_params = [str(i) for i in (listOfParams[1],listOfParams[3])]
numerical_list_of_codes_units = [int(i) for i in (listOfParams[0],listOfParams[2])]
numerical_list_of_rates = [float(i) for i in (listOfParams[4])]
我需要构建这个函数:
def calc():
oneCurrency = (
#digital_code[0]
numerical_list_of_codes_units[0],
#letter_code[1]
stringed_list_of_params[0],
#units[2]
numerical_list_of_codes_units[1],
#name[3]
stringed_list_of_params[1],
#rate[4]
numerical_list_of_rates
)
# ***
# some code
# ***
但我无法访问numerical_list_of_codes_units[0]
等,
如何将变量从一个函数赋予其他函数?
答案 0 :(得分:1)
你不是“给变量”,你要么:
将值(即对象)作为参数传递并返回;或
通常通过将函数收集到一个类中来共享变量。
以下是1的例子:
def dataExtractor():
return somevalue
def calc(value):
pass # do something with value
calc(dataExtractor())
这是2。:
class DataCalc(object):
def dataExtractor(self):
self.value = somevalue
def calc(value):
return self.value*2
calc = DataCalc()
calc.dataExtractor()
calc.calc()
答案 1 :(得分:-1)
您可以使用global
关键字。但是,你应该几乎总是避免使用它。当您将某个变量声明为global
时,该代码中的任何函数都可以访问它。例如 -
def f():
global a
a = 2
f()
print a
输出
2
在您的情况下,您应该在生成列表的函数的开头声明要用作全局的列表。以下应该这样做。
def dataExtractor():
global numerical_list_of_codes_units, stringed_list_of_params, numerical_list_of_rates
# ***
# some code here
# ***
for tr in rows:
# rest of the code