Pythonの基礎

文字の利用

# 文字変数の宣言
strval="string"
strval='string'

# 文字列の連結
strval = 'str' + 'ring'   # string
strval = 'str' 'ring'     # string

# 文字列の反復
strval  = "string"
strval2 = strval*2     # stringstring

# 文字列の添字表記
strval1[0]      #'T'
strval1[0:2]    #'TE'

数値の利用

# 数値変数の宣言
intval=100

# 整数の除算は floor (実数の解を越えない最大の整数) を返す:
intval = 7/3    ※2

リストの利用

# リスト変数の定義
a = ['str1', "str2", 100, 1234]
a[0]   #str1
a[1]   #str2

# リスト内容の置換
a = ['str1', "str2", 100, 1234]
a[0:2] = [111, 222]  # a = [111,222,100,123]

# リスト数の取得
a = ['str1', "str2", 100, 1234]
len(a)   #4

タプルの利用

複数の値を ()で括るとtuple として纏める事ができる。
※これを利用して関数から複数の戻り値を返す事も可能。
※tupleの各要素へはリストと同じようにアクセス可能。

vars = ("A", "B", "C", "D")
print(vars[0])  # A

# 複数の戻り値を返す関数
def func1():
  return (100, 200)


# 複数の戻り値を受け取る
nums = func1()              # 1つの変数でtupleとして受け取る
num1, num2 = func1()   # 個別の変数で受け取る

タプルのサイズと同じ数の変数を用意すると、各要素を個別の変数で受け取る事ができる。

var1, var2, var3, var4 = ("A", "B", "C", "D")
print(var1)  # A

受取時にはリスト(*付き)変数で受け取る事も可能。

first, *more, last = ("A", "B", "C", "D")
print(first)  # A
print(last)  #  D

if文

if x < 0:
    x = 0
    print('Negative changed to zero')
elif x == 0:
    print('Zero')
elif x == 1:
    print('Single')
else:
    print('More')

for文

 list1 = ['cat', 'window', 'defenestrate']
 for x in list1:
     print(x, len(x))

# zip を使って2つのリストを処理する

names = ["Taro", "Hanako", "Ichiro"]
sexes = ["man", "woman", "man"]

for name, sex in zip(names, sexes):
    print(f'{name} is a {sex}')

pass 文

pass  # なにもしない

関数の利用

# 戻り値のない関数
def hello(x,y):
    print("hello world!")
 
# 戻り値のある関数
def add(x,y):
    return x + y

classの利用

class Sample():

    class_var1 = "class var1"  # クラス変数

    def __init__(self):
        self.instance_var1 = "instance var1"  # インスタンス変数

    @staticmethod
    def static_method():
        print("static method")

    @classmethod
    def class_method(cls):
        print("class method")
        print(f'class_var1 is "{cls.class_var1}"')

    def instance_method(self):
        print("instance method")
        print(f'instance_var1 is "{self.instance_var1}"')


# クラス変数への値のセット
Sample.class_var1 = "this is class var1!"
print(Sample.class_var1)

# インスタンス変数への値セット
obj = Sample()
obj.instance_var1 = "ABC"  # public変数として扱う
obj.instance_var2 = "DEF"  # 未定義のインスタンス変数を外から設定する事も可能
print(obj.instance_var1)
print(obj.instance_var2)
print(obj.class_var1)      # クラス変数も参照可能

# staticメソッドの呼び出し
Sample.static_method()

# インスタンスメソッドの呼び出し
obj.instance_method()

# クラスメソッドの呼び出し
Sample.class_method()

private変数はアンダーバー2つ(または1つ)で始まる変数名で定義する。
※privateメソッドも同様。

class Sample():

    def __init__(self):
        self.public_var1 = "public var1"      # publicなインスタンス変数
        self.__private_var1 = "private var1"  # privateなインスタンス変数

    def get_private_var1(self):
        return self.__private_var1


obj = Sample()
print(obj.public_var1)
print(obj.get_private_var1())
print(obj.__private_var1)       # エラー
TODO: __class__ と __dict__ について
TODO: @property @xxxx.setter @xxxx.deleter
TODO: setattr

モジュールの利用

echotest.py

def echo1():
    print("test1!")

def echo2():
    print("test2!")


# モジュールのインポート (拡張子を覗いたファイル名を指定)
import echotest

# モジュールで定義されたメソッドの利用
echotest.echo1()

# ローカルな名前に代入して利用
method1 = echotest.echo1
method1()

パッケージについて

TODO: __init__.py など

モジュール検索について

・モジュールはカレントディレクトリ、環境変数 PYTHONPATH の順に探される。
・実際には、モジュールは変数 sys.path で指定されたディレクトリのリストから検索される。

パッケージの利用

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

モジュール検索PATHの追加

import sys,os
sys.path.append('ディレクトリ')

ファイル一覧

# coding: utf-8

import sys,os
import glob
import re

path = os.path.abspath(os.path.dirname(__file__))

# globで検索
files = glob.glob(path + "/*.md")
for file in files:
    print(file)

# os.listdirで検索
pattern = r".*\.md$"
files = os.listdir(path)
for file in files:
    match = re.match(pattern , file)
    if match:
        print(file)

呼び出し元ファイルのフルパスを取得する

呼び出し元ファイルのフルパスを取得する

import inspect

print(inspect.stack()[1].filename)

簡易Webサーバ

サーバロジックを書きたい場合は pythonでWebサーバを書いてみる を参照。

python -m http.server 8000 -b localhost

※-b を指定しない場合は、localhost 以外にも公開される。( -b 0.0.0.0 と同じ)


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS