Python 从列表中分离变量后引用变量

Python 从列表中分离变量后引用变量,python,Python,我要走了 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 =

我要走了

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、国家、材料等能够被公开引用。

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

print (sku+" "+country+" "+sale_price+" "+Saving())
然而,以这种方式使用全局变量通常不是一个好主意。我们希望我们的函数被封装,以便它们可以在许多程序中使用。使用globals的问题是,您必须知道该名称不会用于程序中的其他内容。如果您需要在程序之间重用代码,那么这将中断

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

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

    global sku
    sku = data[0]

.... and so on
您可能只需返回
数据
,就可以进一步简化此过程。此外,您可能希望测试
len(data)
,以确保字段数正确。

您拥有的是python作用域,
sku
,以及函数中指定的所有其他变量都是函数的局部变量。如果希望它们是全局的,则将其标记为:

print (sku+" "+country+" "+sale_price+" "+Saving())
然而,以这种方式使用全局变量通常不是一个好主意。我们希望我们的函数被封装,以便它们可以在许多程序中使用。使用globals的问题是,您必须知道该名称不会用于程序中的其他内容。如果您需要在程序之间重用代码,那么这将中断

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

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

    global sku
    sku = data[0]

.... and so on
您可能只需返回
数据
,就可以进一步简化此过程。此外,您可能希望测试
len(data)
,以确保字段数正确。

您拥有的是python作用域,
sku
,以及函数中指定的所有其他变量都是函数的局部变量。如果希望它们是全局的,则将其标记为:

print (sku+" "+country+" "+sale_price+" "+Saving())
然而,以这种方式使用全局变量通常不是一个好主意。我们希望我们的函数被封装,以便它们可以在许多程序中使用。使用globals的问题是,您必须知道该名称不会用于程序中的其他内容。如果您需要在程序之间重用代码,那么这将中断

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

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

    global sku
    sku = data[0]

.... and so on
您可能只需返回
数据
,就可以进一步简化此过程。此外,您可能希望测试
len(data)
,以确保字段数正确。

您拥有的是python作用域,
sku
,以及函数中指定的所有其他变量都是函数的局部变量。如果希望它们是全局的,则将其标记为:

print (sku+" "+country+" "+sale_price+" "+Saving())
然而,以这种方式使用全局变量通常不是一个好主意。我们希望我们的函数被封装,以便它们可以在许多程序中使用。使用globals的问题是,您必须知道该名称不会用于程序中的其他内容。如果您需要在程序之间重用代码,那么这将中断

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

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

    global sku
    sku = data[0]

.... and so on

您可能只需返回
数据
,就可以进一步简化此过程。此外,您可能希望测试
len(data)
,以确保字段数正确。

sku
仅在
CleanData
函数中定义,其范围不在该函数之外

我建议改用
dict
对象。例如:

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)
您还可以直接构造
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'])

sku
仅在
CleanData
功能中定义,其范围不在该功能之外

我建议改用
dict
对象。例如:

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)
您还可以直接构造
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'])

sku
仅在
CleanData
功能中定义,其范围不在该功能之外

我建议改用
dict
对象。例如:

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)
您还可以直接构造
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'])

sku
仅在
CleanData
功能中定义,其范围不在该功能之外

我建议改用
dict
对象。例如:

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)
您还可以直接构造
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'])

谢谢,迪克特正是我需要的谢谢,迪克特正是我需要的谢谢,迪克特正是我需要的谢谢,迪克特正是我需要的