在 Python 中,函数可以按如下方式访问模块变量:
def pow(a):
return a**b
a = 3
b = 2
print(pow(a))
Run Code Online (Sandbox Code Playgroud)
这被认为是不好的做法吗?
明显的替代方案是将所有参数显式传递给函数:
def pow(a, b):
return a**b
a = 3
b = 2
print(pow(a, b))
Run Code Online (Sandbox Code Playgroud)
我使用第一种形式来限制传递给函数的参数数量,我想知道这是否被认为是不好的做法。
考虑下面的虚拟示例:
def common_divisors_generator(n, m):
# Init code
factors_n = [i for i in range(1, n + 1) if n%i == 0]
factors_m = [i for i in range(1, m + 1) if m%i == 0]
# Iterative code
for fn in factors_n:
for fm in factors_m:
if fn == fm:
yield fn
# The next line is fast because no code is executed yet
cdg = common_divisors_generator(1537745, 373625435)
# Next line is slow because init code is executed on first …Run Code Online (Sandbox Code Playgroud)