假设我有这样的功能:
def myF(a, b):
return a*b-2*b
Run Code Online (Sandbox Code Playgroud)
假设我希望 的默认b值为a-1。
如果我写:
def myF(a, b=a-1):
return a*b-2*b
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
NameError: name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的代码:
def myF(a, b):
return a*b-2*b
def myDefaultF(a):
return myF(a, a-1)
Run Code Online (Sandbox Code Playgroud)
具有myF默认值,但我不喜欢它。
如何避免myDefaultF并使用myF默认值a-1而不出现b错误?
下面的代码打印 7+6+3 (=4) 的平方根。
import math
def notdist(*args):
return math.sqrt(sum(args))
print(notdist(7,6,3))
Run Code Online (Sandbox Code Playgroud)
我想要这样的评论:
import math
def dist(*args):
return math.sqrt(sum(args**2))
print(dist(7,6,3))
Run Code Online (Sandbox Code Playgroud)
用于计算距 O(0,0) 的距离,但这给出了错误:
** 或 pow() 不支持的操作数类型:“tuple”和“int”
我知道我可以使用另一个代码,例如:
import math
def uglydist(*args):
s = 0
for i in range(len(args)):
s = s + args[i]**2
return math.sqrt(s)
print(uglydist(3,4)) # = 5
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否是修改第一个代码的简单方法。类似于第二个代码,但正确。
提前致谢!