0

我有这个代码:

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]等,如何将变量从一个函数传递给另一个函数?

4

2 回答 2

1

你不“给出变量”,你要么:

  1. 将值(即对象)作为参数传递并返回;或者

  2. 共享变量,通常是通过将函数集合到一个类中。

这是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()
于 2013-11-10T22:40:58.247 回答
-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
于 2013-11-10T22:37:22.017 回答