2013-07-08 1 views
1

Я пытаюсь передать «sys.argv [1]» в функцию.Как передать sys.argv [n] в функцию в Python

#!/usr/bin/env/ python 
import sys 
def main(): 
    test(sys.argv[1]) 
def test(sys.argv[1]): 
    print "Hello " + sys.argv[1] 

./arg.py World 

File "./arg.py", line 5 
def test(sys.argv[1]): 
      ^
SyntaxError: invalid syntax 

Не уверен, куда идти отсюда, после того, как несколько секунд перекроет Interwebs. Я также попытался установить «sys.argv [1]» в переменную и попытался передать это в функцию и все еще не помогло.

ответ

5

sys.argv[1] возвращает строку, поэтому вы не можете добавить это как параметр/аргумент.

Я не понимаю, почему вы должны были бы это, просто не ставить никаких аргументов вообще:

def test(): 
    print "Hello " + sys.argv[1] 

Вы можете также перепутались. Имена аргументов не должны совпадать с именами, которые вы использовали бы при вызове функции. Например, если у меня было n = 5, функция не должна иметь аргумент n. Это может быть что угодно.

Так что вы можете сделать:

def test(myargument): 
    print "Hello " + myargument 

Я просто хочу, чтобы дать вам быстрый немного «учебник» по аргументам.

def myfunc(): 
    print "hello!" 

Здесь у нас есть функция. Чтобы назвать это, мы делаем myfunc(), да? Когда мы делаем myfunc(), он печатает «привет!».

Вот еще одна функция:

def myfunc(word): 
    print word 

Эта функция принимает аргумент. Поэтому, когда мы это называем, у нас есть, чтобы добавить аргумент. Вот пример вызова функции:

def myfunc(word): 
    print word 

myword = 'cabbage' 
myfunc(myword) 

Обратите внимание, как 'cabbage' устанавливается в переменной myword. Это не должно совпадать с тем, что мы назвали аргументом в функции. Infact, нам даже не нужно создавать переменную, если нам нужно. Мы можем просто сделать myfunc('cabbage').

Кроме того, в этом примере вы можете вводить только один аргумент, так как когда мы def использовали функцию, мы использовали только один параметр. Если вы добавите два, вы получите что-то вроде myfunc takes one argument (two given).

Мы вызываем аргумент word, поэтому мы можем использовать его в функции. Обратите внимание, что у меня есть print word, а не print myword. Это как если бы мы сделали word = myword, но вместо этого мы используем имя аргумента.

+0

Хорошо, в основном, что я пытаюсь сделать с аргументами, проходит несколько аргументов, которые будут называться довольно много раз. Должен ли я использовать raw_input/input для установки этих переменных? – Greg

+0

@GregRobertDutertre Я думаю, что вы неправильно понимаете точку аргумента – TerryA

+0

Скорее всего. Я также думаю, что я, возможно, собираюсь переобучить Python не так. – Greg

5

Я думаю, вы неправильно поняли объявление и вызов функции. В вашей программе есть только декларация, пропуская оператор вызова. Что касается передачи параметров из командной строки, вот пример, который я предпочитаю:

import sys 
def hello(v): 
    print 'hello '+v 

def main(args): 
    hello(args[1]) 

if __name__ == '__main__': 
    main(sys.argv) 

Программа начинает выполняться с линии «если имени ==» главного 'путем вызова функции, определенные ранее и передавая sys.argv как параметр

Смежные вопросы