ユーザ用ツール

サイト用ツール


it技術:python

文書の過去の版を表示しています。


Python

C#で作成したものをPythonに移植する上で調査したメモ
Visual Studio 2022を使用

Tips

Visual Studio上でUTF-8にして保存したい

Visual StudioでPythonファイルを保存するとShift-JISになりデバッグエラーになってしまう。
UTF-8で保存できるようにしたい。

  • EditorConfig ファイルをプロジェクトに追加する
  • EditorConfig ファイルの下記内容を記載
EditorConfig
root = true
 
[*.py]
charset = utf-8

Visual Studioのエディターで行番号を表示する

Pythonはエラーに行番号が出てくるので表示するようにしておく。

エディターで行番号を表示する

main関数の書き方

Pythonはスクリプトなのでmain関数を定義する必要はありません。慣例的にmain関数を定義することがあります。

main
import sys
 
def main(argv):
    print('Hello, World!')
    return 0
 
if __name__ == '__main__':
    sys.exit(main(sys.argv))

Pythonのmain関数の書き方をわかりやすく解説

コーディング規約

コメント記載方法

Google Styleを採用

Python docstringについて

Googleスタイル
def func_google(param1, param2):
    """Summary line.
    Extended description of function.
 
    Args:
        param1 (int): Description of param1
        param2 (str): Description of param2
 
    Returns:
        bool: Description of return value
    """
    return True

定義変数

Python には、C/C++ の const のような、定数を定義するためのキーワードは用意されていません。

Constクラスを作成して、その中でメンバ変数として定義する。重複定義とか気にせず単純にした。
定義変数は、英大文字を使用する。

const.py
class Const():
    # クラス変数として定数を定義する
    FOO = 1
    BAR = "TEST"

使用方法

main.py
From Const import Const
    a = Const.Foo

自作クラスで'module' object is not callable エラー

原因はimportの書き方が間違っているから
以下の書き方だとエラーになる。

import myClass
myInstance = myClass()

下の書き方に修正すると動く。

from (myClassのファイル名) import myClass
myInstance = myClass()

[トラブル] 自作クラスのimport時にTypeError: 'module' object is not callableになる

クラス内のメソッドを別のメソッド内で呼ぶ

クラス内のメソッドを別のメソッド内で呼ぶと「name 'xxx' is not defined」エラーになる。
関数の順序は関係ない、クラス内のメソッドの第1引数は必ずselfを付け、self.xxx で呼び出す必要があった。

Pythonではメソッドの第一引数は「self」が必須であり、自身のクラスのインスタンスを受け取るとコーディング規約で決まっているらしい。

Pythonのメソッド引数に書く「self」はしばしば,他言語からのPython移民を中心に「ウザイ」「キモイ」「消えてなくなれ」と攻撃の対象となることが多いのです。

https://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay/

コマンドライン引数の処理

ファイル出力

フォルダ未存在時作成

フォルダ名は、フルパスで指定すればいい。

import os
 
new_path = "demo_folder"
if not os.path.exists(new_path):
    os.mkdir(new_path)

Python フォルダの作成 既存かチェックあり

フォーマット書式

line = "{0}さんの身長は{1}cmです。{0}さんの体重は{2}kgです。".format("山田", 190, 105.3)
print(line)
# 山田さんの身長は190cmです。山田さんの体重は105.3kgです。

単純に左から順に一対一になっている場合は、以下のようにインデックス番号を省略できます。

line = "{}さんの身長は{}cmです。{}さんの体重は{}kgです。".format("山田", 190, 105.3)
print(line)
# 山田さんの身長は190cmです。山田さんの体重は105.3kgです。

Pythonの文字列フォーマット(formatメソッドの使い方)

日付書式

代表的なものがこちらです。より詳しい情報は公式ドキュメントを確認してください。

  • %Y: 年(4桁)
  • %y: 年(2桁)
  • %m: 月
  • %d: 日
  • %H: 時
  • %M: 分
  • %S: 秒
  • %f: マイクロ秒
  • %A: 曜日
  • %a: 曜日(短縮形)
  • %w: 曜日(数値: 0-6, 0:日曜日, 1:月曜日, … 6:土曜日)
import datetime
 
dt = datetime.datetime.today()  # ローカルな現在の日付と時刻を取得
print(dt)  # 2021-10-29 15:58:08.356501

[解決!Python]日付や時刻をYYMMDDhhmmssなどの形式に書式化するには

ミリ秒

%fはマイクロ秒なのでミリ秒にする。

from datetime import datetime

date_s = (datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])

print(date_s) # 2021-01-23 03:00:29.052

Python で DateTime をミリ秒単位の文字列に変換する

it技術/python.1649148565.txt.gz · 最終更新: 2022/04/05 17:49 by yajuadmin