- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我看过这个 SO 问题(这不是重复的):Python bare asterisk in function argument
在 python-3.x 中,您可以在函数参数中添加一个裸 *
,这意味着(来自 docs 的引用):
Parameters after “*” or “*identifier” are keyword-only parameters and may only be passed used keyword arguments.
好的,所以,我已经定义了一个函数:
>>> def f(a, b, *, c=1, d=2, e=3):
... print('Hello, world!')
...
我只能通过指定关键字来传递c
、d
和e
变量值:
>>> f(1, 2, 10, 20, 30)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 5 were given
>>> f(1, 2, c=10, d=20, e=30)
Hello, world!
问题是:
一些“现实世界”的例子会有很大帮助。提前致谢。
最佳答案
PEP 3102非常清楚地解释了基本原理:关键是允许函数接受本质上正交的各种“选项”。在定义端和调用端指定这些位置都很尴尬,因为它们没有任何明显的“优先级”可以转化为位置顺序。
在各种库中有很多可以从中受益的函数示例。例如 pandas.read_csv
的调用签名是:
def parser_f(filepath_or_buffer,
sep=sep,
dialect=None,
compression=None,
doublequote=True,
escapechar=None,
quotechar='"',
quoting=csv.QUOTE_MINIMAL,
skipinitialspace=False,
lineterminator=None,
header='infer',
index_col=None,
names=None,
prefix=None,
skiprows=None,
skipfooter=None,
skip_footer=0,
na_values=None,
na_fvalues=None,
true_values=None,
false_values=None,
delimiter=None,
converters=None,
dtype=None,
usecols=None,
engine='c',
delim_whitespace=False,
as_recarray=False,
na_filter=True,
compact_ints=False,
use_unsigned=False,
low_memory=_c_parser_defaults['low_memory'],
buffer_lines=None,
warn_bad_lines=True,
error_bad_lines=True,
keep_default_na=True,
thousands=None,
comment=None,
decimal=b'.',
parse_dates=False,
keep_date_col=False,
dayfirst=False,
date_parser=None,
memory_map=False,
nrows=None,
iterator=False,
chunksize=None,
verbose=False,
encoding=None,
squeeze=False,
mangle_dupe_cols=True,
tupleize_cols=False,
infer_datetime_format=False):
除了文件路径之外,其中大多数都是正交选项,用于指定如何解析 CSV 文件的不同方面。没有特别的理由说明它们会以任何特定的顺序通过。你会发疯地跟踪这些的任何位置顺序。将它们作为关键字传递更有意义。
现在,您可以看到 pandas 实际上并没有将它们定义为仅关键字参数,大概是为了保持与 Python 2 的兼容性。我想许多库出于同样的原因避免使用该语法。我不知道哪些库(如果有的话)已经开始使用它。
关于python - 函数参数中裸星号的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038767/
我对 Lift Cookbook for AJAX Forms 感到困惑,我遇到了以下对象声明: object EchoForm extends { 这很令人困惑,所以我尝试了一下,它编译得很好。我的
我正尝试按照指示在裸 CSS 模态窗口内实现视频 here到目前为止效果很好。我遇到的唯一问题是视频在模态窗口打开之前自动启动(我必须保留视频“自动启动”选项)。模态窗口关闭时视频也不会停止。 是否有
同样,裸 char16_t 是有符号的还是无符号的?是否定义了实现? 最佳答案 来自标准(C++11 前草案 n3290,或 C++11 后草案 n3337)§3.9.1 基本类型: Types ch
我使用 C# 编程已经...有一段时间了。我最近编写了一个例程,我突然想到这是我第一次(我记得)我故意使用裸代码块(即没有前面的控制流语句)。代码看起来像这样: //... var output =
我最近开始使用 nativescript,但我遇到了一个似乎无法解决的问题。 我想要完成的是只打开一个基本的 WebView 并设置一个外部 url 来加载,例如 stackoverflow.com。
我通过以下方式创建了一个共享仓库: git init --bare my_project.git 在某个时候,另一个用户用他的更改更新了这个 repo(使用 git push )。 我如何检查共享存储
我刚刚浏览完 Google 搜索结果,其中包含所有关于 git 无法克隆空存储库是多么愚蠢的电子邮件咆哮。一些善良的灵魂甚至提交了一个补丁。在升级 git 之前,克隆空的、裸 git 存储库的最简单、
我喜欢编写一些 wordpress 模板,并搜索了一些可用的裸模板,我可以从这些模板开始。 因为我是 wordpress 的新手,你能推荐最好的裸模板作为我可以使用的基础吗? 干杯 最佳答案 在我看来
我正试图找到一个最新的答案,以使用 Godaddy 和 Heroku SSL 设置裸域。我的目标是让所有页面都登陆安全页面 https://www.example.com https://www.ex
这个问题在这里已经有了答案: What's the -practical- difference between a Bare and non-Bare repository? (11 个答案) 关
我运行一个 git 服务器,它只包含裸远程。比如说,我有一个名为 DIG.git 的裸 Remote ,我通常使用它进行克隆: git clone 55.66.77.88:git/DIG.git 我想
是否有一个用于裸 git repo 目录的 GUI(任何地方都没有工作树)我可以: 检查日志 查看任何提交的整个工作树结构 关于我为什么需要这个: 我的 git 是这样初始化的: git --git-
我有一台服务器托管我的几个项目的“裸”GIT 存储库。 我想知道如何将 GIT 移动到另一台服务器? 最佳答案 只需将父目录复制到新机器,并让 check out 的副本使用 git remote s
我有一个域 example.com 和 www.example.com。我正在为 DNS 使用 Heroku 和 Zerigo。现在我有一个从根域到 www.example.com 的转发从我的 Ho
我的服务器已经在 TCP 端口 80 和 443 上运行 IIS。我想通过 Internet 为我的所有团队成员提供一个集中的“推/pull ”Git 存储库。 所以我应该使用 HTTP 或 HTTP
裸露的 SUM 和包裹在 CALCULATE 中的 sum 有什么区别? Measure1 = SUM( tab[col1]) ) Measure2 = CALCULATE ( SUM( tab[co
我是一名优秀的程序员,十分优秀!