2013-12-25 3 views
0

Это работает в контексте урока [Codecademy].Python - Передача нескольких аргументов

n = ["Michael", "Lieberman"] 
    # Add your function here 
def join_strings(lst): 
    concat = "" 
    for string in lst: 
     concat += string 
    return concat 

Однако, когда я делаю это в очередной Python, вне среды Codecademy, и я передать несколько аргументов в функции, она возвращает ошибку. Мне было интересно, как убедиться, что параметр функции является списком. Таким образом, я могу передать сколько угодно аргументов, и функция просто поймет, что это список.

Примечание. Я не хочу делать это с помощью *args или чего-то подобного. Я просто задавался вопросом, есть ли способ передать фактический список в функцию.

Не могли бы вы сделать что-то вроде словаря?

+1

Но это то, что '* args' для. В противном случае вы передаете один список, как и вы. –

+0

Что случилось с 'join_strings (n)'? –

+0

Это единственный способ сделать это тогда? Или фактически передайте список в самой функции, как @rednaw сделал ниже? Или ... определение ваших списков как переменных, а затем передача переменных в функцию? Я предполагаю, что в будущем мне, возможно, придется обновить это, чтобы вместо этого принять произвольный аргумент. Но спасибо всем за комментарии. Здесь начинается программист. – user3072758

ответ

0

Чтобы передать список функции:

join_strings(["Michael", "Lieberman"]) 
0

Использование asteric оператор -

def join_strings(*lst): 

Ваша функция будет интерпретировать позиционные параметры как список

+1

Он будет интерпретировать его как 'tuple' на самом деле. –

+0

@brunodesthuilliers Вы правы – volcano

0

Вы можете передать список в качестве аргумента к функции, например, в вашей программе, вы можете передать список, подобный этому

n = ["Michael", "Lieberman"] 
join_strings(n) 

Приведенный выше код передает список n в join_strings функции

Чтобы проверить, является ли переданный аргумент список или нет, вы можете иметь условие проверки, как этот

def join_strings(lst): 
    if isinstance(lst, list): 
     #do something 
    else: 
     # do something else 

в приведенном выше коде isinstance() метод используется чтобы проверить, включен ли переданный аргумент

+0

Это не плохой ответ сам по себе, но искатель хотел знать, может ли функция быть написана так, чтобы было задано несколько аргументов, а затем интерпретировано как список. – SimonT

0

Прошу прощения, ребята, видимо, я сделал что-то не так, когда я печатал его в Терминале или что-то в этом роде. Или, возможно, способ, которым Sublime (используется) взаимодействует с предустановленным материалом Python на Mavericks. Теперь он отлично работает, от Sublime и от терминала. Я действительно не знаю, какова была первоначальная проблема или откуда она исходила.

- Набрав код, так как у меня это было в первый раз, я дал мне именно то, что хотел, а затем я изменил его, чтобы добавить пробел между строками concat.

def join_strings(lst): 
    concat = "" 
    for string in lst: 
     concat += (string + " ") 
    return concat 

Спасибо за помощь. Извините за беспокойство. :)

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