2012-03-10 29 views
-4

私はPythonで2つの引数を持つ関数を呼び出す方法について質問したいと思います。たとえば、
のコードは、私は色の関数を呼び出したい例です。Pythonで2つの引数を持つ関数を呼び出す方法

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

しかし、それは単なる1つの議論のためです。 次に、2つの引数を異なる色の選択肢と共に作成したいと思います。 これは私のダミーコードの下にあります。うまく

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 

あなたがpythonでうまく機能して作成する方法を教えてもらえます? TY

+1

'tes_2 ='の代わりに 'red ='を書いてください –

+0

'color(arg1、arg2)'は何を返すのですか? –

+0

私は新しい変数を何に定義するかによって異なります。 それから出てくる色だけを2つの引数で呼び出すことができます。関数で既に定義されています。 – user1070579

答えて

2

小さいながらも根本的なエラー:

  1. あなたの引数はobjectarg2です。 objectは予約済みのPythonの単語です。両方の単語はあまり説明的ではなく、実際にはarg2をあなたの関数に使用していません。
  2. この機能では、returnの値を使用していません。
  3. この関数を呼び出すと、color(tes,tes_2)のときにcolor(tes,red)を使用します。

私はブロックを書き換えてきた、(いくつかの変更であなたは微調整をすることができ、後に)見てみ

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:要求通り(これは単なる始まりです。たとえば、色名と色コードの辞書を使用して関数を呼び出すことができます)

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(オブジェクト、希望する色を指定するための2番目の引数、例:red): 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) 

私はあなたがcolorの外にそれを使用することはできませんので、あなたは、red変数はcolorの内部で定義されてPython2.7 Tutorial

+0

オブジェクトを変数名として使用しないでください。これは組み込み関数です。 – root

1

訪問するべきだと思います。

代わりに、変数testes_2が定義されているため、colorの呼び出しはprint color(tes, tes_2)のようになります。あなたの第二のブロックで

関連する問題