能否将命令作为函数参数传入?Python Turtle库实现方法问询
解决方法
你的代码有两处关键问题,同时有两种可行的方式实现“将命令作为参数传递”的需求:
问题分析
pen = t.Turtle缺少实例化括号,应该写成pen = t.Turtle(),否则pen只是类对象,不是可调用的实例。- 直接写
pen.name(var)无法识别传入的命令名,Python 不会把name变量当作方法名解析,需要通过方法对象或者属性获取的方式实现。
方法一:直接传递方法对象
直接把turtle实例的方法作为参数传入函数,在函数内直接调用该方法:
import turtle as t pen = t.Turtle() # 实例化Turtle对象 def orders(cmd, var): cmd(var) # 调用传入的方法并传递参数 orders(pen.forward, 50) orders(pen.right, 90) t.done()
方法二:传递方法名字符串,通过getattr获取方法
如果需要以字符串形式传递命令名,可以用getattr()函数从实例中取出对应的方法再调用:
import turtle as t pen = t.Turtle() def orders(cmd_name, var): # 根据字符串获取pen对象的对应方法 cmd = getattr(pen, cmd_name) cmd(var) orders("forward", 50) orders("right", 90) t.done()
两种方法都能实现你期望的pen.forward(50)和pen.right(90)的执行效果。
内容的提问来源于stack exchange,提问作者Raihan Ahamad
相关产品推荐
相关产品推荐

