6
def change(s):
    s = s + "!"


word = "holiday"
change(word)    
print word

どうしてこれの出力が「holiday!」ではなく「holiday」になるのでしょうか。3行のコードが関数の外にあるからですか?もしそうなら、それが変更関数の後なので、それが関数の外にあるかどうかが重要なのはなぜですか?

4

5 に答える 5

6

これを試して:

def change(s):
    return s + "!"

次のように使用します。

word = 'holiday'
print change(word)

またはこのように:

word = 'holiday'
word = change(word)
print word

関数内のパラメーター文字列に対して行った変更は、関数の外部では見られないsことに注意してください. ) は、関数の外側ではなく、関数の内側でのみ表示されます。Python のすべての関数パラメーターは、値によって渡されます

于 2012-04-22T17:41:36.523 に答える
3

s関数内のローカル変数のみを変更していますchange。これは変数を変更しませんword。を変更したい場合はword、 の結果を返し、changeそれを に代入する必要がありますword:

def change(s):
    s = s + "!"
    return s


word = "holiday"
word = change(word)    
print word
于 2012-04-22T17:40:37.870 に答える
1

変更から値を返していません。

試す:

def change(s):
    s = s + "!"
    return s


word = "holiday"
word = change(word)    
print word

したがって、上記の例では、sが変更されてから、変更された値がwordに再割り当てされます。

于 2012-04-22T17:39:31.457 に答える
1

その単語インスタンスではなく単語の「コピー」を関数に渡しています。したがって、変更は、関数内の s 変数に保持する単語のコピーに適用されます

于 2012-04-22T17:43:46.443 に答える
1

sinは、を呼び出したときにchange(s)の値にバインドされる名前です。wordchange(word)

にバインドされた値を連結することによって作成された新しい文字列にs = s + "!"バインドしている行では、 andに何もしません。ss!word

また、可能であっても副作用がないことが最善であるため、新しい値を返すことをお勧めします。

def change(s):
    return s + '!'
于 2012-04-22T17:45:30.283 に答える