2024-10-03 11:14:14 发布
网友
这不是什么大问题,但它困扰着我,所以我决定寻求灵感。在
假设函数定义如下:
def store(book=None, author=None): pass
当像这样调用此函数时:
我会因为book=book和{}而害怕副作用吗?我倾向于重新定义函数
book=book
def store(thebook=None, theauthor=None): pass
但似乎有点冗长。有什么建议吗?在
首先,说store(book=book, author=author)没有歧义或副作用。解释器可以区分参数名和一般名。在
store(book=book, author=author)
现在,关于您问题的第二部分,我认为您不应该更改函数参数的名称:毕竟,store()在一般意义上是从book和author执行它的工作。在
store()
book
author
但是,局部变量可能更精确地表示它们包含的内容。他们可能不会引用任何书籍或作者,而是指具有特定特征的书籍或作者,例如,当前的书籍或畅销书的作者。在
所以,如果你想消除名字的歧义,我建议你改名局部变量。在
你不会有副作用。这在语义上和你刚才打电话没有什么不同
store(book, author)
这些值存储在函数作用域内的新变量中,并遵循所有常规的python作用域规则。在
如果需要的话,关键字参数可以让您自由地使用其他更具体的变量名。名称book和{}非常通用,这在函数中是合适的,它们应该是可重用的,因此更抽象一些。但是在调用范围内使用更具体的名称可能是合适的。从这个角度看,thebook和{}与{}和{}没有什么不同;你应该做一些更像——比如说local_book或{}——或者更准确地描述这本书的任何东西。在
thebook
local_book
没有,不会有任何副作用。在
调用函数的变量的名称空间和调用函数的参数的名称空间是分开的,不能相互影响。在
首先,说
store(book=book, author=author)
没有歧义或副作用。解释器可以区分参数名和一般名。在现在,关于您问题的第二部分,我认为您不应该更改函数参数的名称:毕竟,
store()
在一般意义上是从book
和author
执行它的工作。在但是,局部变量可能更精确地表示它们包含的内容。他们可能不会引用任何书籍或作者,而是指具有特定特征的书籍或作者,例如,当前的书籍或畅销书的作者。在
所以,如果你想消除名字的歧义,我建议你改名局部变量。在
你不会有副作用。这在语义上和你刚才打电话没有什么不同
这些值存储在函数作用域内的新变量中,并遵循所有常规的python作用域规则。在
如果需要的话,关键字参数可以让您自由地使用其他更具体的变量名。名称}非常通用,这在函数中是合适的,它们应该是可重用的,因此更抽象一些。但是在调用范围内使用更具体的名称可能是合适的。从这个角度看,}与{}和{}没有什么不同;你应该做一些更像——比如说}——或者更准确地描述这本书的任何东西。在
book
和{thebook
和{local_book
或{没有,不会有任何副作用。在
调用函数的变量的名称空间和调用函数的参数的名称空间是分开的,不能相互影响。在
相关问题 更多 >
编程相关推荐