为了好玩/练习 python,我正在尝试创建一个显示模块内容的程序。看起来像这样:
import sys
print "Here are all the functions in the sys module: "
print dir(sys)
function = raw_input("Pick a function to see: ")
cnt = True
while cnt:
if function in dir(sys):
print "You chose:", function
cnt = False
else:
print "Invalid choice, please select again."
cnt = True
print dir("sys." + function)
但每次,无论变量 function 设置为什么字符串,dir("sys."+ function) 调用始终默认为与dir(string)(我认为是这样!)
发生了什么,有没有办法让我正确地执行此操作并获得我真正想要的输出(例如,变量 function 设置为 stdin 并且我得到了 dir(sys.stdin))?
请您参考如下方法:
您想从模块中检索实际对象;使用 getattr() function为此:
print dir(getattr(sys, function))
dir() 不会解释您传递给它的对象的内容;恰好包含与模块中函数名称相对应的值的字符串不会为您解除引用。
