Python 字典或列表操作的命名约定

Python Naming Conventions for Dictionary or List Manipulations

在 OOP 编码中,有一个长期存在的命名约定来命名 accessor/mutator 方法 get_something 和 set_something。这些直接访问或操作属性。

但是,如果某些东西的类型类似于 Python 中的 dictlist,那么命名操纵函数的更好选择是什么?

例如,

  1. 我有一个名为booklistlist,里面有我想读的书名。我想命名将新书附加到 booklist 的函数。

    booklist = ["Clean Code", "Code Complete"]
    
    def insert_book_into_booklist(new_book):
        booklist.append(new_book)
    

    insert_book_into_booklist还有更好的选择吗?就像 append_book_in_booklistset_booklist?

  1. 我有一个名为 booklistdict。键是我想读的书名,值是国际标准书号 (ISBN)。我想命名将新书插入 booklist 的函数。

    booklist = {"Clean Code": "9789862017050", "Code Complete": "9789536185344"}
    
    def insert_book_into_booklist(new_book, isbn):
        if new_book not in booklist:
            booklist[new_book] = isbn
    

    insert_book_into_booklist还有更好的选择吗?就像set_booklist

谢谢。

正如您提到的 OOP,让我们假设您的 "booklist" 是 class 的成员:

class BookList(object):

    def __init__(self):

        self.booklist = []

因此,如果您想将新书添加到您的列表中,请将您的方法命名为动词,即做您需要的,例如 "add_book"。此外,您不需要添加“_into_booklist”,因为您的 class 本身就是一个 BookList,这足以理解该书将被添加到哪里:

class BookList(object):

    def __init__(self):

        self.booklist = []

    def add_book(book):

        self.booklist.append(book)

此外,您可以使此方法适用于 ISBN:

class BookList(object):

    def __init__(self):
        # creating dict, not list
        self.booklist = {} 

    def add_book(book, isbn):

        self.booklist[book] = isbn

另外,作为EV。 Kounis 在评论中说,你可以省略方法的“_book”部分,只留下 "add",但如果你的 class 将来变得更复杂,这个名字可能会产生歧义。例如,如果你有"add_book"方法,你可以在以后添加"add_books"方法(一次添加很多书),名字的含义很容易理解。但是如果你把它缩短到"add",就不太清楚了,这个方法实际上添加了什么。