小编Kώσ*_*δας的帖子

Python:函数的默认值作为函数参数

假设我有这样的功能:

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错误?

python arguments default function user-defined-functions

4
推荐指数
1
解决办法
1500
查看次数

平方“*args”的简单方法

下面的代码打印 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)

但我想知道这是否是修改第一个代码的简单方法。类似于第二个代码,但正确。

提前致谢!

python arguments list

-3
推荐指数
1
解决办法
82
查看次数