Python¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Pythonとは¶
記入中...
02. セットアップ¶
インストール¶
▼ yumリポジトリから¶
$ yum install -y python3
Dockerfile¶
▼ Flask、uWSGIを使用する場合¶
#===================
# Global ARG
#===================
ARG PYTHON_VERSION=3.10
ARG LABEL="Hiroki <example@gmail.com>"
#===================
# Base Stage
#===================
FROM python:${PYTHON_VERSION}-slim as base
WORKDIR /var/www/foo
ENV TZ Asia/Tokyo
COPY ./requirements.txt /var/www/foo/requirements.txt
RUN apt-get update -y \
`# uwsgiの要件をインストール。` \
&& apt-get install -y \
gcc \
`# uESGIの起動時にFlaskが必要なため、パッケージを先にインストール。` \
&& pip install \
--upgrade pip \
-r requirements.txt
COPY ./docker/flask/uwsgi.ini /etc/wsgi/wsgi.ini
#===================
# development Stage
#===================
FROM base as development
LABEL mantainer=${LABEL}
CMD ["uwsgi", "--ini", "/etc/wsgi/wsgi.ini"]
#===================
# Production Stage
#===================
FROM base as production
LABEL mantainer=${LABEL}
COPY ../software /var/www/foo/
CMD ["uwsgi", "--ini", "/etc/wsgi/wsgi.ini"]
▼ FastAPI、uvicornを使用する場合¶
#===================
# Global ARG
#===================
ARG PYTHON_VERSION=3.10
ARG LABEL="Hiroki <example@gmail.com>"
#===================
# Base Stage
#===================
FROM python:${PYTHON_VERSION}-slim as base
WORKDIR /var/www/customer
ENV TZ Asia/Tokyo
COPY ./requirements.txt /var/www/customer/requirements.txt
RUN pip install \
--upgrade pip \
-r requirements.txt
#===================
# development Stage
#===================
FROM base as development
LABEL mantainer=${LABEL}
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--reload"]
#===================
# Production Stage
#===================
FROM base as production
LABEL mantainer=${LABEL}
COPY ./ /var/www/customer/
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--reload"]
03. ディレクトリ構成規約¶
04. ファイル構成¶
命名規則¶
▼ PEPによる規則¶
Pythonの命名規則は、PEPに記載されている。
▼ パッケージ¶
全て小文字のスネークケースとする。
▼ モジュール¶
全て小文字のスネークケースとする。
▼ クラス¶
アッパーキャメルケースとする。
▼ 例外¶
アッパーキャメルケースとする。
▼ 型変数¶
アッパーキャメルケースとする。
▼ メソッド¶
全て小文字のスネークケースとする。
▼ 関数¶
全て小文字のスネークケースとする。
▼ 変数¶
全て小文字のスネークケースとする。
▼ 定数¶
全て大文字のスネークケースとする。
package、subpackage¶
▼ package、subpackageとは¶
ディレクトリに相当する。
▼ 基本的には__init__.py
ファイルを配置すること¶
通常パッケージとして扱うディレクトリには。
__init__.py
ファイルを配置する必要がある。
一方で、名前空間パッケージではこれが不要である。
module¶
▼ moduleとは¶
パッケージ内の各ファイルに相当する。
from import¶
▼ from importとは¶
パッケージとして定義したディレクトリからクラスや関数読み込む。
存在しないパッケージをインポートしようとすると、インポートエラーになってしまう。
from <パッケージ名>.<サブパッケージ名>.<モジュール名> import <クラス名、関数名>
▼ アスタリスクを使用しないこと¶
アスタリスクによるインポートは非推奨である。
▼ 絶対パスを使用すること¶
パッケージ名は絶対パスを指定する。
▼ 宣言場所について¶
1
個のファイルで1
個のクラスや関数のみを宣言する場合は、import
を実行する場所はクラスや関数の外でも中でもよい。
from foo import foo
def foo():
foo = foo()
return foo
ただし、複数を宣言する場合は、可読性の観点からクラスや関数の中でimport
を実行する。
def foo():
from foo import foo
foo = foo()
return foo
def bar():
from bar import bar
bar = bar()
return bar
▼ 1
個ずつインポート¶
複数のパッケージをインポートする場合、カンマで繋ぐこともできるが、1
個ずつインポートした方が良い。
# import foo, bar
import foo
import bar
def foo():
foo = foo()
return foo