2012-03-10 2 views
-4

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

def color(object): 
    return '\033[1;34m'+object+'\033[1;m' 
tes = 'this must be blue' 
print color(tes) 

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

def color(object,arg2): 
    blue = '\033[1;34m'+object+'\033[1;m' 
    red = '\033[1;31m'+object+'\033[1;m' 
tes = 'this must be blue' 
tes_2 = 'i wanna this string into red!!' 
print color(tes,red) 

ну, это просто мой манекен код и который будет ошибкой, как это ..

print color(tes,red) 
NameError: name 'red' is not defined 

Можете ли вы сказать мне, как сделать хорошо функционирующая в питона ?? ти

+1

напишите 'red =' вместо 'tes_2 =' –

+0

Что вы на самом деле хотите вернуть 'color (arg1, arg2)'? –

+0

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

ответ

2

Небольшие, но основные ошибки в вашем втором блоке:

  1. Ваши аргументы object и arg2. object является зарезервированным словом python, оба слова не настолько объяснительны и (реальная ошибка), вы никогда не используете arg2 в своей функции.
  2. В функции не используется значение return.
  3. Когда вы вызываете эту функцию, вы используете color(tes,red), когда она должна быть color(tes,tes_2).

Я переписал блок, посмотрите (с некоторыми изменениями, вы можете точно настроить позже)

def color(color1,color2): 
    blue = '\033[1;34m'+color1+'\033[1;m' 
    red = '\033[1;31m'+color2+'\033[1;m' 
    return blue, red 

tes = 'this must be blue' 
tes_2 = 'i wanna this string into red!!' 
for c in color(tes,tes_2): 
    print c 

Альтернативное предложение, чтобы добиться того, что вы хотите, будет:

def to_blue(color): 
    return '\033[1;34m'+color+'\033[1;m' 

def to_red(color): 
    return '\033[1;31m'+color+'\033[1;m' 

print to_blue('this is blue') 
print to_red('now this is red') 

EDIT: в соответствии с запросом (это только начало oP. Например, вы можете использовать словарь цветовых названий и цветовых кодов для вызова функции)

def to_color(string, color): 
    if color == "blue": 
     return '\033[1;34m'+color+'\033[1;m' 
    elif color == "red": 
     return '\033[1;31m'+color+'\033[1;m' 
    else: 
     return "Are you kidding?" 
     #should be 'raise some error etc etc.' 

print to_color("this blue", "blue") 
print to_color("this red", "red") 
print to_color("his yellow", "yellow") 
+0

как насчет вызова функции в соответствии с тем, что мы хотим указать? def color (object, Второй аргумент для указания цвета, который мы хотим, например: красный): ty – user1070579

+0

очень полезно, спасибо! – user1070579

1
def color(object,arg2): 
    blue = '\033[1;34m'+object+'\033[1;m' 
    red = '\033[1;31m'+arg2+'\033[1;m' 
    return blue + red 
tes = 'this must be blue' 
tes_2 = 'i wanna this string into red!!' 
print color(tes,tes_2) 

Я думаю, вы должны посетить Python2.7 Tutorial

+0

, пожалуйста, не используйте объект как имя переменной, это встроенный. – root

1

Переменная red определяется внутри color, так что вы не можете использовать его вне color.

Вместо этого у вас есть переменные tes и tes_2, поэтому звонок color должен выглядеть как print color(tes, tes_2).

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