福岡県だけどPythonを勉強する!

他言語を積極的に推奨する福岡県でPythonを勉強していく記録。

言語仕様の勉強を開始

Pythonを勉強する目的はPythonでのweb制作です。

(それが仕事なので…)

 

FlaskというWEBフレームワークを使えるようになるのが目標なのですが、Python関連のフレームワークには日本語の書籍がありません。

(あるけど古過ぎるので無いのと同じ)

 

「言語仕様を覚えた後にwebで使えなかったらどうしよう?」

 

という不安があり、下調べの段階で何度もRubyに浮気しそうになりました。Rubyには日本語のweb関連情報が潤沢に存在します。でもPythonのコード綺麗だし、「Pythonの禅」には共感出来るし、フレームワークやテンプレートエンジンのネーミングが好きだし…などと迷っている時に見つけたツイートがコレです。

PythonでもJavaでもRubyでも良いから、一度ちゃんとマスターするまで使い込もうよ。そうすれば基礎ができるから、あとは何でもできる。お前 らこれ勉強してハズレだったらどうしようとか心配し過ぎなんだよ。基礎はみんな同じなんだからそんな、大ハズレとかないんだよ。

 

思いっきり背中を押されました。

「やろう。とにかく始めてみよう」

これをつぶやいていた方には感謝です。

 

本題に戻ります。

環境構築が終わり、やっとPythonの言語仕様の勉強に入れました。

 

以下、今回の備忘録です。

 

パーフェクトPython

言語仕様

●2章 Pythonの基本

 

■インデント

Pythonプログラムをコマンドラインから実行

→変数__name__に__main__が設定される。

 

■入出力

ビルトイン関数

→組み込み関数

 

■コメント

コメントは「#」から改行まで。

 

■ドックストリング

"""あいうえお"""

'''あいうえお'''

関数やクラスで最初に書かれた文字列識別子。

定義したテキストは関数やクラスの__doc__に保存される。

help()で確認出来る。

(閉じる時はq)

 

ドットストリングにはインデントは関係ない。

でもインデントは守った方が良さげ。

 

■識別子

識別子 = 名前

大文字・小文字のアルファベット、アンダースコア、数字などが利用可能。

先頭に数字は不可。

 

■変数

アンダースコアで始まる識別子はワイルドカードでのインポートの際に

インポートされない。

 

変数はオブジェクトを割り当てられると名前空間バインディングされる。

バインディング = 束縛

 

spam = 'ham'

 

変数の参照を削除

delキーワードを使う

 

del spam

 

グローバル変数

Pythonにはプログラム全体から使えるグローバル変数は無い。

最大のグローバル変数でもモジュール(ファイル)単位。

関数やクラスの中でglobalというキーワードを使うと

グローバル変数を用いるという指定になる。

 

spam = 'ham'

def egg():

    spam = 'egg'

    print(spam)

 

>>>egg()

egg

>>>spam

'ham'

 

spam = 'ham'

def egg():

    global spam

    spam = 'egg'

    print(spam)

 

>>>egg()

egg

>>>spam

'egg'

 

 

変数をスコープの内側で定義していない場合、

グローバル変数を参照出来る。

 

spam = 'ham'

def egg():

    print(spam)

 

>>>egg()

ham

 

ただし、参照したグローバル変数を操作すると例外が発生する。

(要はglobal宣言をしろということ)

 

・variable = 変数

・assignment = 割り当て

 

■ノンローカル変数

ローカルスコープではない一番近くの変数を利用出来る。

nonlocal count

 

■定数

Pythonに定数はない。

すべて大文字の変数を定義して定数のように利用する場合もある。

そのような変数は書き換えないように注意。

 

予約語

すごく少ないので間違ってこれらを使うことは無いと思う。

 

デバッグ・トレースバック

エラーを遡って表示

下から読んだ方がいい。

 

■メモリ管理

難しいので少し理解出来てからまた読む。

 

 

まだ序盤なので余裕でした。

この調子で最後まで行ければいいなあと…。

 

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)