当前位置: 首页 > 面试题库 >

如何使用可选参数创建Python函数?

景靖琪
2023-03-14
问题内容

我有一个带几个参数的Python函数。在某些情况下,可以忽略其中一些参数。

def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
    #code

这些参数d通过h是字符串,每个都有不同的含义。我可以选择要以任何组合形式传递的可选参数,这一点很重要。例如,(a, b, C, d, e)(a, b, C, g, h),,或(a, b, C, d, e, f,或所有它们(这些是我的选择)。

如果我可以重载该函数,那就太好了-但我读到Python不支持重载。我试图在列表中插入一些必需的int参数-并收到参数不匹配错误。

现在,我正在发送空字符串来代替前几个缺少的参数作为占位符。我希望能够仅使用实际值来调用函数。

有什么办法吗?我可以传递一个列表而不是参数列表吗?

现在,使用ctypes的原型看起来像:

_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]

问题答案:

尝试像这样调用它obj.some_function( '1', 2, '3', g="foo", h="bar" )。在所需的位置参数之后,可以按名称指定特定的可选参数。



 类似资料:
  • 问题内容: 我正在尝试创建一个以验证以下日期时间: 我已经尝试使用以下日期时间格式化程序来验证上述日期: 它适用于所有上述日期罚款,但根据我的要求就应该失败的。 注意:我知道使用以下格式化程序可以达到预期的结果: 但是我想知道,通过改变我们可以达到预期的结果吗? 为了解析日期,我使用以下方法: 问题答案: 您必须创建一个可选部分(使用和方法),该部分包含小数点后跟1至6位数字: 这将从解析,并引发

  • 问题内容: 我想将Python函数的某些参数提前“传递”给另一个函数。 这是我正在做的简化: 我不想使用某种形式的传递,以后再进行分解,因为传递给我的函数不知道传递给它。 对于小组项目来说,这有点太聪明了……是否有更直接或更Python的方法来执行此操作? 谢谢! 问题答案: 这称为currying或部分应用程序。您可以使用内置的functools.partial()。像下面这样的东西会做你想要的

  • 问题内容: 在PHP手册中,为了显示具有可选参数的函数的语法,它们在每组相关的可选参数周围使用方括号。例如,对于该功能,手册内容如下: 哪里是可选参数,当留空时,默认为函数的返回值。 在PHP中定义自定义函数时,如何创建像这样的可选参数? 问题答案: 与手册非常相似,在参数的定义中使用等号():

  • 问题内容: 我想制作一个可以使用或不使用参数的装饰器: 在我的代码中,只有使用带参数的decorator才有效:如何使两者同时起作用(带有和不带有参数)? 问题答案: 我找到一个示例,您可以使用或:不错!

  • 问题内容: 我想创建一个可以与参数一起使用的Python装饰器: 或不使用它们(例如,默认情况下将输出重定向到stderr): 那有可能吗? 请注意,我并不是在寻找重定向输出问题的其他解决方案,这只是我想要实现的语法的一个示例。 问题答案: 我知道这个问题很旧,但是有些评论是新的,尽管所有可行的解决方案本质上都是相同的,但大多数解决方案都不是很干净也不易于阅读。 就像thobe的回答所说,处理这两

  • 问题内容: 在python中,我可以定义一个函数,如下所示: 在这种情况下,我可以将func称为: 我还可以将函数定义为: 可以称为 最后,我可以结合两种形式 但是,不起作用的是调用: 我最初的想法是,这可能是因为一个函数 可以称为 因此,这将在将3打包到args还是kwargs中引入一些歧义。但是,在python 3中,可以指定仅关键字参数: 这样看来,在以下方面似乎没有语法歧义: 但是,这仍然