関数パラメータの詳細
1. デフォルトパラメータ
関数を呼び出すときに、デフォルトのパラメータの値が渡されない場合は、デフォルト値が使用されます。
次の例では、年齢が渡されなかった場合、デフォルトの年齢が出力されます。
def printinfo(name, age=35):
# 打印任何传入的字符串
print("name: %s" % name)
print("age %d" % age)
# 调用printinfo函数
printinfo(name="miki") # 在函数执行过程中 age取默认值35
printinfo(age=9 ,name="miki")
上記の例の出力は次のとおりです。
name: miki
age: 35
name: miki
age: 9
概要:
仮パラメータでデフォルトで値が設定されているパラメータをデフォルトパラメータと呼びます
注: デフォルト値を持つパラメータはパラメータ リストの最後にある必要があります
def printinfo(name, age=35, sex):
print name
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
2. 不定長パラメータ
場合によっては、関数が最初に宣言したよりも多くのパラメーターを処理する必要がある場合があります。これらのパラメーターは可変長パラメーターと呼ばれ、宣言時に名前が付けられません。
基本的な構文は次のとおりです。
def functionname([formal_args,] *args, **kwargs):
"""函数_文档字符串"""
function_suite
return [expression]
知らせ:
- アスタリスク (*) の付いた変数 args は、名前のない変数パラメータをすべて保存します。args はタプルです
- ** を追加した変数 kwargs は、名前付きパラメータ、つまり key=value の形式のパラメータを格納します。kwargs は辞書です。
def test(a, b, *args, **kwargs):
"函数在声明时,需要两个参数"
print('a={},b={},args={},kwargs={}'.format(a,b,args,kwargs))
test(2, 3, '你好', 'hi', 'how do you do', name="zhangsan", age=18)
# a=2,b=3,args=('你好', 'hi', 'how do you do'),kwargs={'name': 'zhangsan', 'age': 18}
b = ('hi', '大家好', '今天天气真好')
d = {
'name': "zhangsan", "age": 19}
# 注意,在传入参数时的星号问题。
test(10, 20, *b, **d)
# a=10,b=20,args=('hi', '大家好', '今天天气真好'),kwargs={'name': 'zhangsan', 'age': 19}
# 如果在传值时,不使用星号,会把后面的参数当做 args
test(10,20,b,d)
# a=10,b=20,args=(('hi', '大家好', '今天天气真好'), {'name': 'zhangsan', 'age': 19}),kwargs={}
3. デフォルトのパラメータは *args の後ろにあります
def sum_nums_3(a, *args, b=22, c=33, **kwargs):
print(a)
print(b)
print(c)
print(args)
print(kwargs)
sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)
注:
多くの値が可変長パラメーターである場合、この場合、デフォルトのパラメーターを args の後に配置できますが、**kwargs がある場合、kwargs は最後でなければなりません。
変更可能な型と不変型
要約する
-
いわゆる変数型と不変型とは、データを直接変更できます。直接変更できる場合は変数、そうでない場合は不変です。
-
変数のタイプ (データを変更します。メモリアドレスは変更されません): リスト、辞書、コレクション
-
不変型 (データを変更する、メモリ アドレスを変更する必要がある) は次のとおりです: 数値、文字列、タプル
先進的な事例
【Python】Pythonで単語当てゲームを実現 - 知力と運に挑戦!
[Python] Python tkinter ライブラリは重量単位変換用の GUI プログラムを実装します
[Python] Selenium を使用して (2023 Blog Star) エントリを取得します
【Python】SeleniumとChrome WebDriverを使って「Tencent Cloud Studio実践合宿」の記事情報を取得する
Tencent Cloud Cloud Studio を使用してバイドゥ AI のスケジューリングを実現し、テキスト認識を実現します
【Pythonで楽しむシリーズ【Xiaobi必見】Pythonマルチスレッドクローラー:絵文字パッケージWebサイトの画像をダウンロード
【Pythonで遊ぶシリーズ】 【小白さん必見】Pythonを使って双世丘の履歴データをクロールして視覚的に分析する
【Pythonで遊ぶシリーズ】 【Xiaobiさん必見】Pythonクローラー技術を使ってプロキシIPを取得してファイルに保存する
【シャオバイ必見】PILライブラリを使ってランク別・列別の複数画像の合成を実現するPython画像合成例
【Xiaobai必見】Pythonクローラーの実戦は女神の写真を一括ダウンロードしてローカルに保存
【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装
【Xiaobai必見】NBA選手データの例をPythonでクロール
【Xiaobiさん必見】Pythonでヒマラヤ音声をクロールして保存するサンプルコード
【シャオバイ必見】Pythonを使ってリーグ・オブ・レジェンドのスキン画像を一括ダウンロードする技術的実現
【Xiaobai必見】Pythonクローラーのデータ処理と可視化
【シャオバイ必見】栄光王のヒーロースキン画像を簡単に入手できるPythonクローラープログラム
【Xiaobiさん必見】Pythonを使ってパーソナライズされたリストのWord文書を生成する
【小白必見】Pythonクローラー戦闘:陰陽師のWebサイトから写真を取得して自動保存
Xiaobai必見の図書館管理システムシリーズ - ログインおよび登録機能のサンプルコード
小白の実戦100例:小白入門に最適な完全かつシンプルな双世丘宝くじ当選判定プログラム
geopandas と Shapely (.shp) を使用した地理空間データの処理と視覚化
セレンを使用して Maoyan の映画リスト データをクロールする
画像強調アルゴリズム Retinex の原理と実装の詳細な説明
クローラー入門ガイド (8): 視覚的な分析のための気象データ クローラー プログラムを作成する
クローラー入門(7):SeleniumとBeautifulSoupを使ってDouban映画トップ250をクロールする作例解説【爬虫類Xiaobai必見】
クローラー入門ガイド (6): クローラー対策と高度なスキル: IP プロキシ、ユーザー エージェント偽装、Cookie バイパス ログイン検証および検証コード識別ツール
クローラ入門(5):分散クローラと同時実行制御 【クローリング効率向上と要求合理性制御の実装方法】
クローラー入門 (4): Selenium と API を使用して動的 Web ページをクロールする最良の方法
クローラー入門ガイド (3): Python ネットワーク リクエストと一般的なクローラー対策戦略
クローラー入門 (2): データの抽出と処理に正規表現を使用する方法
画像認識における深層学習モデルの応用: CIFAR-10 データセットの実践と精度分析
Python オブジェクト指向プログラミングの基本とサンプル コード
MySQL データベース操作ガイド: Python を使用して操作を追加、削除、変更、クエリする方法を学習します。
Python ファイル操作ガイド: エンコード、読み取り、書き込み、例外処理
PythonとSeleniumを使ってクローリングを自動化#【ドラゴンボートフェスティバル特別公募】究極のテクノロジーを探求、未来はあなた次第「宗」 #寄稿記事
Python マルチスレッドおよびマルチプロセスのチュートリアル: 包括的な分析、コードケース、最適化スキル
Selenium 自動化ツールセット - 完全なガイドとチュートリアル
Python Web クローラーの基礎から実戦までのチュートリアル
Python 入門チュートリアル: for ループ、while ループ、文字列操作、ファイルの読み書き、例外処理の基礎知識をマスターします。
Pandas データ処理と分析チュートリアル: 基本から実際の戦闘まで
Python でよく使用されるデータ型と関連する操作の詳細な説明
【2023年最新】分類モデルの指標を改善する6つの主要なスキームを詳しく解説