アウトプット用です。
https://www.udemy.com/course/python-ai/
私がこちらの講座を受講して押さえておきたいポイントについてアウトプットします。
*args, **kwags
*argsについて
1つしか定義していないのなら、渡す引数は1つだが
この可変長引数というもので不特定多数の引数を渡すことができる
argsという文字は慣習的なもので別名に変更可能
ただ、特に理由がない場合はargsを使用
def delivery(*args):
print(f"{args}を受け取った")
delivery("ご飯", "Apple", 5555)
# ("ご飯", "Apple", 5555)を受け取った!
このように3つ引数を渡してもエラーせずに処理をしてくれる
returnはタプル型で返ってくる
**kwargs
こちらは*argsと違ってくる部分はreturnがディクショナリー型で返ってくること。
def func_kwargs(**kwargs):
print(kwargs)
func_kwargs(param1=1, param2=3, param3=5)
# {'param1': 1, 'param2': 3, 'param3': 5}
__ name __ と __ main __
とあるファイルを呼び出す際に実行しないようにするもの
具体的には以下の例がある
def todayfunc():
print("This is today function!!")
def tomorrowfunc():
print("this is tomorrow function!!")
print("This is todaymodule!!")
import mymodule
def yourfunc():
print("This is your function!!")
yourfunc()
mymodule.todayfunc()
# This is your function!!
# This is today function!!
# This is todaymodule!!
おかしい...
なんでmymodule.pyでprintしたものが実行されているの?!
こうなららないためにアレが必要なんです
つまり__ name __ と __ main __ ってなんぞや?
一回printしてみましょう
print(__name__)
print(f"mymodule.__name__:{__name__}")
この2つのprintをyourmodule.pyで実行すると以下のような結果が返ってきました。(1行目がにyourumodule.py、2行目がmymodule.pyに記述されたもの)
# __main__
# mymodule.__name__:mymodule
__ name __ はimportされると自分のモジュール名が入ってスクリプト自体が実行されると __ main __ が入る
つまり実行される場所によって__ name __ の実行結果が変わる
よってimportする際に実行されたくない部分があった際は以下のように書くと実行されなくなる
if __name__ == "__main__":
print(f"mymodule.__name__: {__name__}")
随時更新します!