Pythonとアスタリスク 🐍🌟💫🐍🌟💫
10/14, 13:50–14:20 (Asia/Tokyo), pyconjp_4
言語: 日本語

皆さんはふだんPythonを書いているときにアスタリスク*をどれくらい使いますか?
「あんまり使わないかも(というかそもそもそんなに使えるものなんだっけ?)」という方、このトークはあなたのためのものです。
このトークでは、*にまつわるPythonの文法事項を整理します。
Pythonを書く上で*は頻出ではないのですが、このトークでの*との出逢いを頭の片隅に留めておくと、気持ちよく書ける瞬間が訪れますよ!(私は先日2つの辞書のマージが*でスッキリ書けました)🌟💫🌟💫


Pythonにおける * の使い方を一覧するトークです。
ドキュメントに基づいた「*** を使ってこんなふうに書けるよ」という紹介、書籍や自分の経験をもとにした「こんなときに使うと便利だよ」という話をしていきます🌟💫🌟💫

🌟 導入 (2min)

  • 自己紹介
  • 本トークの位置づけについて(* の使い方を一覧するトーク)

💫 二項演算子としての*, ** (5min)

  • * は乗算、 ** はべき乗
  • 裏の仕組み(特殊メソッド__mul____pow__を紹介)
  • 特殊メソッドとは
  • a * b は a.__mul__(b)

🌟 アンパック代入と* (3min)

  • catch-all アンパック代入の紹介(a, *b, c = [1, 2, 3, 4]のこと)
  • catch-all アンパック代入の使い所(『Effective Python』を引きます)

💫 アンパック演算子の *, ** (5min)

  • イテラブルアンパック演算子 *
  • イテラブルの定義から説明
  • *iterable, v1, v2 という式の説明
  • 辞書アンパック演算子 **
  • {**fruits_prices, "melon": 777}
  • アンパック演算子は複数使える!(PEP 448)
  • 2つの辞書をマージして新しい辞書を作るとき、どうします?

🌟 関数と * その1:キーワード専用引数 (5min)

  • 関数の引数はデフォルトで位置またはキーワード引数(Pythonチュートリアルより)
  • キーワード専用引数 *
  • キーワード専用にする文法説明
  • どんなときに使うか:呼び出し意図を明確に
  • /による位置専用引数も紹介します(Python 3.8〜)
  • 位置専用にする文法説明
  • どんなときに使うか:将来、引数名を変更可能にする

どんなときに使うかは、Effective Pythonと自分の経験をベースにします

💫 関数と * その2:可変長位置引数・可変長キーワード引数 (5min)

  • こわくない *args, **kwargs
  • この場で始めてみた方も理解できるよう、print(args)print(kwargs)をして動きの確認から始めます
  • argsはタプル、kwargsは辞書
  • アンパック演算子との組合せ
  • イテラブルをargsに渡せるし、辞書をkwargsに渡せる
  • 関数呼び出しでも、アンパック演算子は複数回使える(PEP 448)

🌟 話題の切れ目に挟む小話(2min)

時間調整用です(話せなくてもスライドには入ります)

  • *インポート(オススメしない)
  • 標準ライブラリのglobでの*
  • 標準ライブラリのreでの*
  • 辞書のマージ演算子(|)Python 3.9〜

💫 まとめ (1min)

ここまでで28分(30分には収まります)

Nikkie began his career as a software engineer in 2016.
He started Python as a hobby in 2017 and fell in love with it.
He is engaged in Natural Language Processing as a data scientist at Uzabase, inc. Tokyo, Japan from 2019.

He is working on the Python community in Japan as a staff of the following event:

He gave a talk (and lightning talks) at many PyCons in Japan and abroad.

One of them is on the subject of sharing knowledge of automation in PyCon JP staff activities.

He loves anime (Japanese animetation) as much as Python, and implements ideas related to some anime with Python.
In 2022, he write code related to "Sing a Bit of Harmony" (e.g. Twitter bot, prototyping AI character, e.t.c.).