a = 1
b = a * 2 + 3
a += 1 #代入演算 2
c = 'Test'
print(c[2]) #s
d = c #変数cと同じメモリ領域を変数dに割り当て
str = c + 'Data' #TestData
l = len(c) #cに代入された文字数
print('cの値は', c)
val1 = val2 = 100
c1,c2 = 'a','b'
del a #変数aを削除
val: int = 10 #型宣言して代入
var1 = 1
var2 = 2
def add(a):
global var1
var1 += a
var2 = 3
print (var1, var2) # 4,3
add(3)
print (var1, var2) # 4,2
if 条件式:
条件式が真の時処理
if 条件式:
条件式が真の時処理
else:
条件式が偽の時処理
if 条件式1:
条件式1が真の時処理
elif 条件式2:
条件式1が偽で条件式2が真の時処理
else:
すべての条件式が偽の時処理
if 値 in リストなど:
値が含まれる時処理
while 条件式:
条件式が真の時処理
while True: #無限ループ
for 変数 in オブジェクト:
処理
for 変数 in オブジェクト:
処理
break
else:
ループが終わりまで実行された後処理
for i in range(5): #iに0~4まで値を代入しながら、以下を5回実行する
for i in range(2,10): #iに2~9まで代入する
for i in range(2,10,2): #iに2~9まで+2ずつ代入する
for s in 'abc': #sに'a'、'b'、'c'を順に代入する
break #ループ処理終了
continue #現在のループを中断し次のループ処理を開始
pass #何も処理しない
breakpoint() #python標準のデバッガを呼び出します。
try:
x = 10 / 0
except Exception as e:
print(e) #division by zero
else:
#例外が発生しなかっ た場合の処理
print('hoge')
finally:
#例外発生有無に関係なく最後に実行する処理
print(' fuga') #fuga
| r | 読み込みモード(デフォルト) |
| w | 書き込みモード(既にファイルがあるときは内容が全て削除される) |
| x | 排他生成モード(既にファイルがあるときにはエラーとなる) |
| a | 追記モード(ファイルがなければ新規に作成する) |
| b | バイナリモード |
| t | テキストモード(デフォルト) |
| + | 更新用にオープン。'r'、'w'、'a'と一緒に指定する必要がある |
f = open('sample.txt', 'r', encoding='utf-8')
print(f.readlines()) #1行読み込み
f.close()
f = open('sample.txt', 'w', encoding='utf-8')
f.write('abcdef\n') #書き込み
print('hogefuga', file=f) #printでも書き込み可
f.close() #クローズするとファイルに内容が書き込まれる
.read() #すべての内容を読み込みむ
.readlines #ファイルの内容を全て読み込んで、各行を要素とするリストを作成する
os.getcwd() #カレントディレクトリの取得
os.chdir() #カレントディレクトリの移動
__file__ #実行中スクリプトのファイルパス
os.path.basename(__file__) #実行中スクリプトのファイル名
os.path.dirname(__file__) #実行中スクリプトのディレクトリ名
さらに標準モジュール pathlib を使用することで様々な操作ができます。
def fnc(a,b=2): #引数bはデフォルト値付き
result = a + b
return result
fnc(1): #3
fnc(b=3, a=1): #4
#複数の戻り値を返却する関数
def getABC():
return('A', 'B', 'C')
(a, b, c) = getABC()
print(a) #A
print(b) #B
print(c) #C
関数の引数には4つの種類が存在します。
def counter():
count = 0
def inner_counter():
nonlocal count
count += 1
return count
return inner_counter
cnt = counter()
print(cnt()) #1
print(cnt()) #2
print(cnt()) #3
その他の asyncio が提供する主な機能には以下があります。import asyncio async def main(): print('Hello') await asyncio.sleep(1) # 1秒停止 print('World') asyncio.run(main()) # 'Hello' 1秒後に 'World'
class myprint():
def print(self):
print("Hello World!")
hello = myprint() #インスタンス生成
hello.print() #Hello World!
class calc:
def __init__(self): #コンストラクタ 引数ない場合に処理
self.a = 0
self.b = 0
def __init__(self, a, b): #コンストラクタ 引数ある場合に処理
self.a = a
self.b = b
def sum(self):
self.sum = self.a + self.b
return self.sum
ins = calc(2,3) #インスタンスを生成し、コンストラクタに引数を渡します
print(ins.sum()) #5
class Member:
LANG = 'JP' #プロパティ(初期値をセット)
def __init__(self): #コンストラクタ(インスタンスを生成した際に実行されます)
self.name = ''
def __del__(self): #デストラクタ(インスタンスを破棄した際に実行されます)
print(self.name + 'を削除しました')
def setName(self, name): #セッタ(値をセットする関数メソッド)
self.name = name
def getName(self): #ゲッタ(値を取得する関数メソッド)
return self.name
taro = Member() #インスタンス生成
taro.setName('太郎') #データセット
print(taro.getName(), taro.LANG) #太郎 JP
john = Member()
john.setName('ジョン')
john.LANG = 'US'
print(john.getName(), john.LANG) #ジョン US
taro = None #太郎を削除しました
class calc():
def __init__(self, a, b):
self.a = a
self.b = b
def sum(self):
return self.a + self.b
class totalCalc(calc): #calcから継承
def __init__(self):
super().__init__(0, 0) #calcコンストラクタを呼び出す
self.c = 0
def set(self, a, b): #セッタ追加
self.a = a
self.b = b
def sum(self): #sumを上書き
self.c += super().sum() #calcメソッド実行し計算
return self.c
data = totalCalc() #インスタンス生成
data.set(1, 2) #データセット
print(data.sum()) #3
print(data.sum()) #6
・代表的な標準ライブラリ
tkinter GUIアプリケーション作成
pathlib ファイルやフォルダの操作
datetime 日時を扱う
random 乱数を作成
json Webで用いられるJSON形式データを扱う
math 三角関数や数値計算用の関数群
・pip 外部ライブラリをWeb上のPyPIからダウンロードしてインストールします。
pip install モジュール 名 #インストール
pip uninstall モジュール 名 #アン インストール
pip show モジュール 名 #詳細確認
pip list #インストール済みモジュールの確認
・import 標準モジュールや外部ライブラリをインポートする際にプログラムの最初に指定します。
import モジュール名1
import モジュール名2 as 読み替え文字
from モジュール名 import 関数名
モジュール名1.関数()
読み替え文字.関数()
関数名()
import glob #globモジュールの機能を使う
import time #timeモジュールの機能を使う
files = glob.glob('*') #現在のディレクトリのファイルとディレクトリをすべて取得
for f in files:
print(f)
time.sleep(1) #1秒待機
・tkinter
Python標準のGUIツールキットでインストールする必要がなく、Web上にも多くの情報やサンプルがあります。
import tkinter as tk
from tkinter import ttk #機能拡張時
| tkとttkで使用可 | tkで使用可 | ttkで使用可 |
| Button Checkbutton Entry Frame Label LabelFrame Menubutton PanedWindow RadioButton Scale Scrollbar Spinbox |
Canvas Listbox Menu Message |
Combobox Notebook Progressbar Separator SizeGrip Treeview |
・kivy
Android、iOSなどにも対応した画面を生成できます。
機能も豊富でopenGLを使った3Dグラフィクスライブラリなどを使って簡単なゲームなどを作成することも可能です。
また、画面レイアウトファイル(.kv)とPythonコードを別々に記述をすることもできます。
・TkEasyGUI
PySimpleGui(商用利用が有料化)とも互換性があり直感的にGUIを作成できます。
MITラインセンスで商用利用や再配付も可能です。
スマホ用 Pydroid3 にも対応しています。
・Flet
モダンなデザインをデフォルトで使用でき記述も簡素化されているため、初心者でも見栄えのいい画面を作成できます。
また、Webアプリとしてブラウザでも起動ができます。
| Flask | 小規模Webアプリに適し比較的簡単に記述できる。 |
| Djnago | 大規模Webアプリが作成でき、標準で高度な機能が使える。 |
| streamlit | Pythonコードのみで簡単に動的なページが作成でき、ウェジットも豊富に用意されている。 |
| PyAutoGUI | マウス・キーボード入力自動化します。 |
| openpyxl、xlwt/xlrd | Excelファイルを読み書きしたり操作できます。標準ライブラリのPandasなどもあります。 |
| Selenium | Webブラウザを操作できます。別途、ブラウザに対応するドライバーソフトのインストールが必要。 |
import serial
ser = serial.Serial('COM1', 9600) #シリアルポートオープン
ser.write(b'Hello World') #データ出力
c = ser.read(11) #データ入力
print(c)
ser.close() #シリアルポートクローズ