Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 传递对象或变量更有效吗?_Python_Performance - Fatal编程技术网

Python 传递对象或变量更有效吗?

Python 传递对象或变量更有效吗?,python,performance,Python,Performance,我正在用Python 2创建一个刽子手游戏,我可以将当前单词存储在以下任意一种格式中: 对象,作为属性(如wordlist.word=blah) 变量(如word=blah) 然后我将这个词传递到另一个函数中,游戏的主要部分就在这个函数中,用于比较等等 我有点喜欢将当前单词保留在对象中,因为我认为将其分组到该类下是有意义的,而且通过将所有这些放在一起看起来更干净,但是我担心,由于对象中有更多代码,程序传递它需要更多的努力 使用对象或变量更有效吗?两者的利弊是什么?例如,一个比另一个更有效/更

我正在用Python 2创建一个刽子手游戏,我可以将当前单词存储在以下任意一种格式中:

  • 对象,作为属性(如
    wordlist.word=blah
  • 变量(如
    word=blah
然后我将这个词传递到另一个函数中,游戏的主要部分就在这个函数中,用于比较等等

我有点喜欢将当前单词保留在对象中,因为我认为将其分组到该类下是有意义的,而且通过将所有这些放在一起看起来更干净,但是我担心,由于对象中有更多代码,程序传递它需要更多的努力


使用对象或变量更有效吗?两者的利弊是什么?例如,一个比另一个更有效/更快吗?

苹果和橙子。在选择将数据存储在范围变量或实例属性中时,应该考虑程序流和结构。在这里比较性能是没有意义的

如果数据在逻辑上属于程序中的某个实体,该实体将在程序的不同部分之间传递(这里似乎就是这种情况),请创建一个类并将数据放入该类的实例中。当前单词可能是当前
回合
游戏
的属性,具体取决于您希望对象的粒度


另一方面,如果数据仅在当前方法的范围内使用,请使用范围变量。

Apples and oranges。在选择将数据存储在范围变量或实例属性中时,应该考虑程序流和结构。在这里比较性能是没有意义的

如果数据在逻辑上属于程序中的某个实体,该实体将在程序的不同部分之间传递(这里似乎就是这种情况),请创建一个类并将数据放入该类的实例中。当前单词可能是当前
回合
游戏
的属性,具体取决于您希望对象的粒度


另一方面,如果数据仅在当前方法的范围内使用,请使用范围变量。

Apples and oranges。在选择将数据存储在范围变量或实例属性中时,应该考虑程序流和结构。在这里比较性能是没有意义的

如果数据在逻辑上属于程序中的某个实体,该实体将在程序的不同部分之间传递(这里似乎就是这种情况),请创建一个类并将数据放入该类的实例中。当前单词可能是当前
回合
游戏
的属性,具体取决于您希望对象的粒度


另一方面,如果数据仅在当前方法的范围内使用,请使用范围变量。

Apples and oranges。在选择将数据存储在范围变量或实例属性中时,应该考虑程序流和结构。在这里比较性能是没有意义的

如果数据在逻辑上属于程序中的某个实体,该实体将在程序的不同部分之间传递(这里似乎就是这种情况),请创建一个类并将数据放入该类的实例中。当前单词可能是当前
回合
游戏
的属性,具体取决于您希望对象的粒度


另一方面,如果数据仅在当前方法的范围内使用,请使用范围变量。

在python中,一切都是对象。一切。底层代码将所有内容存储为“PyObject”。将值类型与引用类型混合,在您的情况下,这取决于如何使用它。由于无论发生什么情况,变量都将通过引用传递,因此由您决定对您的心智映射最简单的方法。Fctn(wordlist.word)的开销要小得多,因为python先查找wordlist,然后再查找word。但它们在其他方面是一样的。这种级别的优化很少有用,因为有大量的查找,而且在其他地方也可能不是最理想的。一切。底层代码将所有内容存储为“PyObject”。将值类型与引用类型混合,在您的情况下,这取决于如何使用它。由于无论发生什么情况,变量都将通过引用传递,因此由您决定对您的心智映射最简单的方法。Fctn(wordlist.word)的开销要小得多,因为python先查找wordlist,然后再查找word。但它们在其他方面是一样的。这种级别的优化很少有用,因为有大量的查找,而且在其他地方也可能不是最理想的。一切。底层代码将所有内容存储为“PyObject”。将值类型与引用类型混合,在您的情况下,这取决于如何使用它。由于无论发生什么情况,变量都将通过引用传递,因此由您决定对您的心智映射最简单的方法。Fctn(wordlist.word)的开销要小得多,因为python先查找wordlist,然后再查找word。但它们在其他方面是一样的。这种级别的优化很少有用,因为有大量的查找,而且在其他地方也可能不是最理想的。一切。底层代码将所有内容存储为“PyObject”。将值类型与引用类型混合,在您的情况下,这取决于如何使用它。由于无论发生什么情况,变量都将通过引用传递,因此由您决定对您的心智映射最简单的方法。Fctn(wordlist.word)的开销要小得多,因为python先查找wordlist,然后再查找word。但它们在其他方面是一样的。这种级别的优化很少有用,因为存在巨大的