Pythonのお勉強 Part3 ..
[2ch|▼Menu]
577:デフォルトの名無しさん
08/12/18 13:09:28
>>576
emacsだとpycompleteぐらいしか選択肢がないと思ってたのだが,
今はpysmellというのがあるんだ.横槍だが参考になった.

578:デフォルトの名無しさん
08/12/18 14:41:38
emacs code browserもpythonに対応してるぞ

579:デフォルトの名無しさん
08/12/18 14:44:30
>>576
便利そうだね
URLリンク(www.emacswiki.org)


580:デフォルトの名無しさん
08/12/18 15:01:56
>>573
今書いてるからもうちょっとしたら公開するよ。

581:デフォルトの名無しさん
08/12/18 15:20:05
Pythonは動的に属性が追加/削除されるから、インテリセンスみたいなのとは
相性がイマイチだね。

582:デフォルトの名無しさん
08/12/18 15:23:27
>>581 わかってないなー。未熟だね。

583:デフォルトの名無しさん
08/12/18 15:25:11
まあ例えば
def foo(x):
  x.
までタイプしたところで補完するのは無理だわな
少なくともスコープ内で型が確定してるようなケースでないと

584:デフォルトの名無しさん
08/12/18 15:42:34
Function Annotationsを利用する事はできそうだよね

585:デフォルトの名無しさん
08/12/18 19:32:38
Function Annotations の具体的な用途は 3rd party製ライブラリに委ねられていて、
型情報に限らずどんな式でも書けるようになってる。

変数の型を保障する仕組みではなく、ライブラリ等でチェックする際のヒントとして使えるだけ。
エディタ/IDEが皆に「function annotations には型を書く」と強制は出来ないので、
補完への利用は出来ないことはないけど、難しいんじゃないかな。


586:デフォルトの名無しさん
08/12/18 20:14:25
最近学習を開始した初心者です。
最初はコマンドプロンプトで命令を表示させているだけですが、
pythonで作ったプログラムはこういったCUIの中で行われるものですか?
***.exeで立ち上げるようなプログラムを作るのは無理ですか?
Cやっとけってことでしょうか?

587:デフォルトの名無しさん
08/12/18 20:15:57
URLリンク(python.matrix.jp)

588:デフォルトの名無しさん
08/12/18 20:24:55
windowsなら拡張子を.pywにすれば.exeっぽく実行できるよ
GUIがやりたいってことなら該当するライブラリをあさってみるといいよ
TkinterとかwxWidgetsとか

589:デフォルトの名無しさん
08/12/18 22:16:00
wxPython+py2exe


590:デフォルトの名無しさん
08/12/18 23:06:32
>>586
コマンドラインからでもウィンドウを表示できることは理解されているでしょうか?

$ python
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> class MyApp(wx.App):
... def OnInit(self):
... frame = wx.Frame(None, 0, "Title")
... frame.Show(True)
... self.SetTopWindow(frame)
... return True
...
>>> app = MyApp(0)
>>> app.MainLoop() # ←ここで中身が何もないウィンドウが出る。
>>>


591:デフォルトの名無しさん
08/12/18 23:14:03
横からだけど、MainLoop内ではどういうことしてるの?
ループに入るって事は中でずーっと処理が繰り返されてるんだよね。
なのに放置してたらCPU使用率は0付近をさまよう。これって不思議。
自分でforループとかwhileループ走らせれば面白いほどCPU使用率は上がるのに。

592:デフォルトの名無しさん
08/12/18 23:25:39
GUIが動いてるだけでCPU使用率が跳ね上がったら
まともにパソコン使えないだろ!

593:デフォルトの名無しさん
08/12/18 23:26:43
>>591
普通はこんな感じ

while True:
  次のイベントを取得する(イベントが来るまでブロック)
  イベントを処理する

ビジーループではないからCPU使用率は跳ね上がらない
イベントが来なければずっと寝ているだけだ

594:デフォルトの名無しさん
08/12/18 23:31:45
>>590のようにPythonの対話環境を生かして
対話的にGUIを試したい場合、使用するツールキットによっては細工がいる

>>590の例だと、最後のMainLoop()を呼ぶまで窓は表示されず、
呼んでしまうと今度はそこでブロックしてしまい、対話環境が使えなくなるはずだ
それではせっかく対話環境からGUIを試す面白みも無いだろう

Tkの場合は、環境によるが、mainloop()関数をよばずとも
root = Tkinter.Tk()
だけでいきなり窓が出て、対話環境で引き続き色々コマンドを打ち込むことが
可能なようだ
試したところWindowsとLinuxでは大丈夫なようだが、cygwinではmainloopが
必要で、このような使い方はできないようだ

595:デフォルトの名無しさん
08/12/18 23:37:42
>>593
なるほど…。となるとイベント取得ってのは、OSから呼び出す形で実現してるのか。

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

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

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

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

598:デフォルトの名無しさん
08/12/18 23:59:16
>>597
うん、そんな感じであってる

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

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

601:デフォルトの名無しさん
08/12/19 00:03:53
>>599
> loop「何かイベントあった?」

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

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

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

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

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

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

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

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


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

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

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

610:デフォルトの名無しさん
08/12/19 01:38:04
>>609
ipython の ed コマンド

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

612:デフォルトの名無しさん
08/12/19 01:49:05
知らんがな

613:デフォルトの名無しさん
08/12/19 01:52:17
>>609
俺はEmacs使いだから、
Common Lisp用のSLIMEみたいなマイナーモードが欲しいなあ。
URLリンク(common-lisp.net)

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


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


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

617:デフォルトの名無しさん
08/12/19 03:51:06
Python使っている人のスレって大体こんな感じ。

618:デフォルトの名無しさん
08/12/19 09:52:45
>>611
一人忘年会を開いたんですね

619:デフォルトの名無しさん
08/12/19 10:19:58
Python使っている人のスレって大体>>618こんな感じ。

620:デフォルトの名無しさん
08/12/19 10:21:17
618はキモ面

621:デフォルトの名無しさん
08/12/19 10:40:50
他人の顔なんか、どうでもよくない?

622:デフォルトの名無しさん
08/12/19 10:50:22
顔なんかどうでもいい
くぎゅが好きなんだ!!!

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

624:デフォルトの名無しさん
08/12/19 11:55:30
ブサでオタの集会だったのか。

625:デフォルトの名無しさん
08/12/19 13:06:09
しね

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

627:デフォルトの名無しさん
08/12/19 14:22:45
twitterから
顔かよ。くだらん。

628:デフォルトの名無しさん
08/12/19 15:38:18
またruby厨が荒らし始めたか

629:デフォルトの名無しさん
08/12/19 16:27:46
Uncyclopedia項目リンク
釘宮 理恵(くぎのみや りえ、1979年5月30日 - )は日本を代表するツンデレ声優。また、声優界で唯一の皇族でもある。

630:デフォルトの名無しさん
08/12/19 19:53:39
アンサイを張られても

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

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

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

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

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

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

634:デフォルトの名無しさん
08/12/19 20:20:55
まぁ念のため、変更方法はこれだ。
URLリンク(docs.python.org)

635:デフォルトの名無しさん
08/12/19 21:11:16
末尾再帰くらいは自動で除去して欲しいよな。


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

637:デフォルトの名無しさん
08/12/19 22:21:03
まあレスつけてるの全部キモメンだけどな。

638:デフォルトの名無しさん
08/12/19 22:31:22
あほいえめんずのんののもでるやってるわ

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

640:デフォルトの名無しさん
08/12/20 02:33:46
yieldでいけるような

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

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

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


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

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

644:デフォルトの名無しさん
08/12/20 14:15:15
ポストンポストン!

645:デフォルトの名無しさん
08/12/20 15:29:02
みんなごめん。
来年の給料払えないや。

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

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

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

URLリンク(adodbapi.sourceforge.net)
最新版は 2.2.4 December 17, 2008

URLリンク(adodb.sourceforge.net)
最新盤は adodb-py-210 July 30, 2008

649:デフォルトの名無しさん
08/12/20 17:41:06
win32comだけで充分です
本当にありがとうございました

650:デフォルトの名無しさん
08/12/20 19:19:49
流れぶった切ってcomtypes最強説を提唱

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

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


652:デフォルトの名無しさん
08/12/21 10:02:01
URLリンク(groups.google.co.jp)

653:デフォルトの名無しさん
08/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器盆


URLリンク(kansai2channeler.hp.infoseek.co.jp)
venster 0.72へのパッチ
vensterのサイトからソースとってきてpatch -p0で当ててくれ

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


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

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

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


655:デフォルトの名無しさん
08/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 = 'fURLリンク(localhost)'
link.save()

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


656:デフォルトの名無しさん
08/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 = 'fURLリンク(localhost)'
link.Save()

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

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


657:デフォルトの名無しさん
08/12/21 12:04:17
>>643
そのモジュールって標準?


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

659:デフォルトの名無しさん
08/12/21 12:14:00
>>657
web.py だろう

660:デフォルトの名無しさん
08/12/21 12:26:41
URLリンク(webpy.org)

661:デフォルトの名無しさん
08/12/21 12:31:31
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)

662:デフォルトの名無しさん
08/12/21 12:34:33
URLリンク(mdp.cti.depaul.edu)

663:デフォルトの名無しさん
08/12/21 12:48:24
Pythonistaも質が下がったな

664:デフォルトの名無しさん
08/12/21 12:59:42
スレリンク(tech板:161番)

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

666:デフォルトの名無しさん
08/12/21 17:26:32
出来るっちゃ出来るけど
サンプル少ないからな

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

667:デフォルトの名無しさん
08/12/21 17:30:52
>>665
はっ? .exe作るってこと? できるよ。

>>666
はっ? 初心者?

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

669:デフォルトの名無しさん
08/12/21 17:32:59
>>665
出来る
でも生産的ではないし、動作も遅い

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

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

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

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

673:デフォルトの名無しさん
08/12/21 17:55:24
全部まとめて exe にパックすればいいやん

674:デフォルトの名無しさん
08/12/21 17:59:47
可能不可能からいったら出来る
楽かどうかの話だろ

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

675:デフォルトの名無しさん
08/12/21 18:26:52
Pythonistaも質が下がったな

676:デフォルトの名無しさん
08/12/21 18:36:48
ActivePythonの3.0版来てるじゃん

677:デフォルトの名無しさん
08/12/21 19:16:37
Active*って何なのか良くわからんので説明plz


678:デフォルトの名無しさん
08/12/21 19:24:47
ActivePython → 抱き合わせ商法

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

680:デフォルトの名無しさん
08/12/21 20:53:48
I love Python.

681:デフォルトの名無しさん
08/12/21 20:59:08
So do I.

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

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

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


684:デフォルトの名無しさん
08/12/21 22:56:35
URLリンク(www.python.jp) を見て書いた

import urllib
f = urllib.urlopen("URLリンク(www.google.co.jp)")
print(f.read())

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

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

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

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

686:デフォルトの名無しさん
08/12/21 23:09:48
まずは、
import urllib
print urllib.__file__

687:687
08/12/21 23:22:20
>>685
心当たりはないです

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


688:687 (=684)
08/12/21 23:23:58
>>686
print(urllib.__file__)
としたら
C:\python30\lib\urllib\__init__.py
が出力されました

689:デフォルトの名無しさん
08/12/21 23:30:32
>>688
# Python 3.0
import urllib.request
f = urllib.request.urlopen("URLリンク(www.google.co.jp)")
print(f.read())

690:デフォルトの名無しさん
08/12/22 00:34:09
>>684のドキュメントは2.5用

691:デフォルトの名無しさん
08/12/22 01:48:50
Are you happy?

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

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

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

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

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

695:デフォルトの名無しさん
08/12/22 18:19:07
レンタルサーバのPythonがVer2.5.1でした><
レンタルサーバのPythonがVer2.5.1でした><
レンタルサーバのPythonがVer2.5.1でした><


696:デフォルトの名無しさん
08/12/22 18:20:19
犬臭い

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


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

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

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

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

702:デフォルトの名無しさん
08/12/23 02:25:23
2.6.xを使いたいということかもしれん

703:デフォルトの名無しさん
08/12/23 02:51:51
globalsってなに?
global"s"って何よ
typoってこいつのせいで2日潰した

704:デフォルトの名無しさん
08/12/23 03:30:22
grobalと被っちゃまずいだろ

705:デフォルトの名無しさん
08/12/23 12:37:57
Python 2.5.3 and 2.4.6 released

706:デフォルトの名無しさん
08/12/23 15:56:12
Python3系の本が何冊か準備中みたいですね。


707:デフォルトの名無しさん
08/12/23 17:13:57
和書は糞だから放置。

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

709:デフォルトの名無しさん
08/12/23 19:22:06
>>707
洋書ですよ


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

711:デフォルトの名無しさん
08/12/23 19:58:03
707は和書の著者


712:デフォルトの名無しさん
08/12/23 21:01:57
和っ書ぃ

713:デフォルトの名無しさん
08/12/23 21:06:20
洋ぃ書っと

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

715:デフォルトの名無しさん
08/12/23 22:44:55
707は売れない和書の著者。

716:デフォルトの名無しさん
08/12/23 22:46:30
レッテル貼つまらんぞ偏屈者共

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

718:デフォルトの名無しさん
08/12/23 23:02:45
rubyやれよ糞ども

719:デフォルトの名無しさん
08/12/23 23:04:17
またruby厨の荒らしですか?

720:デフォルトの名無しさん
08/12/23 23:10:34
python 3000 の本というからには
3000円ポッキリで出そうぜ

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


722:デフォルトの名無しさん
08/12/23 23:25:26
716は売れないクソ和書の著者。

723:デフォルトの名無しさん
08/12/23 23:32:48
>>721
2.6.xやって、3.xを予習くらいでいいんじゃない

724:デフォルトの名無しさん
08/12/23 23:36:19
2.6に対応しているフレームワークって多いの?

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

726:161
08/12/23 23:41:10
呼びました?

727:デフォルトの名無しさん
08/12/23 23:41:27
>>723
ありがとん

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

728:デフォルトの名無しさん
08/12/23 23:43:16
2.6.xを進める723はHello Python止まりの引きこもり。

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

730:デフォルトの名無しさん
08/12/24 00:36:34
>>729
そうなのか。公式のドキュメントがいいってのはいいね

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

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

732:デフォルトの名無しさん
08/12/24 01:11:52
いま>>731がしれっとひどいこと言った

733:デフォルトの名無しさん
08/12/24 01:12:12
URL挙げとくか。PDFもあります。
URLリンク(www.python.jp)

734:デフォルトの名無しさん
08/12/24 01:12:27
胸が小さい

735:デフォルトの名無しさん
08/12/24 01:14:01
Pythonでローパケットいじりたい場合
Twistedしかない?

736:デフォルトの名無しさん
08/12/24 01:21:54
>>735
raw socketをそのまんま使う

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

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

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

詳解TCP/IP〈Vol.1〉プロトコル
URLリンク(www.amazon.co.jp)

739:デフォルトの名無しさん
08/12/24 02:41:25
Python 2.5.4 released.

2.5.3 短命杉w

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

2.5.3 短命杉w

741:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/24 06:23:03
しかしpythonもデカい言語になったもんだなー。
Library reference読んで再認識したよ。


744:デフォルトの名無しさん
08/12/24 10:07:22
>>742
>そもそもこういうことをpythonに求めてはいけないとか?

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

745:デフォルトの名無しさん
08/12/24 11:04:00
この記事、ひどくね?

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

746:デフォルトの名無しさん
08/12/24 11:17:14
Ruby厨のデマだよ。
よい子は惑わされちゃダメだよ。

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

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

748:デフォルトの名無しさん
08/12/24 11:29:21
何をひどいと言ってるのかは分からんな

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

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

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

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

751:デフォルトの名無しさん
08/12/24 11:44:51
何でもありが一番だよ。

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

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

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

753:デフォルトの名無しさん
08/12/24 16:06:43
Dやろうっと。

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

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

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

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

756:デフォルトの名無しさん
08/12/24 16:55:31
クイックリファレンスの次がソースw

757:デフォルトの名無しさん
08/12/24 17:01:20
>>755
>プリントアウトを代行しましたみたいな本

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

758:デフォルトの名無しさん
08/12/24 17:40:18
pythonで計算時間の計測ってどうするの?

759:デフォルトの名無しさん
08/12/24 17:45:17
URLリンク(www.python.jp)

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

761:デフォルトの名無しさん
08/12/25 00:03:28
raw socketで簡単じゃんw

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

timeとか?w

763:デフォルトの名無しさん
08/12/25 00:07:28
>>761
Cでならできるけど
Pythonでのサンプルを見たい

764:デフォルトの名無しさん
08/12/25 00:08:17
Cでできるなら
Pythonでのサンプルなんていらないだろ

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

766:デフォルトの名無しさん
08/12/25 00:09:36
>>764
スクリプト言語でやることが必須

767:デフォルトの名無しさん
08/12/25 00:09:55
>>765
正直心の底からすまんかった

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

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

770:デフォルトの名無しさん
08/12/25 00:18:14
>>765
まずこれ。URLリンク(www.python.jp)

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


771:デフォルトの名無しさん
08/12/25 00:22:45
>>758
チュートリアルぐらい読め

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

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

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

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

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

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

776:デフォルトの名無しさん
08/12/25 01:08:10
>>775
> SocketServer.pyとかはそんな感じなのかな?

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


777:773
08/12/25 01:24:36
>>774
いや、生パケットとか生ソケットって言葉から、 SOCK_RAW 連想できんかった。すまん。

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

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

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

779:デフォルトの名無しさん
08/12/25 08:45:14
ARPは扱えますか?

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

781:デフォルトの名無しさん
08/12/25 10:06:12
は?

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


783:デフォルトの名無しさん
08/12/25 18:40:58
>>782
できる。
URLリンク(mail.python.org)
URLリンク(sourceforge.net)


784:デフォルトの名無しさん
08/12/25 19:45:38
>>783
ありがとうございます!!

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


786:デフォルトの名無しさん
08/12/26 03:54:29
だれが関数型だなんていったんだ

787:デフォルトの名無しさん
08/12/26 04:02:16
>>785
> pythonが関数型言語というわりに

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

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

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

788:デフォルトの名無しさん
08/12/26 06:12:36
でも Python は使いやすい

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

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

791:デフォルトの名無しさん
08/12/26 15:09:33
URLリンク(www.python.jp)

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:デフォルトの名無しさん
08/12/26 15:16:26
py2exeでdllは作れないの?

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

794:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/26 15:33:10
>>793
Pythonは関数型言語じゃありませんよということを説明しただけだよ
Pythonに関数型言語になって欲しいとは一言も言ってない

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

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



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5093日前に更新/206 KB
担当:undef