使用一个函数修改另一个函数的值
题目:1创建一个魔术师列表,并使用函数show_magicians()将每个魔术师其打印出来附上我写的代码:
magicians = ['david', 'Louis Liu', 'annie']
def show_magicians(magician):
for magician in magicians:
print(magician)
show_magicians(magicians)
题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改,在每个魔术师的名字中都加入‘the great’的字样调用函数show_magicians(),确认魔术师列表已经改变
magicians = ['david', 'Louis Liu', 'annie']
parameters = []
def make_great(magicians,parameters):
while magicians:
parameter = magicians.pop() + 'the great'#这里因为我想的是magicians.pop()返回值+ 'the great',变成的一个新的元素并将这个新的元素重新赋值给parameter。
parameters.append(parameter)#将新的元素增加到列表中
magicians = parmeters#将magicians重新赋值,但打印之后感觉并没有赋值成功
---------------------------------------------------------------------------
show_magicians(make_great(magicians,parameters))#发帖之前才想出来 ...(将函数作为参数这是我之前没想到的)
之前的思路一直是修改magicians列表,似乎代码写错了
希望各位大佬改进下我写的代码,太丑了。。。。。。
本帖最后由 永恒的蓝色梦想 于 2020-4-19 17:44 编辑
def make_great(magicians) :
length=len(magicians)
while length:
magicians='the great'+magicians
length-=1
def show_magicians(magicians) :
print(*magicians,sep='\n') def make_great(magicians, parameters) :
temp = []
for magic in magicians:
temp.append(magic+ " " +parameters)
return temp
本帖最后由 李青山 于 2020-4-19 17:30 编辑
永恒的蓝色梦想 发表于 2020-4-19 13:41
感谢大佬的回答,但是打印出来仍是
david
Louis Liu
annie
运行了以下代码:
magicians = ['david', 'Louis Liu', 'annie']
# parameters = []
def make_great(magicians):
length = len(magicians)
while length:
magicians = 'the great' + magicians
length -= 1
def show_magicians(magicians):
print(*magicians, sep='\n')
show_magicians(magicians) 李青山 发表于 2020-4-19 17:28
感谢大佬的回答,但是打印出来仍是
david
Louis Liu
你根本就没有调用 make_great 啊,怎么可能会改呢?
不过之前的 make_great 有点小问题,这里给出新的def make_great(magicians) :
length=len(magicians)
while length:
magicians='the great '+magicians
length-=1 永恒的蓝色梦想 发表于 2020-4-19 17:49
你根本就没有调用 make_great 啊,怎么可能会改呢?
不过之前的 make_great 有点小问题,这里给出新的
make_great 没有返回值 怎么操作print? jkluoling1992 发表于 2020-4-19 19:22
make_great 没有返回值 怎么操作print?
题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改 永恒的蓝色梦想 发表于 2020-4-19 19:31
show_magicians(make_great(magicians,parameters))
这个表达,,把你的函数带进去能实现吗? jkluoling1992 发表于 2020-4-19 19:48
show_magicians(make_great(magicians,parameters))
这个表达,,把你的函数带进去能实现吗?
题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改所以这么调用也可以make_great(magicians)
show_magicians(magicians) 本帖最后由 Stubborn 于 2020-4-19 23:39 编辑
from functools import wraps
def set_magicians(func):
@wraps(func)
def wrapper(*args, **kwargs):
magicians = args if args else kwargs.get("magicians")
magicians = ["this is "+ x for x in magicians]
func(magicians)
return wrapper
magicians = ['david', 'Louis Liu', 'annie']
@set_magicians
def show_magicians(magicians):
for magician in magicians:
print(magician)
show_magicians(magicians)
可以使用装饰器,非常强大的功能
简单一点的,就这样咯
magicians = ['david', 'Louis Liu', 'annie']
def show_magicians(magicians):
for magician in magicians:
print(magician)
def set_magicians(arg, callback):
arg = ["the great "+ x for x in arg]
callback(arg)
set_magicians(magicians, show_magicians)
页:
[1]