什么时候应该使用函数?

若昂·佩德罗·洛佩斯·门德斯

我想知道什么时候应该使用函数,因为我看到很多人制作函数来继续代码而不是解析参数并返回结果。

我的意思是这样的功能:

def foo():
   print("How are you?")

print("Hi.")
foo()

(这段代码是无意义的,不切实际的。只是一个例子。)

为什么我们要使用函数而不是将代码放在一个连续的地方?

蒂格布

什么更容易阅读和维护?

版本 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)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么时候应该使用iter函数?

来自分类Dev

什么时候应该使用invokeCFClientFunction()函数?

来自分类Dev

什么时候应该添加“&”,什么时候不应该使用C语言调用函数?

来自分类Dev

什么时候在函数前使用const,什么时候不应该使用

来自分类Dev

什么时候应该使用多个构造函数?

来自分类Dev

什么时候应该使用存储过程或函数?

来自分类Dev

什么时候应该使用多个构造函数?

来自分类Dev

可变参数函数-什么时候应该使用&& ... vs&...?

来自分类Dev

函数什么时候应该内联?

来自分类Dev

我什么时候应该使用`sparse`?

来自分类Dev

什么时候应该使用静态方法?

来自分类Dev

什么时候应该使用“ .Value”

来自分类Dev

什么时候应该使用atexit()?

来自分类Dev

什么时候应该使用JetCreator或SoundPool?

来自分类Dev

什么时候应该使用deinit?

来自分类Dev

什么时候应该使用const&?

来自分类Dev

什么时候应该使用LinearSVC或SVC?

来自分类Dev

什么时候应该使用Firebase Transactions

来自分类Dev

我什么时候应该使用EventEmitter?

来自分类Dev

什么时候应该使用“ ngProjectAs”属性?

来自分类Dev

什么时候应该使用呢?

来自分类Dev

我什么时候应该使用.copy()

来自分类Dev

什么时候应该使用并行编程?

来自分类Dev

什么时候应该使用subshell与`xargs`?

来自分类Dev

什么时候应该使用atexit()?

来自分类Dev

什么时候应该使用RequireJS?

来自分类Dev

什么时候应该使用deinit?

来自分类Dev

什么时候应该使用<或<()或<<和>或>()?

来自分类Dev

我什么时候应该使用GROUP BY?