首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开较长元组的最佳实践(Python3.6)

打开较长元组的最佳实践(Python3.6)
EN

Stack Overflow用户
提问于 2019-09-12 16:26:11
回答 1查看 247关注 0票数 0

将较长的元组传递到函数中,并希望将其解压缩为特定的变量。

高级级别:

  • 我测量了一些指标(普罗米修斯),比如说5-6
  • 度量被放入元组,并作为arg传递到函数中。
  • 在上述函数中解压似乎会导致一些新变量实际上是类型'tuple‘,而不是我所期望的Prometheus度量对象

考虑到我想做的事情,我的问题是:

  • 我正确地使用/解压了元组吗?
  • 元组使用中是否有明确影响这一点的限制?
  • 是否有更好的方法来管理这个场景?我使用元组,因为我喜欢不可变性,以及向特定度量对象显式分配变量的能力。但如果有更好的办法,我是完全开放的。

已经尝试过:

  • 确定vars的数量与元组中的度量数相匹配。

,这里是工具和元组的位置:

代码语言:javascript
复制
multicast_sequence_problem_total = Counter(
    "multicast_sequence_problem_total",
    "Total of Sequence Errors (Multicast)",
    ['source_dc', 'destination_dc', 'vlan']
),
unicast_sequence_problem_total = Counter(
    "unicast_sequence_problem_total",
    "Total of Sequence Errors (Unicast)",
    ['source_dc', 'destination_dc', 'vlan']
),
multicast_duplicate_total = Counter(
    "multicast_duplicate_total",
    "Total of Duplicate Sequences (Multicast)",
    ['source_dc', 'destination_dc', 'vlan']
),
unicast_duplicate_total = Counter(
    "unicast_duplicate_total",
    "Total of Duplicate Sequences (Unicast)",
    ['source_dc', 'destination_dc', 'vlan']
)
latency_gauge = Gauge(
    "latency_average_gauge",
    "Latency Average",
    ['protocol', 'source_dc', 'destination_dc', 'vlan']
)
metrics = (
    multicast_sequence_problem_total,
    multicast_duplicate_total,
    unicast_sequence_problem_total,
    unicast_duplicate_total,
    latency_gauge
)

跳转到我的另一个函数中,实际上我增加了/设置了度量值--下面是解包:

代码语言:javascript
复制
mcast_seq, mcast_dup, uni_seq, uni_dup, avg_latency = metrics_tuple

为了进行调试,使用了pdb,发现这5项指标中有3项实际上是类型: tuple:

代码语言:javascript
复制
(Pdb) type(metrics_tuple)
<class 'tuple'>
(Pdb) type(avg_latency)
<class 'prometheus_client.metrics.Gauge'>
(Pdb) type(mcast_seq)
<class 'tuple'>
(Pdb) type(mcast_dup)
<class 'tuple'>
(Pdb) type(uni_seq)
<class 'tuple'>
(Pdb) type(uni_dup)
<class 'prometheus_client.metrics.Counter'>
(Pdb)     

因此,当我在代码中取得更多进展时,这会导致一些错误。Python认为我正在尝试在其他地方打开包(在那里,我不想要元组!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-12 17:12:44

在使用字典而不是元组后发现答案。我的度量对象是元组,原因是我忘记在它们被检测的度量之间删除一些逗号。

只有当我同时实例化字典或元组时(我没有这样做),这才有意义。

(facepalm) -花了一段时间才弄明白,但pdb输出拯救了我。向我展示的是,只有一些指标是元组的,而不是所有的。寻找他们之间的差异使我找到了答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57910976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档