我有一个用Python无法解决的问题。这个问题甚至很难说出来,所以请看下面的例子。
phoneBook = {"Joe":12, "Jason":13, "Johnny":14}
for i in range(0, len(dir(phoneBook))):
if "__" not in dir(phoneBook)[i]:
print(help(phoneBook.dir(phonebook)[i]) + "\n\n")
我想要做的是为每个不包含下划线的dir()条目打印help()方法。 (即,调用dir(phoneBook)返回清除,复制,fromkeys,get,item等)。我希望help()方法然后打印dir()返回的每个值,如上面的for循环所示。但是,如果我使用上面显示的语法,则会收到语法错误。此原理还有其他应用,这是我可以想到的一个简单示例。
提前致谢。
最佳答案
这是一个工作版本:
phoneBook = {"Joe": 12, "Jason": 13, "Johnny": 14}
for method_name in dir(phoneBook):
if "__" not in method_name:
help(getattr(phoneBook, method_name))
更多细节:
您的代码没有语法错误。并非每个错误都是语法错误。
最后,您写了
phonebook
而不是phoneBook
。phoneBook.dir
没有任何意义。help
进行打印并返回None
,因此仅help(...)
就足够了,而help(...) + '...'
将失败并且不需要print(help(...))
。dir(phonebook)[i]
出现两次,dir(phonebook)
三次。使用变量!使用更好的for循环!您很少需要
for i in range(...)
,通常可以直接在事物上进行迭代。如果要在每种方法的帮助后打印空白行或其他内容,只需
print('\n\n')
。help(method)
不起作用,因为例如,如果method
是'clear'
,那么它将是help('clear')
,并且由于没有简单地称为clear
的内置函数不提供任何内容。换句话说,您需要帮助phoneBook.clear
,而不仅仅是clear
。要动态获取phoneBook.<method name here>
,请使用getattr(phoneBook, method)
。关于python - 在Python中使用字符串作为函数的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49206388/