0

誰かがこのPythonコードの理由を説明できますか:

def function(string, i, j): 
    if (i < j):
        i = i+1
        string1 = string[i:j] return string1
    else:
        return string
# main
string = "four score and seven years ago" 
i = 5
j = 9
stringslice = function(string, i, j) 
print (stringslice)
print (i, j)

プリント:

cor
5 9

次のように出力する必要があると思いました。

cor
6 9
4

4 に答える 4

3

インクリメントされる i はその関数に対してローカルであり、メイン コードの i には影響しません。だからあなたが私を印刷するとき、そのオリジナルの私

于 2013-11-14T00:06:56.497 に答える
1

i=5とは関数の範囲外で割り当てられたためj=9、関数内でのみ変更されましたが、印刷すると関数の外にあったため、実際には変更されませんでした

変数スコープの詳細

于 2013-11-14T00:07:24.747 に答える
1

関数内で値を変更しても、その変更は外部には反映されません。

少し異なる表現方法では、def function(string, i, j):には 3 つの正式なパラメーターがあり、そのうちの 1 つが ですi。if with を呼び出すことができ、呼び出し元に更新する必要function("str", 3, j)はありません。i

于 2013-11-14T00:08:06.137 に答える
0

スカラー型/不変型 (int、float、string) は、関数自体の外では関数によって変更されません。

ただし、複合型は限定的な意味で変更されます。たとえば、辞書を関数に渡して関数内で変更すると、辞書の要素を変更できますが、別の辞書を同じ変数に割り当てると、変更は関数の外では見られません。IOW、辞書自体ではなく、辞書に含まれるものを変更できます。

于 2013-11-14T00:19:28.257 に答える