1

这是我的脚本:

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

def say_fruit(fruit):
    print phrase

say_fruit('orange')

我试图使用变量say_fruit内部给出的字符串,它实际上使用了之前已经分配给它的变量( )。我怎样才能做到这一点?phraseapple

4

3 回答 3

3

在您的代码中,phrase当模块加载并且永远不会更改时,它绑定到一个字符串。你需要是动态的,像这样:

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

def say_fruit(fruit):
    print phrase(fruit)

全局变量只是一个坏主意,将来会困扰您。抵制使用它们的诱惑。

于 2012-05-12T23:08:43.820 回答
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')
于 2012-05-12T23:15:39.957 回答
0

当你运行这行代码时

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

Python 自动'apple'替换fruitphrase成为" 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

于 2012-05-12T23:17:34.120 回答