[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/24 01:18 / Filesize : 206 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part30



1 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 19:09:55 ]
Pythonオフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
まとめWiki
python.rdy.jp/
関連スレ
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
pc11.2ch.net/test/read.cgi/tech/1223543412/

596 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:42:53 ]
>>595
ん?いや、送ってくるのはOSなりウィンドウシステムなりだが、
あくまでアプリが能動的に読み取る

pythonでraw_input()関数を呼ぶと入力待ちになって
キーボードから何か打ち込んでやると制御が戻って入力が得られるだろう
それと基本的には同じだ

597 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:55:31 ]
>>596
アプリ「何かキーが押されるまで待つか」
アプリ「zzZ」
OS「おい起きろ。お前宛に”A”キーが押されたぞ」
アプリ「ああ、おk。これで次の処理に進めるね」

ってイメージだけど、あってる?

598 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:59:16 ]
>>597
うん、そんな感じであってる

599 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:59:53 ]
event「Zzz」
loop「何かイベントあった?」
os「Aキー押されてるよ」
loop「おいevent起きろ」
event「イベント実行、っと」

600 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:00:20 ]
ウィンドウシステムだと起きなくてもガンガンポストに突っ込んでくよ

601 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:03:53 ]
>>599
> loop「何かイベントあった?」

こういうポーリングはないと思ってくださって結構です。

602 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:06:29 ]
寝てる奴を起こしてはくれるんだが
次の仕事を待ちかまえてない時(別の仕事をしてる時)に
別の作業が舞い込んでくることは普通にあるから、
とりあえず仕事依頼はイベントキューという名前のポストに溜め込まれる

でもまあ最初の理解としては>>597でいいと思う

603 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:06:41 ]
いやはや、スレチ臭い話題なのにみんな答えてくれてサンクス。
こりゃ低レベルなGUIに関する知識が必要さね。
「プログラムはなぜ動くのか」って書籍は読んだけど次は「Windowsはなぜ動くのか」辺りを読もうかね。

604 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:12:24 ]
>>594
もうちょっと真面目に書けば、
ウィンドウを終了した時に、
app.MainLoop()から返ってくるので、
そこでまた対話環境を利用することも可能です。



605 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:15:36 ]
>>604
うん、まあそうなんだけど、普通は窓を作って対話的に
ボタンをつけたり線を引いたり窓を動かしてみたりしたいわけでしょう
対話環境なんだから

ウィンドウシステムでは、窓を表示してUIを操作するには、結局誰かが
>>593のような仕事をしてやる必要がある
Tkinterの場合は、WindowsやLinuxでは自動的にバックグラウンドスレッドを
作って、そういうイベントループを回してくれるわけだ
そうでなければ、そのようなヘルパー的機構を陽で造りこむ必要があるな

606 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:31:35 ]
Tkは、データ構造をユーザ定義出来ない
動的言語のTCL上で最初に実装された。
だからその言語の影響を受けて、組み込みのTkオブジェクトを、
コマンドで操作していく動的なAPIになった。
だからどの言語上でも対話的なGUIコンポーネント作成が得意だね。


607 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:36:21 ]
うん
古臭いと言われがちだが、対話環境で遊ぶ&学習用には今なお優れた環境だと思う
IronPython出たとき対話的・動的にGUIを作成していくデモが話題になってたけど
あれぐらいはTkなら昔から出来たことだ

608 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:51:25 ]
Pythonは包容力があるんだよな。
会社でPython使い(私事だけ)が増えているんだよな。
言語コミュニティも穏やかでそれがいいんだろうけど。

609 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:17:26 ]
対話環境で関数書いてると、途中でタイプミスして怒られたり、
関数作った後、関数内に文を付け足したり編集したくなったときに、
また初めから関数を定義しなくちゃいけないから面倒なんだけど、
それに対する上手い方法ってある?

610 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:38:04 ]
>>609
ipython の ed コマンド

611 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:43:40 ]
Python使ってる奴ってキモメンが多いな。
今日の忘年会に出て切実に感じた。

612 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:49:05 ]
知らんがな

613 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:52:17 ]
>>609
俺はEmacs使いだから、
Common Lisp用のSLIMEみたいなマイナーモードが欲しいなあ。
common-lisp.net/project/slime/

614 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 02:39:38 ]
ぼくは初心者ですが「こんな感じ」と書く人のコードは信用しません




615 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 03:31:06 ]
>Python使ってる奴ってキモメンが多いな。
今日の忘年会に出た面子だけだろ


616 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 03:43:19 ]
Python使ってる奴ってイケメンが多いな。
今日の忘年会に出て切実に感じた。

617 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 03:51:06 ]
Python使っている人のスレって大体こんな感じ。

618 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 09:52:45 ]
>>611
一人忘年会を開いたんですね

619 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:19:58 ]
Python使っている人のスレって大体>>618こんな感じ。

620 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:21:17 ]
618はキモ面

621 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:40:50 ]
他人の顔なんか、どうでもよくない?

622 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:50:22 ]
顔なんかどうでもいい
くぎゅが好きなんだ!!!

623 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:56:25 ]
622 :デフォルトの名無しさん [↓] :2008/12/19(金) 10:50:22
顔なんかどうでもいい
くぎゅが好きなんだ!!!

624 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 11:55:30 ]
ブサでオタの集会だったのか。



625 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 13:06:09 ]
しね

626 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 13:52:47 ]
釘宮理恵だっけ?
なんか顔を想像すると必ず柴田理恵が出てくるわ

627 名前:デフォルトの名無しさん [2008/12/19(金) 14:22:45 ]
twitterから
顔かよ。くだらん。

628 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 15:38:18 ]
またruby厨が荒らし始めたか

629 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 16:27:46 ]
ja.uncyclopedia.info/wiki/%E9%87%98%E5%AE%AE%E7%90%86%E6%81%B5
釘宮 理恵(くぎのみや りえ、1979年5月30日 - )は日本を代表するツンデレ声優。また、声優界で唯一の皇族でもある。

630 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 19:53:39 ]
アンサイを張られても

631 名前:デフォルトの名無しさん [2008/12/19(金) 20:08:26 ]
ユークリッドの互除法のコードを書いたのですが、大きい (約500桁) 整数を入力すると
ものすごく長いエラーメッセージの末尾に maximum recursion depth exceeded in cmp
と出ました。

これはおそらくスタックオーバーフローのようなものだと思うのですが、python の設定か何かでもっと深い階層まで使えるようにすることはできますか?
できなければプログラムの方を変更して再帰しないようにしますが。

632 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:12:25 ]
プログラムを何とかしようぜ。
再帰は、プログラム練習には使えても実用コードにはならないから。

再帰を展開する技術は身につけておいて損はない。

633 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:14:36 ]
>>631
Pythonの関数呼び出し階層の深さ上限はデフォで1000となっている
その値は変更できるが、あまり薦められんな

それと、Pythonは末尾再帰を最適化しない

634 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:20:55 ]
まぁ念のため、変更方法はこれだ。
docs.python.org/library/sys.html?highlight=setrecursionlimit#sys.setrecursionlimit



635 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:11:16 ]
末尾再帰くらいは自動で除去して欲しいよな。


636 名前:631 [2008/12/19(金) 21:28:37 ]
>>632-634
12分で3レスもつくなんて感激です。ありがとうございます!
互助法は再帰じゃない方も書いたことがあるので (VBでですが)、大丈夫だと思います。それでは。

637 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 22:21:03 ]
まあレスつけてるの全部キモメンだけどな。

638 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 22:31:22 ]
あほいえめんずのんののもでるやってるわ

639 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 00:08:15 ]
>>635
Schmeみたいにすっきりしゃっきりしたセマンティクスがある言語でないと無理。
Common Lispですら仕様では要求してないし。

640 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:33:46 ]
yieldでいけるような

641 名前:デフォルトの名無しさん [2008/12/20(土) 04:04:51 ]
cook bookに末尾再帰にするデコレーターがある。
psycoを使っても末尾再帰になる。

642 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 04:15:39 ]
再帰は使っても末尾再帰はあんまり使わない。
再帰を無理に末尾再帰にしても読みづらいことも多い。

>>639
むしろCommon Lispはループで回すのがデフォだよね。


643 名前:デフォルトの名無しさん [2008/12/20(土) 11:38:12 ]
画面設計面倒だから、もうローカルのアプリケーションも
インターフェイスはブラウザでいいかなとか思って
import web してみた。

・・・なんて簡単にウェブアプリが書けちゃうんだ。

644 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 14:15:15 ]
ポストンポストン!



645 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 15:29:02 ]
みんなごめん。
来年の給料払えないや。

646 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 15:37:23 ]
スタックに相当するものを自前で用意すれば
とりあえず再帰をループに展開できるね。

647 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 16:09:12 ]
急激に社員を増やしすぎたみたいだ。
人件費がこんなに重たいものだなんて。
勉強会が突然中止になったりしたら、そういうことだからね>みなさん

648 名前:デフォルトの名無しさん [2008/12/20(土) 16:14:57 ]
Python から Windows の ADO 経由で各種データベースを
アクセスしたいんですが、どのパッケージが定番なんでしょうか?
adodbapi というものと adodb というものがあるみたい。

adodbapi.sourceforge.net/
最新版は 2.2.4 December 17, 2008

adodb.sourceforge.net/
最新盤は adodb-py-210 July 30, 2008

649 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 17:41:06 ]
win32comだけで充分です
本当にありがとうございました

650 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:19:49 ]
流れぶった切ってcomtypes最強説を提唱

651 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:33:59 ]
>>648
あまり詳しくないのですが
comtypesはディスパッチインタフェース、カスタムインタフェースの両方に
アクセスできて、ディスパッチイベントも捕まえられるので十分かと思います

カスタムインタフェースにアクセスできると、dir()でCOMのインタフェースを
閲覧できるので便利です


652 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 10:02:01 ]
groups.google.co.jp/group/comp.lang.python.announce/browse_thread/thread/6739a9467328eb8d

653 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 10:38:55 ]
vensterて使ってる人いる?

ATL/WTLを知っているWindowsプログラマにとっては、Win32限定なら
理想的なGUI環境に見える。
ATL/WTLがWindows APIの軽量ラッパーであるのと全く同じで
vensterはctypesを使ったWindows APIの軽量ラッパーだ。
非常に軽くて小さい上に、ATL/WTLのプログラミングモデルそっくりなんだが、
ここ数年メンテされてなくて、comtypesではなく古いctypes.comを使ってるんで
そのままでは今のPythonでは使えねえ。

今日落してきて、簡単なサンプルなら動くように手を入れたが、
COMのコネクションポイント/ディスパッチインタフェース周りで嫌になって投げた。
誰かこれ引き継いでくれねえかなあ。


>今日落してきて、簡単なサンプルなら動くように手を入れたが、
>COMのコネクションポイント/ディスパッチインタフェース周りで嫌になって投げた。
>誰かこれ引き継いでくれねえかなあ。

うp器盆


kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7446.zip
venster 0.72へのパッチ
vensterのサイトからソースとってきてpatch -p0で当ててくれ

つうかcomtypesドキュメント少なすぎだろ常考
testの中のスクリプトのなかには、そっちも直さんと動かんのもあるが、さすがに
放置


654 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 10:39:22 ]
パッチの状態について補足。
vensterのモジュール自体は大体直したつもり。

test用スクリプトのtest_browser.pyって奴は直さないと動かないし、直していない。
IEエンジンを使ったカスタムブラウザのサンプルだが、
Python側でIOleClientSiteやらIDocHostUIHandlerやらをオンザフライで
実装していて、そこをどうにかせんと動かない。

そこまでやってないIEエンジン埋め込みスクリプトがほかにもあるが、それらは
動くようにはなった。ディスパッチイベントも捕捉できてる。




655 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 10:42:26 ]
WindowsのPythonから透過的にCOMを呼び出す方法はいくつかあります。
IronPythonを使えば何の苦労もなく呼び出すことができますし、
Classic PythonからはPythonwinを使えば良いという事実はあまりにも有名です。
でも、以前紹介したように、Python 2.5にはctypesモジュールが最初から
用意されています。せっかく2.5使うんだから、ctypesでCOMを呼べないかと
思ってしまいますよね。残念ながら、ctypesは最近になって、COMを呼び出す機能を
comtypesに譲ったようで、追加でこれをインストールする必要があるようですが。

モノは試しなのでやってみます。やりたいことはこんな感じです。

var ssfNETHOOD = 19
var wshell = new ActiveXObject('WScript.Shell')
var shell = new ActiveXObject('Shell.Application')
var nethood = shell.nameSpace(ssfNETHOOD).self.path
//var nethood = wshell.specialFolders('NetHood')
var link = wshell.createShortcut(nethood + '\\TEST.lnk')
link.targetPath = 'ftp://localhost/'
link.save()

このJScriptは、ネットワークコンピュータの下に「TEST」という名前で、
「ftp://localhost/」を追加します。
comtypesでも同様にできるかと思ったら以外に落とし穴がありました。


656 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 10:42:57 ]
comtypesをインストールして、以下のようにコードを書きました。

from ctypes import cast, POINTER
from comtypes.client import CreateObject
import os

wshell = CreateObject('WScript.Shell')
shell = CreateObject('Shell.Application')

from comtypes.gen.Shell32 import Folder2, ssfNETHOOD
from comtypes.gen.IWshRuntimeLibrary import IWshShortcut

nethood = cast(shell.NameSpace(ssfNETHOOD), POINTER(Folder2)).Self.Path
#nethood = wshell.SpecialFolders('NetHood')
link = cast(wshell.CreateShortcut('%s.lnk' % os.path.join(nethood, 'TEST')),
POINTER(IWshShortcut))
link.TargetPath = 'ftp://localhost/'
link.Save()

5, 6行目でCOMオブジェクトを作るとcomtypes.genパッケージの下にそれらしい名前で
.pyと.pycが作られるので、これらを8, 9行目でインポートしています。

注意しないといけないのは、11, 13行目でやっているように、オブジェクトを
適宜明示的にダウンキャストしてやる必要があるということです。
このあたりの詳しい説明は、ここにありました。
aspn.activestate.com/ASPN/Mail/Message/ctypes-users/3174466
Pythonwinではこのようなキャストは必要ないので少々面倒な気がしますが、
選択肢が多くあるのは良いことです。


657 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:04:17 ]
>>643
そのモジュールって標準?


658 名前:161 mailto:sage [2008/12/21(日) 12:13:01 ]
お久しぶりです。
年末の直前あたりに、僕が作成した
フレームワークの完成形を披露したいと思います。
よろしくお願いします。

659 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:14:00 ]
>>657
web.py だろう

660 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:26:41 ]
webpy.org/tutorial2.ja

661 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:31:31 ]
d.hatena.ne.jp/gamella/20080331/1206971633
d.hatena.ne.jp/tokuhirom/20060225/1140867631

662 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:34:33 ]
mdp.cti.depaul.edu/

663 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:48:24 ]
Pythonistaも質が下がったな

664 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:59:42 ]
pc11.2ch.net/test/read.cgi/tech/1226830195/161



665 名前:デフォルトの名無しさん [2008/12/21(日) 17:03:55 ]
ネットにあるようなフリーソフトはCなどで書かれてると思いますが、pythonでもできますか?
pythonで自分の設計したプログラムを作成することは可能でしょうか?
(設計する技術があるかは・・・ですが)学習すれば、プログラムを作ったり
できるといいのですが。。。

666 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:26:32 ]
出来るっちゃ出来るけど
サンプル少ないからな

初心者のうちはC/C++, .NETのほうが苦労は少ないと思うよ

667 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:30:52 ]
>>665
はっ? .exe作るってこと? できるよ。

>>666
はっ? 初心者?

668 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:32:09 ]
>>665
できる。
ゆくゆくは配布したいと考えるなら、Cで作ったプログラムみたいにはいかないかもしれないけど、
そういうのは実際にプログラムを組んでから考慮すればよろし。

669 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:32:59 ]
>>665
出来る
でも生産的ではないし、動作も遅い

670 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:39:14 ]
むしろ生産的だと思うが
Cはバイナリ配布ならともかくソース晒すこと考えるとライブラリやらコンパイラやらプラットフォームやら依存性の解決がめんどくさすぎる
実行環境がそのままデバッグ環境になるのはかなり大きいと思うし

671 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:47:18 ]
Cはバイナリにしてしまえばランタイムも必要とせず動くのが良いな(例外あり)。
Pythonは第三者の作ったライブラリを用いたアプリを配布する場合、
一緒くたにするならライセンスに気を配らなくちゃいけないし、
「別途ライブラリをインスコしてくれ」と、自分の書いたプログラムだけを配布する形だと、
導入する敷居が高くなって万人に使ってもらえなくなる。

672 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:51:26 ]
>>670
質問から言って、念頭においてるのはLinux系のオープンソースではなくて
Windowsの「フリーソフト」なんだろうから
別にM4マクロを駆使してautoconfだのautomakeだのを記述したり
山ほど#ifdefを記述したりといったことを考えなくてもいいんじゃないの

WindowsのGUIアプリを簡単にデッチ上げられるかどうかのほうが重要

673 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:55:24 ]
全部まとめて exe にパックすればいいやん

674 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:59:47 ]
可能不可能からいったら出来る
楽かどうかの話だろ

WindowsのAPIはC/C++の形で提供されているので、Windowsの機能にアクセスするには
出来合いのラッパーライブラリ(巨大か、一部分しかサポートしていない)を
使うか、ctypesを使うか(C/C++のようにヘッダの#includeはできないので、
自分でシステムの型や定数を定義する必要がある)か、
自分でC/C++拡張を書くかという話になる



675 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:26:52 ]
Pythonistaも質が下がったな

676 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:36:48 ]
ActivePythonの3.0版来てるじゃん

677 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:16:37 ]
Active*って何なのか良くわからんので説明plz


678 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:24:47 ]
ActivePython → 抱き合わせ商法

679 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:41:43 ]
PyWin32が付いてくるのでWin32APIをラクに呼べたりCOMサーバをいじくったりできる。
昔はHTMLからPythonを呼べたけど、今はどうか知らない。

680 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:53:48 ]
I love Python.

681 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:59:08 ]
So do I.

682 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:40:51 ]
>>665
> ネットにあるようなフリーソフトはCなどで書かれてると思いますが

思うな。
そこから始めろ。

683 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:52:46 ]
ここまで続いてやり方言うヤシは誰もおらんのか
exe化はPy2Exeが有名
Python製作って内骨格とか普通にあるじゃん


684 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:56:35 ]
www.python.jp/doc/release/lib/module-urllib.html を見て書いた

import urllib
f = urllib.urlopen("www.google.co.jp/")
print(f.read())

これだけのコードが動きません

AttributeError: 'module' object has no attribute 'urlopen'

import の時点で失敗しているようです。なぜでしょうか? どのようにすれば解決できるでしょうか?



685 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:07:43 ]
>>684
urllib.pyってファイル名にしているから、
あるいはそういうファイルが他にあるから。

686 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:09:48 ]
まずは、
import urllib
print urllib.__file__

687 名前:687 mailto:sage [2008/12/21(日) 23:22:20 ]
>>685
心当たりはないです

>>686
以下のエラーになります:
File "test.py", line 2
 print urllib.__file__
SyntaxError: invalid syntax


688 名前:687 (=684) mailto:sage [2008/12/21(日) 23:23:58 ]
>>686
print(urllib.__file__)
としたら
C:\python30\lib\urllib\__init__.py
が出力されました

689 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:30:32 ]
>>688
# Python 3.0
import urllib.request
f = urllib.request.urlopen("www.google.co.jp/")
print(f.read())

690 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:34:09 ]
>>684のドキュメントは2.5用

691 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 01:48:50 ]
Are you happy?

692 名前:687 (=684) mailto:sage [2008/12/22(月) 08:11:05 ]
なるほど、バージョンによってライブラリの構造が変わっていたのですね。
>>689 で成功しました。ありがとうございます。

693 名前:687 (=684) mailto:sage [2008/12/22(月) 17:29:02 ]
レンタルサーバのPythonがVer2.5.1でした><
複数のVerのPythonを共存させることはできますか? (普通にインストールすればおk?

694 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 17:44:49 ]
>>693
自分のPCに入れたいという話か?
俺は複数のバージョンを入れているよ

ただし、ActivePythonをインスコするとレジストリエントリが作られ、
サードのライブラリをインストーラパッケージで入れたりするときに
それが参照される
つまり、レジストリに設定されているPythonが正と見なされることになる

全部自分でsetup.pyでビルド&インストールでするんなら何も問題ないけどな



695 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 18:19:07 ]
レンタルサーバのPythonがVer2.5.1でした><
レンタルサーバのPythonがVer2.5.1でした><
レンタルサーバのPythonがVer2.5.1でした><


696 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 18:20:19 ]
犬臭い

697 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 18:43:13 ]
俺も複数のバージョンを入れているよ
全部自分でsetup.pyでビルド&インストールでするんなら
何も問題ないとまでは言えないけど比較的安全
yumが動かなくなったのでアカウント事にpath変えてる


698 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 19:33:27 ]
この際だから聞くけど、ビルドって拡張モジュールのコンパイルのことを指すの?

699 名前:665 [2008/12/22(月) 21:58:05 ]
自分の質問にたくさん返答いただきましてありがとうございます。
色々と考え方はあると思いますが、exeが作成可能ということですね。
勉強してみます。本当にありがとうございました。

700 名前:687 (=684) mailto:sage [2008/12/22(月) 22:06:19 ]
setup.py が何を指すのかすらわからない駆け出しだったりしますが、とりあえずインストールしてみました。
何か問題が起きそうになったらまた質問させていただきますね。

701 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:15:24 ]
>>693
悪いことは言わないから、 2.y 系を使いな。
まだ 3.y 系は一般人向けじゃない。

702 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 02:25:23 ]
2.6.xを使いたいということかもしれん

703 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 02:51:51 ]
globalsってなに?
global"s"って何よ
typoってこいつのせいで2日潰した

704 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:30:22 ]
grobalと被っちゃまずいだろ



705 名前:デフォルトの名無しさん [2008/12/23(火) 12:37:57 ]
Python 2.5.3 and 2.4.6 released

706 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 15:56:12 ]
Python3系の本が何冊か準備中みたいですね。


707 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:13:57 ]
和書は糞だから放置。

708 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:07:54 ]
pythonでコードを書きたいがために余計な仕事を増やしている人はいますか?
もしいれば、具体的なモデルを教えてください

709 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:22:06 ]
>>707
洋書ですよ


710 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:25:57 ]
>>707
普段から洋書読んでれば洋書の話だってわかるだろうに。

711 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:58:03 ]
707は和書の著者


712 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:01:57 ]
和っ書ぃ

713 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:06:20 ]
洋ぃ書っと

714 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:37:07 ]
Pythonってずっと ピジョンって読むのかと思ってたけど
パイソンだったのね



715 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:44:55 ]
707は売れない和書の著者。

716 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:46:30 ]
レッテル貼つまらんぞ偏屈者共

717 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:52:35 ]
別にこの太陽系第三惑星のお前以外のホモ・サピエンスは
お前を楽しませる為に生命活動を行ってるわけじゃないし。

718 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:02:45 ]
rubyやれよ糞ども

719 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:04:17 ]
またruby厨の荒らしですか?

720 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:10:34 ]
python 3000 の本というからには
3000円ポッキリで出そうぜ

721 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:15:14 ]
python始めてみようかと思う
どのバージョンがお勧めなんだい?
2.6.x?


722 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:25:26 ]
716は売れないクソ和書の著者。

723 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:32:48 ]
>>721
2.6.xやって、3.xを予習くらいでいいんじゃない

724 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:36:19 ]
2.6に対応しているフレームワークって多いの?



725 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:40:47 ]
とりあえず色々試したいってのなら2.5の方がいい気がする
新し物好きなら迷わず3選べ!(ネットやら本のコードが2系統だからちょっと手間だが)

726 名前:161 mailto:sage [2008/12/23(火) 23:41:10 ]
呼びました?

727 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:41:27 ]
>>723
ありがとん

あと、オススメの本てあるだろうか?
和書はあんまいいのないのかな?
洋書でもいいんだけど、和書の方がぱっと見でキーワードとか目に止まるからさ
翻訳本は嫌だけど。

728 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:43:16 ]
2.6.xを進める723はHello Python止まりの引きこもり。

729 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:23:40 ]
>>727
python.orgの翻訳ドキュメントがお勧め。python.jpにある。
ただのドキュメントがいいから、普及している割に本が少ない。

730 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:36:34 ]
>>729
そうなのか。公式のドキュメントがいいってのはいいね

バージョンは結局自分で触ってみないと善し悪しがわかりそうにないな
てきとーにいじってみてから考えるとしますわ

731 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:10:48 ]
>>730
jp独自ドキュメントじゃなくて、本家ドキュメント読んでねw
2.5は翻訳完了してるから。

732 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:11:52 ]
いま>>731がしれっとひどいこと言った

733 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:12:12 ]
URL挙げとくか。PDFもあります。
www.python.jp/Zope/links/python_documents/

734 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:12:27 ]
胸が小さい



735 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:14:01 ]
Pythonでローパケットいじりたい場合
Twistedしかない?

736 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:21:54 ]
>>735
raw socketをそのまんま使う

737 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:29:14 ]
>>736
そこらへんのことを学ぶたべの書籍ってないでしょうか?

738 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:42:44 ]
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
www.amazon.co.jp/dp/4894712059/
WinSock2プログラミング−Windows Sockets APIによるネットワークプログラミングのすべて
www.amazon.co.jp/dp/4797330449/

C言語だけど、この辺知らないでプログラム書くのは無謀。

詳解TCP/IP〈Vol.1〉プロトコル
www.amazon.co.jp/dp/4894713209/

739 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 02:41:25 ]
Python 2.5.4 released.

2.5.3 短命杉w

740 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:07:03 ]
739 :デフォルトの名無しさん [↓] :2008/12/24(水) 02:41:25
Python 2.5.4 released.

2.5.3 短命杉w

741 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:59:11 ]
740 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/24(水) 03:07:03
739 :デフォルトの名無しさん [↓] :2008/12/24(水) 02:41:25
Python 2.5.4 released.

2.5.3 短命杉w

742 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 04:42:19 ]
クラスへのメンバの追加を制御するために__slots__を使っているんですが、

class foo(object):
  __slots__ = ['hoge', 'fuga']

  def __init__(self):
    self.hoge = 1
    self.fuga = 2

ここに新たに'piyo'というメンバを追加したくなったときに、__slots__と__init__の2箇所を書き直さなければならないのは少し面倒な気もします。
もっと簡単に書けませんかね?
そもそもこういうことをpythonに求めてはいけないとか?

743 名前:デフォルトの名無しさん [2008/12/24(水) 06:23:03 ]
しかしpythonもデカい言語になったもんだなー。
Library reference読んで再認識したよ。


744 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 10:07:22 ]
>>742
>そもそもこういうことをpythonに求めてはいけないとか?

メタクラスでも使って自己解決しろ。



745 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:04:00 ]
この記事、ひどくね?

gihyo.jp/dev/clip/01/orangenews/vol48/0001
>一般的に,並行処理を行うにはスレッドを用いますが,Pythonは
>GIL(Global Interpreter Lock)という1プロセスごとにロックを持
>つ機構を採用しているため同時に1つしかスレッドを実行できません。

746 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:17:14 ]
Ruby厨のデマだよ。
よい子は惑わされちゃダメだよ。

747 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:19:33 ]
論理的にマルチスレッドで書くという話と
SMP で並列処理してパフォーマンスを書くという話の
マルチスレッドとを用語上きちんと分けろってこと?

一般用語はどうなってるの?

748 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:29:21 ]
何をひどいと言ってるのかは分からんな

PythonにはGILがあるからマルチスレッドでは並列計算が出来なかった
(I/Oとかは外出し出来たけど)
→multiprocessingならそんな問題が無くてウマー

という提灯記事じゃないのか?

749 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:32:51 ]
I/Oに限らず、時間のかかる拡張モジュールは全部GIL外で動かすことで
Pythonと並列に実行できるけどな。

750 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:34:23 ]
まあCのコードを書いて、かつPythonインタプリタやPythonのオブジェクトに
触らないんなら
そら何でもありだわな

751 名前:デフォルトの名無しさん [2008/12/24(水) 11:44:51 ]
何でもありが一番だよ。

752 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 15:05:56 ]
Alex MartelliのPythonクィックリファレンスってもうそろそろ出るのかな?
クックブックは、今から買ってこようと思うんだけど

初めてのPythonとクックブックがあれば、
本家サイトの英語版でお茶を濁せるもんですか?

正規表現関連とメール関連がやりたいです

753 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:06:43 ]
Dやろうっと。

754 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:23:31 ]
Cook Bookも原書で読んだ方がいいよ。
翻訳本はどれもクソだよ。



755 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:35:10 ]
買ってきたお
3月前に出版されたbashのクックブックも買ってきてしまった

Pythonクィックリファレンスもチェックしてきたけど
プリントアウトを代行しましたみたいな本だね
もっと詳しいことが載っているのかと思っていた

くわしく使い方を知りたかったら、ソースを読めって話なのか
>>754
英語を楽しんでいる時間は、ないんよ
3.xに完全移行したら、そのときは原書を読もうかな

756 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:55:31 ]
クイックリファレンスの次がソースw

757 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:01:20 ]
>>755
>プリントアウトを代行しましたみたいな本

おまえそれは翻訳者に失礼だわ。
離婚書けてまで翻訳したらしいぞ(ww

758 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:40:18 ]
pythonで計算時間の計測ってどうするの?

759 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:45:17 ]
ttp://www.python.jp/doc/2.5/lib/profile.html

760 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:52:33 ]
>>738
そこら辺は知ってるけど
Pythonで簡単にやる方法を探してる

761 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:03:28 ]
raw socketで簡単じゃんw

762 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:06:28 ]
>そこら辺は知ってるけど
知ってるのなら>>759より簡単な計測方法って
具体的にどんなものをイメージしているのか教えてくれ。

timeとか?w

763 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:07:28 ]
>>761
Cでならできるけど
Pythonでのサンプルを見たい

764 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:08:17 ]
Cでできるなら
Pythonでのサンプルなんていらないだろ



765 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:08:53 ]
>>762
多分勘違い
計測方法を聞いてるのは俺じゃない
俺は生パケットのPythonでの扱いを聞いた方

766 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:09:36 ]
>>764
スクリプト言語でやることが必須

767 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:09:55 ]
>>765
正直心の底からすまんかった

768 名前:デフォルトの名無しさん [2008/12/25(木) 00:13:33 ]
python 2.5.4は2.5.2に比べてかなり速くなってる。
BeutifulSoupにxmlをパースさせる処理が約11秒から約9.5秒になった。

769 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:17:41 ]
2.5.3寿命短すぎだろw
落とすだけ落としたけどインスコしないで正解だったわ

770 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:18:14 ]
>>765
まずこれ。www.python.jp/doc/nightly/lib/socket-example.html

あとは httplib.py とか SocketServer.py とかそのあたりの標準ライブラリの
コードを読むのがオヌヌメ。


771 名前:デフォルトの名無しさん [2008/12/25(木) 00:22:45 ]
>>758
チュートリアルぐらい読め

772 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:23:50 ]
んなTCPとかいう高級なレイヤーの上の話じゃなくて、
raw socketの話をしてんじゃないのか?

なんか全然勘違いしてると思うぞ質問者の意図を

773 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:30:04 ]
>>772
TCPより下の部分はOSの領分だから、普通は raw socket といえばTCP/UDB/Unix Domain
なんだよ。
ていうか、IP層には socket の概念ないし。 raw packet なら IP Packet か Ether Packet かも
しんないけどさ。

774 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:37:27 ]
>>773
いやフツーraw socketつったらSOCK_RAWのことだと俺は思っていたが……
まあraw socketって言葉遣いが悪かったんならそれは謝る、質問者は
>>735でraw packetと言っていたからね



775 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:53:45 ]
>>770
ありがとう
ただ、そこのサイトの例はちょっと上位レベルな感じだな
TCPヘッダのSEQナンバー、ACKナンバーとか制御フラグとか
いじるのが一番の目的なので

SocketServer.pyとかはそんな感じなのかな?

776 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 01:08:10 ]
>>775
> SocketServer.pyとかはそんな感じなのかな?

いや全然そんなことは無いので安心汁


777 名前:773 mailto:sage [2008/12/25(木) 01:24:36 ]
>>774
いや、生パケットとか生ソケットって言葉から、 SOCK_RAW 連想できんかった。すまん。

一般用語としては、「生」っていう用語はあるレイヤに着目したひとつ下のレイヤの事で、
IPの下にはEther当のネットワーク層があるから、生パケットって言われても
TCP Packet, UDP Packet, IP Packet, Ether Packet のどれか判らんかった。

778 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 01:28:34 ]
>>777
いや、TCPの上に乗っかるアプリケーションにはTCPを流れるデータは
バイトストリームにみえるわけで、
「パケット」は意識しないし、できないでしょ
「パケット」と言われて>>770の例を出すのは発想として明らかにおかしいと思うよ

まあ結論はもう出てるからどうでもいいけどね

779 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 08:45:14 ]
ARPは扱えますか?

780 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 09:19:03 ]
何をしたいの?
サーバはカーネル組み込みのOSが多いから置き換え不能だけど。

781 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 10:06:12 ]
は?

782 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 18:19:11 ]
python で ARP のパケットを送受信できますか
何か OS 依存のライブラリとか使わないとできませんか?


783 名前:デフォルトの名無しさん [2008/12/25(木) 18:40:58 ]
>>782
できる。
ttp://mail.python.org/pipermail/python-list/2002-November/172963.html
ttp://sourceforge.net/projects/pylibnet


784 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 19:45:38 ]
>>783
ありがとうございます!!



785 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 03:45:54 ]
pythonが関数型言語というわりに
あんまり関数ぽくない感じするのは気のせいなのか
副作用つかいまくってる


786 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 03:54:29 ]
だれが関数型だなんていったんだ

787 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 04:02:16 ]
>>785
> pythonが関数型言語というわりに

そんなこと誰が言ってるんだw
関数型言語から色々便利な道具は拝借してるが、単にそれだけだ。

式と文を区別してるし、参照透明性なんぞ最初から眼中にないし、
lambdaは中途半端な糞だし、関数型的なリストは持たないし、
カリー化もパターンマッチも代数データ型もないし、
末尾再帰は最適化しないし、畳み込みは3.0からは格下げだ。

ある意味Guidoの好みは時代に逆行してるな。関数型を嫌ってるんだから。

788 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 06:12:36 ]
でも Python は使いやすい

789 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 06:54:27 ]
関数型はネストが深くなりやすいとかメリットを享受するためには無名関数を使わざるを得ないとかの印象がある
Guidoの考えとは相性良くないんだろう
書きにくくはないけど読みやすくはない

790 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 14:27:48 ]
ctypes で WindowsAPI EnumWindows を呼びたいのですが
EnumWindows は引数に callback 関数を指定しないといけないので
python 側の関数を callback してもらいたいと思います
具体的な書き方が分からないのでどなたか教えてください

791 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:09:33 ]
ttp://www.python.jp/doc/release/lib/ctypes-callback-functions.html

from ctypes import *
from ctypes.wintypes import *

EnumWindows = windll.user32.EnumWindows
EnumWindows.argtypes = [c_void_p, c_int]
EnumWindows.restypes = c_int
EnumWindowsCallback = CFUNCTYPE(c_int, c_int, c_int)

GetWindowText = windll.user32.GetWindowTextA
GetWindowText.argtypes = [c_int, c_char_p, c_int]
GetWindowText.restypes = c_int

def pyEnumWindowsCallback(hwnd, lp):
buf = create_string_buffer('\000' * 1024)
GetWindowText(hwnd, buf, 1024)
if len(buf) > 0:
if buf.value != '':
print buf.value
return True

EnumWindows(EnumWindowsCallback(pyEnumWindowsCallback), 0)


792 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:16:26 ]
py2exeでdllは作れないの?

793 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:18:51 ]
>>787
まー関数型が好きな人は「パターンマッチとカリー化使ってプログラムできる俺かっけえw」
とかニヤニヤしてればいいんじゃね。
高度に関数型の言語は、手続き型と比べてアルゴリズムの記述とかパフォーマンスチューニ
ングのノウハウの蓄積と普及がまだまだという印象を受ける。みんながもっと関数型を使う
ようになればそういう動きが活発になるんだろうけど。
それと、SmallTalkとかHaskellみたいに一つのプログラミングパラダイムのみをサポートす
る言語は、特定の用途にはとても強いが、逆に苦手なプログラミングのタイプにはさっぱり、
ってのが多い気がしないか。
その点、いろんなとこから良いとこ取りしてるPythonは柔軟な対応ができて良いと思うのだけれど。

794 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:19:05 ]
>>790
先を越されてしまったようだが……
コールバックとしては、↓のようにクラスのメソッドも普通に使えるよ。

import ctypes

BOOL = ctypes.c_int
HWND = ctypes.c_ulong
LPARAM = ctypes.c_ulong
EnumWindowsProc = ctypes.WINFUNCTYPE(BOOL, HWND, LPARAM)
user32 = ctypes.windll.user32

class Foo(object):
    def __init__(self):
        self.windows = []

    def MyEnumWindowsProc(self, hwnd, lparam):
        self.windows.append(hwnd)
        return 1

    def __call__(self):
        user32.EnumWindows(EnumWindowsProc(self.MyEnumWindowsProc), 0)
        return self.windows

for hwnd in Foo()(): print "%08X" % hwnd




795 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:33:10 ]
>>793
Pythonは関数型言語じゃありませんよということを説明しただけだよ
Pythonに関数型言語になって欲しいとは一言も言ってない

マルチパラダイム言語の中で考えれば、Scalaあたりに比べれば
言語の記述力自体は別に平凡な部類でしょ、Pythonは

796 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:45:25 ]
On Python
www.shido.info/py/
ython と Ruby は実はほとんど同じで、むきになるほどの差はないと思います。 (ただ、Python は Haskell などの最近の関数型言語の影響が強く見られ、 一方、Ruby は Smalltalk や Eiffel などのオブジェクト指向言語と Lisp の影響が見られます。)


797 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:49:34 ]
>>796
ttp://d.hatena.ne.jp/odz/20061119/1163971267
で叩かれてたサイトだな

798 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:54:24 ]
>>797
せっかく有用な比較してるのに妙な叩きするなよ

zopeとダンジョの比較情報探すのもかなり苦労したんだから

799 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:59:59 ]
有用な比較って……

Pythonでシークエンス型は参照渡しで他は値渡しって記述は俺も
ひどいと思ったけど
大嘘じゃん

800 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 16:05:05 ]
そもそもPythonレベルで参照渡しなんて概念を持ち出す必要があるのか疑問

801 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:18:57 ]
>>800
お前相当アホだろ?

802 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:22:40 ]
すみませんが、質問です。
ジェネレータを通常のリストに変換する簡潔な方法は無いでしょうか?
ジェネレータが逐次返してくる値を全部まとめたリストを得たいのです。

803 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:40:37 ]
>>802
[ e for e in G ]

804 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:40:42 ]
list



805 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:54:45 ]
>>804
おお、こんなクラスが。ありがとうございました。
> Help on class list in module __builtin__:
>
> class list(object)
> | list() -> new list
> | list(sequence) -> new list initialized from sequence's items

>>803
リスト内包表記もかなり簡潔ですね。


806 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 17:56:49 ]
>>791
早速ありがとうございます!!
でも実行すると最後にエラー出てました
EnumWindowsCallback = CFUNCTYPE(c_int, c_int, c_int)

EnumWindowsCallback = WINFUNCTYPE(c_int, c_int, c_int)
でエラー出なくなりました

>>794
きれいなコードですね
ありがとうございました!!


807 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 18:21:56 ]
>>796
駄本の著者だな

808 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 18:54:21 ]
景品表示法的にグレーな本書いた人ね

809 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 19:05:47 ]
ttp://www.amazon.co.jp/dp/4777513688

続編は内容的にガッカリらしい

810 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:15:32 ]
恥ぱい

811 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:27:53 ]
中身がハッカーズ大辞典やアンサイクロペディアみたいなノリだったら
あのタイトルでも許せたんだけどな。


812 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 05:52:00 ]
イテレータから、n 個ずつとってまとめたタプルを
次々返すようなジェネレータって標準モジュール内にないですかね?
itertools 内を見回しても見当たらないんですけど・・・
結構使う機能なので、使うたびにジェネレータ定義するの面倒だし、
この機能だけのためにモジュール定義するのとかも面倒だし、
標準モジュール内であると楽なんですが・・・

813 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 06:03:34 ]
あの、回答まだでしょうか?

814 名前:デフォルトの名無しさん [2008/12/27(土) 08:06:33 ]
正月休みです



815 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 10:03:05 ]
from 俺のitertools import pair
def pair(iterable, count):
    """
    >>> list(pair(range(10), 3))
    [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]
    """
    iterable = iter(iterable)
    stop = False
    while not stop:
        y = ()
        try:
            for i in range(count):
                y += (iterable.next(), )
        except StopIteration:
            stop = True
        if y: yield y


816 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 10:46:00 ]
>>812
> この機能だけのためにモジュール定義するのとかも面倒だし、

Pythonのモジュール作るのは別に面倒じゃないと思うんだが……
つーかPythonのスクリプトって特別な呪文を唱えずとも全部モジュールとして
使えるわけだし、せいぜい既存のモジュールとファイル名がかぶらないようにだけ
注意しとけばいい

PYTHONPATH, PYTHONSTARTUP, sitecustomize.pyなどの手段で
sys.pathに自分用スクリプトディレクトリを加えておくといいぞ
Pythonみたいにモジュールが使いやすい言語でコードの再利用を考えないのは損だ

817 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:47:56 ]
>>815>>816
分かりました。
myitertools.py みたいなのを作ってやってみようと思います。

818 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:57:00 ]
ちょっと違うけど短くかけるな
def pair(iterable, n):
    return izip(*[iter(iterable)]*n)

819 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:58:45 ]
うへ,tuple って immutable っていうから
+= みたいなのはなしかと思い込んでた…

820 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 12:25:32 ]
a += b って a = a + b として処理されるんでないの

821 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 12:26:35 ]
もちろんそうだよ。

822 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 12:27:53 ]
>>820
__iadd__()がある場合は__iadd__()で処理される
無い場合は、__add()__を用いて処理される

immutableの場合は当然__iadd__()なんてものはないから
普通に__add()__を用いて新しいオブジェクトが作られる

823 名前:822 mailto:sage [2008/12/27(土) 12:28:50 ]
なんだ__add()__ってw
まあ意味分かるよね、ごめん

824 名前:デフォルトの名無しさん [2008/12/27(土) 21:48:30 ]
>>> zip(*[iter(range(10))]*3)
[(0, 1, 2), (3, 4, 5), (6, 7, 8)]
>>> zip(*[iter(range(10))]*4)
[(0, 1, 2, 3), (4, 5, 6, 7)]



825 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 22:14:25 ]
>>815 >>818 >>824
この場合は末尾の扱いってどうすべきなのかな

826 名前:デフォルトの名無しさん [2008/12/28(日) 00:07:52 ]
用途によって末尾が必要な場合・不要な場合があるけど、
tupleで返す場合の戻り値は >>824 のように固定長にすべきじゃないかな。

また、>>815は、while ループ一巡辺り最大で
tuple += tuple で count - 1個, (iterable.next(), ) で count 個の不要な一時tupleオブジェクトが作成される。
この場合の作業変数はlistを使う方がベター。

827 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 05:15:16 ]
余りが出たら、最後をデフォルト値で埋めてみる

def padpairs(iterable, n, default=None):
  x = chain(iter(iterable), repeat(default, n-1))
  return pair(x, n)

# pair は >>818 の奴

>>> list(padpairs(range(10),3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]
>>> list(padpairs(range(10),4))
[(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, None, None)]

828 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 10:12:17 ]
2.6以上ならizip_longestが使える

829 名前:デフォルトの名無しさん [2008/12/28(日) 10:32:42 ]
>>827
GJ

830 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 15:09:27 ]
>>828
2.5でもmap使えばいいだろ

831 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 15:35:12 ]
愚直にitertools.isliceで。

import itertools

def pair(iterable, count):
    it = iter(iterable)
    while 1:
        a = tuple(itertools.islice(it, count))
        if not a:
            break
        yield a

print list(pair(range(10), 3))


832 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 16:46:42 ]
俺も考えてみたけど、>>824のシンプルさには敵わないな

>>> import itertools
>>> make_taker = lambda xs, n: lambda: tuple(itertools.islice(xs, n))
>>> iter_take = lambda xs, n: iter(make_taker(iter(xs), n), ())
>>> list(iter_take(range(10), 3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]

833 名前:デフォルトの名無しさん [2008/12/28(日) 19:14:36 ]
see also itertoolsのドキュメント内 izip と 例 の grouper関数

834 名前:デフォルトの名無しさん [2008/12/29(月) 00:37:20 ]
>>830
mapだとイテレータや巨大なリスト等を扱うとき困る。itertools.imapだと末尾の扱いが若干異なる。
3.0 のbuiltinのmap はitertools.imap相当なので、mapで長さの異なるリストを扱っている場合は3.0への移植の際に注意が必要。
例えば、下のコードは 2.x と 3.0 で結果が異なる。
>>> list(map(lambda *xs:xs, *[iter(range(10))]*3))




835 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 01:42:21 ]
>>832
nが大きな数になる時を考慮するなら、こっち(islice)の方が効率良さそう。


元質問からは少し外れるけど、file-likeオブジェクトや文字列の場合。

try:
from io import StringIO
except ImportError:
from StringIO import StringIO

def split_nbyte(stream, n):
return iter(lambda :stream.read(n),"")

def split_nbyte_str(s, n):
return group_nbyte(StringIO(s), n)


836 名前:デフォルトの名無しさん [2008/12/29(月) 08:17:15 ]

ie = win32com.client.Dispatch('InternetExplorer.Application')
ie.Navigate('www.google.co.jp/')
ie.Visible = True
while ie.busy:
time.sleep(1)
q = ie.document.all('q')
q.Value = 'python'
btnG = ie.document.all('btnG')
btnG.click()

これでGoogleの検索が出来ることが分かったのですが
検索結果を取り出す方法が良く分かりません
どうすれば出来ますか

837 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 08:32:37 ]
print ie.document.body.innerHTML

838 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 08:53:40 ]
っつーか
urllib2 じゃいかんのか
なにがしたいのかによるが

839 名前:デフォルトの名無しさん [2008/12/29(月) 09:06:23 ]
エラーが出ます><

840 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 11:12:01 ]
Python3.0なんですが、urllib2がインポートできないのでそうしました。
あきらかに日本語ドキュメントがおかしいです。存在しません。

841 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 11:14:54 ]
>>840
py3k の使用はもうちょっと待ったほうがいいって。

842 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 11:18:50 ]
今の日本語ドキュメントは2.5用

843 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 11:24:02 ]
3.0ではurllib周り大刷新してたはず

844 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:00:25 ]
こんなところで質問する人間が使うバージョンじゃない。> 3.0



845 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:16:30 ]
正式リリースされているんだからもっとレスがついていいと思う

846 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:42:20 ]
英語読めない奴は2.5系使うのがいいよ。

847 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:43:50 ]
英語読めても各種ライブラリを自分で移植したりビルドする気のない奴は(ry

848 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:57:35 ]
正式リリースされたからってすぐ飛びつくもんじゃない。

メーカー製品みたいに、ドキュメントからサポート体制からリリースに合わせて
全力で整えてるわけじゃないんだから。

849 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:59:05 ]
3.0から入るのも良いけれど、その場合は日本語ドキュメントはアテにならないから
英語ドキュメント読まないと。

850 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 18:34:58 ]
怒濤の勢いで止めとけレスがw

851 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:15:45 ]
僕はパイソンを使う権利が無い、資格が無いという事ですね。
こんなだから日本のPythonユーザの数は少ないんじゃないでしょうか。

明らかにおかしい。

852 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:27:26 ]
どのバージョンも好きに使う権利があるが、
2.5.2がふさわしい。むしろ2.5.2のThe King。

853 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:32:18 ]
>>851
出たばかりだから枯れてないし、情報も出回ってないから、
古いの使っとけ、というアドバイスをそこまで曲解するほうがおかしい。

854 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:38:22 ]
>>851は荒らしだろ、相手にするなよ。
でも>>851の親がイカれた奴なのは確かだ。




855 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:40:42 ]
>>854
相手するなよ

856 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:47:43 ]
ろくにwhat's newも読まずに最新のバージョンを使って、urllib2がインポートできない
からとwin32comを使い、3.0は止めとけばと言われれば僻み丸出しとか馬鹿なの?

857 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 20:31:39 ]
まあそう煽るなよ
初心者ならドキュメントの類を隅々まで読んでいないのも
一番新しい正式リリース版をインストールするのも、別に不思議なことじゃない

>>851はいつもの釣りだろ

858 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 20:33:32 ]
まあ普通にバカだわな

859 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 20:45:17 ]
>>852
っ2.5.4

860 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:27:45 ]
またruby厨の降臨かよ

861 名前:デフォルトの名無しさん [2008/12/29(月) 22:47:04 ]
>>847
Ruby使うのやめてPythonにしたのは
各種ライブラリがそろってて
Rubyみたく自分で移植しなくてもよかったから
いまさらPy3kでライブラリ移植する必要が出てくるなら
Ruby使ってた方がまし

862 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:48:08 ]
マニュアルの類は読まないってのが世間一般の常識として浸透してるから
そう目ゴジラ立てて怒らんとってくれ。

863 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:48:56 ]
アドバイスだよ

864 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:00:10 ]
アドバンスなら大いに結構



865 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:00:48 ]
なんかレベルというより年齢層が高くなってきたな。

866 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:06:28 ]
>>861
ならRuby使ってればいいじゃない
誰も君に強制はせんよ

867 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:19:43 ]
エンドユーザーならまだしも開発者がマニュアル読まないとかバカですって言ってるようなもんだろ

868 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:20:47 ]
>>867
もう3.0の仕様を隅々まで把握してんのか?
すげーな

869 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 00:12:19 ]
>>861
Pythonは、2.x の間は下位互換性を大事にバージョンアップしてきたし、
2.x -> 3.y は下位互換性失われるけど、 3.x -> 3.y はまた互換性をできるだけ
確保しながらバージョンアップしていく。

Rubyだと、1.8->1.9 でも、 1.9->2.0 でも、きっと互換性の問題出るよ。

870 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 00:28:41 ]
>>868
差分があるしね

871 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 00:34:38 ]
>>868
必要に応じてマニュアルを読む事とマニュアル全てを把握している事は別

872 名前:デフォルトの名無しさん [2008/12/30(火) 01:06:39 ]
>>869
1.8.6→1.8.7でも互換性の問題あるし、
1.8.6でも仕様を替えて互換性がなくなったこともあった。

873 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:35:53 ]
Rubyの問題は仕様が明示されていないことだ。
互換性の問題があるのかどうかすら分からないのだ。
こんな言語を仕事に使おうと思う奴は馬鹿かアホかキチガイだと思う。

874 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:39:47 ]
Python仕事に使ってんのか
いいな



875 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:45:02 ]
3.0 始める人は、What's new, PEP3000 と 2to3 くらいは把握しておいた方がいいと思う。
ライブラリで移動したものも捕捉してくれる。>2to3
- from urllib2 import urlopen
+ from urllib.request import urlopen


ところで、googleでの検索なら API 使ったほうかいいんじゃないかな。

google 検索を urllib でやる場合、UserAgent 等を設定しないといけないので注意。
また、自前で検索結果をパースする場合 BeautifulSoup 使いたいなら 3.0 だとまだちょっと手間がかかる
(windowsユーザにとって)。先日のリリース で BeautifulSoup も 3.0 に対応したみたいだけど、
パッケージ内に diff や パッチを当てるto3.sh が含まれているだけなので、自分でパッチ当てないといけないみたいだし。

876 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:07:46 ]
まあその辺は元からのPythonユーザや、このスレ見てる人にはわかってることでしょ

Pythonとやらを試してみっか、と考えた大量の新規ユーザが
地雷にはまってるだろうことは想像に難くないが

877 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:03:52 ]
>>876
ライブラリが対応しているかどうかはプロジェクトのページを見れば書いて
あるし、まだほとんどのlinuxディストリビューションでは3.0は標準でイン
ストールされていない。その状況には同意しかねる。
それに公式のダウンロードページにもこう書いてある。
> Note that both Python 2.6 and 3.0 are considered stable production
> releases, but if you don't know which version to use, start with
> Python 2.6 since more existing third party software is compatible
> with Python 2 than Python 3 right now.

ここであえて3.0を選ぼうという初心者が大量にいるとは思えない。

878 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:11:25 ]
そんなことはスルーor知らずに3.0選んでこそ真の初心者とも言えるがな

879 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:28:55 ]
初心者ならLinux使ってないだろうし
良く知らない言語をちょっと試すかってときに
わざわざ英文なんて読まないよな

880 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:34:32 ]
ttp://japanese.joelonsoftware.com/uibook/chapters/6.html

881 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:10:14 ]
日本語ドキュメント、書籍、等の外部のリソースの事も考えると
公式サイトの勧めているバージョンが、必ずしも全てのユーザに合ってるとは限らないってのが現状じゃない?
いくら互換性があるといっても、(2.x系)例えば windowsユーザだと、ライブラリのインストールで
ビルド済のインストーラが必要なユーザ層等もいるはずだし。

今は、若干 Python のリリースが先行してる時期だと思う。
早くどれかのバージョンに収束して欲しいという意味を込めても、
出来るだけ新しい安定版を勧めたいとこだけど...

その辺(これからどのバージョンを使うか)の認識って皆どうなんだろう?


882 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:16:00 ]
とりあえず、自分の認識をまとめて書き出してみる。(突っ込み歓迎)


これからPythonを試してみる人
ライブラリ類が必要 -> 2.x
日本語ドキュメントも必要 -> 2.5
レンタルサーバで使いたい -> 2.4 が無難?

これから新規にライブラリを書く既存Pythonユーザ
2.xユーザを考慮するなら -> 2.6 ベースでコード書いて2to3

新規にアプリケーションを書く人
ライブラリが必要なら -> 2.x
過去の遺産なんていらない -> 3.0

こんなアドバイス必要ない
-> 複数バージョンをインストール済


883 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:39:04 ]
>>866
国語力ないですねw

884 名前:デフォルトの名無しさん [2008/12/30(火) 05:32:48 ]
これからPythonを試してみる人 -> 3.x
ライブラリ類が必要 -> 2.6.x
日本語ドキュメントも必要 -> 2.6.x
レンタルサーバで使いたい -> 2.6.x

これから新規にライブラリを書く既存Pythonユーザ -> 3.x
2.xユーザを考慮するなら -> 2.6.x ベースでコード書いて2to3
新規にアプリケーションを書く人 -> 3.x
ライブラリが必要なら -> 2.6.x

こんなアドバイス必要ない -> どうせ読んでないだろうから何も言いません



885 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 05:44:29 ]
いろいろ、ごにょごにょしようとすると、
ライブラリ便利だなぁ、、

886 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 06:06:17 ]
ライブラリの力を自分の能力と勘違いしてしまいますよね

887 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:17:39 ]
>>879
なら、本、買えよ
中央図書館で借りてこいや

888 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:29:43 ]
いるいる
勘違いした香具師

889 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:39:06 ]
>>879
> 初心者なら(略)読まないよな

帰国子女初心者の僕に対する挑戦と受け取りますた


890 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:57:41 ]
BeautifulSoup Release 3.1.0 (2008/12/27)

2.4/3.0 のハイブリッド版。新しい機能の追加等はなし。3つの後方非互換が在り。

1. str()や__str__の振舞が変わる。-> バイト文字を得るにはencode()/unicode文字を得るには decode() を使う。
2. SGMLParserベースからHTMLParserベースに変更。(sgmllibが標準からなくなるため)
此れにより、壊れた HTML文書 を扱えなくなる。
将来のバージョンでは、速度と壊れたHTML文書の扱いのトレードオフで、パーサを選択できるようにする予定。
3. (Python3で) 属性中のエンティティの扱いで、パース時にunicode文字に変換されることがある。
例: <a href="crummy.com?sacré&bleu"> -> Python 3 では é が "\xe9" に。


891 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 08:27:42 ]
3.0対応版出すの早いな。GJ

892 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 08:33:57 ]
ライブラリなかったら他の言語使うし

893 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 09:22:13 ]
ライブラリ使わない開発なんてあるのか?
Hello Python!レベル?

894 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:01:18 ]
帰国子女って変な用語だよな
帰国子士にすべき



895 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:11:55 ]
谷底から這い上がってきた感じがする

896 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:20:59 ]
僕も全然始めたばっかりの初心者だけど
3.0でUnicodeが云々で日本語の扱いがより簡単になった
(2系程複雑じゃない?)から3.0から始めたいなぁ、とか思ったよ。


897 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:29:39 ]
今でもUnicodeEncode(Decode)Errorを見るとため息が出る。

898 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:37:04 ]
UnicodeEncode(Decode)Error
慣れれば原因想像つくんだけど
途方に暮れてる人も多いんじゃないかな

899 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:42:28 ]
初心者にもいろいろいるだろう

Perlから来た人
COBOLから来た人
FORTRANから来た人
とかの「他言語の経験のあるPython初心者」とか
Linux?何それおいしいの?な「Linux初心者&Python初心者」とか
プログラミング言語?何それおいしいの?っていうかWindowsって何?とか

900 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:38:37 ]
>>896
>3.0でUnicodeが云々で日本語の扱いがより簡単になった

より簡単になった?
ご冗談はよしてください。

901 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:08:41 ]
バイト列とユニコード文字列が別にあって
でも両方にほぼ同じメソッドがあって(encode, decodeまで)
でも中身は別物なので使い分けないといけない

という状況が解消されたんだから
「より簡単になった」と言っていいと思うよ

902 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:47:36 ]
「マシになった」と言うべき

903 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:59:33 ]
より良くなったと見るかより糞でなくなったかと見るか

904 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:08:13 ]
文字列から正規表現にマッチする部分をすべて探して表示するにはどうすればよいでしょうか?

log: 文字列
regex: コンパイル済み正規表現
のとき

res = regex.search(log)
print res.group()
としたところ、最初にマッチしたもののみが返されるというところまではたどり着きました。



905 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:12:12 ]
ttp://www.python.jp/pipermail/python-ml-jp/2008-December/004566.html

いやー、簡単になって本当〜〜〜に良かったよね!!

906 名前:デフォルトの名無しさん [2008/12/30(火) 21:13:59 ]
UnicodeEncodeError: 'cp932' codec can't encode character u'\xbb' in position 2091: illegal multibyte sequence

こんなエラーが出るんですけど原因はなんでしょう?

907 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:27:21 ]
>>904
6.2. match() vs search()
match() 関数は、正規表現が先頭でマッチするかを調べるだけで、
search() は文字列の先へ進みながら、マッチする部分を探します。
この違いを覚えておくことは重要です。
match() は位置 0 でマッチした場合のみ報告してくれます。
もしマッチが位置 0 以外ならmatch() は報告しません。

>>> print re.match('super', 'superstition').span()
(0, 5)
>>> print re.match('super', 'insuperable')
None

反対に、search() は文字列を先へと探していき、最初に見付けたマッチを返します。

>>> print re.search('super', 'superstition').span()
(0, 5)
>>> print re.search('super', 'insuperable').span()
(2, 7)

ときどき、あなたは re.match() のみを使って、
正規表現の前に .* を付けておくという誘惑にかられるかも知れません。
この誘惑に打ち勝って、re.search() を使いましょう。
正規表現のコンパイラは、マッチ部分の探索を高速に行うために、
正規表現をそれなりに解析します。
そのような解析のひとつが、最初のマッチ文字が何であるか見付けることです。
たとえば Crow で始まるパターンは "C" で始まる文字列とマッチしなければいけません。
この解析により、マッチングエンジンは、文字列の中から最初の文字を素早く探索し、
見付かった場合だけ全体のマッチを試みるのです。
.* を付け加えると、この最適化ができないため、文字列の最後まで探索してから、
残りの正規表現のマッチ部分を探しに逆戻りすることが必要になるのです。

908 名前:904 mailto:sage [2008/12/30(火) 21:32:29 ]
>>907
match でなくて search を使うところまではわかったのですが「次にマッチするもの」はどのように取得するのですか?

909 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:32:45 ]
re.findall使えとかそういう話じゃないの?

910 名前:デフォルトの名無しさん [2008/12/30(火) 21:38:59 ]
>904
>>> import re
>>> l = 'hagefugahogemogepiyo'
>>> r = re.compile('ge', re.I)
>>> [m for m in r.findall(l)]
['ge', 'ge', 'ge']

911 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:40:00 ]
python.jp の説明が糞な件

912 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:41:26 ]
finditerの方が良いって話もあるけど実際どうなん?

913 名前:デフォルトの名無しさん [2008/12/30(火) 21:41:42 ]
>>904
findall

914 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:48:11 ]

>>> r = re.compile('(a)(g)', re.I)
>>> [m for m in r.findall(l)]
[('a', 'g')]
>>> [m.group(0) for m in r.finditer(l)]
['ag']
>>> [m.group(1) for m in r.finditer(l)]
['a']
>>> [m.group(2) for m in r.finditer(l)]
['g']



915 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:50:11 ]
>>910
[m for m in r.findall(l)]
やってることが意味不明なんだがwwwwww

916 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:51:42 ]
>>915
[o for o in [n for n in [m for m in r.findall(l)]]]

917 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:53:08 ]
>>> r=re.compile('(a)(o)', re.I)
>>> [m for m in r.findall(l)]
[]
>>> [m.group() for m in r.finditer(l)]
[]
>>> [m.group(0) for m in r.findall(l)]
[]
>>> [m.group(1) for m in r.finditer(l)]
[]
>>> [m.group(2) for m in r.finditer(l)]
[]

918 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:59:51 ]
>915
おまえは黙ってろ

919 名前:デフォルトの名無しさん [2008/12/30(火) 22:27:12 ]
>>910
>>> [m for m in r.findall(l)]
['ge', 'ge', 'ge']

>>> r.findall(l)
['ge', 'ge', 'ge']

920 名前:904 mailto:sage [2008/12/30(火) 22:38:51 ]
>>910 のとおりだとうまくいかず、マッチするべきものの部分文字列のタプルのリスト (で表現があってるかどうかわかりません、間違っていたらごめんなさい) が返されてしまいます。
カッコ () がついたものだとダメなのでしょうか?
使用している正規表現は、単純化すると
r'(ho|ge){2} [hoge] (ho[ge]){4}'
のような形をしています。


921 名前:904 mailto:sage [2008/12/30(火) 22:45:54 ]
無理矢理、カッコを使わないような形にしたところ動きましたが、もとの正規表現のままで解決可能であればお願いします。

922 名前:904 mailto:sage [2008/12/30(火) 22:47:42 ]
まだでしょうか

923 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 23:00:38 ]
ん?
regexp = re.compile(r'(ho|ge){2} [hoge] (ho[ge]){4}')
[ m.group() for m in regexp.finditer('hoge h hoghoehoghoe') ]
でいいだろ

924 名前:923 mailto:sage [2008/12/30(火) 23:01:55 ]
あ、finditerの引数は実際の入力を入れるようにしてね



925 名前:904 [2008/12/30(火) 23:28:49 ]
>>923
成功しました。ありがとうございます。

>>922は偽者です

926 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 01:02:38 ]
くそったれなHTMLはBeautifulSoupに食わせてから他のxmlライブラリに渡せばいいことに気づいた

927 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:05:15 ]
pythonのwebフレームワークはキャッシュ生成して鯖に負担かけないとかまでやってくれるのかな
できないらword pressと組み合わせたほうがいいかとも思いはじめてるんだが

928 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:13:26 ]
もしかしたらRuby使った方が効率がよいかもしれんが

929 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:56:04 ]
>>927

WSGI対応フレームワークでは、それは Middleware の役割。
どのWSGI対応フレームワークからでも、プラグインのように、
必要に応じて CacheMiddleware等 を追加してサーバを構成する事が可能。(例: Pylons + Beaker)


930 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 06:49:39 ]
>>927
Google App Engine はキャッシュ持ってますよ
有効期限も自分で設定出来る

931 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 09:52:29 ]
RoRとかって以外と再利用性低いよな。

WSGIの世界になれると戻れない(www

932 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:14:12 ]
>14
import urllib, urllib2, cookielib, time
req = urllib2.Request('pc11.2ch.net/test/bbs.cgi', urllib.urlencode({
'bbs' : 'tech', 'key' : '1226830195', 'time' : int(time.time()),
'submit' : u'書き込み'.encode('sjis'), 'FROM' : 'fushianasan', 'mail' : 'sage',
'MESSAGE' : u'おっぱい'.encode('sjis'), 'suka' : 'pontan'}),
{'Referer' : 'pc11.2ch.net/'})
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)

933 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:16:56 ]
おっぱい

934 名前:fushianasan mailto:sage [2008/12/31(水) 13:13:38 ]
おっぱい



935 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 13:48:31 ]
おっぱい

936 名前:fushianasan mailto:sage [2008/12/31(水) 15:35:55 ]
ぱいぱん

937 名前: 【1603円】 【大吉】 mailto:sage [2009/01/01(木) 00:07:16 ]
( ゚∀゚)o彡おっぱいそん! ( ゚∀゚)o彡おっぱいそん!

938 名前: 【大吉】 【24円】 mailto:sage [2009/01/01(木) 00:10:44 ]
おっぱい

939 名前: 【吉】 [2009/01/01(木) 00:15:16 ]
しねばいいよ

940 名前: 【ぴょん吉】 mailto:sage [2009/01/01(木) 00:56:07 ]
あけおめー

941 名前: 【1192円】 【大吉】 mailto:sage [2009/01/01(木) 12:59:17 ]
journal.mycom.co.jp/articles/2009/01/01/python3/

942 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:04:43 ]
相変わらずヌルいなあ>後藤とかいうひと

943 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:10:08 ]
Unix系なんでもライターだからこんなもんだろ。
例えば安藤さんのプロセッサ記事みたいなクオリティを期待しちゃいかん。

944 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:34:51 ]
gihyo.jp/dev/serial/01/pythonhacks



945 名前: 【1499円】 mailto:sage [2009/01/01(木) 14:19:24 ]
age

946 名前: 【小吉】 mailto:sage [2009/01/01(木) 14:19:53 ]
>>941 >>944
GJ!!

947 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 16:54:40 ]
>941
●テキストからバイナリデータへの変換: str.encode() または str(b, encoding=...)
●バイナリデータからテキストへの変換: bytes.decode() または bytes(s, encoding=...)
これは「または」の部分が逆ですか?


948 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:00:17 ]
自分で調べろ

949 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:03:32 ]
As the str and bytes types cannot be mixed,
you must always explicitly convert between them.
Use str.encode() to go from str to bytes,
and bytes.decode() to go from bytes to str.
You can also use bytes(s, encoding=...)
and str(b, encoding=...), respectively.


950 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:05:07 ]
やっぱり誤訳ですよね

951 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 18:09:37 ]
きっと気の利いた編集者がしょうがないなぁって直してくれたんだよ

952 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 20:09:25 ]
Unix系なんでもライターだからこんなもんだろ。
元日だけにおめでたいことだ。

953 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 20:28:00 ]
>>944
このページってリンク0000だけ?
何も出てこないんだけど


954 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:39:55 ]
%愛してたのになくなるのか・・・



955 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:59:52 ]
>>954
剰余算なくなるってこと??

956 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:27:06 ]
print JK

957 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:03:27 ]
>>954
print.format になるのか


958 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:38:33 ]
>>955
文字列の % が format メソッドにかわるだけで
数字の剰余はそのまま残る

959 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:42:27 ]
3.0 の時点で既にobsolete
docs.python.org/3.0/library/stdtypes.html?highlight=obsolete#old-string-formatting-operations

960 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:45:34 ]
Pythonのお勉強 Part31
pc11.2ch.net/test/read.cgi/tech/1230821097/

961 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:46:03 ]
>953
連載って書いてあるから、しばらくしたら追加されるんだろ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<206KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef