我有很多函数,其中的元素需要在它们之间进行通信,但我在如何格式化它以获得最大效率方面遇到了困境。下面是我尝试解决此问题的一些方法示例(代码只是一个示例)
fruits = "banana", "apple", "orange"
vegetable = "cucumber", "pepper", "onion"
first_name = "John"
第一种方法:在这里,我为函数提供了所有变量,它在 1 个函数下执行 3 个任务。它完成了工作,但也许我想对任务进行分段,这样如果代码更大,导航就不会变得太困难。
def preferences(first_name, last_name, what_he_likes, what_he_hates):
full_name = first_name + " " + last_name
for item in what_he_likes:
print(full_name + " likes " + item)
for item in what_he_hates:
print(full_name + " hates " + item)
preferences(first_name, "Lambert", fruits, vegetable)
第二种方法:这里我有3个独立的函数,每个函数都有自己的用途。我喜欢它,因为它更清晰,但我每次都必须传递名称。现在这很好,但你可以想象一下,对于更大的代码,我可能需要将 3-4 个变量传递到每个函数中。
def add_last_name(first_name, last_name):
full_name = first_name + " " + last_name
return full_name
def likes(name, what_he_likes):
for item in what_he_likes:
print(name + " likes " + item)
def hates(name, what_he_hates):
for item in what_he_hates:
print(name + " hates " + item)
full_name = add_last_name(first_name, "Lambert")
likes(full_name, fruits)
hates(full_name, vegetable)
第三种方法:在这个例子中,它都在一个函数下,但也许如果我知道名称总是相同的,我可以直接输入字符串,而不必传递变量。但是当我这样做时,我总是担心直接输入字符串是一种破坏性的工作方式,因为如果我需要更改它,我必须深入研究代码才能做到这一点。
def preferences_direct_name(what_he_likes, what_he_hates):
for item in what_he_likes:
print("John Lambert" + " likes " + item)
for item in what_he_hates:
print("John Lambert" + " hates " + item)
preferences_direct_name(fruits, vegetable)
我想我想知道你们喜欢如何构建代码。有时我发现自己只需要返回 1 个变量以在不同的函数中使用一次,我想知道我是否应该直接在该函数中传递字符串,这样我就不必通过返回所有这些变量来使行变得混乱,将它们作为参数传递。 另一方面,如果我有一个大函数封装了所有代码,我就不必这样做,但代码会很长且清晰度较差。 我尽力解释,欢迎任何意见。
我认为这完全取决于你想做什么。对我来说,我认为第一种方法是最干净的方法,如果您认为代码会太长或混乱,只需在代码的每个片段上添加注释即可。