我有一个用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/

10-12 05:48