忍者ブログ
物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
一応、本自体は読み終わったので後はまとめるだけ




■ if
if 条件式 :
 条件式が真の場合の処理
elif 条件式 :
 条件式が真の場合の処理

どこがif文の終わりかはブロックで判断する必要がある


■ pass
passは何もする必要がないときに書く
pythonではブロックがないとエラーが出るときがあるため、代わりにpassと書いておく


■ while
while 条件式 :
 ・・・
else :
 ・・・
サンプルコード
stopって変数を使わなくてもいいんじゃないか?と思って2つめのを書いてみた
おそらく実行時に毎回wordの長さを評価するからすっごい長いリストの場合は計算時間が遅くなるとかそういうこと?
それとも1度計算した量はキャッシュされてるとか?
#!/usr/bin/env python
# -*- coding: utf-8 -*-

word="PYTHONisGOS"
stop=len(word)
i=0
while i < stop:
 print(word[i])
 i += 1


i=0
while i < len(word):
 print(word[i])
 i += 1


■ break
whileを使ったループで、そのブロックから抜け出すときに使う


■ else節
whileブロックの後にelse節があれば、ループ終了後に実行される
ただしbreakで中断した場合はelse節は実行されない
(使い所がわからぬ)


■ for
for 変数名 in イテラブルオブジェクト:

イテラブルオブジェクトはリスト、タプル、文字列などのこと
イテラブルオブジェクトの要素を前から取り出して、変数名に代入していく

上の例は一番簡単な例
下の例は、リストの中身がタプルな場合
それをi, jと分解して変数に代入することもできる。
今回はタプルなのでfor (i, j) inと書かなくても()を省略している
読みやすいコード的には()があった気がするけど、今読んでるコードではこういう()はない
#!/usr/bin/env python
# -*- coding: utf-8 -*-

list=[1,2,3,4,5]
for i in list:
print(i)

print("")

list2=[(1, 2), (3, 4), (5, 6)]
for i, j in list2:
print(i)
print(j)

else節はfor文でも使える
total=0
list=[1,2,3,4,5]
for i in list:
 print(i)
 total += i
else :
 print(total)


■ range
3種類の使い方ができる
range(stop)
range(start, stop)
range(start, stop, step)
これまで学んだことからすると、rangeの定義のときにデフォルト値が代入されているんだと思う
def range(start=1, stop, step=1)
か? いや、でもこれだとrange(10)ってしたときにstart=10になってしまうような・・・ まぁいいか

使用例
>>> range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, -10, -1)
[5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

■ enumerate
イテラブルオブジェクトから取得した要素と、その要素のインデックス値をペアにしたタプルを返す
list=["a", "b", "c"]
for val_list, i in enumerate(list, 1):
print i, val_list




■ 例外処理

例外の送出は raise文で行う
>>> raise ValueError("hogehoge")
Traceback (most recent call last):
File "", line 1, in
ValueError: hogehoge

■ トレースバックオブジェクト
■ assert文
■ with文
飛ばす






■ 関数定義
def 関数名(引数1, 引数2, ・・・):
関数定義の中でimport文によるミュジュールのインポートをすると関数内だけ有効になる

関数の戻り値はreturn文で指定する
return文の戻り値を省略すると戻り値はNoneになる
return文自体を省略しても戻り値はNoneになる
passと関数定義の最後に書いても戻り値はNone


■ 可変長引数
引数の名前に*記号を付けた引数がある関数は任意の数の引数を取れる

def hoge(a, b, *c):
この場合、前からhoge(1, 2, 3, 4, 5)を実行すると
a=1
b=1
c=(3, 4, 5)
と代入される

他にも **cとかもできるらしいが、よくわからぬ。辞書と関係あるっぽい



■ キーワード専用引数

def hoge(*AAA, BBB):
とする
hoge(1, 2, 3)
では実行時にエラーが出る
hoge(1, 2, BBB=3)
のようにキーワードを必ず指定しないといけない

逆に
hoge(BBB=3)
でも動くはず



■ デフォルト引数
def hoge(x=1, y=2, z=3):
とすると、
hoge()
だけでも動く
hoge(100)
とすると、
x=100, y=2, z=3
が代入されてhogeが実行される





■ ドキュメンテーション文字列

関数定義の次に"""で囲まれた文章があると、それはドキュメンテーション文字列になる
def hoge(a, b, c):
 """ hogehoge
 a -- argument a
 b -- argument b
 c -- argument c
 """
みたいな感じ

関数オブジェクトの __doc__ 属性にこれらの文字列が代入されており、help(hoge)で表示できる







■ グローバル変数とローカル変数

モジュールの中で
hoge = 100

def func():
 foo = 200
となっているとhogeはグローバル変数
fooはローカル変数

グローバル変数はどの関数の中でも参照できるが、ローカルは関数内でのみ参照できる



■ import
これは前に書いた

あるモジュールから複数の関数をインポートする場合は
from math import (pi, math, pow, sin, cos, tan, sqrt)
のようにする

from math import *
とすると、math.pyの中にある__all__という名前のシーケンスがあればそこに書かれているオブジェクトのみインポートされる
__all__がない場合は名前の1文字目が_ではないオブジェクトがすべてインポートされる


■ モジュール検索パス

環境変数PYTHONPATHで設定する




■ パッケージ

パッケージはモジュールを格納するディレクトリで、複数のモジュールを階層的に管理する

ディレクトリに __init__.py という名前のファイルがあるディレクトリは、そのパッケージとしてインポートできる
パッケージ内のサブディレクトリに__init__,pyがあればサブパッケージとしてインポートできる
中身は空でOKらしい

パッケージについて詳しくはドキュメントを参照のこと

■ 参考 : 6.4. パッケージ



import hoge   # hogeというパッケージをインポート
import hoge.foo # hogeパッケージの中のfooモジュールをインポートする
from hoge import AAA, BBB, CCC # hogeパッケージの中の一部のモジュールをインポートする


イマイチパッケージとモジュールの区別がついてないけど
おそらくモジュールを集めたものがパッケージなんやろうな

次の記事でクラスについてまとめて終わり〜










PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "先月子供が産まれました!"

# 最終更新 2022/10/25
カウンター
カウンター カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)

英語論文執筆用の例文検索サービス
(とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]