これは私のスクリプトです:
fruit = "apple"
phrase = "I like eating " + fruit + "s."
def say_fruit(fruit):
print phrase
say_fruit('orange')
say_fruit
変数内で指定された文字列を使用しようとしていphrase
ますが、実際には以前に割り当てられた変数を使用しています( apple
)。どうすればこれを達成できますか?
コードでphrase
は、モジュールのロード時に文字列にバインドされ、変更されることはありません。次のように、動的にする必要があります。
def phrase(fruit):
return "I like eating " + fruit + "s."
def say_fruit(fruit):
print phrase(fruit)
グローバルは、将来あなたを悩ませる悪い考えです。それらを使用したいという誘惑に抵抗してください。
それで、あなたが欲しいのはこれですよね?
>>> say_fruit('orange')
I like eating oranges.
>>> say_fruit('apples')
I like eating apples.
その場合、phrase の定義を関数に移動します。最終結果は次のようになります。
def say_fruit(fruit):
phrase = "I like eating " + fruit + "s."
print phrase
say_fruit('orange')
このコード行を実行すると
phrase = "I like eating " + fruit + "s."
Python は自動的に を代入'apple'
しfruit
、 にphrase
なり" I like eating apples."
ます。
.format()
読みやすさを維持するため、これを使用することを好みます。
fruit = "apple"
phrase = "I like eating {fruit}s."
def say_fruit(fruit):
print phrase.format(fruit=fruit)
say_fruit('orange')
.format()
呼び出されたとき{var}
の内容で置き換えます。var