2012-05-12 5 views
1

Это мой сценарий:Замена переменных в Python

fruit = "apple" 
phrase = "I like eating " + fruit + "s." 

def say_fruit(fruit): 
    print phrase 

say_fruit('orange') 

Я пытаюсь получить say_fruit использовать строку, заданную внутри phrase переменной, которая фактически использует переменную уже назначенный перед тем ему (apple). Как я могу это достичь?

ответ

3

В вашем коде phrase привязан к строке, когда модуль загружается и никогда не изменяется. Вы должны быть динамичными, как это:

def phrase(fruit): 
    return "I like eating " + fruit + "s." 

def say_fruit(fruit): 
    print phrase(fruit) 

Глобал просто плохая идея, которая будет преследовать вас в будущем. Не поддавайтесь искушению использовать их.

+0

Запуск, который дал мне <функциональную фразу на 0x0000000001DA8518> '. Что это? – Markum

+0

Нет, нет. Повторите попытку, но убедитесь, что вы копируете/вставляете код из вопроса. –

+2

Вы забыли добавить() в конце своей функции. – SomeKittens

0

Итак, что вы хотите, так?

>>> say_fruit('orange') 
I like eating oranges. 
>>> say_fruit('apples') 
I like eating apples. 

Если да, переместите определение фразы в функцию. Конечный результат должен быть что-то вроде:

def say_fruit(fruit): 
    phrase = "I like eating " + fruit + "s." 
    print phrase 

say_fruit('orange') 
0

При выполнении этой строки кода

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 при вызове.

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