将变量与列表分开后引用变量

时间:2015-06-19 16:23:59

标签: python

string

我正在

input = "12345_usa_wool_10x10_100_80.jpg"

def CleanData(input):
    data = input.split('_')

    sku = data[0]
    country = data[1].capitalize()
    material = data[2].capitalize()
    size = data[3]
    retail_price = data[4]
    sale_price = data[5]

CleanData(input)
print (sku)
print (country)

我尝试将所有值存储在我创建的列表中,以便以后轻松引用它们。

如果他们想要总节省,我可以在以后制作像

这样的东西
NameError: name 'sku' is not defined

所以我稍后可以得到类似的最终输出:

def Saving()
    total_saving = retail_price-sale_price
    return total_saving

我是初学者和自学者,所以我认为这不是一个问题,但我不知道如何让sku,国家,材料等公开引用。

2 个答案:

答案 0 :(得分:2)

sku仅在CleanData函数中定义,它没有该函数之外的作用域。

我建议改用dict对象。如,

def parseData(input):
    data = input.split('_')
    d = {}
    d['sku'] = data[0]
    d['country'] = data[1].capitalize()
    d['material'] = data[2].capitalize()
    d['size'] = data[3]
    d['retail_price'] = data[4]
    d['sale_price'] = data[5]
    return d

myData = parseData(input)
print(myData['sku'])
print(myData['country'])

您也可以直接构建dict

def parseData(input):
    data = input.split('_')
    d = {'sku': data[0],
         'country': data[1].capitalize(),
         'material': data[2].capitalize(),
         'size': data[3],
         'retail_price': data[4],
         'sale_price': data[5]}
    return d

答案 1 :(得分:1)

你所拥有的是python 范围sku,以及函数中分配的所有其他变量,都是函数的本地变量。如果您希望它们是全局的,请将它们标记为:

def CleanData(input):
    data = input.split('_')

    global sku
    sku = data[0]

.... and so on

但是,以这种方式使用全局变量通常不是一个好主意。我们希望我们的函数被封装,以便它们可以在许多程序中使用。使用全局变量的问题在于您必须知道该名称不会用于程序中的其他内容。如果您需要跨程序重用代码,那么这将破坏。

解决方案是返回某种容器。例如,它可以是字典,列表或元组。以下是使用元组的示例:

def CleanData(input):
    data = input.split('_')

    # sku, country, material, size, retail_price, sale_price 
    return (data[0], 
            data[1].capitalize(),
            data[2].capitalize(),
            data[3],
            data[4],
            data[5])

sku, country, material, size, retail_price, sale_price = CleanData(input)
print (sku)
print (country)

您可以通过返回data来进一步简化此操作。此外,您可能希望测试len(data)以确保您拥有正确数量的字段。