为了账号安全,请及时绑定邮箱和手机立即绑定

如何将值传递给没有全局变量的匿名化回调?

如何将值传递给没有全局变量的匿名化回调?

狐的传说 2021-05-30 13:17:58
我正在尝试使用带有pydicom的假自定义AN来匿名化登录号:def an_callback(ds, data_element):    if data_element.tag == Tag(0x00080050):        data_element.value = '0000000000'ds.walk(an_callback)我想将自定义值而不是'0000000'传递给回调函数。我想我可以使用全局变量,但是我想避免这种情况以减少不必要的错误。有没有不使用全局变量的其他方法?编辑:我认为walk是一个特殊的python函数,但它只是ds的一个方法,这是代码。您可以在此处更改回调的代码,使其也包含可选参数。回调(自我,数据元素,替换值=无)def walk(self, callback, recursive=True):    """Iterate through the DataElements and run `callback` on each.    Visit all DataElements, possibly recursing into sequences and their    datasets. The callback function is called for each DataElement    (including SQ element). Can be used to perform an operation on certain    types of DataElements. E.g., `remove_private_tags`() finds all private    tags and deletes them. DataElement`s will come back in DICOM order (by    increasing tag number within their dataset).    Parameters    ----------    callback        A callable that takes two arguments:            * a Dataset            * a DataElement belonging to that Dataset    recursive : bool        Flag to indicate whether to recurse into Sequences.    """    taglist = sorted(self.keys())    for tag in taglist:        with tag_in_exception(tag):            data_element = self[tag]            callback(self, data_element)  # self = this Dataset            # 'tag in self' below needed in case callback deleted            # data_element            if recursive and tag in self and data_element.VR == "SQ":                sequence = data_element.value                for dataset in sequence:                    dataset.walk(callback)
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

全局变量是最简单的解决方案。如果您想变得更优雅,则可以将该函数封装在某个类中。您的问题涉及普通的Python,因此您可能需要阅读Python替代全局变量


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号