首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的相互排除参数

Python中的相互排除参数
EN

Stack Overflow用户
提问于 2022-01-02 13:21:55
回答 2查看 40关注 0票数 0

定义依赖于相互排除的参数的函数的最佳方法是什么,即一次只需要指定一个参数的参数集。一个简单的例子是一个函数,它以一个物理参数作为输入,比如频率。现在我希望用户能够直接指定频率或波长,这样他们就可以同样地调用。

代码语言:javascript
运行
复制
func(freq=10)
func(wavelen=1).

一种选择是kwargs,但是是否有更好的方法(例如,关于docstring)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-02 13:32:01

假设所有可能的参数名称都已知,那么使用默认的None如何?

代码语言:javascript
运行
复制
def func(freq=None, wavelen=None):
   if freq:
       print(freq)
   elif wavelen:
       print(wavelen)

使用elif,您可以优先考虑哪个参数更重要并首先考虑。如果提供了多个参数,也可以编写返回错误的代码,使用xor:

代码语言:javascript
运行
复制
def func(freq=None, wavelen=None):
   if not(freq ^ wavelen):
       raise Exception("More than one argument was passed")
   if freq:
       print(freq)
   elif wavelen:
       print(wavelen)
票数 1
EN

Stack Overflow用户

发布于 2022-01-02 13:37:59

既然计算将是不同的,那么为什么不将函数名称的这一部分设置为两个不同的函数(而不是一组ifs):

代码语言:javascript
运行
复制
def funcWavelen(w):
    ...

def funcFreq(f):
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70556319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档