# 文字変数の宣言 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 x < 0: x = 0 print('Negative changed to zero') elif x == 0: print('Zero') elif x == 1: print('Single') else: print('More')
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 # なにもしない
# 戻り値のない関数 def hello(x,y): print("hello world!") # 戻り値のある関数 def add(x,y): return x + y
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) # エラー
echotest.py
def echo1(): print("test1!") def echo2(): print("test2!")
# モジュールのインポート (拡張子を覗いたファイル名を指定) import echotest # モジュールで定義されたメソッドの利用 echotest.echo1() # ローカルな名前に代入して利用 method1 = echotest.echo1 method1()
・モジュールはカレントディレクトリ、環境変数 PYTHONPATH の順に探される。
・実際には、モジュールは変数 sys.path で指定されたディレクトリのリストから検索される。
パッケージ (package) は、Python のモジュール名前空間を
``ドット付きモジュール名 (dotted module names)'' を使って構造化する手段。
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)
サーバロジックを書きたい場合は pythonでWebサーバを書いてみる を参照。
python -m http.server 8000 -b localhost
※-b を指定しない場合は、localhost 以外にも公開される。( -b 0.0.0.0 と同じ)