トップページ⇒tech
495コメント175KB

人生の敗北者でも使えるPythonのお勉強 Part3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
スクリプト言語Pythonのスレッドです。

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1020682294/
0002デフォルトの名無しさんNGNG

python.org
http://www.python.org/

日本Pythonユーザ会
http://www.python.jp/Zope/


Python 入門
http://www.oreilly.co.jp/BOOK/python/

Pythonプログラミング
http://www.oreilly.co.jp/BOOK/pythonp/
0003デフォルトの名無しさんNGNG
3?
0004デフォルトの名無しさんNGNG
4ゲットだーヨ
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧ ∧   ダーヨ!!
  (´ー` )   ̄∨ ̄ ̄
  \ <    ∧∧     /|      (´´
    \.\_(´ー` )__/|' /    (´⌒(´
     ⊂ _⊂ ___`つつ≡(´⌒;;;≡≡≡≡
              (´⌒(´⌒(´⌒;;
      ズザネ━━━━━━━━━━━━━━━ヨッ

0005デフォルトの名無しさんNGNG

ライブラリリファレンス(原文)
http://www.python.org/doc/current/lib/lib.html
ライブラリリファレンス(和訳)
http://www.gembook.jp/html/tmp/doc_jp/lib/
Pythonドキュメント翻訳プロジェクト
http://pythonjp.sourceforge.jp/

Python日本語メーリングリスト
http://www.python.jp/mailman/listinfo/python-ml-jp
過去ログ
http://www.python.jp/pipermail/python-ml-jp/
過去ログ全文検索
http://www.python.jp/cgi-bin/namazu.cgi
0006デフォルトの名無しさんNGNG
ライブラリリファレンス(和訳).tgz
http://www.gembook.jp/html/tmp/doc_jp/lib_jp.current.tgz
comp.lang.python
http://groups.google.com/groups?dq=&num=100&hl=ja&lr=&ie=UTF-8&oe=UTF-8&group=comp.lang.python&c2coff=1&start=0
魅力的なPYTHON
http://www-6.ibm.com/jp/developerworks/linux/library.html
0007山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0008デフォルトの名無しさんNGNG
これまたひどい爆撃だな・・・

ageとくぞ
0009デフォルトの名無しさんNGNG
オブジェクト指向言語としてRubyと対象領域がオーバーラップする PythonをRubyと比較すると:

Rubyは`end'を使った伝統的な構文。
オブジェクトの属性にアクセスするのに`self.'をいちいち付ける必要がない。
Rubyではすべてのデータ(Integer, String, Listなどなど)はクラスのインスタンス。
Rubyにはより優れた(あるいは真の)closureがある。
Rubyオブジェクトのインスタンス変数はデフォルトで外から参照できない。
Rubyはlong integerとsmall integerを自動的に相互変換する。
Rubyにはtupleがない。

Rubyの文は値を持つ。よって以下のように書ける:
def max(a,b)
 if a>b then a else b end
end

Rubyではより自然に演算子メソッドが定義できる。例:
def +(x)
 self.to_i + x
end
0010デフォルトの名無しさんNGNG
Rubyにはリファレンスカウントではない真のガーベージコレクタがある。よって:
リファレンスカウントでは生じるようなメモリリークが発生しない。
拡張ライブラリでINCREF,DECREFなど参照数管理が不要。
C/C++でRubyを拡張するときでも、容易にRubyクラスを定義できる。

Rubyにはブロックを使ったループ抽象がある。例:
10.times do
 ...
end

任意のイテレータを定義できる。

Rubyではブロックを単なるイテレータ以上に活用できる。例:
mutex.synchronize do
 .. critical process ..
end

Rubyにはsuperを使ったメソッド結合がある 。
RubyはしばしばPythonより高速。
0011名無しさん@EmacsNGNG
> 伝統的な構文。

ダウト。
0012デフォルトの名無しさんNGNG
>>9-10
また古いネタを発掘して来たな。
0013デフォルトの名無しさんNGNG
pythonでself.つけるのがめんどくさいからクラス使わないと言う
香具師が職場にいるのですが虚呂してよろしいか?
0014デフォルトの名無しさんNGNG
>>13
俺もめんどくさいと思うよ。
かといってクラスを使わないとは言わないけど。
なんとかならんもんかね。
0015デフォルトの名無しさんNGNG
>>13
漏れはめんどくさくない。むしろどの名前空間に属する名前かハッキリするから
self. があった方がいいと思う。self. が無いと訳分からん。
0016デフォルトの名無しさんNGNG
self. じゃなくて s. にすれば?
・・・って問題じゃないのか。
0017デフォルトの名無しさんNGNG
自作自演の臭いが…
0018山�ア渉(^^) NGNG
PHPなんて
pyでself.hoge.foobarのところを
$this->hoge->foobar
だよ。
最悪なり
0019デフォルトの名無しさんNGNG
>>18
> $this->hoge->foobar
面倒すぎ・・・。
Shiftはなるべく押したくないから。
0020デフォルトの名無しさんNGNG
>>18
なんで山崎渉・・・?
0021名無しさん@EmacsNGNG
self に慣れたせいで、このまえ Java 使ったら必要ないのに this つかいまくりだった。
0022デフォルトの名無しさんNGNG
あれ?
配列って.sort()してから.reverse()しなきゃならんのか。
知らんかった・・・。

俺の3時間を返せぇぇぇええええ!!
0023デフォルトの名無しさんNGNG
あぁ、そういうことか・・・。
そういうことだったのか・・・。
そのままの意味か、reverse・・・。

俺が馬鹿だった・・・。
大馬鹿だ、つける薬もありゃしねぇ。
もういいや、もう・・・。全部・・・、いいや、もう。





 .('A`) ('A`) バルス
  ( )v( )
 ,,|| ,.|| ,,,,, ,,
0024デフォルトの名無しさんNGNG
死滅スレのようなスレタイ、、、
0025デフォルトの名無しさんNGNG
>>21
むしろ、
newを書かずにコンパイルエラー多発→小一時間悩む
をやらかしたさ、漏れは。
0026デフォルトの名無しさんNGNG
>>22-23
一体どうした?
0027デフォルトの名無しさんNGNG
pygame(ttp://www.pygame.org/)と言うライブラリを使ったゲームがあります。
なかなか良さそうなのでpython+pygameで開発してみるのも良いかなと思っています。

質問なのですが、python+pygameで開発したものを単一の実行形式ファイル(exe)にする
ツール等は存在するのでしょうか? 対象OSはwindows98〜XPです。
ご存知の方、よろしくお願いいたします。
0028デフォルトの名無しさんNGNG
>>27
Pygame チュートリアル - Windows 実行可能ファイルを作る
http://www.unixuser.org/~euske/doc/pygame/Executable-j.html
http://www.pygame.org/docs/tut/Executable.html
002927NGNG
>>28
早速の回答ありがとうございました。調べてみます。
翻訳ページはありがたいです:-)
0030デフォルトの名無しさんNGNG
みんなはん、プロセス間排他制御はどうしてます?
win、unixどっちでも使える方法を朕に教えてたもれ。
0031デフォルトの名無しさんNGNG
あげ忘れますた。
0032デフォルトの名無しさんNGNG
>>27
実行形式にはできても
単一実行形式は無理っぽいです
0033山�ア渉(^^) NGNG
ここはネタスレなので、ふつうの質問は本スレでお願いします。
003430NGNG
>>33
なにー!?ここはネタスレだっただとぉ!??
ムネオたんスレに移動してきます。
誘導ア、リガトウ御座いました。
0035デフォルトの名無しさんNGNG
本家のファイルからPyJUGにある日本語環境インストーラ相当にするには
どのパッチを当てればよいのでしょうか。検索キーワードかどこかポインタを
どなたか示していただけませんか?

py2exe日本語環境インストーラのものだと動作しないので
どこが悪いか調べたいのですが、ググっても中々見つからないです。。。
0036デフォルトの名無しさんNGNG
>>35
パッチは公開されてないかも。作者に直接聞くのが確実だと思われ。
0037デフォルトの名無しさんNGNG
>>35
その質問をPyJUGの中の人に聞かないのには、何か理由でもあるのですか?
0038デフォルトの名無しさんNGNG
2chでしか質問できない能無し君なんでしょ。PyJUG版インストールすれば
ちゃんと./jp/にパッチ入ってるだろーが。
0039デフォルトの名無しさんNGNG
ML で聞きにくいことも掲示板なら質問できるというよさもあるわけだが、、、
004035NGNG
レスどもです。

SJISパッチの解説と日本語環境インストーラ解説を勝手に解釈して
日本語環境インストーラは、本家ソース+SJISパッチ+αなのだと
思いこんでいました。すみません。expatやIDLEの日本語入力などの修正も
SJISパッチには含まれているのですね。ろくに調べもせず質問して
申し訳ないです。>>38さんのおっしゃることもごもっともです。。。。。。

能無し君ですみません。精進します。
SJISパッチを当てた2.2.2でpy2exeの最新版が動作しない問題も
私の勘違いなのかもしれません。もうちょっと調べてみます。
0041デフォルトの名無しさんNGNG
同意
0042デフォルトの名無しさんNGNG
age;
0043デフォルトの名無しさんNGNG
ライブラリリファレンス(和訳).tgz
http://www.gembook.jp/html/tmp/doc_jp/lib_jp.current.tgz
↑
これ404なんだけど、手に入れる場所他に在りませんか?
0044デフォルトの名無しさんNGNG
>>43
その質問をプロジェクトの中の人に聞かないのには、何か理由でもあるのですか?
0045デフォルトの名無しさんNGNG
>>43
その質問を翻訳プロジェクトの中の人に聞かないのには、何か理由でもあるのですか?
0046デフォルトの名無しさんNGNG
中の人などいない!
0047デフォルトの名無しさんNGNG
>>43 自分で作れよ。sf.jpは生きてるんだから。
0048デフォルトの名無しさんNGNG
>>47
作れないから聞いてんだよ。

あほな僕のためにも翻訳者サンがんばってください。
このままじゃRubyに浮気しそうです。
0049デフォルトの名無しさんNGNG
>>48
浮気して良いよ。お互いのためだ。
0050デフォルトの名無しさんNGNG
>>48
人生の敗北者でも Ruby は難しいようです。
0051デフォルトの名無しさんNGNG

あなたが探してるのってこれだよね?二日間無料だしね♪

http://alink3.uic.to/user/angeler.html
0052デフォルトの名無しさんNGNG
ほら、>>48。二日間無料だってよ。
0053デフォルトの名無しさんNGNG
そんなに>>48叩かなくても。
ちなみに gembook.jpの中の人は2ch見ないって言ってたから、
ここに書いても無駄だよ。
0054デフォルトの名無しさんNGNG
復活オメ
http://www.gembook.jp/html/doc_jp/lib/
0055デフォルトの名無しさんNGNG
オメ
http://www.gembook.jp/html/doc_jp/lib_jp.current.tgz
0056デフォルトの名無しさんNGNG
>>53
> ちなみに gembook.jpの中の人は2ch見ないって言ってたから、
> ここに書いても無駄だよ。

> 翻訳状況表を見ると、昨年中に予約されてまだ翻訳が上がっていないファイルが
> 結構見受けられます。
>
>       そ ろ そ ろ 翻 訳 し ま し ょ う
こ の 表 現 は 2 c h ネ ラ ー で は ?
0057デフォルトの名無しさんNGNG
2chみてますぅ、っていうのが恥ずかしいだけでは?
0058デフォルトの名無しさんNGNG
Eiffel のスレッドはどうやってたてたのだろう?
0059デフォルトの名無しさんNGNG
Eiffel?
0060デフォルトの名無しさんNGNG
Tkinterについての質問ですけど

txtBox = Text(self, width=60, height=10).pack(side=TOP, padx=3, pady=3)
txtBox.insert(END, "test")

ってやるとエラーになるんですけど、何処が間違ってんの?
(環境Win98, python222)
0061デフォルトの名無しさんNGNG
エラーメッセージも書かないお前が間違ってる。
0062デフォルトの名無しさんNGNG
>>60

pack() は値を返さないので、txtBox の値が None になってしまいます。
None は insert メソッドを持たないので AttributeError が発生すると
思われます。
Fix: 次のように、コードを分割してください。

txtBox = Text(self, width=60, height=10)
txtBox.pack(side=TOP, padx=3, pady=3)
txtBox.insert(END, "test")
0063`gi_` プレフィックスについてNGNG
別の thread で `gi_` プレフィックスについて質問している人がいましたが、
Pythonのソースコード (Python/ceval.c) に次のコメントがあります:

"""
/* The gi_ prefix is intended to remind of generator-iterator. */
"""
(/* gi_ プレフィックスは generator-iterator を想起させることを
意図しています。 */)

generator-iterator とは Pythonのgenerator のことです。
PEP 255 <http://www.python.org/peps/pep-0255.html>; で
そのように呼ばれています。

回答が得られないからといって spam するのは効果がないし、
迷惑なので、しないでください。
0064デフォルトの名無しさんNGNG
>>63
ジサクジエンの予感
0065デフォルトの名無しさんNGNG
>>63
説明ありがとう。

> 回答が得られないからといって spam するのは効果がないし、
> 迷惑なので、しないでください。

自分はあの質問した人間だけど、質問に関しては一回しか書き込んでないよ。
スレの最後のほうの書き込みは全部別の誰かによるコピペですよ。
0066デフォルトの名無しさんNGNG
>>63
知っててはぐらかしてた香具師ばっかりなヨカーン...
006743NGNG
世話になりました
0068デフォルトの名無しさんNGNG
winでのodbcモジュールについて質問でしる。

1. クエリー結果をディクショナリ形式でfetchできないのか。
2. プレースホルダは利用できないのか。

2に関してはmxODBCでは対応してるみたいだけどodbcではどうなんだろう。

ライブラリがバイナリなんでソースを追えないっす。
dir関数でメソッド調べてみてもそれらしいものを見つけきらんかった。
0069デフォルトの名無しさんNGNG
>>62
どもありがとう。
しかしTkinterは奥が深い……のか?
とりあえずややこしい…
0070デフォルトの名無しさんNGNG
http://ll.jus.or.jp/
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37775
Welcome to LL Saturday (Lightweight Language Saturday)

Python の PR になればいいのだが、、、
パネラーのひとはがんばってください。
0071デフォルトの名無しさんNGNG
>>70

司会が法林か。自分の存在感出し過ぎるんだよな。
自分では司会うまいと思ってそうなんだけど。
0072デフォルトの名無しさんNGNG
>>70
なんでリンクがruby-listなんだ?
0073名無しさん@EmacsNGNG
参加費2000円で Tシャツって無駄だよなあ…
去年 LL2 にいったときは、Microsoft なんかが
スポンサーだったんで参加費一切タダなうえにメシがでたよ。
0074デフォルトの名無しさんNGNG
また重複スレが…
ルビキチの仕業か?
妄想だけど。
0075デフォルトの名無しさんNGNG
Ruby iz nanbar wan!
0076デフォルトの名無しさんNGNG
>>75
これも妄想?
0077デフォルトの名無しさんNGNG
>>70
渋谷か。。近いから逝ってみようかな。
0078デフォルトの名無しさんNGNG
>>68
【試験構成】 WinXP, Python2.3b1, win32all bulid 153, MS Access 2000.
【コード】
import dbi, odbc

DSN = "Item1"

def dictMakerMaker(descr):
    def dictMaker(row):
        d = {}
        i = 0
        for column in row:
            d[descr[i][0]] = column
            i += 1
        return d
    return dictMaker

conn = odbc.odbc(DSN)
cur = conn.cursor()
cur.execute("select * from Item")
dictMaker = dictMakerMaker(cur.description)

for row in cur.fetchall():
    d = dictMaker(row)
    for k in d.keys():
        print k, "=", d[k]
    print

cur.close()
conn.close()
0079デフォルトの名無しさんNGNG
>>68
プレースホルダとは、以下のようなものですか? odbc moduleで使えています。
cur.execute("select * from Item where color = ?", ["pink"])
0080萬田銀二郎NGNG
socketのtimeoutってpythonではどうやるんでっか?
見つかりそうで見つからなかったんで、教えて北朝鮮
0081デフォルトの名無しさんNGNG
>>80
selectモジュールの即時調査を韓国する。
0082デフォルトの名無しさんNGNG
>>80
2.3 を使う。
0083デフォルトの名無しさんNGNG
>>78
ベリーベリーサンクスコ
なけりゃ作れということですね。
わざわざ作ってもらってすみません。いただきます。
今、Zopeってるんで後で試します。

>>79
ああ、できますか。
これも後で試してみます。

両方ともありがとうございますた。
008480NGNG
>>81
あの、ふざけてゴメンナサイ。
selectモジュールについて調べてみたんですけど、
使い方がさっぱり解りません。

良いsocketのtimeoutの方法が乗っているページってないですか?
2日がんばってぐぐっても見つからなかったんでお願いしちゃいます。
008581NGNG
>>84
んじゃ漏れもまじめに。クライアント側の簡単なところだけ書いとく。

1. ソケットを作ってブロックしないように設定する。
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 sock.setblocking(0)

2. サーバに接続する。
 code = sock.connect_ex(address)
接続できなければ code にエラーコードが返る。connect_ex() を繰り返し
呼ぶ必要がある場合がある。

3. データを送信する。
 r, w, e = select.select([], [sock], [], 0)
 if not w:
   送信不可
 sock.send(data)
まず select() でソケットへデータを送信できる状態になっているか調べる。
もし送信可能なら send() する。

4. データを受信する。
 r, w, e = select.select([sock], [], [], 0)
 if not r:
   受信不可
 data = sock.recv()
まず select() でソケットからデータを受信できる状態になっているか調べる。
もし受信可能なら send() する。

socket や select は Unix の伝統的な API で、Python でもほぼ同じ
要領で使える。むしろ Unix のネットワークプログラミグについて調べる方が
よい情報を得られそうな気がする。
008681NGNG
>>85
ちょっと補足。select() の第4引数がタイムアウトするまでの秒数です。
上の例はソケットに対するいずれの操作もブロックしないようにすることを
意図したコードになってます。
0087デフォルトの名無しさんNGNG
>>84
> 良いsocketのtimeoutの方法が乗っているページってないですか?

>>85 の説明の補完として、`select.select()` 関数について二つ:

* Socket Programming HOWTO (Pythonのhow-to)
http://www.amk.ca/python/howto/sockets/

* The Standard Python Library (The effbot.org edition) , Chap. 5
http://effbot.org/books/librarybook/network-protocols.pdf

既に >>82 で示唆されているように、Python 2.3 の socket object は
`settimeout()`メソッドを直接サポートしています。現在 2.3はbetaです。

http://www.python.org/dev/doc/devel/lib/socket-objects.html

2.3では socket module レベルの`setdefaulttimeout()` 関数もあります。

http://www.python.org/dev/doc/devel/lib/module-socket.html

Python 2.2 以前については、 `timeoutsocket` という
やや有名なサードパーティモジュール があります。
ソースの中に docがあるから使い方はすぐ判ると思われます。

http://www.timo-tasi.org/python/timeoutsocket.py

さらに、別の方針としては、`asyncore`標準モジュールとか、
Twisted Matrix <http://www.twistedmatrix.com/>; といった、
非同期ネットワークプログラミング・フレームワークの
利用が考えられます。
0088デフォルトの名無しさんNGNG
>>87
Twisted Matrix Lab ちゅうのが開発グループの名前で、
フレームワークの名前は Twisted や。
008980NGNG
>>85-87
どうも有り難うございまっす!!
これは45年ぐらいの感謝モンです。

ネットワークプログラミングは楽しいですね!!
socketで、一から作るのとかw

これを期にurllibモジュールのurlopenにtimeout付けてみようかな…
とか、調子に乗ってみるテスト
0090デフォルトの名無しさんNGNG
UDPって使えるの?
0091デフォルトの名無しさんNGNG
>>90
俺のマシンでは使えるよ。
0092デフォルトの名無しさんNGNG
>>91
使えないマシンなんてあるのか?
0093デフォルトの名無しさんNGNG
>>92
pythonは結構たくさんのプラットフォームにportされて
いますから、IPが使えない場合もあるかもしれませんね。
例えば Pippy (PalmOSへのport) は...?
0094デフォルトの名無しさんNGNG
Python2.2.3、Snack2.2を入れました。
サンプルを使ったところ、Wavファイルは再生できるのですが
MP3ファイルを開こうとするとアプリケーションエラーになり落ちてしまいます。
再生する方法を教えてください。

OSはWindows2000です。
0095デフォルトの名無しさんNGNG
wxpython(unicodeビルド)を使っていて、テキストコントロールをフォームに貼り付けて
LoadFile()で読み込んでも文字化けします。逆にテキストコントロールに入力して
SaveFile()すると正常に保存されます。unicode周りだと思うのですがどうしてですか?
win2000上の
ActivePython2.2.2 + 日本語コーデック + wxpython2.4(python2.2用、Unicodeビルド)
site.pyは何も手を入れていませんが、site-packagesフォルダのsitecustomize.pyは
import sys
sys.setdefaultencoding("utf-8")
としてあります。エンコーディング周りはさっぱりわかりません。
0096デフォルトの名無しさんNGNG
age
0097ディフォールトの名無しさんNGNG
>>95
真っ当な方法は知らないのだけれど、wxTextCtrl::SetValue()で
unicode型のデータを与えると、それらしく表示されますが。
(WinXP, Python2.3b1, wxPython2.4.0.7unicode)
-------------------------------------
# -*- encoding: mbcs -*-
# テキストコントロールの動作確認
from wxPython.wx import *
DEFAULT_ID = -1

class App(wxApp):
    def OnInit(self):
        self.frame = wxFrame(None, DEFAULT_ID, "test frame",
                             size=wxSize(400, 300))
        self.frame.Show(True)
        self.SetTopWindow(self.frame)

        self.txt = wxTextCtrl(self.frame, DEFAULT_ID,
                              size=wxSize(390, 300), style=wxTE_MULTILINE)
        self.txt.Show(True)
        self.txt.SetValue(open(r"wx02.py").read().decode("mbcs"))
        return True

app = App()
app.MainLoop()
009895NGNG
>>97
できますた。真っ当にopenして読むことにします。

>>94
95に書いてある環境でやってみました。mp3落ちますね。tkinterからやってもダメでした
libsnack.dllを自分でコンパイルする必要があるかも。
aiff,auファイルは聞くことができました。
oggエクステンションをいれてoggファイルを聞こうとしたのですが、読み込みはできますが
再生はザーとノイズが流れただけですた。
009994NGNG
>>98
どうもです
libsnack.dllですか・・・
VC++6.0しか持ってないのですがコンパイルできるかな。
探してやってみます
0100デフォルトの名無しさんNGNG
>>> type(100)
<type 'int'>
>>>
0101デフォルトの名無しさんNGNG
>>95
それと同一に見えるBugが報告されていますが、進捗無しのようです。
https://sourceforge.net/tracker/?func=detail&atid=109863&aid=680272&group_id=9863
■ このスレッドは過去ログ倉庫に格納されています