这是我的剧本:
fruit = "apple"
phrase = "I like eating " + fruit + "s."
def say_fruit(fruit):
print phrase
say_fruit('orange')
我正在尝试让say_fruit
使用phrase
变量中给出的字符串,该变量实际上使用之前已分配的变量(apple
)。我怎样才能做到这一点?
答案 0 :(得分:3)
在您的代码中,phrase
在模块加载时绑定到一个字符串,并且永远不会更改。你需要保持动态,如下所示:
def phrase(fruit):
return "I like eating " + fruit + "s."
def say_fruit(fruit):
print phrase(fruit)
Globals只是一个糟糕的主意,将来会困扰你。抵制使用它们的诱惑。
答案 1 :(得分: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')
答案 2 :(得分: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
的内容。