<i id='xldzS'><tr id='xldzS'><dt id='xldzS'><q id='xldzS'><span id='xldzS'><b id='xldzS'><form id='xldzS'><ins id='xldzS'></ins><ul id='xldzS'></ul><sub id='xldzS'></sub></form><legend id='xldzS'></legend><bdo id='xldzS'><pre id='xldzS'><center id='xldzS'></center></pre></bdo></b><th id='xldzS'></th></span></q></dt></tr></i><div id='xldzS'><tfoot id='xldzS'></tfoot><dl id='xldzS'><fieldset id='xldzS'></fieldset></dl></div>
<legend id='xldzS'><style id='xldzS'><dir id='xldzS'><q id='xldzS'></q></dir></style></legend>

<small id='xldzS'></small><noframes id='xldzS'>

  1. <tfoot id='xldzS'></tfoot>

      <bdo id='xldzS'></bdo><ul id='xldzS'></ul>
    1. 在函数调用之间保存数据的Python方法是什么?

      What is the pythonic way of saving data between function calls?(在函数调用之间保存数据的Python方法是什么?)

        1. <legend id='3h1gO'><style id='3h1gO'><dir id='3h1gO'><q id='3h1gO'></q></dir></style></legend>
              <bdo id='3h1gO'></bdo><ul id='3h1gO'></ul>
              <tfoot id='3h1gO'></tfoot>
              <i id='3h1gO'><tr id='3h1gO'><dt id='3h1gO'><q id='3h1gO'><span id='3h1gO'><b id='3h1gO'><form id='3h1gO'><ins id='3h1gO'></ins><ul id='3h1gO'></ul><sub id='3h1gO'></sub></form><legend id='3h1gO'></legend><bdo id='3h1gO'><pre id='3h1gO'><center id='3h1gO'></center></pre></bdo></b><th id='3h1gO'></th></span></q></dt></tr></i><div id='3h1gO'><tfoot id='3h1gO'></tfoot><dl id='3h1gO'><fieldset id='3h1gO'></fieldset></dl></div>
                <tbody id='3h1gO'></tbody>
            • <small id='3h1gO'></small><noframes id='3h1gO'>

                本文介绍了在函数调用之间保存数据的Python方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                对我来说,上下文是在调用修改该值的函数之间需要保留的单个int值的信息。我可以用全球赛,但我知道这很令人气馁。目前,我使用了包含int的列表形式的默认参数,并利用了可变性,以便在调用之间保留对值的更改,如so--

                 def increment(val, saved=[0]):
                    saved[0] += val
                    # do stuff
                

                此函数正通过tkinter附加到按钮,如~

                button0 = Button(root, text="demo", command=lambda: increment(val))
                

                这意味着没有可以赋给函数外部局部变量的返回值。

                人们通常是怎么处理这件事的?我的意思是,当然,可变性技巧是有效的,但是如果我需要从多个函数访问和修改该值怎么办?

                如果不设置具有静电方法和内部属性等的类,就不能做到这一点吗?

                推荐答案

                使用类。使用实例成员保留状态。

                class Incrementable:
                    def __init__(self, initial_value = 0):
                        self.x = initial_value
                    def increment(self, val):
                        self.x += val
                        # do stuff
                

                您可以添加__call__方法来模拟函数调用(例如,如果您需要向后兼容)。这是否是一个好主意真的取决于上下文和您的特定用例。

                如果不设置具有静电方法和内部属性等的类,就不能做到这一点吗?

                可以,但是不涉及具有属性的类/对象的解决方案不是"Pythonic"。用python定义类非常容易(上面的示例只有5行简单的代码),并且它为您提供了最大限度的控制和灵活性。

                使用python的mutable-default-args "weirdness"(我不打算称其为"一个特性")应该被视为黑客攻击

                这篇关于在函数调用之间保存数据的Python方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
                Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)
                    <bdo id='ilEtQ'></bdo><ul id='ilEtQ'></ul>

                    <legend id='ilEtQ'><style id='ilEtQ'><dir id='ilEtQ'><q id='ilEtQ'></q></dir></style></legend>
                    <tfoot id='ilEtQ'></tfoot>

                    <small id='ilEtQ'></small><noframes id='ilEtQ'>

                        <tbody id='ilEtQ'></tbody>

                          <i id='ilEtQ'><tr id='ilEtQ'><dt id='ilEtQ'><q id='ilEtQ'><span id='ilEtQ'><b id='ilEtQ'><form id='ilEtQ'><ins id='ilEtQ'></ins><ul id='ilEtQ'></ul><sub id='ilEtQ'></sub></form><legend id='ilEtQ'></legend><bdo id='ilEtQ'><pre id='ilEtQ'><center id='ilEtQ'></center></pre></bdo></b><th id='ilEtQ'></th></span></q></dt></tr></i><div id='ilEtQ'><tfoot id='ilEtQ'></tfoot><dl id='ilEtQ'><fieldset id='ilEtQ'></fieldset></dl></div>