3

In a function like the following:

def foo(case):
    if case == 1:
        my_var = []
        # then do something with my_var
    elif case == 2:
        my_var = {}
        # then do something with my_var

Since the variable my_var lives in different cases, so it shouldn't cause a problem at runtime. But is this a good practice in Python?

4

4 に答える 4

8

同じコードで作業している他の人にとっては混乱するかもしれません。いくつかのスタイル ガイドでは、同じ変数名を別の目的で再利用することも推奨されていません。このルールから逸脱する十分な理由がある場合もありますが、回避できる場合は回避する必要があります。それらは本当に同じものですか?1 つはアイテムのリスト、もう 1 つは値の辞書です。では、何が含まれているのでしょうか。よりわかりやすい変数名を考えることができれば、それは良い考えです。

于 2012-06-06T17:47:57.520 に答える
4

一般的に、いいえ。変数が複数のことを意味する場合、潜在的な混乱が追加されます。さらに、新しい機能などを追加するためにコードをリファクタリングする必要がある場合は、その作業がより困難になる可能性が高くなります。とはいえ、Python はダック型言語なので、機能的には同じでデータ型が異なる場合は、おそらく問題ありません。

于 2012-06-06T17:48:10.363 に答える
3

ご自身の判断で適用してください。どちらの場合もオブジェクトの意味が似ていると思われる場合は、同じ名前を使用すると読みやすくなる可能性があります。異なるものに同じ名前を使用すると混乱を招くと思われる場合は、使用しないでください。

于 2012-06-06T17:48:28.867 に答える
2

そうしないと、予期しない結果が発生したり、デバッグが面倒になったりする可能性が高くなるからです。しかし、これが良い考えである特定の理由がある場合もあります。したがって、それは本当にあなたが何をしているかに依存します。

于 2012-06-06T17:48:36.903 に答える