Questions tagged «optional-arguments»

21
namedtuple和可选关键字参数的默认值
我正在尝试将冗长的空心“数据”类转换为命名元组。我的班级目前看起来像这样: class Node(object): def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right 转换为namedtuple它后看起来像: from collections import namedtuple Node = namedtuple('Node', 'val left right') 但是这里有一个问题。我的原始类允许我只传递一个值,并通过对named / keyword参数使用默认值来处理默认值。就像是: class BinaryTree(object): def __init__(self, val): self.root = Node(val) 但这在我的重构命名元组的情况下不起作用,因为它希望我传递所有字段。我当然可以替换Node(val)to 的出现,Node(val, None, None)但是这并不是我喜欢的。 那么,是否存在一个可以使我的重写成功而又不增加很多代码复杂性(元编程)的好技巧,还是我应该吞下药丸并继续进行“搜索并替换”?:)

2
如何使用可选参数创建Python函数?
我有一个带几个参数的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, …


6
LaTeX可选参数
如何在LaTeX中创建带有可选参数的命令?就像是: \newcommand{\sec}[2][]{ \section*{#1 \ifsecondargument and #2 \fi} } } 然后,我可以这样称呼它 \sec{Hello} %Output: Hello \sec{Hello}{Hi} %Output: Hello and Hi


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.