LoginSignup
2
0

More than 1 year has passed since last update.

Pythonチュートリアルをやってみた

Posted at

もうすぐエンジニアとして働き始めて2年目になります。
最近の業務はフロントエンドが多めですが、バックエンドの守備範囲を広げておこうと思い、Pythonチュートリアルをやってみました。
学習メモです。

雑感

  • プログラミング初学者向けではない(プログラミング用語が説明もなくサラッと出てくるので)
  • 経験者が文法を概観するのにはよいかな
  • 細かい説明が多いので、手を動かすのは気になったところだけでいい

所要時間

  • 説明は結構ちゃんと読んで、手を動かすのは少し: 8h
  • 侍さんには60時間と書かれていました

気になったところをいくつかあげてみる

仮引数のアスタリスク(*)

4.6. 関数を定義する

関数に可変長引数を指定する場合に使うんですね。
1個の場合と2個の場合でまとめられ方が違うようです

# *1個の場合はタプルにまとめられる
def hello(*people):
    for person in people:
      print("hello " + person)

hello("Tom", "Sam", "Nick")

# 2個の場合は辞書型にまとめられる
def fuga(**args):
    for key, value in args.items():
        print('key:' + key + ' / value:' + value)

        # フォーマット済み文字列リテラル(f-string )
        print(f'key: {key} / value: {value}')

fuga(a='aaa', b='bbb', c='ccc')

関数の引数として、単独で/*があった場合は、引数の受け渡し方に制限がかかるようです。

# /(スラッシュ)はそれより前の引数を位置専用引数として制限する
def self_introduce(first_name, last_name):
    print(f"hello, I'm {first_name} {last_name}.")

self_introduce("naoya", "tanaka")

# *はそれより後の引数をキーワード引数として制限する
def kwd_only_arg(*, arg):
    print(arg)

参考: [python初心者向け]関数の引数のアスタリスク(*)の意味

ドキュメンテーション文字列

4.7.7. ドキュメンテーション文字列

>>> def my_function():
...     """Do nothing, but document it.
...
...     No, really, it doesn't do anything.
...     """
...     pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.

    No, really, it doesn't do anything.

関数定義の中にドキュメントを書くことが標準で推奨・サポートされていることに驚きました。
関数名.__doc__で記載したドキュメントにアクセスできるんですね。

リスト型

5.1. リスト型についてもう少し
「リスト型って、JavaScriptでいうところの配列かな?」と思っていたら、別途「array」もあるんですね

  • リスト
    • 組み込み型
    • importなしで使えるので使い勝手が良い(簡単な処理であれば、基本これ使うらしい)
    • 違うデータ型を格納できる
fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
list = [1, "hello", [1, 2, 3]]
  • array
    • 標準モジュールであるarrayimportして使う
    • 同じデータ型の値のみ格納できる
    • 第一引数で型(型コード)を指定する
    • 一次元配列のみ
import array
arr_int = array.array('i', [1, 2, 3, 4])

他にも、演算に色々便利なnumpy.ndarrayというのがあるらしい

  • numpy.ndarray
    • Numpyをインストール & importして使う
    • numpy.arraynumpy.ndarray型の配列を作成する
    • 演算に便利な関数・メソッドが色々とあるらしい
import numpy as np
arr_2d = np.array([[1, 2, 3], [3 ,4, 5]])

参考: Pythonのリストと配列とnumpy.ndarrayの違いと使い分け

パッケージ

6.4. パッケージ

パッケージ (package) は、Python のモジュール名前空間を "ドット付きモジュール名" を使って構造化する手段です。

ディレクトリ単位でモジュールを構造化して、モジュール名.サブモジュール名という形でアクセスできるようになるんですね。

パッケージとしたいディレクトリに内に__init__.pyを配置することが必要で、パッケージを読み込むと、__init__.pyに記載された処理が実行されるようです。

詳しくはこちら: Python の init.py とは何なのか

他にもdoctestvenvについて振り返りたかったのですが、長くなってしまったのでここまでにしておきますw
(せめてメモとりながら勉強しないと、どこに何が書いてあったか忘れてしまうなぁ...)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0