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

时间:2018-12-11 08:30:13

标签: python list dictionary naming-conventions

在OOP编码中,有一个长期的命名约定来命名访问器/更改器方法get_something和set_something。它们直接访问或操纵属性。

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

例如

  1. 我有一个名为list的{​​{1}},其中包含我要阅读的书籍的名称。我想命名将新书添加到booklist中的函数。

    booklist

    booklist = ["Clean Code", "Code Complete"] def insert_book_into_booklist(new_book): booklist.append(new_book) 有更好的选择吗?就像insert_book_into_booklistappend_book_in_booklist一样?

set_booklist

  1. 我有一个名为的{​​{1}}。关键是我要阅读的书名,而值是国际标准书号(ISBN)。我想命名将新书插入dict的函数。

    booklist

    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 一样?

谢谢。

1 个答案:

答案 0 :(得分:3)

就像您提到的OOP一样,假装您的“书本”是课程的成员:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

my_url = 'https://www.cryptocompare.com/'
binary = FirefoxBinary('C:/Program Files/Mozilla Firefox/firefox.exe')
options = Options()
options.set_headless(headless=True)
options.binary = binary
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = True
driver = webdriver.Firefox(firefox_options=options, capabilities=cap, executable_path="C:/Users/Genti/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/selenium/geckodriver.exe")
driver.get(my_url)

names = [name.text.split('\n')[0] for name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, 'desktop-name')))]
prices = [price.text for price in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, 'current-price-value')))]

print(datetime.datetime.now())
for name, price in zip(names, prices):
    print(name + " - " + price)

因此,如果要将新书添加到列表中,请将方法命名为动词,以完成所需的操作,例如“ add_book”。另外,您不需要添加“ _into_booklist”,因为您的课程本身就是BookList,这足以了解将图书添加到何处:

class BookList(object):

    def __init__(self):

        self.booklist = []

此外,您可以使该方法与ISBN一起使用:

class BookList(object):

    def __init__(self):

        self.booklist = []

    def add_book(book):

        self.booklist.append(book)

另外,如Ev。 Kounis在评论中说,您可以省略方法的“ _book”部分,而仅保留“ add”,但是如果将来您的课程变得更加复杂,则此名称可能会产生歧义。例如,如果您具有“ add_books”方法,则可以稍后再添加“ add_books”方法(一次添加很多书),并且这些名称的含义很容易理解。但是,如果您将其简化为“添加”,则将不清楚该方法实际上添加了什么。