Pythonの関数渡し入門
2022-02-01 22:37:01
関数の引数の渡し方
パラメータを渡すKey-Value方式。
以下は、ごく一般的なパラメータの渡し方であり、パラメータ名は直球勝負で、死語になります。
def show_info(name, title):
print("Name is: ",name)
print("Title is: ",title)
次のように使うことができます。
show_info('Lei Learning Committee', 'President of the Student Python Learning Community')
show_info(name='Lei Xueguang', title='President of the Continuous Learning Association')
このように*を2つ使って書くことができ、非常に柔軟性がありますが、デメリットも明らかです(柔軟な構造ではパスが外れたかどうかを判断する必要がある場合があり、直接取得するとエラーが発生しやすくなります)。
def show_info_v2(**kv_dict):
print("Name is: ", kv_dict['name'])
print("Title is: ", kv_dict['title'])
show_info_v2(name='Lei Xuecheng', title='College Student Python Learning Community Leader')
以下は、同じように見える効果です。
動的な長さのパラメータ渡し
通常、*とパラメータ名を組み合わせて使用します。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/24 11:39 PM
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : func_call.py
# @Project : hello
def show_info(name, title):
print("Name is: ", name)
print("Title is: ", title)
show_info('Lei Xuecheng Committee', 'College Student Python Learning Community District Director')
show_info(name='Lei Xueguang', title='President of the Continuous Learning Association')
def show_info_v2(name, title, *info):
print("name is: ", name)
print("title is: ", title)
print("Other evaluations: ", info)
show_info_v2('Lei Xuecheng', 'College student Python learning community district director', "Love technology", "Love life")
次のように動作します。
パラメータは関数が握りしめているか?
ちょっと次のプログラムを見てみましょう。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/24 11:39 PM
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : func_call.py
# @Project : hello
def compute_v1(list):
sum = 0
for x in list:
sum += x
list = list + [sum]
print("New address: ", id(list))
return sum
def compute_v2(list):
sum = 0
for x in list:
sum += x
list[0] = list[0] * 100
return sum
_list = [1, 2, 3, 4, 5]
print("Before calling the calculation function v1: ", _list)
print("Memory address before calling compute function v1: ", id(_list))
print(compute_v1(_list))
print("After calling compute function v1: ", _list)
print("Memory address after calling compute function v1: ", id(_list))
_list = [1, 2, 3, 4, 5]
print("Before calling compute function v2: ", _list)
print("Memory address before calling compute function v2: ", id(_list))
print(compute_v2(_list))
print("After calling compute v2: ", _list)
print("Memory address after calling compute v2:", id(_list))
引数参照のアドレスを変更する関数と、引数参照は変更せず、参照されるメモリ空間内の関連アドレス(変数)の値を変更する関数の2つの計算関数を紹介します。
どちらも動作すると言えるでしょう。しかし、外側の _list のアドレスは、新しいアドレスが割り当てられない限り(つまり、v2 の呼び出しの前に再コピーされない限り)、いつでも変更されるわけではありません
以下は実行結果です。
概要
この記事があなたのお役に立ち、Script Houseの他のコンテンツにもっと注目していただけることを願っています。
関連
-
[解決済み] Y軸の微小目盛りをオンにする方法 matplotlib
-
[解決済み】 str.containsでNaNを無視する。
-
[解決済み】なぜ「Pickle - EOFError.」が発生するのか?空のファイルを読むと「Ran out of input」と表示されるのはなぜですか?
-
[解決済み] Python AttributeError: 'module' オブジェクトに 'Serial' 属性がない [重複] 。
-
[解決済み] Pythonでソースファイル名と行数を記録する方法
-
[解決済み] sqlite3.OperationalError: データベースファイルを開くことができません。
-
Pythonモジュール早わかり(マークオンデマンド版)
-
tensorflow_GPUが正常にインストールされているかテストします。
-
Pythonの始め方?Pythonチュートリアル(とても詳しい)
-
Python共通関数まとめ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「AttributeError: module 'tensorflow' has no attribute 'get_default_graph' 」を修正する方法とは?
-
[解決済み】pythonで「グローバル名が定義されていない」という概念について
-
[解決済み】Python TypeError: 'set' オブジェクトは添え字が使えない
-
[解決済み] ./xx.py: 1行目: import: コマンドが見つかりません。
-
PythonをベースにしたMUIタイトルバーの最適化
-
[解決済み】str型オブジェクトの不明なフォーマットコード'f' - Folium
-
[解決済み] flask コマンドが使用するホストとポートを変更するにはどうすればよいですか?
-
[解決済み] Python sqlite3.OperationalError: そのようなテーブルがありません。
-
[解決済み] TypeError: 'float' 型の引数は反復可能ではありません。
-
[解決済み] Pythonテキストメニューの無限ループ