忍者ブログ
日々の研究生活のメモ書きなど
一応、本自体は読み終わったので後はまとめるだけ




■ 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らしい


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
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
#include <stdio.h>
#include "MyProfile.h"

#define TWITTER coffee_pote

#ifdef RICH_FLAG
// ↑いつも支援いただきありがとうございます m(_ _)m
#define WISH_LIST
amazonのほしい物リスト
#endif


int main(void){

printf("\n");
printf("あけましておめでとうございます\n");
printf("今年もどうぞよろしくお願いします\n");
printf("\n");
printf("猿でもわかるgnuplot を執筆中\\
少し追記しました\n");
/* 最終更新 2018/01/01 */
return 0;

}
カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

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

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

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

とある物理の院生日誌~院生は社会へ旅立った~
(研究室の先輩の個人ブログ)

英語例文を見て自然に英語・英会話を学ぶ
(楠本慶ニさんの個人ページ、様々な情報の密度の高さに感動)

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

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

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

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

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

Flickr

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