Course: | Python tutorial, PyCon JP 2011 |
---|---|
Presenter: | ENDOH takanao |
Intended audience: | |
Programmers who want a fast introduction to the basics of Python. | |
Tutorial format: | |
Frequently alternating presentation of concepts and exercise sets. Each pair of concepts and exercises ranges in length from 5 minutes on simple topics, to 20 minutes on more involved topics. | |
Requirements: | A laptop computer with Python 2.7 installed. |
License: | MIT |
実際に動いているものを見て、自分で動かして学んでいきます。 Pythonの対話的インタプリタを頻繁に使用します。
意図的に、エラーが発生する例もいくつか含まれています。 これは、Pythonがエラーを処理する方法を学ぶためで、実際にPythonを使う場面で切り分け作業をする場合に役立ちます。
これらテキストのPythonコードを、Pythonインタープリタへ入力することにより、より多くのことを自分自身でを学ぶことができます。 オンラインでこれらの演習テキストを提供しています。
質問は随時受け付けます。お気軽に申し出てください。
Note
演習 のセクションでは、式を入力する前に、何が起こるか何が表示されるか予測してみましょう。 そして式を実行し、どんな結果が得られたか確認してみましょう。
演習:
演習:
reverse と sort メソッドは、リストオブジェクトを操作し返り値を返しません。 逆に、reversed と sorted 関数は、与えられたリストオブジェクトはそのままにし、新しいシーケンス(実際にはジェネレータ)を返り値として返します。
演習:
Decorate, Sort, Undecorate (DSU) Idiom
ここで、ローカルの名前空間を空にするため、Pythonを再起動します。
Pythonではすべてがオブジェクトであり、次の項目を持っています:
演習:
ローカルの名前空間を空にするため、Pythonを再起動します。
演習:
forループでは、反復可能オブジェクトを扱います。
iter() 関数は、イテレータを生成します。
StopIteration例外が送出されるまで、イテレータオブジェクトの next() メソッドが繰り返し呼び出されます。
iter(foo) は、
- foo.__iter__() が存在する場合、それが呼び出されます。
- foo.__getitem__ が存在する場合、ゼロからインデキシングし、 IndexError 例外を補足して StopIteration 例外を送出します。
演習:
play1.py:
#!/usr/bin/env python
x=3
y=2
print(x + y)
play2.py:
#!/usr/bin/env python
s = 'abc'
t = 'def'
def play():
return s + t
play()
play3.py:
#!/usr/bin/env python
def play(args):
pass # Put code here.
def test_play():
pass # Put tests here.
if __name__ == '__main__':
test_play() # This doesn't run on import.
演習:
play.py を作成して、モジュールをロードし、実行してみましょう。
演習:
Define a function triple(n) in a module triple.py such that triple.triple(3) returns 9. Import triple and try it out. Extend the plural function above to handle proper nouns (that start with a caiptal letter) that end in ‘y’, for example the correct plural of “Harry” is “Harrys”.
これは実行しないでください!
list(f)
なぜか、考えてみましょう。
次の2つの例を比較してみましょう:
2つの例とも、使用方法は同じであることに注目してください:
演習:
無限にゼロを返すジェネレータを書いてみましょう。
名前空間とは、Pythonオブジェクトへマッピングされた名前です。 スコープとは、検索可能な名前空間の範囲です。 名前空間を検索する順は、:
名前空間の変更(代入、import、def、del)は、ローカルスコープでおこなわれます。 参照: http://docs.python.org/tutorial/classes.html#python-scopes-and-name-spaces
point1.py:
class Point(object):
"""Example point class"""
def __init__(self, x=0, y=0):
# Note that self exists by now
self.x, self.y = x, y
def __repr__(self):
return 'Point({0}.x, {0}.y)'.format(self)
__str__ = __repr__
def translate(self, deltax=None, deltay=None):
"""Translate the point"""
if deltax:
self.x += deltax
if deltay:
self.y += deltay
演習:
Write a class Employee that tracks first name, last name, age, and manager.
Review: Classes