[解決済み] Python 関数間の変数の受け渡し
2022-02-11 19:21:07
質問
この数時間、ここや他の場所を読み漁り、実験もしましたが、非常に基本的な概念であるはずの、異なる関数間での値(変数)の受け渡しについて、よく理解できていないのです。
例えば、ある関数でリストに大量の値を代入し、後でそのリストを別の関数で使いたいとします。
list = []
def defineAList():
list = ['1','2','3']
print "For checking purposes: in defineAList, list is",list
return list
def useTheList(list):
print "For checking purposes: in useTheList, list is",list
def main():
defineAList()
useTheList(list)
main()
関数の引数が何をするかという私の理解に基づいて、私はこれが次のように行われることを期待します。
- list'を空リストとして初期化し、mainを呼び出す(これは、少なくとも、私が正しく理解していることは分かっている...)。
- defineAList() の中で、ある値をリストに代入し、新しいリストを main() に戻します。
- main() 内で useTheList(list) を呼び出す。
- list' は useTheList 関数のパラメータに含まれているので、useTheList は defineAList() で定義されたリストを使うのであって、main を呼ぶ前に定義された空のリストを使うのではないでしょう。
しかし、これは明らかに誤った理解です。私の出力は
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
では、"return"は明らかに私が考えているようなことはしないし、少なくとも私が考えるようなことはしないので、実際にはどうなのでしょうか。この例を使って、defineAList()からリストを取り出し、useTheList()の中でそれを使用するために何をしなければならないか、教えていただけませんか?私は物事が起こっているのを見るとよりよく理解する傾向がありますが、私が見た適切な引数渡しの例の多くは、私がまだよく知らないコードも使用しており、何が起こっているかを理解する過程で、私はこの概念を本当に理解できていません。私は2.7を使っています。
ETA- 過去に同じような質問をしたとき、ローカル変数の代わりにグローバル変数を使用するよう提案されました。また、私が受講しているクラスでは、グローバルを使用することは許可されていません。
ありがとうございました。
解決方法は?
実際に起きているのはこのようなことです。
global_list = []
def defineAList():
local_list = ['1','2','3']
print "For checking purposes: in defineAList, list is", local_list
return local_list
def useTheList(passed_list):
print "For checking purposes: in useTheList, list is", passed_list
def main():
# returned list is ignored
returned_list = defineAList()
# passed_list inside useTheList is set to global_list
useTheList(global_list)
main()
これがあなたの望みです。
def defineAList():
local_list = ['1','2','3']
print "For checking purposes: in defineAList, list is", local_list
return local_list
def useTheList(passed_list):
print "For checking purposes: in useTheList, list is", passed_list
def main():
# returned list is ignored
returned_list = defineAList()
# passed_list inside useTheList is set to what is returned from defineAList
useTheList(returned_list)
main()
を省略することもできます。
returned_list
に直接渡し、返された値を
useTheList
:
def main():
# passed_list inside useTheList is set to what is returned from defineAList
useTheList(defineAList())
関連
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python カメの描画コマンドとその例
-
Pythonによるjieba分割ライブラリ
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] なぜグローバル変数は悪なのか?[クローズド]