只今Python勉強中

Learning Python

ねずみさんと一緒にPythonの勉強をしているオレの記録。

間違ってる所とかいっぱいあると思いますけど、誰でもコメント出来るので気軽に教えて下さい。

普段は 鷹の島 って所で書いてます。

2008-01-11 (Fri)

Module Attributes 00:13  Module Attributes - 只今Python勉強中 を含むブックマーク

ねずみ本: p47-49

dir で、module の中になにがあるかわかるんだって。

$ cat myfile.py
title = "The Meaning of Life"

$ python
Python 2.4.4 (#2, Jan  3 2008, 13:36:28)
[GCC 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import myfile
>>> dir(myfile)
['__builtins__', '__doc__', '__file__', '__name__', 'title']
>>> myfile.__file__
'myfile.py'
>>> myfile.__name__
'myfile'
>>>

ほう。Object#methods に似てる感じがする。

dir って何かの略なのかな。

2008-01-10 (Thu)

ベーシック認証 23:59  ベーシック認証 - 只今Python勉強中 を含むブックマーク

ベーシック認証用のデータを吐き出してくれるヤツ。

#! /usr/bin/env python

import sys, crypt, random

user = sys.argv[1]
passwd = sys.argv[2]

chars = ['.','/']
chars += [chr(x) for x in xrange(48,58)]  # 0-9
chars += [chr(x) for x in xrange(65,91)]  # A-Z
chars += [chr(x) for x in xrange(97,123)] # a-z
salt = random.choice(chars) + random.choice(chars)

print user + ':' + crypt.crypt(passwd, salt)

こんな感じ。

$ python auth.py takayama 0000
takayama:nyZ7hExSHchU6

2008-01-03 (Thu)

Module Imports 23:35  Module Imports - 只今Python勉強中 を含むブックマーク

  • ねずみ本: p45-46

サンプル通りにやる。

$ ls -l
合計 4
-rwxr-xr-x 1 takayama takayama 70 2008-01-03 23:27 script4.py*
$ cat script4.py
#! /usr/bin/env python

import sys
print sys.platform
print 2 ** 100

$ ./script4.py
linux2
1267650600228229401496703205376
$ python
Python 2.4.4 (#2, Aug 16 2007, 02:03:40)
[GCC 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import script4
linux2
1267650600228229401496703205376
>>>
$ ls -l
合計 8
-rwxr-xr-x 1 takayama takayama  70 2008-01-03 23:27 script4.py*
-rw-r--r-- 1 takayama takayama 156 2008-01-03 23:28 script4.pyc

コンパイルされた?!

2007-12-29 (Sat)

System Command Lines and Files 23:38  System Command Lines and Files - 只今Python勉強中 を含むブックマーク

  • ねずみ本: p37-39

ファイルに書いたやつを実行ね。

$ python spam.py
256
the bright side of life

Windowsの新しいバージョンだと、spam.py を実行するだけで python で起動してくれるらしいよ。

例えばこうなる、らしい。

D:\temp> spam.py
256
the bright side of life

shebang 23:53  shebang - 只今Python勉強中 を含むブックマーク

  • ねずみ本: p41-42

hash bang? どっちでもいいけど、brian プログラムの例がちょっな。

% brian
The Bright Side of Life...

こうじゃないと、気持ち悪い。

% ./brian
The Bright Side of Life...

env 23:53  env - 只今Python勉強中 を含むブックマーク

  • ねずみ本: p42

/usr/bin/env の使用が推奨されているように見える。

誰かが悪習って言ってたけど、どうなんだろうね。まだデメリットを味わってないので、使ってますが。

日本語 23:53  日本語 - 只今Python勉強中 を含むブックマーク

うーん、そう言えば、この本ってマルチバイトへの言及はあるのかな…。急に心配になった。

$ echo $LANG
ja_JP.UTF-8
$ cat spam.py
#! /usr/bin/env python

print "あいうえお"
$ ./spam.py
sys:1: DeprecationWarning: Non-ASCII character '\xe3' in file ./spam.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
あいうえお

2007-12-27 (Thu)

一ヶ月ぶり 22:00  一ヶ月ぶり - 只今Python勉強中 を含むブックマーク

マラソンでハワイ行ってました。

ぼちぼち落ち着いたので再開。

プロンプト 22:00  プロンプト - 只今Python勉強中 を含むブックマーク

  • ねずみ本: p37

インタラクティブシェルについて。

インデントすんなー!だって。

>>> print "OK"
OK
>>>     print "NG"
  File "<stdin>", line 1
    print "NG"
    ^
SyntaxError: invalid syntax
>>>

試しに if とかどうなるかやってみた。

どうやら、シェルの接頭辞が変わってインデントが使えるモード?になるっぽい。自動でインデントしてくれると楽なのに。

>>> num = 123
>>> if num == 123 :
...     print "YES!"
... 
YES!
>>> 

あー、すぐ下に書いてあった。この辺の事はChapter10でやるっぽい。IDLEインターフェイスだと自動インデントしてくれるって書いてあるけど、なんだろこれ。統合開発環境っぽいな?別物なのね。