@@ -1090,6 +1090,14 @@ msgid ""
10901090">>> func1(x, y)\n"
10911091"('new-value', 100)"
10921092msgstr ""
1093+ ">>> def func1(a, b):\n"
1094+ "... a = 'new-value' # a と b はローカル名で\n"
1095+ "... b = b + 1 # 新しいオブジェクトが代入され\n"
1096+ "... return a, b # 新しい値一式を返す\n"
1097+ "...\n"
1098+ ">>> x, y = 'old-value', 99\n"
1099+ ">>> func1(x, y)\n"
1100+ "('new-value', 100)"
10931101
10941102#: ../../faq/programming.rst:528
10951103msgid "This is almost always the clearest solution."
@@ -1117,10 +1125,18 @@ msgid ""
11171125">>> args\n"
11181126"['new-value', 100]"
11191127msgstr ""
1128+ ">>> def func2(a):\n"
1129+ "... a[0] = 'new-value' # 'a' は mutable list への参照\n"
1130+ "... a[1] = a[1] + 1 # 共有されたオブジェクトを変える\n"
1131+ "...\n"
1132+ ">>> args = ['old-value', 99]\n"
1133+ ">>> func2(args)\n"
1134+ ">>> args\n"
1135+ "['new-value', 100]"
11201136
11211137#: ../../faq/programming.rst:543
11221138msgid "By passing in a dictionary that gets mutated::"
1123- msgstr "変更される辞書に渡すことによって ::"
1139+ msgstr "変更を受ける辞書を渡すことによって ::"
11241140
11251141#: ../../faq/programming.rst:545
11261142msgid ""
@@ -1133,6 +1149,14 @@ msgid ""
11331149">>> args\n"
11341150"{'a': 'new-value', 'b': 100}"
11351151msgstr ""
1152+ ">>> def func3(args):\n"
1153+ "... args['a'] = 'new-value' # args は mutable dictionary\n"
1154+ "... args['b'] = args['b'] + 1 # インプレースで変更\n"
1155+ "...\n"
1156+ ">>> args = {'a': 'old-value', 'b': 99}\n"
1157+ ">>> func3(args)\n"
1158+ ">>> args\n"
1159+ "{'a': 'new-value', 'b': 100}"
11361160
11371161#: ../../faq/programming.rst:554
11381162msgid "Or bundle up values in a class instance::"
@@ -1154,6 +1178,19 @@ msgid ""
11541178">>> vars(args)\n"
11551179"{'a': 'new-value', 'b': 100}"
11561180msgstr ""
1181+ ">>> class Namespace:\n"
1182+ "... def __init__(self, /, **args):\n"
1183+ "... for key, value in args.items():\n"
1184+ "... setattr(self, key, value)\n"
1185+ "...\n"
1186+ ">>> def func4(args):\n"
1187+ "... args.a = 'new-value' # args は mutable Namespace\n"
1188+ "... args.b = args.b + 1 # オブジェクトをインプレースで変更\n"
1189+ "...\n"
1190+ ">>> args = Namespace(a='old-value', b=99)\n"
1191+ ">>> func4(args)\n"
1192+ ">>> vars(args)\n"
1193+ "{'a': 'new-value', 'b': 100}"
11571194
11581195#: ../../faq/programming.rst:571
11591196msgid "There's almost never a good reason to get this complicated."
0 commit comments