Я хочу передать все аргументы argv функции. Я создал этот код, но он дает мне ошибку. Как узнать, как сделать эту работу? Большое спасибо за вашу помощь.
if __name__ == "__main__":
import sys
createP(sys.argv[1:])
def createP( a, b, c):
print a + b + c
Я запускаю это приложение с помощью командной строки:
python filename.py d e f
Возвращение:
NameError: name 'createP' is not defined
Вы вызываете createP
прежде чем определять его. Вы также передаете ему неправильное количество аргументов; вам нужно расширить массив:
def createP( a, b, c):
print a + b + c
if __name__ == "__main__":
import sys
createP(*sys.argv[1:])
Вы должны изменить порядок, как уже сказано.
И чтобы отобразить переменную длину argv, вы должны написать:
def createP(*x):
print '\n'.join(x)
# or ' '.join(x) if you prefer
if __name__ == "__main__":
import sys
createP(*sys.argv[1:])
Я полагаю, что все элементы sys.argv являются строками. Я прав?
Ну, мой ответ немного глуп; почему следующий код (без * для передачи аргументов и для определения параметров) не был бы удобен? :
def createP(x):
print '\n'.join(x)
# or ' '.join(x) if you prefer
if __name__ == "__main__":
import sys
createP(sys.argv[1:])
Попробуйте переключить порядок между определением и if
.