Хранение списка переменных в виде строки и сохранение ее в качестве переменной - PullRequest
0 голосов
/ 08 января 2010

Я пытаюсь ввести элементы списка в строку. Затем я хочу сохранить строку как переменную и распечатать ее в другой функции. Код, который я получил до сих пор:

def b(): 

    ID = [0, 1, 2]
    ID2 = 'ID={0}.{1}.{2}'.format(*ID) 
    return ID2 

if __name__ == '__main__': ID2 = b() 


def c(ID2): 
    print ID2 

if __name__ == '__main__': myObject = c(ID2) 

Вывод, который я получаю:

[0, 1, 2] 

Любая помощь будет оценена. Спасибо

Я возвращал список, а также ID2. Это было причиной проблемы. Извините за это.

Код сейчас работает. Спасибо

Ответы [ 4 ]

3 голосов
/ 08 января 2010

Как насчет этого:

>>> ''.join([str(x) for x in [1, 2, 3]])
'123'
2 голосов
/ 08 января 2010
  1. Вероятно, у вас не должно быть глобальных имен переменных, соответствующих именам параметров вашей функции. Это законно, но очень, очень запутанно. И отладочный кошмар.

  2. Вы, вероятно, не должны использовать ВСЕ ВЕРХНИЕ ПЕРЕМЕННЫЕ ИМЕНА. Он выглядит странно и делает ваш код трудным для чтения опытными программистами Python.

  3. Вероятно, у вас не должно быть нескольких if __name__ == "__main__" разделов. Это очень, очень запутанный и отладочный кошмар.

Я подозреваю, что эти "косметические" проблемы затрудняют понимание того, что на самом деле не так с вашей программой.

def b(): 
    id = [0, 1, 2]
    aString = 'ID={0}.{1}.{2}'.format(*id) 
    return aString 

def c(id2): 
    print id2 

if __name__ == '__main__': 
    someString = b() 
    myObject = c(someString) 

Возможно, вам будет немного легче отлаживать.

Мой вывод.

ID=0.1.2

КСТАТИ. Ваша функция c всегда возвращает None. Так что myObject = c(someString) не имеет большого смысла.

2 голосов
/ 08 января 2010

Если вы хотите изменить [0,1,2] на «0.1.2» (как строка версии в ваших предыдущих вопросах), вы можете сделать это следующим образом.

>>> '.'.join(map(str,[0, 1, 2]))
'0.1.2'
1 голос
/ 08 января 2010
def b():
    ID = [0, 1, 2]
    ID2 = ('ID=%d.%d.%d' % tuple(ID))
    return ID2

if __name__ == '__main__': ID2 = b()

def c(ID2):
    print ID2

if __name__ == '__main__': myObject = c(ID2)

работает для меня, у меня нет под рукой python3, поэтому не могу попробовать с синтаксисом .format ().

Однако myObject = c(ID2) не имеет смысла, функция c () ничего не возвращает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...