我有一个功能,我想根据模式采用不同的形式。我应该将定义包含在 if 语句中还是应该将 if 放在定义中?
# Case 1
if mode == 1:
def f(x):
return x + 5
else:
def f(x):
return x - 5
# Case 2
def f(x):
if mode == 1:
return x + 5
else:
return x - 5
Run Code Online (Sandbox Code Playgroud)
我过去都做过,我的静态代码分析工具似乎没有抱怨。所以我想知道是否有 Pythonic 推荐?
编辑:从目前的评论来看,这两种情况似乎都可以接受。这取决于用例。如果模式旨在保持不变,则首选情况 1。如果不是,则情况 2。
EDIT2:这个问题实际上是在我编写函数时出现的。它接受模式作为输入,并根据模式执行类似的操作,除了它使用单独在这些操作的函数中定义的不同子函数。由于子函数在函数运行期间保持不变,情况 1 似乎更合适。
EDIT3:更正:过去,我认为 PyLint 对案例 1 不满意。这些天,我使用 PyCharm 并且似乎没有标记案例 1 的任何问题。
小智 3
取决于你想用它做什么。它们都可以以有用的方式使用。比较两个例子:
1.
Mode = 1
Number = 0
def f(x):
global Mode
if Mode == 1:
Mode = 0
return x + 5
else:
Mode = 1
return x - 5
for i in range(0,5):
Number += f(i)
Run Code Online (Sandbox Code Playgroud)
相对:
2.
Mode = 1
Number = 0
if Mode == 1:
def f(x):
return x + 5
else:
def f(x):
return x - 5
for i in range(0,5):
number += f(i)
Run Code Online (Sandbox Code Playgroud)
当您想要在代码运行时在模式之间切换时,第一个示例是最好的。如果您只想要其中之一,则第二个最适合。第一个函数始终会给出答案 15,因为模式在运行时会发生变化。但是,第二个函数将为您提供 35 或 -15 的输出,具体取决于您首先设置的模式。
| 归档时间: |
|
| 查看次数: |
12488 次 |
| 最近记录: |