Why is this not working? All variables below in print statement evaluate to None.
def assign(data):
first=middle=last=suffix=None
sep = ','
fields = ['last','first','middle','suffix']
a = data
for name in fields:
if a:
a, *b = a.split(sep)
print('intermediate: ', a, b)
if a:
locals()[name] = a
a = None
if b:
a = sep.join(b)
print('first %s middle %s last %s suffix %s ', first, middle, last, suffix)
if __name__ == "__main__":
data = 'Jon, Bon, Jovi'
assign(data)
Edit 1
Evan asked so posting non working code below. Caveat: I fully understand now that there is no good reason to have varying variables ;)
def assign(data):
first=middle=last=suffix=None
sep = ','
fields = ['last','first','middle','suffix']
a = data
for name in fields:
if a:
a, *b = a.split(sep)
print('intermediate: ', a, b)
if a:
#locals()[name] = a
exec('%s = a' % name)
a = None
if b:
a = sep.join(b)
print('first %s middle %s last %s suffix %s ', first, middle, last, suffix)
if __name__ == "__main__":
data = 'Jon, Bon, Jovi'
assign(data)