2015-10-29 9 views
2

Я продолжаю получать недопустимый синтаксис на *args.Недопустимый синтаксис рядом с * args в Python 2.7

Вот фрагмент кода:

cmd, *args = sys.argv[1:] 
globals()[cmd](*args) 

Я пытаюсь передать несколько аргументов в функции в коде.

+1

'CMD , * args = sys.argv [1:] 'определенно является синтаксической ошибкой в ​​Python 2 – vaultah

+0

Не могли бы вы уточнить? – Analytics360

+0

Обратите внимание, что 'globals [cmd] (* args)' предполагает, что вы совершаете что-то отвратительное - как только вы его заработаете, я предлагаю поездку в [codereview.se]. – jonrsharpe

ответ

3

Вы пытаетесь использовать Extended Iterable Unpacking, который доступен, начиная с Python 3.

Вы бы заменить его

cmd = sys.argv[1] 
args = sys.argv[2:] 
globals()[cmd](*args) 

, чтобы заставить его работать в Python 2.

+0

Или просто 'globals() [sys.argv [1]] (* sys.argv [2:])', если эти имена не используются повторно. – jonrsharpe

+0

Спасибо, но когда я запустил его, я получаю Keyerror: для 'globals() [cmd] (* args)' – Analytics360

+0

Возможно, потому что 'sys.argv [1]' не находится в ['globals()'] (https: // docs.python.org/3/library/functions.html#globals). @ Analytics360 – vaultah