hakeの日記

Windows環境でプログラミングの勉強をしています。

2015-10-01から1ヶ月間の記事一覧

python - 高階関数

filter - 要素を関数で評価した結果がTrueとなるものを返す #coding: cp932 # Falseで無い要素を返す v = filter(None, ["", 0, 1, None]) print(v) # -> <filter object at 0x0000000D8E26A470> print(list(v)) # -> [1] # 偶数ならTrue def is_even(x): if x % 2: return False else: return Tru</filter>…

python - 関数デコレータ

デコレート対象関数の実行前後に処理を追加する。 使用方法は、対象関数の定義の上の@デコレータ名を追加する。 @deco def myfunc(x):とすることで、myfuncをdecoの引数にするイメージ? def deko(myfunc) def wrapper(x): do_something return wrapper 使用…

python - 関数の可変長引数

#coding: cp932 def foo(*args, **kwargs): print("args:") for i in args: print(i) print() print("kwargs:") for i in kwargs.items(): print(i) foo("1", *["2", "3"], foo="A", **{"bar":"B", "baz":"C"}) # -> args: # 1 # 2 # 3 # # kwargs: # ('bar'…

python - クラス

コンストラクタは、__init__(self, *args) メソッドの最初の引数はself クラス変数は、クラス名.変数名 インスタンス変数は、self.変数名 #coding: cp932 class A: def __init__(self, arg): self.var = "instance var : " + arg def print(self): print(A.v…

Windows10 - 右クリックメニュー「送る」に項目を追加する方法

下記フォルダに追加したいアプリケーションのショットカットを追加する。 C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo

python - 正規表現

reモジュールのメソッドを使用する場合。 import re # クラスメソッド # # # 文字列中にヒットする部分があるかを評価する m = re.search(r'[a-z]', '1a2b3c') print(m.group()) # a print(type(m)) # <class '_sre.SRE_Match'> print(m) # <_sre.SRE_Match object; span=(1, 2), match='a'> print(m.group(0)) # a print(m.start(0))</_sre.sre_match></class>…

python - False(偽)となるデータ

None、False、空文字、数値の0、空のコンテナが偽となる。 #coding: cp932 def is_true(arg): if arg: print("True") else: print("False") is_true(None) # False is_true(True) # True is_true(False) # False is_true(1) # True is_true(0) # False is_tr…

python - 辞書(dict)

#coding: cp932 d = {"foo": 1} d["bar"] = 2 d["baz"] = 3 print(d) # -> {'baz': 3, 'bar': 2, 'foo': 1} # keyを一つずつ取得 for k in d: print(k, "", end="") # -> baz bar foo print() # (key, value)を一つずつ取得 for t in d.items(): print(t, ""…

python - テキストファイルアクセス

# 一括リード f = open("test.txt","r") data = f.read() print(data) f.close() with open(filename, opt) as f とすると、close()を明示しなくても良いので楽。 rubyのFile.open(filename, opt){|f| do_something }と同じ? #coding: cp932 # 一括リード w…

python - print

python 2系では、引数に括弧が不要だが、python 3系では関数になったので括弧必須。 #coding: cp932 # デフォルトで改行有り print("Hello") print("World") # -> Hello # World # 改行なし print("Hello", end="") print("World") # -> HelloWorld # 複数の…

python - 制御構文

for文、while文ともelse節がある。else節はbreakで中断せずにループが終了した場合に実行される。 #coding: cp932 for i in range(5): # if i == 3: break print(i) else: print("else節実行") i = 0 while i < 5: # if i == 3: break print(i) i += 1 else:…

python - 例外処理

try節で例外が発生した場合、対応する例外のexcept節が実行される。例外の種別を指定しない場合は、 except Exception とする。 また、例外が発生しない場合はelse節が実行される。finally節は例外発生の有無に関わらず実行される。 #coding: cp932 try: pri…

python - Windowsへのインストール

入手先 今回は最新版のpython 3.5.0(python-3.5.0-amd64.exe)をインストールする。 python japan https://www.python.org/downloads/ あとwindows版のpython 3系は、numpyなどで通常の追加ライブラリでイストールできない場合があるそうなので、その場合のラ…

Windows10起動時のエラー

昨日から起動時に以下の様なエラーが出るようになりました。 「重大なエラー スタートメニューとCortanaが作動していません。再びサインインして、修復を試みます。」 一回サインアウトして再度サインインすると普通に動作する様になるのですが、起動時に毎…

Go言語 - PEGで構文解析 - 構文木の作成

PEGで構文木を作成するプログラムを書いてみました。 簡易化の為に、識別子(ident)と代入演算子(=)と加算演算(+)のみ解析して、ポーランド表記で出力します。 構文 root <- expression EOT / expression <.+> EOT / エラー用 <.+> EOT エラー用 EOT <-…

Go言語 - PEGで構文解析 - 字句解析

Go言語でPEGによる構文解析方法があることを知ったので、簡単な字句解析部分のみのプログラムを書いてみました。ruleの書き方はgoyaccよりも融通が利いて便利そうです。 参考サイト GolangとPEGで作る言語処理系 vol.1 入手先および構文の書き方 GitHub - po…