我想知道什么时候应该使用函数,因为我看到很多人都在继续编写代码而不是解析参数并返回结果。
我的意思是这些功能:
def foo():
print("How are you?")
print("Hi.")
foo()
(这段代码是无意义且不实用的。这只是一个例子。)
为什么我们应该使用函数而不是仅仅将代码放在一个连续的位置?
答案 0 :(得分:4)
什么更容易阅读和维护?
版本1:
db = init_database()
connect_to_database(db)
target = 'funny_cats'
cats = db.fetch(target)
第2版:
5000 lines of code resembling the bodies of the above function calls
什么更容易阅读和维护?
版本1:
for user in lots_of_users:
if not polite(user):
ban(user)
第2版:
for user in lots_of_users:
30 lines of code for body of polite
30 lines of code for body of ban
请考虑您要在程序的不同位置执行相同的代码。
some_function()
[100 lines]
some_function()
[100 lines]
[conditional branch possibly calling some_function()]
使用某个功能,您只需在所需位置调用该功能即可。没有函数,您需要在任何地方复制代码。如果要更改这些代码块的行为,则必须查找复制代码的所有位置,而不是仅调整一个函数。如果您错过了一个位置,则会引入错误。
函数是Python中的第一类对象,因为它们的行为与任何其他更琐碎的对象一样 - 这可以将它们放在列表中,或者将它们用作其他函数的参数。
这允许您将函数视为可以由其他代码段动态执行的自包含代码片段,例如通过将排序标准传递给内置的sorted
函数。
>>> def criterion(sequence):
... return sequence[-1]
...
>>> list_of_sequences = [(1, 2), (5, -1), (2, 10)]
>>>
>>> sorted(list_of_sequences, key=criterion)
[(5, -1), (1, 2), (2, 10)]