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

如何在python中用局部填充特定的位置参数?

仇正平
2023-03-14
问题内容

基本上,我想做的是:

>>> from functools import partial
>>> partial(str.startswith, prefix='a')('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: startswith() takes no keyword arguments

但是更普遍的问题是, 如何用填充特定的位置参数partial

PS我确实意识到我可以lambda代替使用。


问题答案:

无法完成。您必须创建包装函数。

表面上,您将尝试使用关键字参数-
这就是它们的目的,对吧?不幸的是,正如您所发现的那样,python的标准库函数没有采用命名参数。因此,在当前的实现方式partial下,如果不通过其他功能运行干扰是不可能的。

根据PEP 309的接受,接受包含的内容是“绑定 最左边
位置参数和任何关键字的partial()类型构造函数”。此外,它指出:

请注意,当对象被当作函数调用时,位置参数将 附加 到提供给构造函数的参数中,而关键字参数将覆盖并扩充提供给构造函数的参数。

在创建对象和调用对象时,可以提供位置参数,关键字参数或两者。

因为附加的位置参数被 所附 ,就没有办法提供一些前述位置参数(由此实现)。

但是,它继续:

右边 部分应用参数,或 在任意位置 插入参数都会产生其自身的问题,但是在发现良好的实现和不混淆语义的过程中,我认为不应排除它。

因此,它显然可以摆在桌面上,但就目前而言,它并不是以这种方式实现的。

为了公开起见,上面引文中的强调是我自己的。



 类似资料:
  • 我有以下示例数据框架: 我只想替换前两列中的空值——列“a”和“b”: 这是创建示例数据帧的代码: 我知道如何使用替换所有空值: 当我尝试这样做时,我失去了第三列:

  • 我正在为大学做一个项目。我刚刚学习了Java和JavaFX。 我有问题,也许有人能帮我。 有了这个小软件,你可以计划一周的任务。在tableview中,您有星期一到星期五的列。 我有一个数据库,在那里我可以获取对象“auftragsveretilung”(意思是任务,计划在特定日期)。这些对象有一个序列号(=seriennr)和一个日期(=bearbeitungsdatum)。 为了在tablev

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?

  • 问题内容: 是否可以使用CSS选择特定的网格列或行? 例如,假设我有一个3行2列的CSS网格布局:。如何从第二列中选择所有元素?例如:(仅是我的主意,无效的代码)。 我已经尝试过在元素上使用选择器,但是当网格布局引擎自动放置项目时,这不允许我指定行或列。 问题答案: CSS无法实现。 CSS针对HTML元素,属性和属性值。 网格列和行没有这些“挂钩”。 您必须直接定位网格项目。 你写了: 例如,假

  • 我需要一个帮助来定位一个JPanel在一个特定的位置到一个Jframe。 我在一个扩展JFrame的类中有一个JPanel,我需要将这个JPanel放在一个特定的x,y位置。 是这样的: 我不需要一个LayoutManager的位置的JPanel,因为我需要把JPanel在一个特定的位置(像150,150的例子)。但是如果我panel.set位置(150,150),就像上面的代码一样,什么都不会发