Python,可变长度位置参数之后的默认关键字参数

2023-11-26

我以为我可以在 Python 2 中的函数调用中的可变长度位置参数之后使用命名参数,但我得到了SyntaxError导入 python 类时。我正在使用以下“get”方法编写,例如:

class Foo(object):
    def __init__(self):
        print "You have created a Foo."

    def get(self, *args, raw=False, vars=None):
        print len(args)
        print raw
        print vars

错误看起来像:

def get(self, *args, raw=False, vars=None):
                     ^
SyntaxError: invalid syntax

我希望能够通过多种方式调用该方法:

f = Foo()
f.get(arg1, arg2)
f.get(arg1, raw=True)
f.get(arg1, arg2, raw=True, vars=something)

etc.


它确实有效,但仅限于 Python 3。请参阅 PEP3102。从浏览“新增内容”文档来看,似乎没有 2.x 向后移植,所以你运气不好。您必须接受任何关键字参数(**kwargs)并手动解析它。您可以使用d.get(k, default)要么得到d[k] or default如果那不存在的话。从中删除参数kwargs,例如在调用超类的方法之前,使用d.pop.


请注意,在def get(self, *args, raw=False, vars=None):, the raw=False and vars=None与关键字参数无关。这些是默认参数值。具有默认值的参数可以按位置传递,没有默认值的参数可以通过关键字传递:

def f(a=1): pass
f(2)  # works, passing a positionally
def f(a): pass
f(a=2)  # works, passing a by keyword

同样,仅关键字参数不需要具有默认值。即将到来之后*args参数是将它们标记为仅关键字,而不是存在默认值:

def f(*args, a): pass
# a is a mandatory, keyword-only argument
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python,可变长度位置参数之后的默认关键字参数 的相关文章

  • Python 异常 - args 属性如何自动设置?

    假设我定义了以下异常 gt gt gt class MyError Exception def init self arg1 pass 然后我实例化该类以创建异常对象 gt gt gt e MyError abc gt gt gt e ar
  • 在 Django 中获取数据库类型[重复]

    这个问题在这里已经有答案了 我需要能够确定 Django 运行时使用的数据库类型 MYSQL False if
  • 顶级棉花糖模式验证

    From 棉花糖 validation http marshmallow readthedocs org en latest quickstart html validation 我知道我可以在架构中的特定字段上注册验证器 如果验证器失败
  • 如何使 Django ManyToMany “直通”查询更加高效?

    我使用的是 ManyToManyField 和 through 类 这会在获取事物列表时产生大量查询 我想知道是否有更有效的方法 例如 这里有一些描述书籍及其几位作者的简化类 它们通过角色类 定义 编辑器 插画家 等角色 class Per
  • sphinx 中的分组方法文档字符串

    是否可以使用 sphinx 的 autodoc 功能将多个方法文档字符串分组 以便将它们列在一起 class Test object def a self A method of group foo def b self A method
  • Highcharts 奇怪的分组行为

    我正在使用延迟加载 http www highcharts com stock demo lazy loading加载 OHLC 数据的方法 在服务器端 我使用 Python MySQL 并有 4 个包含 OHLC 数据的表 时间间隔为 5
  • 将分布拟合到直方图

    I want to know the distribution of my data points so first I plotted the histogram of my data My histogram looks like th
  • 覆盖现有的 django-admin 命令

    除了编写自定义 django admin 命令之外 这是有详细记录的 https docs djangoproject com en 1 9 howto custom management commands 我希望能够覆盖现有命令 例如ma
  • 如何在返回的 AJAX 调用上使用 django 模板标签?

    我有一个简单的 AJAX 脚本 它在名为的搜索字段中获取输入的字符串AJAXBox并调用一个视图函数 该函数使用过滤器查询数据库并返回与输入参数匹配的所有 User 对象的查询集 当我使用 django 模板标签迭代查询集时 它不起作用 我
  • 直接打开Spyder还是通过Pythonxy打开?

    之前 我一直在运行PythonSpyder 我总是开始Spyder直接双击其图标 今天突然发现我还有一个东西叫Python x y 我注意到我也可以开始Spyder通过它 这两种方法有什么区别吗 如果不是的话 有什么意义Python x y
  • 获取 HTML 代码的结构

    我正在使用 BeautifulSoup4 我很好奇是否有一个函数可以返回 HTML 代码的结构 有序标签 这是一个例子 h1 Simple example h1 p This is a simple example of html page
  • Microsoft Azure 数据仓库和 SqlAlchemy

    我正在尝试使用 python 的 sqlalchemy 库连接到 microsoft azure 数据仓库 并收到以下错误 pyodbc Error HY000 HY000 Microsoft ODBC SQL Server Driver
  • 如何将 pip 指向 Mercurial 分支?

    我正在尝试通过 pip 将我的应用程序安装到 virtualenv 进行测试 安装时效果很好default or tip像这样 pip install e hg https email protected cdn cgi l email p
  • Bottle 是否可以处理没有并发的请求?

    起初 我认为 Bottle 会并发处理请求 所以我编写了如下测试代码 import json from bottle import Bottle run request response get post import time app B
  • Numpy 通过一个数组的值总结另一个数组

    我正在尝试找到一种矢量化方法来完成以下任务 假设我有一个 x 和 y 值的数组 请注意 x 值并不总是整数并且可以为负数 import numpy as np x np array 1 1 1 3 2 2 2 5 4 4 dtype flo
  • 如何在 Python 中将 EXR 文件的 float16 转换为 uint8

    我正在使用 OpenEXR 读取 Python 中的 EXR 文件 我有带有半数据 float16 的 R G 和 B 通道 我尝试使用 Numpy 将数据从 float16 转换为 uint8 0 255 颜色 但没有成功 rCh get
  • Python Flask应用程序无法被网络中的远程计算机访问

    我在本地主机上的 python 上运行了一个简单的 Flask Web 应用程序 Web 应用程序在 127 0 0 1 8000 上运行 但我无法使用 myHostComputerIPaddress 8000 从网络中的远程计算机访问它
  • Python `concurrent.futures`:根据完成顺序迭代 future

    我想要类似的东西executor map 除了当我迭代结果时 我想根据完成的顺序迭代它们 例如首先完成的工作项应该首先出现在迭代中 等等 这样 当且仅当序列中的每个工作项尚未完成时 迭代就会阻塞 我知道如何使用队列自己实现这一点 但我想知道
  • 在Python中将罗马数字转换为整数

    根据 user2486 所说 这是我当前的代码 def romanMap map M 1000 CM 900 D 500 CD 400 C 100 XC 90 L 50 XL 40 X 10 IX 9 V 5 V 4 I 1 return
  • 使用Python的线程模块调用ctypes函数比使用多处理更快?

    我一生都无法找出这个问题的答案 我编写了一个可以执行数百次繁重计算的脚本 我有一个绝妙的主意 将这些计算任务编写为 C 然后使用 Python 的 ctypes 与它们交互 我心想 我什至可以使用并行性进一步优化它 我最初的方法是使用线程

随机推荐

  • 如何“平行”组合镜头

    我是优秀的新手Control Lens我正在尝试将两个镜头 并行 而不是按顺序 组合起来 就像我对 Control Arrow 所做的那样 如果我以lens文档 data Foo a Foo baz Int bar Int a 我希望能够做
  • 如何从存档安装 stringi 库并安装本地 icu52l.zip

    我们正在笨手笨脚地让一些 R 代码在生产环境中工作 作为其中的一部分 我们安装了一些 R 包 如下所示 Default directories and mirrors WORKING DIR lt srv foo bar baz LIB D
  • 完全信任 Visual Studio 2012 和 .Net 4.0 的 UNC 共享

    每次我尝试打开位于 UNC 共享上的解决方案时 我都会收到以下对话框 我尝试过使用caspol exe汉塞尔曼谈论的效用here 但似乎不起作用 至少对于在 Visual Studio 2012 中运行的 Net 4 项目来说不是 使用相同
  • Android:我可以在服务中使用 Google Analytics吗?

    我有一个应用程序 大部分时间作为服务在后台运行 网上有很多关于如何使用 Google Analytics API 和 EasyTracker 库来跟踪多个活动的示例和教程 但没有一个示例和教程解释了如何在服务中使用 Google Analy
  • Chrome 和 Firefox 中带有换行符的文本区域的最大长度验证不同

    问题是 Firefox 将换行符视为 1 n 字符 而 Chrome 将它们视为 2 r n 这就是我得到的textarea with maxlength 10 这是10字符为Firefox 1234 5 6 7 这是10字符为Chrome
  • PHP 中唯一的临时文件名?

    我需要将一些文件转换为 PDF 然后将它们附加到电子邮件中 我在电子邮件方面使用 Pear Mail 这很好 大多数情况下仍在解决一些问题 但作为此过程的一部分 我需要创建临时文件 现在我可以使用临时南 函数 但听起来它在文件系统上创建了一
  • Rails 3.2.2 不执行 rjs

    我正在关注这本书使用 Rails 进行实用敏捷 Web 开发第 4 版 但我使用的是 Rails 3 2 2 而不是书中推荐的 3 0 5 ruby v ruby 1 9 3p125 2012 02 16 i686 linux rails
  • Vim textwidth 逗号缩进问题

    如果我在 Vim 中设置以下选项 set textwidth 80 文本将在 80 个字符处中断 这可行 但问题是如果逗号 位于行尾 Vim 会缩进下一行 我可以做什么来避免这种行为 您可能启用了 C 风格缩进 set nocindent应
  • 如何在 spring mvc 中的操作之前发送响应

    假设我的 spring 控制器函数接收大量数据 鉴于数据结构正确 我想返回 200 OK 并且在那之后我想执行处理 这可能需要一段时间 据我了解 发送响应的唯一方法是return命令 但我不想在响应发送时结束该功能 还有其他方法可以在函数中
  • 加载/存储宽松原子变量和普通变量有什么区别?

    正如我从测试用例中看到的 https godbolt org z K477q1 生成的程序集加载 存储原子宽松与普通变量相同 ldr和str 那么 宽松原子变量和普通变量有什么区别吗 区别在于正常的加载 存储不是保证是无泪的 而轻松的原子读
  • 计算矩阵的零空间

    我正在尝试求解 Ax 0 形式的一组方程 A 是已知的 6x6 矩阵 我使用 SVD 编写了以下代码来获取在一定程度上有效的向量 x 答案大致正确 但不足以对我有用 我怎样才能提高计算的精度 将 eps 降低到 1 e 4 以下会导致函数失
  • 选项的单击事件在 IE 中不起作用

    我有一个多选标签 我需要编写它的选项的 onclick 函数 因为我需要获取最后单击的选项的值 但是当我编写以下内容时 multiple select option click function var val this val alert
  • 约束成员模板的外线定义有哪些规则?

    考虑以下code template
  • 显示 MySQL 中日期时间在下一小时内的行

    我总是在处理复杂的 SQL 查询时遇到麻烦 这就是我所拥有的 query SELECT id name info date time FROM acms events WHERE date time DATE SUB NOW INTERVA
  • UINavigationBar 和新的 iOS 5+ 外观 API - 如何提供两个背景图像?

    我想利用新的 iOS 5 外观 API 为我的应用程序中的所有 UINavigationBar 实例提供自定义背景图像 要做到这一点 就像这样简单 UINavigationBar appearance setBackgroundImage
  • 从 localStorage 中删除项目

    我正在尝试从本地存储中删除单个项目 我正在使用 localStorage 来存储列表视图中选定的列表项 我附加了用于从本地存储中删除所选项目的复选框 但是 当我删除选定的复选框时 它不会正确删除 就像我选择一个复选框时 它删除的两个或三个项
  • Java中如何从HTTP请求中获取JSON对象

    我现在尝试使用 Java cord 中的 HTTP 请求获取 JSON 对象 我想知道如何在下面的代码中获取响应或 JSON 对象 请告诉我 在这个程序中 我尝试获取文章 纽约 的维基百科类别 String requestURL http
  • Laravel 4 自定义验证规则 - 在哪里扩展验证器?

    我想制定一个自定义验证规则 我的模型现在看起来像这样 protected rules array first name gt required last name gt required ssn gt required integer mi
  • 如何向 ubuntu 应用程序添加图标

    我已经用Python快速开发了一个用于ubuntu的应用程序 我将其打包并且工作正常 但我找不到如何向我的应用程序添加图标 目前它就像一个空白图标 我用过 Glade 和 gtk 最好的方法是安装一个 命名图标 为此 您的安装脚本会将文件复
  • Python,可变长度位置参数之后的默认关键字参数

    我以为我可以在 Python 2 中的函数调用中的可变长度位置参数之后使用命名参数 但我得到了SyntaxError导入 python 类时 我正在使用以下 get 方法编写 例如 class Foo object def init sel