1 :
ミスターパイソン :
2007/02/16(金) 17:05:01
2 :
デフォルトの名無しさん :2007/02/16(金) 17:20:47
おっpy
門弟
_ ∩ ( ゚∀゚)彡 おつぱい!おつぱい! ⊂彡
おっぱい
職場でVBSでツール組む人がいて、それを自分がPythonに(勝手に)移植してる。 実際comtypes入れるとVBSでできる作業はほぼ全てPythonでできるんだよね。 ExcelVBAに移植する時に困ると思って、PythonでExcelVBAに直に書ける仕掛けも作った。 そいつが最初からPythonで書いてくれないかと思うこの頃。
matlabのインターフェイスがいくつかありますが どれがおすすめなのでしょうか?
おっ、Pythonスレ。
>>6 > PythonでExcelVBAに直に書ける仕掛け
これもうちょっと詳しく聞かせて
pythonでxul使ってgui作れるようにはならないの?
12 :
デフォルトの名無しさん :2007/02/17(土) 21:22:31
13 :
デフォルトの名無しさん :2007/02/17(土) 21:56:15
14 :
6 :2007/02/17(土) 22:55:48
>>9 ,10
非常に泥臭い作業だけど、単純にPythonに実行させるDLLをExcel側で読み込んで
Excelのオブジェクトとかも一緒に渡すだけ。
ExcelVBAに直に書くにはPythonソースそのものを文字列としてVBAに取り込む必要がある。
普通はPythonソースは別に書いてVBAではファイルを取り込むだけでやっている。
実はもうちょっと高度な事もやっていて、ExcelのイベントハンドラをExcelVBAを
介さずにPythonで受け取ったりもやってる。そのインタフェースはC++とCOMで組んでるから
いつもVBAソースに「おまじない」と称してDLL関連の読み込みと起動をしている。
COM系の知識あれば誰でもできるし特に難しい事もやってないけど、面倒だから誰も
やってない様な代物。
python WSHじゃないのか
16 :
6 :2007/02/17(土) 23:16:40
ちなみに、ExcelVBAでできるという事は、EnvDTEでもできるという事。 自分は組み込み屋だが、Win動作するシミュレータ使うんでVC++系は必須になる。 クローンコード解析処理をPLYで組んであるんで、それと連携させて関数分割の 指標を出したりしてる。 上に書いたのは、別にEnvDTE経由でなくてもいいんだけど、インクルードフォルダパス とかわざわざ設定するの面倒だから、COM経由で全部渡しちゃう。 Pythonは他言語・環境への親和性が高すぎて手放せない。特にMS COMとの連携強力すぎだろ。
17 :
6 :2007/02/17(土) 23:21:32
>>15 イメージ的にはそんな感じ。
でもPythonでCreateObjectするのは嫌、という視点で作ったモンで。
19 :
デフォルトの名無しさん :2007/02/18(日) 01:54:54
委譲(デリゲート)での__getattribute__の使い方が分りません。 従来の__getattr__() は、解決できない属性名の時だけ呼ばれるが __getattribute__() は、属性値の取得が必要になったときに、常に呼ばれるらしいのですが。 まず、__getattr__でのサンプル。 class wrapper(object): def __init__(self, obj): self.__wrapped = obj # obj を組み込む。 def __getattr__(self, attrname): # attrnameは、知らない名前の属性が来たら呼び出される return getattr(self.__wrapped, attrname) # 組み込まれたオブジェクトにgetattr 関数で処理を委託。 l = wrapper([]) # リストを引数にwrapper クラスを呼び出すと、リストにできる操作なら全てできる (実行すると、正しく動作します) >>> l.append(333) >>> l.pop(0) 333
20 :
デフォルトの名無しさん :2007/02/18(日) 01:56:08
ここで、__getattr__を__getattribute__に置き換えます。 class wrapper(object): def __init__(self, obj): self.__wrapped = obj # obj を組み込む。 def __getattribute__(self, attrname): return getattr(self.__wrapped, attrname) l = wrapper([]) (試しに、実行してみます) >>> l.append(333) (ここで暴走) なぜ暴走するのかよく分りません。 __getattribute__はどう使うのが正しいのでしょうか?
>>20 self.__getattribute__ の中で self._wrapped を取得しようとすると
さらに self.__getattribute__(self, '_wrapped') を呼び出して無限再帰ループになるみたい。
解決方法は・・・たとえば、_wrapped をインスタンス属性としてもつんじゃなくて
クラス属性にインスタンスをキーにした辞書をもつようにするとかでどう?
class wrapper(object):
_wrapped = {}
def __init__(self, obj):
wrapper._wrapped[hash(self)] = obj
def __del__(self):
del wrapper._wrapped[hash(self)]
def __getattribute__(self, attrname):
return getattr(wrapper._wrapped[hash(self)], attrname)
__getattr__.
__getattr__ を __getattribute__ に置き換えるって話じゃないのか
if attrname not in ['_wrapped', etc, etc]: return getattr(self._wrapped, attrname) else: super(wrapper, self).__getattribute(attrname)
>>21 でおkかと思ったけど、len() ができないなぁ。
>>> l = wrapper([])
>>> len(l)
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
len(l)
TypeError: object of type 'wrapper' has no len()
TypeError なあたり、決まった型にしか呼べないのかも。
len(x) って内部で x.__len__ を返してるのかと思ってたけど、ちょっと違うのかな。
>>> l.append(3)
>>> l.__len__()
1
26 :
デフォルトの名無しさん :2007/02/18(日) 03:16:09
あまりにも初歩すぎる質問で申し訳ないのですが、 pythonをC:\Python25のディレクトリにインストールして、 環境変数にパスを通しました。 プロンプトからはpythonは起動し、インタラクティブモードでは普通に動きます。 しかし、保存したpyファイルを、スクリプトモードで実行しようとすると、 ファイルが見つからないとエラーが出てしまい実行できません、 パスを直接指定すれば実行できるのですが、 通常はどこにpyファイルを置けばよろしいのでしょうか? IDLEでも、同様に実行できなくて(pyファイルをどこに置いてよいかわからず)困っています。 申し訳ありませんが、どなたかお力をお貸し願えませんでしょうか、、?
27 :
デフォルトの名無しさん :2007/02/18(日) 04:03:11
>>25 アクセサでフィールド値を取得してから、len しないとダメじゃない?
__getattribute__ じゃなく、__getattr__ の例で悪いけど、
この場合、同じと思う。
class wrapper(object):
def __init__(self, obj):
self.__wrapped = obj
def __getattr__(self, attrname):
return getattr(self.__wrapped, attrname)
def get_wrapped(self): # フィールド値取得メソッドを設定
return self.__wrapped
l = wrapper([])
l.append(333)
(ここで len を実行。正常に動作する)
>>> len(l.get_wrapped())
1
>>>
28 :
デフォルトの名無しさん :2007/02/18(日) 04:37:24
>>25 __getattribute__ でフックされるのは、dir(l) で出てくるものだけだと思う。
したがって、lenは使えないが__len__は使えるということになる。
>>> dir(l)
['__add__', '__class__', '__contains__', '__delattr__',
'__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__',
'__getattribute__', '__getitem__', '__getslice__', '__gt__',
'__hash__', '__iadd__', '__imul__', '__init__', '__iter__',
'__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__setslice__',
'__str__', 'append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
>>>
>>26 何が問題なのかイマイチよく分からない。
エラーメッセージをコピペ汁。
>>28 なるほど。__len__ が特別だったのか。確かに __init__ とかフックされたら困るよなぁ。
__len__ を定義して、ラップしているオブジェクトの len() を返すようにしたら、ちゃんと動きますた。
質問主じゃないけど勉強になった。この先 __getattribute__ を使うかどうかはともかくとしてw
33 :
デフォルトの名無しさん :2007/02/18(日) 11:16:44
携帯買い換えたいんだけど、Nokia Series 60 以外でpythonの動く携帯ってあるのかな? 日本で使えるやつで。
Python for Mobile Devices
ttp://www.awaretek.com/pymo.html とか見ると、Windows Mobile用はあっても、Windows Mobile phone editon 用はないから、htcz や X01HT じゃ使えなそうだし。誰か教えて下さい。
34 :
デフォルトの名無しさん :2007/02/18(日) 12:33:37
>32さん ありがとうざいます!カレントを移動したらできました、、 環境変数でパスを通していたらそれで大丈夫だと思っていました、、 本当に助かりました! ご指摘の通り、「実践Python」中ですw プロンプトからの実行は解決したのですが、 34ページのIDLEからpyファイルを実行するというのがうまくいかない感じです、 (NameError: name 'hi' is not defined と返ってきます、) pyファイルの置き場所がまずいのでしょうか、、?それとも根本的な間違いがあるのでしょうか、、 IDLE上から、はファイル名ではなく関数名を呼ぶのですよね、、うーん >29さん 32さんの助言で解決できました、 レスを頂きどうもありがとうございます。 私の勉強不足で完全には解決していない部分もありますので、 もしよろしければお力をお貸し下さい。 みなさま、ありがとうございました。
35 :
デフォルトの名無しさん :2007/02/18(日) 12:43:37
>>19 >>20 で __getattribute__ の使い方について質問した者です。
なぜ、__getattr__ ではなく__getattribute__ を使いたいと思ったかというと、
「スーパークラスの配列で,複数の異なるサブクラスのインスタンスを一元管理する」
というテクニックを使えるようにしておきたいと思ったからです。
ちなみに、従来からあるメソッド __getattr__() は、解決できない属性名の時だけ呼ばれるが
__getattribute__() は、属性値の取得が必要になったときに、常に呼ばれる、とのこと。
「スーパークラスの配列で,複数の異なるサブクラスのインスタンスを一元管理する」に
ついては、javaの解説ページですが、下のところにあります。
http://itpro.nikkeibp.co.jp/members/NSW/ITBASIC/20050620/162997/ (略)部長さん,課長さん,担当さんをそれぞれ表すBuchoクラス,Kachoクラス,Tantoクラスを
定義し,それぞれのクラスのメンバーとして給与の金額を返すgetKyuyoという関数があるとします。
複数のクラスに同じ名前の関数があるのですから,それらを汎化して社員を表すShainクラスを定義
しましょう。(略)
サブクラスであるBuchoクラス,Kachoクラス,Tantoクラスは,0を返すgetKyuyoを継承することに
なります。こんな関数を継承しても役に立ちませんね。スーパークラスから継承した関数の機能が
サブクラスに合わない場合は,サブクラスで同名のメソッドを記述すれば上書き変更できます。
これを「オーバーライド(override)」と呼びます。部長さんの給与は70万円,課長さんの給与は
50万円,担当さんの給与は30万円としましょう
(略)汎化を行わなかったら「役職ごとに給与を求めて集計する」という手順になるでしょう。
汎化を行ったことで「社員の給与を一気に集計する」という手順が実現できるのです。(終)
まあ、それに必要かなと思ったんですが、単にshain = [] に shain.append(shainObject)で集めて、
for で 要素に次々と .getKyuyo して、それを加算していくだけでいいような気もします。
本当に __getattribute__ が使えないと困るのかな? 頭冷やして考えないと分からないw
とにかく、いろいろ参考になりました。みなさん、どうもありがとう。
>>33 Iron PythonはWMで動くの?ってやり取りをどっかで見かけた。
結論は確か無理って話だったと思う。
docomoのM1000で Python for UIQが動くかも。
M1000ユーザーじゃないから実際のところは知らない。
でも、PyS60がAPIとかドキュメントとか一番充実してると思う。
>>35 そのプログラムは単にオブジェクト指向のポリモーフィズム(多様性)を利用しているだけなので
__getattribute__ は必要ありません。そのプログラムを Python で書くなら、こんな感じになります。
class Shain:
def getKyuyo(self): return 0
class Bucho(Shain):
def getKyuyo(self): return 700000
class Kacho(Shain):
def getKyuyo(self): return 500000
class Tanto(Shain):
def getKyuyo(self): return 300000
s = [ Bucho(), Kacho(), Kacho(), Tanto(), Tanto(), Tanto() ]
goukei = 0
for p in s: goukei += p.getKyuyo()
print goukei
ちなみに、Python では Bucho Kacho Tanto を Shain のサブクラスにしなくても動きます。
これは Java の「変数の型」という概念が Python にはないからです。
Python ではオブジェクトに対してメソッドを呼び出した場合、その名前を持つメソッドが
動的に(実行時に)決定されるので、スーパークラスで抽象化する必要はありません。(ダックタイピング)
(ただし、スーパークラスの振る舞いを引き継ぐ為の継承は有効な手段です)
呼び出されるメソッドが静的に(コンパイル時に)決定される Java や C++ などとの大きな違いですね。
38 :
デフォルトの名無しさん :2007/02/18(日) 14:07:47
>>36 >>Iron PythonはWMで動くの?ってやり取りをどっかで見かけた。
>>結論は確か無理って話だったと思う。
確かにどっかで見かけた。
>>でも、PyS60がAPIとかドキュメントとか一番充実してると思う。
そうなのか・・・メインが不調なので、702NKを再登録するか、
htcz or X01HTにするかで考えてたけど、残念です。
39 :
35 :2007/02/18(日) 14:26:56
class Strategy1(object): def __init__(self): pass def strategyMethod(self): print u"これは戦略1です" # 処理 class Strategy2(object): def __init__(self): pass def strategyMethod(self): print u"これは戦略2です" # 同様の事に対する別の処理方法 class acceptStrategy(object): def __init__(self): self.__strategy = None def setStrategy(self, strategyObject): self.__strategy = strategyObject # オブジェクトの受け入れ def __getattr__(self, attrname): return getattr(self.__strategy, attrname)
(実行) >>> s1 = Strategy1() >>> s2 = Strategy2() >>> >>> aStrategy = acceptStrategy() >>> >>> aStrategy.setStrategy(s1) >>> aStrategy.strategyMethod() これは戦略1です >>> >>> aStrategy.setStrategy(s2) >>> aStrategy.strategyMethod() これは戦略2です
(よく見たら、冒頭にある一行が抜けていた org というわけで、冒頭の一行を追加) 見よう見まねで strategy パターンを作ってみたが、こんなんでおk?
auther って・・・・。
>>34 『実践Python』 34ページ見てみました。説明端折りすぎで呆れました・・・。
図2-3-1-3のように動作させるには、*エディタウインドウのメニューから*
Run > Run Module としてモジュール(ここでは hi.py )を読み込みます。
すると IDLE のウインドウに
>>> ================================ RESTART ================================
と表示されるので、あとは
>>> hi('Hello')
Hello
のように実行できます。
とりあえず、いきなり IDLE を使うのはお勧めできません。
最初のうちはエディタとコマンドプロンプトを使うようにしたほうがいいと思いますよ。
46 :
デフォルトの名無しさん :2007/02/18(日) 21:46:47
47 :
デフォルトの名無しさん :2007/02/19(月) 00:30:34
> 45さん どうもありがとうございます! おかげさまでうまく行きました。 これで、学習を進められます(^-^) 私のような初心者の質問に優しく答えて下さって本当にありがとうございます。 失礼致しましたー。
>>46 hTcZで普通に動いている。
Phone Editionは、電話機能が追加になっただけで、
PC Editionと基本的には同じ。
eclipse Pydev でpythonのWSHを編集 実行でバックする方法はないのでしょうか?
50 :
デフォルトの名無しさん :2007/02/19(月) 12:26:06
>>48 >>hTcZで普通に動いている。
>>PC Editionと基本的には同じ。
これを見てマイクロソフトのサイトで確認したら、その通り
だった。早速買いに行きます。48さんありがとう。
よく考えたら、stateパターンとStrategyパターンは、 視点が違うだけで同じものじゃないか? 以下、stateパターン。 import sys import exceptions class _StateTemplate(object): # Abstract なつもり def _showMessage(self): raise exceptions.NotImplementedError, '%s' %`self.__class__` class myState1(_StateTemplate): def __init__(self): pass def _showMessage(self): print u"こんにちは。" # ある状態(例えば昼)に対応した処理 class myState2(_StateTemplate): def __init__(self): pass def _showMessage(self): print u"今晩は。" # ある状態(例えば夜)に対応した処理 class acceptState(object): def __init__(self): self.__currentState = None def setState(self, stateObject): self.__currentState = stateObject # オブジェクトの受け入れ def __getattr__(self, attrname): return getattr(self.__currentState, attrname)
(実行) >>> state1 = myState1() >>> state2 = myState2() >>> >>> aState = acceptState() >>> >>> aState.setState(state1) >>> aState._showMessage() こんにちは。 >>> aState.setState(state2) >>> aState._showMessage() 今晩は。
これはstrategyパターン。stateパターンとは視点こそ違うが 同じものだ、と思う。それでいいのか?(いいと思うが) import sys import exceptions class _strategyTemplate(object): # Abstract なつもり def _strategyMethod(self): raise exceptions.NotImplementedError, '%s' %`self.__class__` class Strategy1(_strategyTemplate): def __init__(self): pass def _strategyMethod(self): print u"これは戦略1です" # 処理 class Strategy2(_strategyTemplate): def __init__(self): pass def _strategyMethod(self): print u"これは戦略2です" # 状況が変わったとき、同様の事を実現する別の処理 class acceptStrategy(object): def __init__(self): self.__strategy = None def setStrategy(self, strategyObject): self.__strategy = strategyObject # オブジェクトの受け入れ def __getattr__(self, attrname): return getattr(self.__strategy, attrname)
(実行) >>> s1 = Strategy1() >>> s2 = Strategy2() >>> >>> aStrategy = acceptStrategy() >>> >>> aStrategy.setStrategy(s1) >>> aStrategy._strategyMethod() これは戦略1です >>> aStrategy.setStrategy(s2) >>> aStrategy._strategyMethod() これは戦略2です
>>51 意味はわからんけど、他のモジュールでも見た事ある。
当時は、2.5リリース前なのに、2.5用があった。
試しにインストールしようとしたら、
「Python2.5がインストールされてません」
ってエラーがでて何もできなかった。
main trunk の追っかけやってる人用じゃないの?
そりゃ、俺たちが2.5を使ってるってことは、どっかで偉い人は2.6を作ってるわけだよ。
60 :
デフォルトの名無しさん :2007/02/19(月) 18:55:50
俺は2.7を使っていますが何か?
ツマンネ
俺は断然Zope3
>>54 > これはstrategyパターン。stateパターンとは視点こそ違うが
> 同じものだ、と思う。それでいいのか?(いいと思うが)
その通り。クラス図上や構造上では同じ。
目的によって呼び方が変わるんです。デザパタはまず目的ありきだから。
ま た 燃 料 投 下 か
>>49 誰もかまってあげてないので、
「実行でバックする」って何だ?
>>66 「pythonのWSHを編集・実行・デバッグ」ってことじゃないのか。
「pythonのWSH」が依然として意味不明だが。
pythonのおかげで、単純作業ばかりを命令してくる ハラスメント上司から開放されました。 パワーポイントに画像100枚きれいに並べて貼れとか そんなばっかり しかし、最近、夜中に自動処理させてるはずのパソコンが、 次の朝出勤すると電源が落ちてるようになりました。 1時間おきに、途中結果をsaveするようにできる 簡単な枠組みはないのでしょうか?
timeをつかう
>>67 wsfにでも書いてるんじゃね?
ActivePythonで出来なかったっけ。
同じエンコードのページ(html)でうまくユニコードに変換できるのとできないのがある・・・ まあできないのはルータの設定画面なんだが、なんでだろ なにがillegal multibyte sequenceだ!
>>64 だよね。
視点が違うだけだけど、いや、そうじゃなくて、視点の違いこそ大事な
ことなんだと思うようになってきた。
どういうパターンを使うべきか、なんて考えるとき、視点こそが
大事だもんね。
Visitor パターンも構造がよく似てる。ちょっとだけ違うかな。どうだろ。
ところで、
>>52 のstateパターンと
>>54 Strategyパターンで、
冒頭の import sys は不要だった。(消し忘れ)失礼。
75 :
デフォルトの名無しさん :2007/02/20(火) 10:58:11
tim.sleep(-1)って無限ループか何か?何が起こってるの?エラーにはならないんだけど。
↑のちのデザパタ議論のひきがねであった
アチャー(ノ∀`)
所詮デザパタ
pyってcの構造体に相当するものがないってことでいいのでしょうか?
>>79 構造体より多機能なクラスがあるじゃないか!
>>75 time.sleep() に -1 を渡すとどうなるかなんてマニュアルには書いてないから、
何が起こっていても不思議じゃないよ。というか渡すべきじゃない。
それでも実際に何が起こっているのか知りたいのなら、
Python ソースコードの timemodule.c を眺めてみるといいかも。
Pythonの回りにもイタいヤツが増えたな。 裾野が広がった弊害か。
>>74 strategyとstateの本質的違いを挙げてほしい。
いろいろ考えたんだけど、
>>52-55 で問題ないのではないか、
と思っている。
(冒頭の消し忘れの import sys はご愛嬌ということで)
それどころか、Visitor パターンもJavaでは違うと思うんだけど、
Pythonで書く限りは構造としては同じにならざるを得ないんじゃないかなぁ。
(ただいま、いろいろ検討中)
あと、DecoratorパターンとProxyパターンも両者は視点以外は同一のもの
じゃないかな。
何のためのデザパタだよ。 定義が与えられているんだから、違いだの視点だのを云々する必要は全然ないだろ。 「このコードは○○パターンか?」と聞くのは「この単語は○○という意味か?」と聞くのに等しい。 後者なら「辞書引け」で終わるところだ。RTFM
>>84 分かってない人は、出てこなくていいって。
視点が違うというのは、どこに着目すれば、適用できるパターンが
おのずと見えてくるか、という話。
結果のプログラムの構造の話ではなくて、いまこの問題では
なにを問われているのかを見分けるのは容易ではない。
与えられた状況に注目するか、
こちらが用意している対応策に注視するかは、
できたプログラムの構造が同じでも、
違うだろ。
それと、JaveとPythonでは機能が違う。
Javaで書けば違うのは分るが、Pythonではそうはならない
ケースもある。
で、お前は DecoratorパターンとProxyパターン の本質的違いはなんだと思うわけ?
視点以外の違いを挙げてみろ。
>>84 辞書を引けとの言葉に従ってWikipediaの英語版でStateパターンを検索したら、
ノートで
>>74 と
>>83 と同じように状態オブジェクトの中で遷移させるのが
Stateパターンだとかそうじゃないとかくだらない議論が繰り広げられてました><
真昼間から長文レスばっかりだな。 Pythonプログラマは火曜日が定休日か?
つーか、デコレーターもプロクシも限られた時間でどうしても 実装しないといけない場合のテクニックでしかないでしょ。 練り上げたコードが最終的にデコレータパターンとかありえないし。 だから、そういう下らないものの本質が何だとか考えても無意味。
確かに、練り上げたコードはこれといったパターンに収まらないだろうな
日本語だったらStateもStrategyもDecoratorもProxyもかわんないんじゃないの 字義的に変でラベル変えただけだから日本人には関係ない話だなこの辺 >どういうパターンを使うべきか つか、デザパタってコード書く時にそんなに意識するかな 読む時に脳内コードスタック圧縮する以外の使いどころなくないか?
>>88 ともいえない。
例えば、ブリッジパターンだって、デコレータの応用とも考えられなくもないし。
ま、抽象論ばかり言ってても仕方ないが。
それにしても手術前からステータスだけは上がっていくのか・・・
93 :
92 :2007/02/20(火) 17:00:47
誤爆です、、、申し訳ない
>>88 >練り上げたコードが最終的にデコレータパターンとかありえないし。
はあ?
java.ioパッケージとかはdecoratorパターンの典型的な例じゃねーか。
Webアプリフレームワークでもフィルタ系はdecoratorパターン使うだろ。
自分がPythonで使ったことがないからといって勝手な結論出すなよ。
>>85 >で、お前は DecoratorパターンとProxyパターン の本質的違いはなんだと思うわけ?
>視点以外の違いを挙げてみろ。
どちらも結局はcomposition+delegationなので、目的は違うけど手段は一緒。
本質的に違いはなく、視点が違うだけというのは同意。
ただそれを言い出すとデザインパターンの半分は本質的に同じなので、権威に弱いこの業界では禁句だろう。
いままでさんざんGoFを褒めていた人の立場がなくなる。
>>87 >真昼間から長文レスばっかりだな。
>Pythonプログラマは火曜日が定休日か?
ここのところのデザパタの話はね、
Java使いとか.Net使いみたいな、
典型的なITドカタがやってるんだよ.
マニュアル化されてないと安心できない、ゆとり教育世代に愛されるデザパタですよ
なんでもマニュアル化はゆとりのちょい上なわけだが
ゆとり教育世代でなくても自主的にゆとり教育みたいな人も居るわけだから、 ゆとり教育世代にだって賢い人は居るのだろうね。
ゆとり世代はマニュアルがあっても仕事できなくなると噂されてたが 実際どうなったのだろう
ゆとりとかマニュアルとか心配する前に、 Pythonスレで全然関係ない話題を続ける、 空気の読めない自分のことを心配した方がいいよ.
それは以前から心配してるんだが、どうにもならんのよ。
>>102 ここはデザパタスレになったんだよ?
流れを読めない人こそ自分の心配した方がいいと思うけどなぁーーー
import urllib
fo = urllib.urlopen("
http://www.yahoo.co.jp/ ")
#fo = urllib.urlopen("
http://localhost/ ") # これなら動く
AcitvePython2.2と2.3を入れたら本家python2.4で動いてた
urllibを使ったコードがのき並、全て動かなくなりますた。
IOError: [Errno socket error] (10061, 'Connection refused')
だそうです。ググっても わかりません ><
108 :
107 :2007/02/21(水) 18:53:28
配列でdata2 = ["abcde","12345","あいうえお"]だった時、 data2に配列が何個あるか取得するにはどうしたらいいですか? data2の配列の場合、3の値を取得する方法
len(data2)
>>107 そりゃバージョンダウンすりゃそんなもんだろ
なんでActivePython 2.4.xを使わない?
>>79 Cの構造体を読み込みたいなら struct.unpack() ですよ。
いやわかってるって。これが欲しいんじゃないんだろ?
113 :
107 :2007/02/21(水) 21:14:00
>>111 使ってみたいと思ったToolが2.2でしか動かないんだ…
環境変数を直して本家2.4のほうにlinkするようにして
2.4でコンパイルしてるんだけど、動かねー。インストーラ
なんて使った記憶ないし…何がまずいんだろう…
>>113 コンパイルしようとしてるのは、2.2でしか動かないツールなのか?
urllibを使ったプログラムの方なのか?
115 :
107 :2007/02/21(水) 21:49:31
コンパイルしようとしてるのは>107の urllib を使ったプログラムです。 すみません、言葉が足りてませんでした…orz
それ,Yahoo!がurllib.urlopenのデフォルトのUserAgentをブロックしてるのかも.
たしか,"Python2.2/urllib"みたいなUAだったと思う.
なので,これを書き換えてやれば上手くいくかも
外してたらすまん
req = urllib.Request("
http://www.yahoo.co.jp/ ")
req.add_header("User-Agent", "(何か適当なUserAgentをあらわす文字列)")
fo = urllib.urlopen(req)
こんな感じでどうよ?
117 :
107 :2007/02/21(水) 22:35:46
>>116 ごめん、いま動かしてみたら、>107ので動いたw
http://yanbe.org/python/proxy/ このページのクローラ側のプログラムを組もうと思って
プロキシとかいじってたのがまずかったのかもしれない…orz
再起動してプロクシ鯖のプロセスがきちんと落ちて、urllibが
connectできるようになったと。…もう少しちゃんと調べてから
聞こうよじぶん…orz とりあえず動くようになったしthxです。
クローラ側のプログラムって書くの難しいのかな?
Webrickとか情報が多くて正直うらやますい…
( ゚Д゚)y─┛~~
119 :
107 :2007/02/21(水) 22:41:01
>再起動して -> OS自体を何回か再起動して たびたび訂正スマソ。
120 :
107 :2007/02/21(水) 22:46:33
>>118 …orz たしかに「あと出しジャンケン」みたいに
なっちゃってるけどさ。そんな呆れちゃ嫌。(なにその傲慢)
121 :
107 :2007/02/21(水) 22:48:52
(なにその傲慢) -> (傲慢) なんか誤解を招きそうな表現になってるし…orz
とりあえず風呂にでも入っておちつくんだ
いや明らかに煽ってるぞ
傲慢は自分に向って言ってるんでしょ?
125 :
107 :2007/02/21(水) 23:06:59
別に煽ってなんかねぇーですよ。つーかいま動かしてみたら
import os, urllib
os.environ['http_proxy'] = '
http://localhost:8000 '
fo = urllib.urlopen("
http://www.yahoo.co.jp/ ")
data = fo.read(); print data
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [21/Feb/2007 22:56:03] "GET
http://www.yahoo.co.jp/ HTTP/1.0" 200
とか表示されてちゃんと動いてやがるしwww.
きょう一日のあの苦労は一体何だったんだろう…orz
もうね、あぼがどバナナと。もう寝ゆ
126 :
116 :2007/02/21(水) 23:16:01
>>117 うはww実は俺そこの管理人ですw
混乱させてしまったようでスミマセン.予想外のタイミングと場所で取り上げていただいて
内心驚いてます.
いまアップされてるやつの実装は,適当もいいところなので,近いうちに,手元にある
もう少しマシなバージョンに差し替える予定なので,今のところは勘弁してください.
ちゃんとしたPythonのProxy Serverの実装だったら以下のページにあるのを
参考にしたらいいと思います.
http://xhaus.com/alan/python/proxies.html 上のページにある中では,Tiny HTTP Proxy とか,行数も少なめで見通しが良くて
参考にするにはいいんじゃないかと.
(特定のレイアウトのページでなく,汎用の)クローラで参考するんだったら
この辺ですかね.
http://takanory.net/takalog/540
127 :
デフォルトの名無しさん :2007/02/21(水) 23:48:49
ソケット使ったチャット作ってるんですけど、acceptの返り値について質問。 サーバとクライアント、両方同じポートにバインドしてます。でもacceptの返り 値のポート番号がbindした番号と違うんです。これは別に問題ないんですか?
なんかソケットプログラミングの入門書みたいなの1冊読め。話はそれからだ。
俺だったらXML-RPCで適当に作る
130 :
デフォルトの名無しさん :2007/02/22(木) 00:50:40
しつもん イテレータって、iter(x)で作ったオブジェクトのことだと思うんだけど、 同じオブジェクトから作った複数のイテレータインスタンスがあった場合の 動作ってどこかで規定されてる? 具体的には、オブジェクトxがあったときに i1=iter(x) i2=iter(x) print i1.next() print i2.next() とかした時の挙動が、ファイルオブジェクトとストリングのリストで 違ってしまって気持ち悪いのを何とかしたい、ということなんですが。 seek位置を覚えてちゃんとlock.acquire→seek→readline→release みたいなことすれば揃うのかな(する意味あるかはさておき)。
javaのjarに相当するものはありますか? 一つのファイルに全ファイル突込んで、そこからプログラムをstartさせたいのですが。
>>131 PythonEggsってのがあるよ。といいつつ、俺は使ったことないから使い方聞かれても困るけど。
>132 arigato.
>>130 リファレンスに書いてあるけど、ファイルオブジェクトはイテレータ
iter()するとファイルオブジェクト自身が返る
複数のイテレータが必要なら、再度open()する
>>> fo1 = open(r'hoge.txt')
>>> fo2 = open(r'hoge.txt')
>>> it1 = iter(fo1)
>>> it2 = iter(fo1)
>>> print fo1 == it1, fo1 == it2, it1 == it2, fo1 == fo2
True True True False
>>130 イテレータとゆーのは一般に __iter__ と next の2つのメソッドを兼ね備えているオブジェクトのことかと。
リスト自身はイテレータではない(__iter__ メソッドはあるが next メソッドがない)。
ストリングのリストの方をファイルオブジェクトの挙動に合わせるなら StringIO モジュールが使える。
136 :
107 :2007/02/22(木) 08:50:10
>>126 ( ゚д゚)ポカーン。なんか中の人 来てたーw
色々と、参考になるページを紹介して頂けたみたいで
本当にありがとうございます (感謝) 調べてみると
compact な proxy serverの実装とか色々あるんですね。。。
じぶんもちゃんと調査のほう、もう一度してみようと思います。
本当にthxです><
pygwtってどうよ。ググっても国内だと三件しかヒットしないんだが…
出来てないやん
139 :
107 :2007/02/22(木) 21:54:30
>>138 なんとなくswingっぽくて素朴なかんじが俺は好きなんだけど
pythonからjavascriptに変換するのって他にもあるのかな?
ふつうにjavascriptを書けば? javascriptのライブラリとかも高機能なのが次々現れてる現状で、 そういうツールを(すごいゆっくりな速度で)開発してること自体が疑問に思うw
.py以外のファイルを実行したり フォルダ開いたりってどうしたらできるのでしょうか?
>>141 import os
os.system(ファイル実行のコマンド)
ほッ
フォルダを開くってのはちょい違う気がしないでもないが、 気にしないでおくか…
Windowsなら import os os.system("start フォルダ名") で開いたりしないのかな。Macだとopen?
フォルダ開くだけなら: import os os.system("explorer c:\\")
148 :
デフォルトの名無しさん :2007/02/25(日) 10:11:26
149 :
デフォルトの名無しさん :2007/02/25(日) 18:05:34
python による Chain Of Responsibility
http://www.h3.dion.ne.jp/~ytakagi/ChainOfResponsibility.html (まだ説明もなにもないけど、のんびり説明も書いていくつもり。
ちなみに、結城浩氏の本の Chain Of Responsibility パターンの
サンプル・コードを、python で同じように動くようにしたもの)
Javaと同じく継承で作ってみたけれど、やってみるまで僕も気がつかなかったが、
Python の継承はJava より制限が厳しく、サブクラスでJavaのように
拡張できない。
(__init__ を拡張すると、親クラスのメンバーでなくなってしまうようだ)
だから、__init__ のフィールド項目を後で増やすとか出来なくて、
親クラスで最初に全部書いておく必要がある。
(これが出来ないと非常に困る。特にこの Chain Of Responsibility では)
これではあまりにやりにくいため、
継承ではなく、すべて委譲で作り直さないといけないなぁと
思った次第。少し休んで取り組みたい。
Charlie仕事少なッ!w 超専門職ってかんじか・・w
>>149 >だから、__init__ のフィールド項目を後で増やすとか出来なくて、
>親クラスで最初に全部書いておく必要がある。
Chain Of Responsibilityパターンがなんなのかは知らんが、
そういう場合は def __init__(self, *args, **kw) のようなカタチで引数を
取るのがPythonの定石なんじゃないの?
>>> class Super(object): def __init__(self, hoge): self.hoge = hoge >>> class Child(Super): def __init__(self, hoge, fuga): super(Child, self).__init__(hoge) self.fuga = fuga >>> c = Child(123, 456) >>> c.hoge 123 >>> c.fuga 456 >>> s = Super(789) >>> s.hoge 789 普通にコンストラクタをオーバーライドすればいいんじゃないの?
というか、149のサイトを見る限り、numberにデフォルト値でNoneを設定しとけば、 NoSupport、OddSupportに変な引数を代入する必要はなくなる気がする。
def limit( self, number):
def limit(self, number ): self.__number = number return self というメソッドを用意しといて diana = LimitSupport('Diana').limit(200) というようなコンストラクションも可能
>>149 ソースコードは pre で囲って欲しいな。
br 要素で改行だの全角スペースでインデントしなくて済むよ。
157 :
デフォルトの名無しさん :2007/02/25(日) 19:45:50
>>151 いや、自分はまだJavaから来たばかりで、たしかに Python よく分ってないかも
しれないけど、そういう話とは違うと思うけどな…。
Javaでは コンストラクタとフィールドの設定が分かれているけど、
Python では __init__ とフィールドの設定がくっついているでしょ。
Java のような感じでやれないと、
親クラスを作る時点でインスタンスのフィールドを、
(これからどんなサブクラスが作られるのかも分らないのに)
将来作るかもしれないサブクラスの分もすべて予測して
設定しておかないといけないような、という話で。
(Javaはあとで拡張できる。Python、無理っぽい。
__init__ の中でフィールド設定しておかないと、
setメソッドの前にgetメソッドされると、エラー出てしまうし)
それができないと、将来それが必要になったとき、
あとから親クラスを直さないといけなくなる。
どんな場合でも、目の前の10行前後を直すだけで対応できるように
プログラムする、というのがオブジェクト指向の目標である以上
(そううまくいくもんじゃないけど)、それはやっぱりまずいだろうなと。
どうもサブクラスで __init__ を
オーバーライドしちゃうと、サブクラスがサブクラスでない
ことになって、親クラスのメソッドを使えなくなるみたいなんだよね。
ただ、もう少し検証しないと、断定はできないけど。
158 :
157 :2007/02/25(日) 20:06:51
と思ったが、
>>155 を見ると、
やれてるよな… org
もう一度、じっくりコードを検討してみます。
ほかのみんなも、サンクス。
いちおう、(GoF 以外の新パターンも含め)全パターンやるつもりだが、
前途多難だ…。
PHPでも使えば?
コンストラクタとフィールドの設定が云々の意味が分からない なんでかんでもJavaの流儀でやろうとするのも分からない
>>157 class Derived(Base):
def __init__(self, *arg, **kwarg):
Base.__init__(self, *arg, **kwarg)
Pythonはプロトタイプ指向の方が色々と馴染むと思うがね。
先にJavaScriptでもやってみれば?
163 :
デフォルトの名無しさん :2007/02/25(日) 22:13:23
>>160 >>162 オブジェクト指向が目標としてることを簡単にいえば、
1万5000行のコードにかなり大きな手直しを必要とするような場合でも、
何百行も修正するんじゃなくて、目の前の10行かそこいらを
修正するだけで、それが出来るようにしようということです。
有名なのは、1979年頃、MACを開発する前のスティーブ・ジョブズが
パロアルト研究所を訪れた際、Smalltalkの開発者ダン・インガルスの
デモを見て、「エディタのスクロールが行単位じゃなく、滑らかだったら
もっといいんだが」といったところ、インガルスがわずか25秒で直して見せ、
ジョブズを狂喜させたというものです。
どんなものでも、10行かそこいら手を入れるだけで実現する、という
のは現実には難しいですけど、それに一歩でも近づこうということです。
Javaでは当然の流儀になってはいますけど、Pythonもデザインパターンの
すべてのパターンのサンプル・コードがあるようになると、
もっと便利になると思いますよ。
大きな仕事で使ってもらえるチャンスも出てくるかもしれないし。
そんなものはJavaでやれというのは、一つの考え方ではあるでしょうけど、
Pythonの可能性を大きく広げるものになるはずです。
そうか
かといって、Javaでのデザパタ実装をそのままPythonに移植するのは違うと思うな
例えば Python に interface や抽象メソッドは不要なワケだし。 静的言語と動的言語じゃ話が違うんだよね。 全く不要なパターンやもっと簡単に実装できるものが出てくる。
Pythonで書いてC++に落とせばいいじゃん
>>149 オナニーをここでするんじゃねーよぼけ
デザパタのスレいけって何回言われたらわかんだよ
しね
別にデザパタをPythonで実装する話自体はスレ違いではないと思うけど。 Javaとかの静的言語との好対照になるし、色々な設計方法を試してみるのは悪くない。 ただ、ちょっとパターンにとらわれすぎているかなって感じはするが。
罵倒パターン def response(comment): if len(comment.splitlines()) > 5: print "しね"
zope.interfaceなめんな
クラス志向&静的型付けかダックタイピングかどうかってこったわな。 C++だとテンプレートを使うとダックタイピング風のことも出来るのが 面白いんだが。
PHPでもおぶじぇくとしこうできるよ.
おぶじぇくとしこうさえできればなにでもよいというわけではありませんよ
>163 なんかオブジェクト指向に感動した瞳キラキラな書き込みがこちらには ちょっとまぶしいのですが、Pythonはもっとお下劣な言語ではないかと思います。 それに、どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、 オブジェクト指向の話ではない。現に、俺がオブジェクト指向風味に書いたコレは アレをソレするのにあっちこっち書換えなきゃいけなくてorz
177 :
デフォルトの名無しさん :2007/02/26(月) 00:21:59
>>175 >どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、
>オブジェクト指向の話ではない。
ううん、違う。それこそがオブジェクト指向だと思う。
python による Chain Of Responsibility にちょっとだけ説明加えた。
http://www.h3.dion.ne.jp/~ytakagi/ChainOfResponsibility.html コード、まだまだ問題かかえたままだけど、ちょっとだけ加えた説明で
なにか分ってきませんか?
僕はJavaをかじっていたので、どうしてもPythonでのパターンのコードが
ほしいのです。仕方ないので、自分で書くことにしました。
これが分らないと、アレをソレするのにあっちこっち書換えなきゃいけなくなるんです。
Javaでもそれは同じです。Rubyでも同じはずなんです。
デザパタ知らないと、オブジェクト指向できないんです。
Pythonにも必要なんです、どうしても。
ちょっとぐらい加えた説明じゃ、分らないかもしれないけど。
住人総出で叩かれる前にデザパタスレ逝け
もう別スレ立てたら?
>>163 >オブジェクト指向が目標としてることを簡単にいえば、
>1万5000行のコードにかなり大きな手直しを必要とするような場合でも、
>何百行も修正するんじゃなくて、目の前の10行かそこいらを
>修正するだけで、それが出来るようにしようということです。
これって、Javaのwrite once, run anywhere主義の極端な例では?
そんなものとオブジェクト指向を結び付けられたら、pythonはオブジェクト指向じゃ
ありませんって言う話になる。
pythonでは「100行直して全体の可読性が上がるんだったら直したほうが正解」
って言うのが一般的な見方だと思う・・
VBでもおぶじぇくとしこうできるよ.
Simple is better than complex.
183 :
デフォルトの名無しさん :2007/02/26(月) 00:58:36
>>180 >Javaのwrite once, run anywhere主義の極端な例では?
それは、クロスプラットフォームを目指そうという話でしょ?
なにも関係ないです。
>pythonはオブジェクト指向じゃありませんって言う話になる。
どうして? だって、Javaと比べても必要な機能は全部あるよ。
(抽象クラスやインターフェースも、やる気ならやる方法はあるし)
機能は全部あるんだから、誰か作ろうと思えば、当然にできるはず。
ただ、誰もやってくれないので、仕方ないので自分でやろうかなと。
去年の暮れぐらいに、初めてインストールして、本格的に勉強し始めた
のは今年に入ってからなんだけど、まだまだよく分からないところが
あるけれど、なかなか分りやすい言語だなと感心してる。
あと、僕はもともとJava使いだけど、Javaに比べてどうこうと
いいたいのではなく、Pythonもっと便利にしようよ、という話を
してるつもりです。どうせ自分で書くし(時間はかかるだろうけど)。
def test( n ): if 0:
>>183 君がやることに興味を持っている人は少ないので、いちいち報告してくださらなくて
結構です。つーか、報告するな。うざい。
>>177 今のところ
下のコードと同じ動作しかしてない。
これより優れてる点を教えてくれ。
def test( n ):
if 0:
print "Alice"
elif n < 100:
print "Bob"
elif n == 429:
print "Charlie"
elif n < 200:
print "Diana"
elif (n % 2) == 1:
print "Elmo"
elif n < 300:
print "Fred"
for i in range(0,500,33):
test(i)
>>163 Smalltalk(というか暫定ダイナブック環境)のこの逸話のミソは、作業の速さや
手を入れた行数の少なさ(ちなみに10行というのはSmalltalkの平均的な
メソッドのコード量を指しているので「たった1メソッドを修正…」と読むべきだし、史実もそう)よりは
“システムを止めたり再起動することなしに”
この変更を行なえたことにあるので Python が立脚する「オブジェクト指向」(ユーザー定義型の
オブジェクト指向)とはあんまり関係ない話だったりする。
>>183 あ、なんかWORAの話は違ったけど、・
とにかくpythonでは
>>163 のたとえ話のような
より少ないコード変更で新しい機能を取り付けられる
ということは必ずしも美徳とされていない。特に
そのせいで全体の一貫性が失われるようなコード追加は悪い
コーディングの例と考えられるのが一般的傾向。
>>183 Pythonに特化したデザパタ(あるのか知らんが)でもないかぎり、
デザパタ一般の話をここでするのはスレ違いも甚だしいことだとまだ気付かないのか
190 :
デフォルトの名無しさん :2007/02/26(月) 01:21:56
>>186 ・Chain Of Responsibilityパターンの内容
要求がやってくる。それを処理できるなら処理する。
処理できないなら、その要求を「次の人」にたらい回しする。
次の人がそれを処理できるなら処理する。
処理できないなら、その要求を「さらに次の人」にたらい回しする。
そして、さらに次の人へ……
・このパターンを使うメリット
このパターンのポイントは、最初の人に要求をポンと出してしまうと、
あとは連鎖の中をその要求が流れていき、適切な処理者によって要求が
処理されること。
このパターンを使わないと、要求を出す人が処理者たちの役割分担の詳細
まで知らなければならない。すると、部品としての独立性が損なわれてしまう。
要求を処理する ConcreteHandler(具体的処理者)のオブジェクトの関係が
動的に変化するような状況も考えられる。このパターンのようにたらい回しを
行っていれば、状況の変化に応じて ConcreteHandler(具体的処理者)を
組み替えることができる。
もしこのパターンを使わず、この要求ならこの処理者という対応関係が固定的に
書かれていたら、プログラムが動いている最中に処理者を変更することは難しい。
このパターンを使うと、個々の ConcreteHandler(具体的処理者)の処理は
その固有の内容に絞り込める。このパターンを使わないとすると、状況に
応じてどこに仕事を振り分けるかなどまで、個々の ConcreteHandler(具体的処理者)
に作りこまないといけない。
http://www.h3.dion.ne.jp/~ytakagi/ChainOfResponsibility.html
Pythonのお勉強じゃなくね? 議論スレでも立てて思う存分やってくれ
>>190 まず、ひとつの完全なチェインを作るためには必ず、
>alice.setNext(bob).setNext(charlie).setNext(diana).setNext(elmo).setNext(fred)
というような全員の名前が一回ずつ出てくる列を書かなければ、
列が破綻してしまう。しかし、このような列を"書く"ということは、
結局のところ、この順番のif elifを書いてるのと同等である。(したがってメリットが無い)
もし、途中でdianaとelmoの順番だけ変えるみたいなことができたら
たしかに、意味があるが、それがさっと出来るほどの巧妙さは無い。
>>192 チェインを作る人と、チェインに投げる人は違う。
さらに言うと、スレも違う。
>>193 いや、だから、チェインを作る人の労力がif elifを使う場合とCORを使うばあいで
なんら変わりが無い思うんだけど・・・?
で、使う人に対しては、aliceに対して投げてくださいと言うか、
>>186 のtest関数
に投げてくださいと言うかの違いしかない。これも大した差ではない。
>>194 条件式はもちろん
if alice.solvable(n):
alice.solve(n)
elif bob.solvable(n):
bob.solve(n)
式に書き換えれば、条件式を知る必要はないし、aliceたちの状態によって
動的に変化可能。
あと、たとえばsolveメソッドの返り値を解けたら必要な文字列、解けなかったら0とかにしておけば def solve( n ): return alice.solve(n) and bob.solve(n) and ... とやれば、書く量も十分少なくてすむ。
>>195 だいぶ近づいてるね。
あとは、処理する人が、動的に(もしくはあちこちで)リストに参加したり退会したり
できるようにしたら・・・はい、Chain of Responsibility.
リストが静的に決まっていたら、if - elif - ... を関数にしてもパターンと同じ事が
できるんだけど、あえてパターンから外れる必要もないからパターンに従う。
198 :
デフォルトの名無しさん :2007/02/26(月) 02:06:09
>>192 うーん、それは違うんじゃない?
このパターンは、AbstractHandler(抽象的処理者)クラス
とConcreteHandler(具体的処理者)クラスの構造をどうするか、
というところがその肝心の内容と思うよ。
君がいっているのは、
要求を最初の具体的処理者に投げる部分だけだよね?
(対話的シェル部分。オリジナルのJavaコードだとメインクラスの
メイン・メソッドの部分かな)
そうじゃなくて、抽象的処理者クラスと具体的処理者クラスの構造が
肝心かなめの部分。
一般論になるけど、オブジェクト指向も、深いこと考えずにやると
柔軟な変更ができなくなるから、変更部分をどうやって局所にとどめるか、
がカギだよね。
変更部分が、あっちにある、こっちにもあるというのじゃ、
オブジェクト指向なんかする意味ないから。モジュール構成の方が、最初の
設計の負担が少ないだけまだマシとなってしまう。
結局、抽象化をどうやってするかの方法論となると思う。
僕は、デザパタの趣旨の話をするのは全然かまわないんだけど、
スレ違いと怒る人がいるので、やめた方がいいんじゃないかな。
自分としては、Pythonでのコードがほしいから(Javaでのコードはとっくの昔に
全パターンあるんだから)、Javaやc++しか知らない連中に話しても仕方ないでの
ここでやってるんだが、なかなか難しい。
とはいえ、Python自身はとても気にいったので、自分はまだ力量不足かも
しれないけど、なんとかPythonによるデザパタ・コードは書いていきたい。
鬱陶しいスレになっちゃったなぁ
>>198 >とはいえ、Python自身はとても気にいったので、自分はまだ力量不足かも
>しれないけど、なんとかPythonによるデザパタ・コードは書いていきたい。
PHPでもデザパタは出来るよ。
行数多いレスは読まなきゃ平気
>>198 お願いだから自分のブログか何かでやってくれないか?
抜けるためのメソッド def exit( self ): self.__previous.setNext(self.__next) 入れ替わるためのメソッド def swap( self, target ): target.__previous.setNext(self) self.setNext(target.__next) target.setNext(self.__next) self.__previous.setNext(target) この辺があれば確かに使えるかもね。そのパターン。 __nextとsetNextしかないとif elifと同じだけど・・・
いい加減やめたら? 雰囲気読めよ Pythonでデザパタ。とかスレ作ったら? そしたら俺もそっち行く
>>197 しかし、やっぱり[alice,bob,...]
みたいな人の配列を作って、
順番変更は配列操作、
実行時は
def solve( n ):
for p in people:
if p.solve(n):
return p.message
とかにしたほうが簡単な気がする。
__next だの __previousだのテクニカルすぎてやる意味が見出せない。
空気が読めない人はPerlを使うと幸せになれると思うよ。
一応205はアンチデザパタのつもりで書いたんだけど・・・(・ω・)
205にJavaの人が答えてくれなかったら
>>177 のパターン絶対使わないし・・・
209 :
206 :2007/02/26(月) 02:51:29
>>208 そうだったのか。
ごめんなさい。まぢですまん
210 :
デフォルトの名無しさん :2007/02/26(月) 03:01:19
>>208 いや、だから、
君は抽象的処理者と具体的処理者の部分を全然変更してないだろ。
そして、そうなっているということは、
たくさんのクラスを無修正で済ませることができているということ。
変更を局所化できているということ。
君はすべてを、抽象的処理者と具体的処理者を全然使わない方法で実装できる。
そのとき、どこに変更部分があるかは気まぐれで、
あっちこっちと直さないといけなくなるだろう。
オブジェクト指向を使う意味が全然ない、オブジェクト指向のコードに
することもできる。モジュール構成より疲れるだけの。
天才ダン・インガルスが変更したのは、たしかにメソッド一つだったかもしれない。
でも、それはメソッド一つですむように設計しておいたからだ。
君の変更は、メインクラスのメイン・メソッドの内容にとどまる。
メインクラスには、他のメソッドもいろいろもてるだろう。
アナザー・メソッドを定めておいて、それを実行すれば、
元のコードの変更はゼロで、コードの追加ですべてできるかも
しれない。
以上、デザパタ論議は終わり。自分は当面、参加しない。
>>どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、 >>オブジェクト指向の話ではない。 >ううん、違う。それこそがオブジェクト指向だと思う。 悪いんだけど、他所いってやってくれない? あんた根本的に何か勘違いしてるよ。
宗教って怖いね
怖いね。
怖いね.
後は放置で
遠いお国で幸せになってる人間を、どうこう言うほど卑しくないつもりだw
デザパタってのは数式の公式みたいなもんだなあと改めてオモタ。 勉強しているときは何の役に立つのかピンと来ない。 確かに便利そうではあるが自分のこととして実感できない。 そして、実際に役に立つことが分かるようになった頃には 自分にとってごく当たり前の、普段使いの道具になっている。 勉強していたとき、なぜこの便利さが実感できなかったのかと不思議に思う。 できることなら当時の自分に教えてやりたい。 でも、その説明を聞いても当時の自分にはやっぱりピンと来ないんだろうなあ。
>>219 すまん、パピコしてから気付いた。あと「数式の公式」ぢゃなくて「数学の公式」だった。
前のフォームのある画面からPOSTでアクセスされ、どんな変数名が渡ってくるか固定ではない場合、 その変数名と値を収集するにはどうしたらいいのでしょうか?
>>221 デザパタとオブジェクト指向を勉強すれば分かるよ
・・・などと、とんちんかんな回答をもらわないように、 使っているライブラリ、実行環境、できれば問題を再現する小さなコードなど、 問題を特定するのに必要な情報を書きましょう。
>>221 質問の仕方が悪い.
〜するには何パターンを使えばいいのですか?
これが、このスレでの正しい質問のしかた.
>>221 import cgi
FormData = cgi.FieldStorage()
print "Content-Type: text/text\n"
for KEY in FormData.keys():
print "(%s, %s)" % (KEY, str(FormData.getlist(KEY)))
>>225 適当に書いたけど正しくは「text/plain」だった
228 :
221 :2007/02/26(月) 13:09:15
229 :
221 :2007/02/26(月) 15:08:56
>>225 のサンプルを元に作成してみました。
実行した結果、何も表示されませんでした。
原因はresult.pyの「for KEY in FormData.keys():」のループが1度も入りません。
→FormDataの値を確認したら「FieldStorage(None, None, [])」で値が取得出来なかった模様。
期待値としてtest.htmlのtext1に「123」test2に「abc」を入れ
result.pyの画面で「test1/123(改行)test2/abc」がブラウザで表示されることです。
改善策を教えて下さい。よろしくお願いします。
--- test.html(form部分のみ/nameのtest1とtext2が可変の名前になる所) ---
<form action="result.py" method="post">
<input type="text" name="text1">
<input type="text" name="text2">
<input type="submit" value="実行">
</form>
--- result.py ---
import cgi
from mod_python import apache
from string import *
def handler(req):
FormData = cgi.FieldStorage()
req.write("Content-Type: text/html\n\n")
req.write("Content-Type: text/plain\n")
req.write("<html><head><title>test</title></head><body>")
for KEY in FormData.keys():
data_column = str(KEY) + "/"
data_value = str(FormData.getlist(KEY)) + "<BR>"
req.write(req, data_column)
req.write(req, data_value)
req.write("</body></html>")
req.write("</body></html>") の次の行に return apache.OK が入ります。
>>229 普通のcgiじゃなくて、mod-python か。
そっちは良くわからん。
とりあえず、Content-Typeは1回だけしか書けないはずなので、
req.write("Content-Type: text/plain\n")
の行は削除してみてくれ
232 :
229 :2007/02/26(月) 15:38:26
>>231 mod-pythonの方です。
Content-Typeの所は指定の通り、消してみましたが変化ないようです。
FormData = cgi.FieldStorage()
↑
この時点でFormDataに何も値が持ってこられない時点で、
エラーにはならないとはいえmod-pythonでは使えないのかな?
>>232 マニュアルさっと見た限り、
from mod_python import util
form_data= util.FieldStorage(req)
とかでいけそうな気がします。
あと、ヘッダについては req.write() するのではなく
req.content_type = "text/plain"
のようにするみたいです。
235 :
232 :2007/02/26(月) 16:44:37
>>233-234 返答ありがとうございます。
>>233 さんのutilをインポートする件は、表示出来ず、
>>234 さんのContent-Typeでreadメソッドでも表示出来ませんでした。
何か手段が無いかと別のメソッドを調査してみた所、
readではなくreadlineのメソッドでフォームの値が収集出来ました。
「text1=123&text2=abc」って感じに。
あとはこの文字列を砕いて表示出来るように頑張ります。
記念に同じ疑問で今後引っかかった方用にソース残しておきます。
↓
--- result.py ---
from mod_python import apache
from string import *
def handler(req):
req.content_type = "text/plain"
aaaaa = req.readline()
req.write("<html><head><title>test</title></head><body>")
req.write(aaaaa)
req.write("</body></html>")
return apache.OK
みなさん、ご協力ありがとうございます。
つーか、text/htmlとtext/plainを同時に指定しちゃだめだろw
あと、
>>229 の書き方だと、空行の入る位置がおかしいから
2個目のContent-typeはドキュメント内に表示されるぞ、
>>234 それやるとデコードを自分でやる羽目になるので、素人にはお勧めできないw
こんな感じか from mod_python import apache, util def handler(req): req.content_type = "text/plain" form_data= util.FieldStorage(req) for field in form_data.list: req.write(field.name+"/"+field.value+"\n") return apache.OK
238 :
デフォルトの名無しさん :2007/02/26(月) 16:52:03
239 :
235 :2007/02/26(月) 17:00:34
>>236-237 ご返答ありがとうございます
>>237 さんの便利ですね。
1項目ずつ分かれていますから。
自分のより、こちらをベースにしたいです。
本当にありがとうございます。
やっぱりprint 関数は見た目はあんまりうれしくない感じだ・・・ print('x\n', 'y')とかちょっとperlっぽい感じがする、・・・、 まあp=printとか[print(x) for x in arry] とかいろいろ悪さが出来るのは面白いだろうけど、・・・
>>226 ず〜と 水みたいなのを握り締めてるのが気になってしょうがない
new style class がraise出来なかったのは結局解決したってことなんだろうか・・・ 短くてよく分からんかった・・・
a = { f(x) for x in S if P(x) } ↑これやばいwかっこよすぎ
nonlocal 萎え
_ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
perlでいうCPANみたいなものってpythonではどこになるんすか?
チーズショップが正式名称になったんじゃないの? まあ、urlに残ってるけど・・・
お、よさげだね SDの python 関連記事のまとめかな?
それにしても TurboGears ってpython2.5がでて半年たつのにいまだに 2.5に対応できないでいる。寄せ集めツールズの弱点がでた感じ。
一番遅いのに合わせてるってこと? どいつだろう。
2.5に未対応でもほぼ無問題. functoolsとか使いたがるヤツはたいてい使い物にならない機能オタ.
>>> [ 'A'] ['A'] こっちみんなよw >>> ['A' ] ['A'] こっちみんな!w
吹いた
>>256 Python >>> Ruby が決定したなw
irb(main):001:0> [ 'A']
=> ["A"]
irb(main):002:0> ['A' ]
=> ["A"]
>>>> ('_') >'_' >>>> ('_') >'_' >>>> ('_',) >('_',)
なのになんで俺無職なん?
Over1000マソのサラリーに求められる 仕事の質や量を考えられないようなヤツが無職なのは当然
決め打ちの煽りワロス 無職仲間ハケーン
>>264 ,266
Python使えてIQ140以上で英語ができて
IT系の特定分野でとんがった技術持ってて
自分で課題設定できて絶え間なく成果を出せるようなスキルがあれば
Googleに入れるぞ!
そしたらストックオプションで人生の半分くらい引きこもっても生きてられるぞ!!
おまえらガンガレ!!
>自分で課題設定できて絶え間なく成果を出せる ....................o.....rz
有能を語っているうちに興奮して態度がでかくなる無能って どうしようもなくミジメだよな。
そんなやつならわざわざGoogleに入るまでもない。
>>> [ 'A'] < "なあ、俺って結構イケてる?" True >>> [ 'A'] < "え、マジで?" True >>> [ 'A'] < "・・・・・" True >>> [ 'A'] < "あー" True >>> [ 'A'] < "俺、逝ってよし?" True >>> [ 'A'] ['A'] だから、こっちみんなw
ぱいそんかわいいよぱいそん
たぷるたん、ってのもいました
>>269 そうやって君の一日がまた一つ終わったわけだ。
最近RubyからPythonに移ってきました。 比較しながら勉強しているのですが、リストのflattenに あたるメソッドはないのでしょうか? たとえば、[[1,2,3],[4,5,6],[7,8,9]] を [1,2,3,4,5,6,7,8,9] に変換するようなものです。 よろしくお願いします。
278 :
デフォルトの名無しさん :2007/03/01(木) 03:00:11
ちなみに、 Rubyのflattenだと、もっと深いリストでも A = [[1,2,[3],[4,[5,6],[7,8],[9]] B = A.flatten() と書くと、[1,2,3,4,5,6,7,8,9]になります。
欲しいと思ったことはないが、ないなら実装すれば良いと思われ。 import types def flatten(a): ret = [] for x in a: if type(x) == types.ListType: ret.extend(flatten(x)) else: ret.append(x) return ret print flatten([[1,2,[3],[4,[5,6],[7,8],[9]]]])
>>279 >>281 ありがとうございます。
A.flatten().collect().join()とかよく書くので
知りたかっただけのことです。
>>280 ケンカなんかしませんよw
>>281 types.ListType なんて初めて知った。。。
これってどのバージョンでも使えるの?
type(x) == list でもいい
Ruby厨ってまぢしつこいね。
ジェネレータ使うならこんな感じか。 def iter_deep_array(a): for x in a: if isinstance(x, list): for y in iter_deep_array(x): yield y else: yield x def flatten(a): return list(iter_deep_array(a)) print flatten([[1,2,[3],[4,[5,6],[7,8],[9]]]])
こういうの見ると引数型のパターンマッチがほしくなってくる・・・
lst = [1,2,3] lst.append(lst) print flatten(lst)
>>291 Haskellみたいなの、ってことじゃね?
[Python-ml-jp 3915] Guido氏サイン入り「みんなのPython」プレゼントのお知らせ
日本語でかかれたファイル(文字コード不明)があって、 その中の文字数をカウントしたいのですが、 どうすればいいですか? echo あ >text data = open( "./text" ).read(); print len( data ); で、4と表示されてしまいます、、、
>>295 1行目の「〜にふられちゃいました」で一瞬ドキリとした。
>>294 1文字じゃ文字コードの判定できない。
エスパーで答えると、
print len(data.decode('utf-8'))
298 :
デフォルトの名無しさん :2007/03/02(金) 02:56:23
。oO( import string っと・・・ ) ( ゚д゚) _(__つ/ ̄ ̄ ̄/_ \/ ./  ̄ ̄ ̄ ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ ./  ̄ ̄ ̄
>>297 めっちゃありがとうございますx100
出来ました。エスパー凄杉
あと、1文字じゃ判定できないんですか
ちょっと勉強してみます
>>293 なんだか芸能人みたいなことをさせられてるGuidoワロス
俺は初めてのPythonと、みんなのPython買ったが 選択は間違いじゃないかな?
このスレの住人はほとんど本興味なし
アルヨ アルヨ
>>299 それは例えば、
a
と一文字だけ書いてあって、これが英文の一部か独文の一部か
仏文の一部か判定しろ、ってのと同じだと思われ。
自分のサイン入りをプレゼントするのならそうとうキモいな
>>295 ご本人は志賀高原か
俺らとは人種が違うようだ(w
やりたいことやるだけなら、ぶっちゃけ本とか要らなくね?
>>307 検索するのもおっくうなときに、
パラパラめくれるリファ本があると、便利じゃない?
>>308 本めくるよりは検索のが絶対速い
本のよさは、どこでも読めることと、大量の文章をさほど疲れずに読めることだろう
本に書いてあることがすべてネットに存在するわけじゃ無かろう ネットで十分な人は本買わなきゃいいだけだよ
>>309 > 本めくるよりは検索のが絶対速い
いや〜、そうじゃない事も多いよ。
検索しても、欲しかった情報がばっちり書いてあるのか、単語が書いてあるだけなのか、
実際見ないとわからないこともあるしね。
帰りの電車の中で読むなら本だな。
初めて扱う分野の基本を勉強するなら本をじっくり読む方がいい。 ファミレスでランチ食いながら読んだりするよ。
おまいらpythonをどんな場面に活用してる? ファイル整理スクリプトとか?それとも何かアプリ作ったりとか?
ネイティブでなくてもいい場面なら何でも。
ネット系の実験とかが多いな
あー、そういえばこないだ、数板で覆面算きいてる奴がいて、 pythonでさっと検索関数書いて答えたりした・・w
Pythonだけで2chブラウザ作るのは、まあ無謀だよな
昔作ってる人いたな モナークとキティーウォークだったかな
エンジン部が遅くなる気がする以上に、GUI作るので発狂しそうだw VBのがまだ向いてるな。C系より遅いったって、Pyよりは速いの出来そうだし。
そこでpsycoですよ
流れよまずに lambdaは廃止になるんだっけ?
324 :
デフォルトの名無しさん :2007/03/03(土) 08:27:23
scipyをintel macにインストールできた人いたらやり方おしえてくださいっす。 コンパイルはできたんですが、テストプログラム動かすとエラーになってしまう。。
>>323 ならない。拡張(複数行とか)もされない。
>>295 本屋に行ったら下に書いてある「TurboGears×Python」ってやつがすでに平積みされてた
早売りにもほどがある
質問です。 ログファイルを監視するアプリ(unix の tail -f みたいなもの)をpythonで作りたいと思っています(wxPythonでGUIにするつもりです)。 pythonでファイルを監視して変更があったことを検知する手段はあるのでしょうか? 今のところ思いついた方法としては ・一定間隔でタイマーイベントを発行 ・ファイルの更新時間を調べて前回の更新時間と比較 ・更新されていたら表示 とすればいけると思うのですが、イマイチしっくりこないので… 環境は WinXP SP2 Python2.4 です。
ない Windows の API を使うこと
ねんちゃくねんちゃくぅ!
>>323 関数型言語としてのアイデンティティがwww
関数型言語じゃないのでへっちゃらです
↑これって並列化云々の技術と組み合わせられるのかなぁ・・・?
サンキュー key 付きの sort, min, max 使ってるソース書いてから lambda 廃止?書き直しかよーと狼狽してた。
>>328 スレッド使えばできるんじゃね?下のコードだとなんか時々終わる時に
エラー出るけど、スレッド詳しい人ならちゃんと書けるはず。
import thread
import time
import os
def change():
open("a.txt", "w").write("a")
def watch():
t1 = None
while 1:
t2 = os.path.getmtime("a.txt")
if t1 is not None and t1 != t2:
print "changed"
t1 = t2
time.sleep(1)
change()
thread.start_new_thread(watch, ())
for _ in xrange(5):
change()
time.sleep(2)
337 :
デフォルトの名無しさん :2007/03/04(日) 00:01:23
HTMLParserの使い方が全く理解できねえ・・・・ ググって見つかるサンプルも、呪文にしか見えない・・・・orz やさしいサンプルとか、そのあたりを解説した書籍とか、HPとか・・・・なんでもいいからなんか教えて!!
338 :
328 :2007/03/04(日) 00:35:57
>>329 FindFirstChangeNotificationやFindNextChangeNotificationあたりがそれっぽいですね。
pywin32モジュールから使えそうなので調べてみようと思います。
>>336 そういう方法もあるんですね。
スレッド周りは勉強不足なのでこれを期に勉強してみようと思います。
ありがとうございました。
>>337 H2タグで囲まれた部分を取り出してリストにするサンプル
#!/usr/local/bin/python
# coding=shift_jis
import HTMLParser
class MyHTMLParser(HTMLParser.HTMLParser):
#俺カスタムなHTMLParserクラスを作る
H2List = []
TagID = '' #H2タグの場合のフラグの準備
def handle_starttag(self, tag, attrs): #何か開始タグに来た場合の処理
if tag == 'h2': #ページのソースに関係なく小文字!!
self.TagID = 'h2' #H2タグに来たときにフラグをたてる
elif tag == 'hoge':
self.TagID = 'hoge' #他のタグに来たときにフラグをたてる
def handle_endtag(self, tag): #何か終了タグに来た場合の処理
if tag == 'h2': #ここも小文字!!
self.TagID = '' #H2タグを抜けるときにフラグをはずす
elif tag == 'hoge':
self.TagID = ''
def handle_data(self, data): #開始・終了タグに囲まれた中身の処理
if self.TagID == 'h2':
self.H2List.append(data) #フラグがある場合に内容をリストに追加
(つづき。インデントは行頭に戻す)
URL = '
http://www.python.org/ '
import urllib2
Website = urllib2.urlopen(URL)
HTML = Website.read()
Website.close()
MyParser = MyHTMLParser()
MyParser.feed(HTML)
MyList = MyParser.H2List
MyParser.close()
print MyList
341 :
デフォルトの名無しさん :2007/03/04(日) 00:51:04
>>341 俺も最初わからんかったから気持ちはよくわかる。
普段はオブジェクト指向プログラミングとかしないから、
クラスのメソッドをオーバーライトする、とかの意味がわからんかった。
>>337 PerlのHTML::Parserと違ってタグのオリジナルテキストをそのまま取得できないので
その点は注意だな。
たとえば、一部要素に関してだけ何らかの変換をして
他はそのまま通すような変換フィルタをこれで書こうとすると、
・コピーするためには、あらゆる要素のハンドラを書かざるを得ない。
handle_charref()やhandle_entityref()なども忘れずに。
・タグはタグ名とアトリビュートに分解された形でしか取得できないので、
自分で組み立てなおして出力するしかない。
344 :
デフォルトの名無しさん :2007/03/04(日) 01:49:37
>>337 的外れかもしれませんけど、BeautifulSoupがおすすめです。
http://www.crummy.com/software/BeautifulSoup/ from BeautifulSoup import BeautifulSoup
test_html="""
<html>
<body>
<h2>hogehoge</h2>
<h2>hogehoge</h2>
</body>
</html>
"""
soup = BeautifulSoup(test_html)
for h2 in soup.findAll('h2'):
print h2.string
結果
hogehoge
hogehoge
>>281 >>288 reduceを使ったらもうちょっとかわいく書けた。
def cup(n): return flatten(n) if isinstance(n, list) else [n]
def spoo(n, m): return cup(n) + cup(m)
def flatten(L): return [] if not L else cup(L[0]) if len(L) == 1 else reduce(spoo, L)
flatten([[1,2,[3],[[[[[[[]]]]]]],[4,[5,6],[7,8],[9]]]])
#=> [1,2,3,4,5,6,7,8,9]
[]がすげえな、目が痛い。自殺志向のPythonに思えるw
>>345 よくこんなコード思いつくなwww
これはすごい
理解するのに3分ぐらいかかったぜwww
>345 は言語マニヤ? ← 尊敬
349 :
デフォルトの名無しさん :2007/03/05(月) 00:34:22
サニタイジングが簡単に出来るモジュール化何かないでしょうか?
>>349 >>> import cgi
>>> cgi.escape('<>&"')
'<>&"'
>>> cgi.escape('<>&"', True)
'<>&"'
それはそうと、Pythonで変数が定義されているかどうかを調べるよい方法はありますか。
locals().has_key('foo') or globals().has_key('foo')
というのがダサくて仕方ありません。
そもそも変数が定義されているかどうか調べなきゃいけなないという状況がダサいの だから我慢してください
try: except:
>>352 そういう状況、ふつうにあるけどな。メタプログラミングがからんできたら。
知らないなら知らないといえばいいのに、なにをわざわざ言い訳してるんだろ。
>>353 さんくす。そんな方法もあったか。
でもちょっと微妙
>>351 某ブラウザだとアンカーがないと何やってるか分からんw
>>351 普通に'foo' in locals()は?
>>354 メタプログラミングを使うとコードの変数参照スコープ?が動的に変わるの?
>>354 メタプログラミングが必要になる状況がそもそもダサいとは思わんかね?
オレはダサくないって事だけは鉄板なんだよきっと.
なにがダサイダサクナイって話はスレ違いじゃまいか?
351はPython使いとしてダサいと思います。
なんでassertしないんだ
363 :
デフォルトの名無しさん :2007/03/05(月) 23:14:48
PythonコードからPythonコードをインタプリタっぽく使う方法ってありませんかね? parserライブラリのASTを有効活用すれば楽できるかと思うけど、どうやって良いか思いつかない。 今はしょうがなくスレッド化して、同期処理やってます。
eval(open(file).read())
365 :
363 :2007/03/05(月) 23:50:51
>>364 それを使うと、fileのソースを一気に実行してしまうんですけど
そのfileのソースコードと本体のソースコードを同期させたいんです。
例えば、file内のソースに TextOut(r'あいうえお',50,'MSPゴシック')、とあったら
本体GUIに50msec間隔で'あいうえお'がMSPゴシックで表示される感じです。
もちろん、本体GUIも同時に動いています。
そして、今そのTextOutみたいな特殊な関数をスレッド関連で同期取っているんですけど
あまりの開発効率の悪さに、心が折れそうになってるんですよ。
code = open(file).read() 使いたいスコープ: eval(code)
> 50msec間隔で'あいうえお'がMSPゴシックで表示される感じです 「あ」「い」・・・って一文字表示される間隔なのか、 全体の文字列がチカチカ50msec間隔で表示・非表示を繰り返すのか、意味分からん。 どっちにしても、そういうのを同期っていうのか?
やりたいことがよくわからんが、スレッドでやるほうが百万倍簡単じゃね?
369 :
363 :2007/03/06(火) 00:11:20
>>366 なんとなくそうなるんではないかと、予想はあったのですけど・・・。
ちょっとやってみます。
>>367 一文字ずつ表示される間隔です。
5文字だから250msecぐらいだとして、その250msecで表示が完了するまで
インタプリタ側の処理は先に進んで欲しくないわけです。
そこで、本体ソースはインタプリタ側のスレッドを一時停止して同期を取っていた訳です。
370 :
363 :2007/03/06(火) 00:14:28
>>368 まあ、スレッド使ってやっているわけですけど。
まあ、ぶっちゃけると、プレゼンアプリっぽいのを作っているわけです。
当然アニメーション処理や、文字の時差表示などを組み込んでいるわけですけど。
今までxmlか何かでインポートしていたのを、ふと、「Pythonコードそのもの使ってできなくね?」
と思った次第で。
GUIでつくるんなら、GUI側にタイマーイベント処理とか作ればいいんじゃね?
372 :
363 :2007/03/06(火) 00:19:24
>>371 ごめ、GUI側にタイマ処理は既にやっているぽ。
その間、インタプリタ側の処理を止めるのに、わざわざセッションを一々張っているので
何とか改善できないかなぁ、と思ってるんです。
373 :
363 :2007/03/06(火) 00:24:25
貴重なスレを消化してすんません。 もうちょっと、先が見えてからまたきます。
>>370 なるほど、コルーチン的に動かしたいわけだね。
別インタプリタを起動するよりは、そのPythonソース中ではトップレベルではなく、何か
main的な関数を呼ぶ規則にしておくのが良いんじゃないかな。
あとは別スレッドでそこを呼び出す。さらにプレゼン用の便利同期プリミティブセット一式
を作って抽象化しておく。
普通に埋め込みコードをCで書けば?
376 :
363 :2007/03/06(火) 00:43:53
>>374 な・・・なるほど。多分半分ぐらいは理解してないけど。
便利同期プリミティブセット一式、てのは必須ですね。
行き当たりばったりでPythonコード組めなかったのは初めてだ・・・。
>>375 PLY使ってLunaっぽくCもどきスクリプトを作り始めたのが最初なのは秘密だ。
微妙な完成度と、異常な遅さと不安定さで(全部自責)、このまま開発を継続
するのを断念したのも秘密だ。
Pythonで、オブジェクトの中身を再帰的にたどって表示してくれるようなライブラリはありますか。 Rubyのinspect()メソッドみたいなやつです。
別にRubyと比較している訳じゃないので、「だったらRuby使え」とかいう人間としてレベルが低い反応はご遠慮ください。
>378 と >379 の間にナニかレスあったの?
>>379 >人間としてレベルが低い反応
質問者としてレベルが低いですね.
オマエみたいなヤツはRuby使え.
>>363 目的は違うけど以前似たよーなことを考えて書いたコードがあったので
参考までに貼っとく。
[ext_runner.py]--------------------------------------------------------
from bdb import Bdb
import Tkinter, threading
trigger = threading.Event()
running = True
class Debugger(Bdb):
def user_line(self, frame):
trigger.wait()
if not running:
self.set_quit()
db = Debugger()
class DebuggerThread(threading.Thread):
def run(self):
db.run("import ext")
ui = Tkinter.Tk()
button = Tkinter.Button(ui, text="Run")
button.pack(fill="x")
def toggle():
if trigger.isSet():
button.config(text="Run")
trigger.clear()
else:
button.config(text="Stop")
trigger.set()
button.config(command=toggle)
th = DebuggerThread() def quit(): global running; running = False print "terminating the external script..." trigger.set() th.join() print "done" ui.quit() Tkinter.Button(ui, text="Quit", command=quit).pack(fill="x") th.start() ui.mainloop() ui.destroy() [ext.py]--------------------------------------------------------------- import time c = 0 while True: c += 1 print "count", c time.sleep(1)
今さら自己フォローですか。 そんなことより、すぐ興奮する癖と被害妄想とどうにかするほうが先だと思います。
おまえもな
>378 単純な質問だが、オブジェクトの「中身」って何だ?
Rubyのinspect()メソッドみたいなやつって書いただろ
Ruby使いが人間として劣っていることがよく分かる展開だな(wwww
頭の悪さをねちっこさでカバーして 偉そうにするから連中は始末に負えない。
おいおい、まつもとくんのことをそんな風に言うのはやめろよな!!
俺は>378じゃないが、Pythonで言うなら
class MyClass:
def __init__(self):
self.var1 = 'foo'
self.var2 = 3
obj = MyClass()
print obj.inspect()
ってやったら
<MyClass: var1='foo' var2=3>
って感じで表示されるのが Ruby の inspect だな
再帰的っつーか、ルートクラスで定義されてる上に
inspect 内でフィールドに inspect 呼んでるから結果的に全て遡るだけ
ちなみに、リテラル形式のあるクラスでは inspect はリテラル自体を返す
>>378 リテラルに対しては repr() を使えばお望みの物が出るハズ
自作クラスなら、それらしいメソッド名で
中身の各オブジェクトに対して repr() 呼ぶぐらいしか俺は思いつかないが
リテラルに対しては、じゃないや リテラルの形式で書けるクラスのインスタンスに対しては、が正確か
>395 __repr__() は知ってたけれど、何か違う気がしてやめた。 やっぱ、__repr__() が一番適切? でも持ってる変数の中身まで見たり、 > 可能な場合には、この値は > 同じ値を持ったオブジェクトを > (適切な環境で) 再生成するために使えるような > 有効な Python 式に 似せるべきです。 って辺りが気になってそうは言わなかったんだけど。
>396 自作クラスみたいに簡潔にリテラル表記できないオブジェクトについては ___repr__が再生成できなくてもいいんじゃね? 標準ライブラリのクラスもそうなってるし。 >>> import poplib >>> s = poplib.POP3('hoge.hage.uge') >>> s <poplib.POP3 instance at 0x791fd0>
398 :
378 :2007/03/06(火) 15:35:07
回答してくれた方、ありがとうございました。 pprintというのを見つけたんですが、repr()と同じで中身までは見てくれないようです。 なさそうなんで、頑張って自作してみます。
すまん, 397の例は単にクラスインスタンスの標準的なreprを使ってるだけだから あまり参考にならないかも setsのSetクラスなんかは、ちゃんと再生成できる表記を返すみたいだ >>> import sets >>> sets.Set([1,2,3]) Set([1, 2, 3]) 結局のところ,mustじゃなくてshouldって言ってるんだから 厳密に従う必要はないと思うよ
つーかこの場合質問者が欲しいのはオブジェクトの内容のダンプでそ __repr__() を厳密に実装するか否かの問題じゃないと思われ
401 :
107 :2007/03/06(火) 19:56:26
pythonスレはそういう関係に興味ある人少ないと思われ だから君がやるんだ
「何か」ってまだやってたのか。 あれってHTTPに似たプロトコルだから既存の物を改造すればできるじゃね。 socket使ったほうが早いか。
404 :
363 :2007/03/06(火) 20:33:45
伺かか・・・・・何もかも皆懐かしい・・・・・。
ただのdumpならpickleでもしとけば(違
407 :
107 :2007/03/06(火) 22:14:07
>>401 人それぞれだねえ
俺はpythonにデフォでメール関係のライブラリ
があって完成度の高さに感動したよ。
簡単にマルチパートのメールが作れるし
rubyなんて外部のrmailですら中途半端なのに
ninixはPythonで書かれてるんだっけ? 昔使ってたわ
すいません、大学でPythonを勉強している者です。"&"と”>>”の意味がいまいちわからないんですけど、どなたか教えてもらえないでしょうか? 例えば、if x & (1<<i): li.append("○") よろしくお願いします。
同じ大学生といってもこれはないわ
せんせに聞こうぜ
>>412 すいません、プログラミングにおいて全くの初心者なんで。自分で勉強しています。どなたかできればよろしくお願いします。
2進法って知ってる?
はい。。。
ちなみに、ここで聞いちゃうと自分で勉強したことにならないよ。 でも二進法を知ってる君なら大丈夫、自分でなんとかできるよ。
>>417 どうもありがとうございます^^ でも長い間考えたんですけど全くわからなくて。。。もう少し自分で考えて見ます。”&”と”>>”って一体何をするのやら^^;
>>419 リンクどうもありがとうございます。やっと理解できました!
python ML で ぱいそん と名乗るのはどうなのよ
頭の程度がよくわかるから 応対の仕方を決めやすくていいんじゃない?
ぱいそんのためのメーリングリストだからいいんじゃね?
最新Pythonエクスプローラ買ったけど、誤植(サンプルリストの図番号とか)が多くて困惑
>>424 リスト9がなかったときはさすがにどうよと思ったね
クラス定義にdefを使う、とか?
質問です import random random.seed() a = [[0]*4]*4 for i in range(4): for j in range(4): a[i][j] = random.randint(0,1) print a このようなのを実行すると [[1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0]] のように同じのばかりが出てしまいます。 どうしてこうなってしまうのでしょうか
[[0]*4]*4で行われてるのは浅いコピーだからリストの中のリストは全部同じ一つのオブジェクトだよ。 かわりに、[[0]*4 for n in xrange(4)]と書けば望んだ結果になると思う。
ありがとうございます。 勉強不足でした。
てか、普通にライブラリリファレンスのシーケンス型のページで解説されてるよね。
つまりチュートリアルに書くべき内容なんだよな。
>>431 チュートリアルには書いてあるし、まともな入門書にも書いてある。
もっとも書いてあるって言うことと 分かりやすいか・理解できるかは 若干ベツモノ python に限らず...
いろんな言語とのインターフェイスが充実してるから pythonを触り程度に勉強した。 処理の本質的な部分はlispで書いて lisp -> python -> c++ という流れでくっつけたいのだけど どこかでつまづかないのだろうか c++は自分がやりたい分野のライブラリーが充実してる
lisp->c++ じゃない理由はなんだろう。
pythonですでにいくつかスクリプトを作ってしまったことと、 lisp->python->c++ じゃなくて 場合によっては haskell -> python -> c++ に変更される場合もあるからです haskell- > c はあるけど haskell -> c++ はない
なるほど。boost::python とか使えば Python→C++ は超らくちんだからな。
pythonで、オブジェクトのインスタンス変数の一覧はどうやって取って来れますか。
dir(obj)
>>442 Pythonを使うヤツには能力の高いデキるヤツが多い。
できるヤツと出来ないヤツの間には
仕事の成果に何十倍もの開きがあるとかないとか。
つまりだ。
烏合の衆数十人の会社を
デキるヤツ一人が負かす可能性があるってことだ。
一人の力で競争原理が変わる可能性があるんだよ。
だからあっちの企業はPython使いを雇いたがる。
企業の中で腐ってたり
芽が出なくて逃げ込むようにPythonを使っているヤツではなく
自ら道を切り開く力を持っている、本当にデキるPython使いをな。
一から十まで脳内設定の垂れ流しってどうよ
小魚ばっかりですな
駄目だこりゃ。
>企業の中で腐ってたり >芽が出なくて逃げ込むようにPythonを使っているヤツではなく 俺のことかな
おれおれ
行きたいけれど関西だ 圏論勉強会って研究会扱いで旅費申請できるのだろうか
「ぷろぐらむ書けるの?」って上司に聞かれて 「ぱいそんならおk」っていうと諦めて帰ってくれるんだよね
>>451 お前さんの普段の行動が香ばしいのが諦められる原因だろ.
Pythonのせいにするなよ(wwwwwwwwwwww
453 :
デフォルトの名無しさん :2007/03/10(土) 10:40:54
御前は世間をしらない。Visual Basic だけがプログラム言語だと思っている上司が珍しくない
何でも人のせいにするヤツって居るよな。 そういうヤツが歳だけ余計に食って老害垂れ流すんだろうな。
駄目な奴には駄目な上司. これが世間の法則だが 駄目な奴だからってあまりいじめない方がいいと思うよ.
まぁ
>>453 は極端な例だろうけど、企業の場合遊びでやってるわけじゃないから
ソースのメンテナンスや引きつぎっつうもんがあるわけで。
その会社にPython使いが希少であるという状態なら、「Pythonにしたいです」
という提案は受理されないだろうな。
「PythonならC/C++やJavaやPerlやLispのような他の言語に無い
こんな素晴らしいことが出来ます」と滔々とプレゼンテーションできるなら
まだ別かも知れないが。
下流企業の実態なんて興味ないよ
>>457 超一流企業に勤めている
>>457 なら、下流企業のアフォ上司も
簡単に説得可能なんだろうな。
試しにここでプレゼンしてみ?
「下流企業ではない」が「超一流企業である」に飛躍してしまうのが 下流企業に勤める負け犬の思考の限界。
煽りはいいからお前さんのプレゼン能力を見せてみろよ。 聴いてやるから。
脳内の想像だけで他人を上司を説得できない負け犬、無能、下流企業呼ばわり なんだから、さぞかし素晴らしい御託を述べてくれるんだろうて。 実に楽しみだな。
>>456 > こんな素晴らしいことが出来ます
素晴らしい結果を出すことは他の言語でも大差ないんだろうけど、
プログラミングそのものやソース書くときのストレスが少ない、
っていうのが一番のメリットだと思う。
でもそういうことは、他の人にアピールするの難しいんだよね。
>>462 そら、あんたが無能で下流企業の負け犬だから、
そういう非定量的で感覚的な内容しか出てこないんだろうな。
それじゃ、他人にはアピールできないわ。
>>458 アフォ上司の説得なんて時間の無駄。さっさと出世しておまえが上司になるか、
それが不可能なら転職するか、それも無理ならあきらめろ。w
>>463 そんなことしか言えないから、おまえはろくなプログラムが書けないんだよ。
>>464 社会のしがらみを知らないNEETのただの妄言か。
アフォくさ。
>>466 そんなことしか言えないからアフォ上司の下で働く羽目になったんじゃないのか?
>>465 あのな。
>>462 を読み直してみろよ。
「〜だろうけど」
「〜と思う」
著しく感覚的で主観的であることを示す表現。
具体的で定量的なものは何も無い。
「なぜ」ストレスが少ないか、具体的な根拠が何も無い。
C++や、Rubyや、JavaScriptや、Lispに比べてどうか?
こんなんで「他人にアピール」出来ると思ったら、それこそお笑いだぞ。
> そんなことしか言えないから その言葉、そっくりそのまま返してあげるよ。
勤めてるのが中小企業でも大企業でも 「上司が」とか「マイナー言語だから」と諦めるような奴は人間として「下流」だろ。 どんな状況でも 自分のやりたいことが出来るように道を切り開く人間こそ勝ち組なんだよ。 転職したって変わらないよ。 Python使ってる企業に移ったって 下流人間は別のことでフラストレーション感じるに決まってる
>>470 だから、勝ち組なら勝ち組らしいプレゼンをしてみせろよ。ここで。
聴いてやるからさ。
自分は「下流」じゃないんだろ?その言い草なら。
>>468 おまえ2chのレスに何を求めてるんだ?w
無料でそんな素晴らしいプレゼンが聞けるとでも思ってるの?
>>471 煽るだけなら来るなよ。いいかげんうざいぞ。
>>472 要はできないから逃げた、と。
そうだよなぁ。下流企業づとめどころかNEETだもんな。
>>471 >だから、勝ち組なら勝ち組らしいプレゼンをしてみせろよ。
ここで?
無理に決まってるだろ(www
下流の常識はすごいな(wwwww
Rubyでも使えば?
「下流」という言葉が彼のコンプレックスを刺激してしまったようですね
文句しか言う気の無いやつにプレゼンして意味あるの?
ないよ
>>475 > 下流の常識はすごいな(wwwww
> Rubyでも使えば?
なんでそこでRubyとか出てくんの?
もしかしてPython使ってる俺エライ、Rubyお子様、とか意味不明な
優越感でも持ってんのか?
たかが言語にそれほど拘ってる奴、はじめて見たよw
下流のくせにPythonを使えばハッカーになれると思ったのかな。 元々能力のある奴がPythonを使うから 常人離れしたスループットを出せるというのが現実だというのに。 お目出たい下流だな。
上司も大変だなw
>>479 >もしかしてPython使ってる俺エライ、Rubyお子様、とか意味不明な
>優越感でも持ってんのか?
この件に関して、ここで"プレゼン"してくれよ.
ぜひお願いするよ.
この流れなら言える ZODBとzope.interfaceとtwistedがあれば大体おk
>>480 > 元々能力のある奴がPythonを使うから
アフォくさ。本物のハッカーなら言語なんか関係あるか。
>>462 Pythonの一番いいところは
コードスタイルが自然に統一されて、読みやすいことじゃね?
>>483 いや、それはどうかな?
ちゃんとプレゼンしないと納得してもらえないらしいぞ。w
なにこの流れ。。。。
>>485 ,486
つまりフリーフォーマット言語は糞でありFORTRAN77に戻るべきなんだな俺たちはw
なんでプレゼン厨が湧いてるの? 他の言語の差し金? つまんないことでケンカしないで 適材適所で使うのが賢いよ
>>484 >本物のハッカーなら言語なんか関係あるか。
あるよ。
ハッカーにとっても一日は24時間だからね。
真のハッカーは生産性の良い物を使う。
>>489 書きやすさと読みやすさのトレードオフだなw
もう固定フォーマット言語には戻れんな
>>491 そうだな。そしてそれがPythonであるとは限らないな。
楽しい土曜日ですよ
ようし、パパ月曜にプレゼンして D言語を仕事で使えるように上司を説得するぞう!!!
>>492 初めて好意的なレスが返ってきたが……
>>489 は皮肉含みのジョークでつよ。
俺って親切だなぁ。
俺は母国語がC++で、 大規模開発はC++ or C# 小規模ツールはPython or Perlかな。 Pythonだと人間の思考に近くて楽しいね。 C++は自分が計算機になったみたいに感じるw
>>497 > C++は自分が計算機になったみたいに感じるw
それは凄いな。「C」なら判るが。
C++でどんな機械語に落ちるかイメージできるか?
逆にさ、発想を変えて、 Pythonのダメなところを上げていけば いいところが浮かび上がるんじゃね?
>>499 機械語うんぬんより、C++でやることの大半はメモリ管理だからねw
>>499 もしできないなら C++ は使わないほうがいいよ。思わぬ落とし穴に填るかも。
テンプレートパズルを駆使して神のようなコードを吐かせる快感こそが C++ の醍醐味だ。
いつもそんなんじゃ疲れるから、普段は C# や Python を使うが。
>>503 C++のテンプレートは不完全だから嫌いよw
>>502 C++ではobject の ownership を意識していなければならないのは確かだが
Cほどではないだろう。
コンストラクタ/デストラクタやboost::shared_ptrのようなものもあるし。
>>503 悪いが俺は出来ない。
C++の「テンプレートパズル」と「機械語」では抽象レベルが違いすぎる。
C++で考える時は、メモリのことは考えるが、機械語レベルでは考えないな。
ついでに言うと、
> テンプレートパズルを駆使して神のようなコードを吐かせる快感こそが C++ の醍醐味
悪いがこういうオナニストと俺は一緒に仕事はしたくないな。
>>505 ガベージコレクション言語をやっちゃうと
デストラクタがあっても苦痛は苦痛なんだよね。
>>503 最近はコンパイラが、人間の思いも寄らないような最適化するから、
変な工夫を入れると悪化することもあるけど。
また隔離スレッドができる予感・・・・・・
>>507 それが正しいと思うよ。
一昔前とは変わってきてる。
いまのプログラマは高級言語で高い生産性が求められるから、
必ずしも機械語の知識は必要ないし。
>>508 C++でもGCは使える。が、明白にスコープでobjectがdestructされることに
慣れており、それを好むC++ユーザが多いように思う。
そうかな。俺だったら機械語の知識のない人と一緒に C++ の仕事なんて絶対に やりたくないが。 意識する必要があるかどうかと知識が必要あるかどうかは別の問題だよ。 機械語の知識のない人が C++ を触るなんて、まさに気違いに刃物。 そういう人は Python, C#, Java などで仕事していてほしい。
>>512 Contextを読み取る能力に欠けているのか、意図的に誤読しているのか。
「機械語の知識の有無」を論じているのではないよ。
C++の抽象レベルで機械語と対応付けて一々頭の中で考えているかを
論じていただけだ。
無論、ケースバイケースでそうすることもあるだろうけどな。
C#でも外部ライブラリ呼ぶ時とか、ポインタをpinしてGCのリロケーションの 対象外にしないといけとか色々あるだろ。
>>512 >>513 のいうように、今は変わってきてるかな。
子供が円周率を100桁暗記するより、英単語の1つでも覚えた方がいいと思うように、
機械語を覚えるより、データ構造やモジュールの使い方を覚えたがいい
というような感じかな。
確かに、PythonやC#を使った方がいいというのは同意。
>>513 >>512 は
>
>>510 >> 必ずしも機械語の知識は必要ないし。
に対する反論。つまりC++には「必ず機械語の知識が必要」だと思う。
>>513 にも反論するとすれば、C++には思わぬ落とし穴が結構あるので、機械語レベル
の話を全く頭から払拭してプログラムを書くのは危険が伴うと思う。
強く意識するかどうかは別としても、そういう知識のない人が使う言語れはないと思う。
これ以上 C++ の話を続けるならば、他のスレへ移動しましょう。
>>500 がいうように、Pythonの欠点を挙げてみない?
隔離スレッドができる悪寒
519 :
デフォルトの名無しさん :2007/03/10(土) 15:38:30
>>516 >これ以上 C++ の話を続けるならば、他のスレへ移動しましょう。
全くだ。C++の本スレなんか最近は閑古鳥が鳴いているってぇのに。
お前ら本スレに帰れ。
>>518 それは作れという意味ですか?
どういう名前にしたらいいかな。
敵国の情報工作だ。乗ってはならんぞ。w
>>516 何を持って「機械語レベル」と言っているかなんだが。
C++で書くときにいちいちレジスタやI/Oポートやニーモニックを意識するか?
むしろそうせねばならないとすれば、そっちの方が問題があると思うぞ。
ということなんだがな。
>>520 Pythonの欠点を盲目的に挙げてみれば、
実は他の言語にも共通した欠点を抱えており、
逆にPythonのいいところも分かるんじゃないかと
「他言語」では?
間違えちゃった・・・・・・
pythonの嫌いなところは デザパタ話だしたり、C++の話しだすところ。 スレ違いだってことを"""自覚"""できない奴がいるところ。
>>528 それは「言語の」特性ではないな。
もっとプレゼン能力を磨け。
>>528 ちゃんとプレゼンしないと上司を説得できないところも欠点だよなw
スレ違いだってことを"""自覚"""できない奴がいる
>>529 、君のことだよ
てか、隔離したデザパタ+pythonスレも全然伸びてないがな
ここで話してた奴、もっと向こうもりあげろよw
やだよめんどくさい
>>530 それは大いなる欠点だ。
もうPython使うのやめた。
中身のない話をするときに限ってスレがよく伸びる
そろそろメタクラ(ry
>>531 「プレゼン」とかいうキーワードにしか飛びつけない厨房乙。
537 :
483 :2007/03/10(土) 16:29:27
Zope最高! Zope様々! Zope万歳!
かわいそうに。こうはなりたくない。
宗教くさい流れだな。もしやR(ry
ぱいそんwww
Zope3最高! Zope3様々! Zope3萌え!
PythonのきらいなところはR○○○厨をひきつけちゃうところです。
>>541 かわいそうに.完全に負け組下流だな.
同じPython使いでもこうはなりたくない.
あっちいけよ、悪霊退散、シッシッ!!
RexじゃくてLexだろ
こんなマイナーな言語しってるなんて、相当の言語オタだね? というわけであの人に違いない(www
>>535 終った技術の話をしてもなあ
それより関数型プログラミングの話をしようぜ
それよりも _ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
import Tkinter as Tk canvas = Tk.Canvas(width=256*5-4+20, height=120) x=10 for i in range(0, 256): canvas.create_line(x,10,x,110,fill="#%02x%02x%02x" % (255,i,0)) x += 1 for i in range(1, 256): canvas.create_line(x,10,x,110,fill="#%02x%02x%02x" % (255-i,255,0)) x += 1 for i in range(1, 256): canvas.create_line(x,10,x,110,fill="#%02x%02x%02x" % (0,255,i)) x += 1 for i in range(1, 256): canvas.create_line(x,10,x,110,fill="#%02x%02x%02x" % (0,255-i,255)) x += 1 for i in range(1, 256): canvas.create_line(x,10,x,110,fill="#%02x%02x%02x" % (i,0,255)) x += 1 canvas.pack() canvas.mainloop()
>>551 wxPythonでまねして作ろうとしたら、
色の指定はwxPenオブジェクトで指定して、
wxDCのSetPenメソッドでwxPenを置き換えて、それで直線を描く、
って3段階になるから手間がかかる。
>>552 全然知らないで効くんだけど、一つ関数を書けば良いだけじゃなくて?
555 :
550 :2007/03/11(日) 04:19:25
>>553 断定口調は、それが外れたときに大恥をかく。
しかし、俺が職についていることを証明する手段は無い。
それ以前にまず本物の550だと証明する手段が無いだろう。
NumPyっていうモジュールのWindows版落としてインストールしたら.pyが C:\Python25\Lib\site-packages\numpy にインストールされたんですけどimportできません。 sys.path見ると C:\Python25\Lib\site-packages\ は入ってるんですが、もしかしてサブディレクトリのnumpy内のモジュールはパスに入らないんでしょうか?
558 :
デフォルトの名無しさん :2007/03/11(日) 10:35:12
C:\Python25\Lib\site-packages\numpy\__init__.py が本当に存在しているか? あれば import numpy ができるはず。 また import numpy 一行がどんなエラーを返しているのか、エラー・コメントを全部出せ
import NumPy ってやってない?
>>558 >>559 ありがとうございます。import numpyでできました。
numpy.pyというファイルがないのでnumpyでimportできるとは思いませんでした。
モジュールはファイル名と同じと思ってたのですが、違う場合もあるんですね・・・
自分で関数やクラスを設計しているときに「それは既出だよ」と忠告してくれるソフトはありませんか? Pythonの全部のモジュールを把握するの無理っぽい。
何のために名前空間があるんだ。
564 :
107 :2007/03/12(月) 05:25:24
Monarcのバイナリzip版を動かして見ようと試行錯誤してみたり、、、 readmeないからソース嫁に従う Monarc.pyから処理開始->app = Monarchore.MoApp(0) Monarchore->locale設定 conf読み込み MainFrame生成 self._frame = MoMainFrame(None, id, MA_APPTITLE, owner=self, config=self._config) def __init__にてcommunicatorを始動させるコードself.loadMenu('TF2', '2ch', None) 鮮やかにcommunicatorオブジェクトを取得する それをMoBoardMenuTreeに渡す。 self.AddRoot('Root')でトップノードにRootを追加。たぶんdef OnReload(self, evt)も そのとき呼ばれる topics = self.communicator.getTopics() にてカテ一覧を取得する 最後に self.Expand(self.treeroot) でツリーを展開しとく。 「結果」 Root - root むぅ。起動までは出来たけど、カテ一覧の取得 or それの読み込み部分 でこけてる罠。 やっぱりバイナリzipをそのまま動かすのは難しいぽ。wxpython入れてsrcコンパイルしないと駄目ぽ でもバイナリzip版って、py2exeでexe化してるから、python も wxpython もなくても dll の呼び出しだけで起動できるもの、なような気がするし、となると bbsmenuが移転したからカテ一覧の取得にこけてる??? でも運営とソフトウェアは 残ってるからその二つは今でも取得できそうだし。なんか意識が朦朧として来て 何言ってるか訳が分らなくなって来てる罠。もう寝るぽ。がっ。(もうグダグダ)
>>467 アホ上司の下で頻繁に変わる思いつきをコーディングさせられる2年は地獄だった
4月で脱出できるが
よ〜し パパ cgi を lisp で書いちゃうぞ〜
頭のとんがりと髪のとんがりを混同すべきではないと思うが
上司=朝日山親方
とんがり頭って訳してる人がいて そっちおぼえてしまった
575 :
567 :2007/03/12(月) 16:24:57
>>571 あり
後任は中国人らしい
誰もやりたがらない仕事だしな
ナポレンフィッシュみてえ
身長が低かったため、新弟子検査をパスするためシリコンを埋め込んだ後遺症(?)らしい。 気の毒な気もするな。
>>576 マゲ結ってる時期に引っ張りすぎたんじゃね?
>>572 _.. -‐ ' " ヽ ̄ノ^7__ < >
`ー ''"--―――-r⌒``~`゙゙`''ヘ/ < 異 議 あ り!! >
`ー--――ー---> 〜-、_, ', < >
`ー-- .._ へ/ くてi` 〈 ∨∨∨∨∨∨∨∨
`ー-_ | ^i , ノ _.. ‐ァ=r‐''⌒゙二ニ二つ
ヽr''ヘ、_ ,.-=ァ/ _. -‐ '"´ l l r} } }l
/ !、 {__// __ . -‐ ' "´ l ヽ 、 ヽ_ノノ
ノ 、  ̄ /-‐ ' "´/`゙ ーァ' "´ ‐'"´ ヽ、`ーテヽJ
_.. -‐''フ|フヽr-‐ ''''フ. ̄「´ / / __.. -'-'"
. ‐ '7 く/|〉-rへ. / l l / . -‐ '"´
「とんがり頭」と聞いて真っ先にこれを思い出した
知合いも、相撲鳥になるために頭にシリコン埋め込んでたわ
相撲鳥って飛びにくそうだな
飛べない鳥です
ただの豚です
無料の豚か
シェア豚もいるんでしょうか?
オープンポーク
pyjamasを使ってる人居ませんかー
・趣味プロジェクトにしか見えない ・1.0が出そうにない
結論: だからオレが使って作ってガンガンコミットする
StringIO.write()をつかうとUnicodeErrorが出るんですけど回避策あったら教えてください。 # -*- coding: utf-8 -*- from StringIO import StringIO io = StringIO() io.write(u'あいうえお') print io.getvalue(), ## UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128) マニュアルにはstringもunicode stringも使えると書いてあるんだけどなあ。
print io.getvalue().encode('utf-8') してみてどうなる?
597 :
595 :2007/03/13(火) 11:42:31
>>595 エラーになってたのはStringIO.write()じゃなくてprint statementの方だったorz
output = io.getvalue()
print output.encode('utf-8')
で問題なく動いた。
入門書嫁。
ハゲワロス >>>from __future__ import braces
柴田淳の新譜と "TurboGearsxPython" 買ってきた
GWTいいなぁ
pyPgSQLでPostgreSQLと連携したプログラムを書いてるんだけど、 pyPgSQL.PySQL.connect()の host って何を代入すればいい? apache 起動してないし、webと連携するわけでもないんだけど、localhost でいいのかな? ここでは場違いかもしれないけど、教えてください。
PostgreSQLが稼働してるホストを指定すればいいんじゃね?
ああ、んじゃたぶん localhost でいいや。 端末のタイトルが --@localhost だし。たぶんこれでいいんだろう。 ありがとう。
>>606 うむ。非常に恥ずかしいがそのままにしておこう。
>>603 apacheサーバは関係ない。SQLサーバのこと。
PostgreSQLはれっきとしたSQLデータベースサーバなので
ローカルマシン以外にも置けるのだよ。ってか普通。
608は何より人生が分かってないと思う。
coreduoマシーンでscipy 使って数値計算してるんだけど 計算速度を上げる為には,何をいじるべき? (計算のボトルネックは粗行列の線形方程式みたい.) デフォルトでインストールが最速なの?
> Updated Cygwin Package: python-2.5-1 キター
>>610 そういうアホな質問に「こうすれば速くなる」と答えられるような汎用の答えがあるのなら
それがデフォルトになっているとは思わないかね?
>>612 すまん,質問が悪かった.
200x200くらいの粗行列の線形方程式をscipy使ってpythonで解きたいんだけれど
デフォルトのバイナリをインストールするのが最適かどうか教えてくだされ.
614 :
613 :2007/03/14(水) 02:52:48
os:windows cpu:coreduo です
>>613 一般に、最適な解法は問題依存(つまり行列依存)なので何とも言えない。
SciPy の疎行列ソルバは UMFPACK または SuperLU らしい(つまり直接法ということ)。
なので反復法を使うとパフォーマンスが改善するかも知れない。
SciPy にはネイティブコードの反復法ライブラリは含まれてないっぽいので
そもそも SciPy という選択自体、最適でない可能性がある。
別の選択肢としては PyTrilinos とかその辺になるのかな(使ったことないので不明)。
一口に反復法といってもCG法(対称用)やらBiCG法(非対称用)やら掃いて捨てるほど
たくさん選択肢があるし、前処理(preconditioner)にもスケーリングだのILU分解だのと
色々あって適用するのとしないのとでは大違いだったりする。組合せは膨大。
よーするにあれこれ試すしかない。
atlas呼べばいいじゃない
3年待てばCPUが早くなって4倍くらいになるよ.
python2.5でMSVCR8.dllをハンドルしてるバージョンってある? extension作るのにVS2005使いたいんだけど
msvcr80.dllって、VS2005のSP1でモノが変わったんじゃなかったっけか。 自分でソースからコンパイルするのが一番無難だと思うけど。
「たった一度だけ動けばいいんだが実行に1時間かかるプログラムを30分に短縮しようとして3日悩む」ようなものだね。
622 :
デフォルトの名無しさん :2007/03/14(水) 15:45:41
プログラムの中で、64bitマシンで実行されているか32bitマシンで実行されているかの 条件分岐を行いたいのですが、どうやったらこのbit数を取得できるでしょうか? 環境はPython 2.4です。
「最適化の第一原則は“最適化するな”だ」
>>622 何のために区別したいのかにもよると思うが、Windowsなら
>>> import sys
>>> sys.platform
'win32'
で得られるような希ガス。Python2.5なら
>>> import ctypes
>>> ctypes.sizeof(ctypes.c_void_p)
4
ていう手もあるが、これも確実とは言いにくいな。
>>> import sys, math, platform, struct >>> platform.architecture() ('32bit', 'WindowsPE') >>> struct.calcsize("P") 4 >>> math.log(2*(sys.maxint+1),2) 32.0 これも確実じゃない・・・よな
64bitマシン上で32bitのpythonを動かす場合とかもあるし、 WindowsならGetNativeSystemInfo 呼ぶのが確実じゃね? 他のプラットフォームはわからん。
/proc みたらいいんじゃね
>620 べつに30分に短縮できなくてもいいから、 もうちょっとすっきり書きたいと思って 1週間悩むっていうのならいつもやってる
629 :
622 :2007/03/14(水) 22:09:43
>>624 > 何のために区別したいのか
あるプログラムを64bitマシンで動かすと不具合があって、
struct.pack('L', l) を struct.pack('I', l) に直すとOKだったとのこと。
この辺りのことが自分もよく分かってないのだけど、どの環境でも
動くようにするには条件分岐させるのがいいのかなと。
自分のもとには32bitマシンしかないので確認できる環境もないのだけど。。
>>629 32bitか64bitかで分岐するんじゃなくて、不具合を起こすかどうかを実行時に調べて分岐するというのはどうですか。
符号なし32bit整数としてpackしないとダメってことかな。64bitマシンでも intは32bitらしいから。もっといい方法がありそうな気もするが: import struct for format in ('B', 'H', 'I', 'L', 'Q'): if struct.calcsize(format) == 4: I4 = format break else: raise "no 32bit integer" print I4 # このフォーマットを使う
64bitマシンと言ってもいろいろあるからな。SPARCとかAlphaだとちょっと勝手が違うかも。
VMwareとかVirtualPCとかQEMUとかで 試すことはできへんの?
googleの社員がつくってるのかな・
ちがうしょ。 google codeに登録してるだけでほ
それはただの通過点。jython-devじゃみんな2.3とか2.5のことばっか妄想してる。
いまさら2.2ではちょっと安心できないわな
>>629 struct.unpack('Q', chr(0)*8) を試す.
#python-jpってチャンネルがあると聞いてIRC久々に立ち上げてみたら誰もおらん・・・さびしい
質問です。以下のプログラムで中国語のテキストをユニコードに変換してコピーしようとしているのですが、 短いテキストならば問題なくコピーされるのに、大きなファイルになるとエラーが発生して途中までしかコピーできませんでした。 何が原因なんでしょうか・・・ import codecs fin = codecs.open(r"c:\data\itest.txt","r","GB2312") fout = codecs.open(r"c:\data\outputfile.txt","w","utf-8") for line in fin: fout.write(line) fin.close() fout.close()
改行コードがおかしくて一行がメモリに載らないくらいでかいか、バイナリモードで開いてなくて嘘ヌル文字に到達するから。
みんpyより136ページ薄くて同じ値段か・・・かなり微妙・・・
>>642 どのくらいのサイズなのか、どういうエラーが出るのかぐらい書いてほしい
>>644 同じ著者がノキアの携帯でPythonを使うって本だしてるけど
こいつPython知ってるのか、というような内容だったよ...orz...
>>637 2.2っていうのはpython2.2準拠っていういみなのね・・・
>>638 2.3や2.5の仕様が既に固定してる時点で妄想でもなんでもないような・・・
ああ、Nokia本のひとか、・・・我が道を行く人なんだね、・・きっとw 確かNokia本の前書きで、まだpythonはじめてから日が浅いですみたいなこと書いてたような・・・w
650 :
642 :2007/03/17(土) 01:32:41
>>646 すみません、中国からのアクセスは不安定でなかなか書き込みできないみたいなんです。
元のテキストは54KBです。
モードをrb,wbにしてみるとヌル文字はスペースで変換する旨のエラーが出ました。
一番下のエラー見る限りコピーしようとしてる原文に問題があるんでしょうか。
Traceback (most recent call last):
File "C:\filecopy.py", line 6, in <module>
for line in fin:
File "C:\Python25\lib\codecs.py", line 619, in next
return self.reader.next()
File "C:\Python25\lib\codecs.py", line 556, in next
line = self.readline()
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 83-84: illegal multibyte sequence
IronPythonの本のほうが気になるなぁ たぶん買わないがw
fin = codecs.open(r"c:\data\itest.txt","r","GB2312", "replace") とか fin = codecs.open(r"c:\data\itest.txt","r","GB2312", "ignore") にすればとりあえず変換できるとは思うが、それでいいのかは何ともいえないな。 日本語みたく中国語にも複数エンコーディングがある可能性も捨てきれんし。
すげー国だなw、想像の範囲外w、
国丸ごと特定のページ見せないってのも一つの技術だとは思うが・・・w
657 :
642 :2007/03/17(土) 16:35:17
Wikipediaは直接接続できませんが、プロキシを介すと閲覧はできます。
編集はできないけれど閲覧ならできるということで中国政府もバランスを取ってるんでしょうね。
一時期Googleが全面的にシャットアウトされて大学中が大混乱に陥ったこともあります。
みなさんありがとうございます。codecs.openにreplaceを追加すると問題なくコピーできました。
ですがこの場合エラーを無視しているということですよね・・・うーん歯痒い・・・
問題のある原文をうpろだにあげてみました。
ttp://aip.heteml.jp/cgi/file/data/data1.txt
総当り: rawin = file('data1.txt', 'rb').read() for enc in ('gb2312', 'gbk', 'gb18030', 'hz'): print enc.ljust(10), try: rawin.decode(enc) print 'YES' except UnicodeDecodeError: print 'NO' 結果: gb2312 NO gbk YES gb18030 YES hz NO 改良: import codecs codecs.open('out.txt', 'w', 'utf-8').write( codecs.open('data1.txt', 'r', 'gbk').read() ) 正しく変換できたかどうかは判断のしようがないので知らん。
>>644 python覚えて、ある程度使えるようになったから、
もっとハードコアなやつが欲しい。
入門書が一番需要があるんだろうけどさ。
TurboGears × Python」購入した。 本に掲載のサンプルコードが取れるかとおもって出版社のサイトには ないし、作者の名前でググってみたらオフィシャルサイトがあったんで、 いってみたらびっくらこいた。
もう柴田淳ちゃんネタはいいよ
すみません、質問です。 pythonでゲームを作っています。 アドベンチャー形式で物語を進める場面があり、そこは簡単なスクリプト言語のようなもので書けるようにしたいのですが、 pythonで実装するにはどうすればいいのでしょうか? 自分でスクリプトを作るという感覚がどうもよくわからないのです。
幼稚園児にいきなり微分方程式の解き方を教えてくれと言われてもどこから 説明していいのか判らないようなもんだな。
知ったかぶり力を最大限に発揮して・・・。 じゃあ、とりあえず [wait time=200] *start|スタート [cm] これはてすとです。[l][r] 改ページします。[p] [cm] 改ページしました。 みたいなのを要素ごとに切り出せばいいのね? それで・・・どうすれば。 一個一個よみこんでそれに対応した動作をすればいいのかな?
とりあえずあなたが寝ないうちにありがとうと言っておく。 参考にします。
アドベンチャーゲームのスクリプト程度なら馬鹿正直に自前で構文解析を せずに、XMLを使ったほうが楽だと思うぞ。
てか Python でいいじゃんw
>>664 lex yaccとか使えないへたれな俺が良くやってるのは、
[{'wait time':200,(ry
みたいに、pythonリスト&辞書で表現したい内容を全部書いておいて、
それをread&evalして必要な情報を引っ張り出すみたいなのが相当楽。
まあ、アドベンチャーのスクリプトはやったことないのでうまくいくか知らんけど
普通にPythonの関数としてwaitだのなんだのを作っておいて、Pythonのプログラム として実行するほうが100万倍融通が効くだろ。俺言語発明する理由が理解できん。
671 :
デフォルトの名無しさん :2007/03/18(日) 15:03:42
pythonで簡単にFlashゲームの創れるライブラリとかありませんか?
Flashでゲーム作りたいならFlashの勉強したら? ActionScriptってJavaScriptなんだし
そっか。 pygameの出力がswfになればいいのに。
swfをジェネレートするライブラリは需要ありそうだな。既にあるかもしれんが。
676 :
デフォルトの名無しさん :2007/03/18(日) 20:06:45
Python で Connection: keep-alive なブラウザ作ってる人っていませんか? urllib, urllib2 にある機能では必要なオブジェクトが内部で完結されていたりして使えず、 httplib.HTTP をつかっても二度目のレスポンス取得(getreply)がうまくいかなかったりと期待する動作になりません。 import httplib a = httplib.HTTP('127.0.0.1') a.putrequest('GET', '/test1.html') a.putheader('Connection', 'keep-alive') a.endheaders() errcode, errmsg, headers = a.getreply() size = int(headers['content-length']) page1 = a.getfile().read(size) a.putrequest('GET', '/test2.html') a.putheader('Connection', 'keep-alive') a.endheaders() errcode, errmsg, headers = a.getreply() size = int(headers['content-length']) page2 = a.getfile().read(size) a.close() print page1 print page2 上記を試すと、二度目の a.getreply() で例外が発生します。 httplib.ResponseNotReady 例外を無視して page2 = a.getfile().read(size) を実行すると、 2度目のリクエストに対するページの内容が取得できます。 (sizeが取得できていないため、test2.html が中途半端に取れたりします) keep-alive について勘違いしてたりしますかね? telnet で同じようにリクエストを送れば期待通りの結果になるので、間違ってはいないと思うんですが・・・
httplib.HTTPConnection のほうを使ってみては?
単純に HTTP → HTTPConnection にしてみましたが、 getreply → getresponse のところで(2回目で)同じように ResponseNotReady が返ってきました。 も少し調べてみます。
>>678 httplib2 をつかえば、できるようだけど?(未確認です)
HTTPConnectionを使った新しい方法ならちゃんと取れる。 後方互換用のHTTPクラスで、しかも getfile を使った方法となると なんか変なことを内部でやってるっぽいのでやり方がわからない。 HTTPクラス自体は HTTPConnection をラップして適当に昔のインターフェースに合わせてるだけっぽいので ちゃんと呼び出しを律儀に見て行けばいつかはたどり着くと思う。
>>682 すみません、urllib2がsocket閉じれない問題に遭遇してからurllib→httplibと下がっていっていろいろ混乱してました。
まだ確認してませんが頑張ってみます。
import httplib2
headers = {
'Keep-Alive' : '300' ,
'Connection' : 'keep-alive' ,
}
h = httplib2.Http()
resp, content = h.request("
http://python.org/ " , headers = headers)
con = h.connections['
http:python.org ']
print h.connections
print con.sock.getpeername() , "<=>" , con.sock.getsockname() , len(content)
print resp['keep-alive']
resp, content = h.request("
http://python.org/images/python-logo.gif ", headers = headers )
con = h.connections['
http:python.org ']
print h.connections
print con.sock.getpeername() , "<=>" , con.sock.getsockname() , len(content)
print resp['keep-alive']
----------
{'
http:python.org ': <httplib.HTTPConnection instance at 0xb7da288c>}
('82.94.237.218', 80) <=> ('192.168.10.5', 42058) 12375
timeout=15, max=100
{'
http:python.org ': <httplib.HTTPConnection instance at 0xb7da288c>}
('82.94.237.218', 80) <=> ('192.168.10.5', 42058) 2549
timeout=15, max=99
質問です。WindowsXPでPython2.5を使っているのですが、 リスト内の文字列などがエスケープされたまま出力されるのを抑える方法ありませんか? 対話環境でいうと >>> print ["あ"] ['\x82\xa0'] となるところを >>> print ["あ"] ["あ"] としたいのです。
encodingについて学習すると良いね
バイナリデータを覗きたい時にすごーく昔書いた 16進ダンプがこんななんですけど、もっとカッコイイ方法ってありますか? def dumphex(s): bytes = map(lambda x: '%.2x' % x, map(ord, s)) for i in xrange(0,len(bytes)/16): print ' %s' % string.join(bytes[i*16:(i+1)*16],' ') print ' %s' % string.join(bytes[(i+1)*16:],' ')
動けばイイんじゃねーの?と思いつつ。 def dumphex(s, format='%02x'): for i in xrange(0, len(s), 16): print ' '.join(format % ord(c) for c in s[i:i+16])
いきなり答えっぽいのが出てつまんねーな、と思いつつ。 def dumphex(s, format='%02X'): for n, c in enumerate(s): print format % ord(c), (n%16==15)*'\n',
693 :
691 :2007/03/20(火) 20:08:36
短くしてやった。 動けば何でもよかった。 今は反省している。
def dumphex(s): l = list(s.encode("hex-codec")) m = map( lambda x: l[x]+l[x+1] , xrange(0,len(l),2)) for x in map( lambda x: m[x:x+16] , xrange( 0, len(m) , 16 )): print string.join( x , " " )
>>689 ありがとうございます。確認できました。サンプルがHelpにあったとは・・・
a.decode('Shift_JIS', 'ignore') と a = codecs.decode(a, 'Shift_JIS', 'ignore') の違いってどの辺にあるのでしょうか?
>>690-690 この hexdump って 周期的に 湧くなぁ(^^;
でもって 漏れは binascii.b2a_hex(), binascii.hexlify() に一票!
16ごとに切れないんだけど・・・↑
699 :
デフォルトの名無しさん :2007/03/21(水) 13:09:21
↓の結果は、 class A(object): def __init__(self, fields=[]): self.fields = fields print "A:", self.fields class B(A): def __init__(self): A.__init__(self) self.fields.append("A") print "B:", self.fields b = B() b = B() ↓になると思ったのですが、実際は A: [] B: ['A'] A: [] B: ['A'] ↓になります。 A: [] B: ['A'] A: ['A'] B: ['A', 'A'] これは正しい動作なのでしょうか??
701 :
デフォルトの名無しさん :2007/03/21(水) 13:57:39
>>700 ありがとうございました。デフォルト引数を使用する際は、
注意したいと思います。
perl の Devel::Trace みたいに、起動してから終了するまでを 全部トレースできる方法教えてください。
つまり L=[:] とか使えばいいわけだな
pdb.set_trace() じゃインタラクティブデバッガだな。まぁ普通はこっちのほうが楽だが。
perlのように x['A']['B']='C' x['A']['D']='E' という辞書の辞書をいきなり書くことは出来ないのでしょうか 上記の例だと x={} x['A']={} と二回初期化(?)をすれば可能なのは分かりましたが、keyを持たなければ そのkeyで初期化、というコードが分かりづらいので、一度に書ければ分かり やすいのですが。
これじゃダメなん?
>>706 >>> x = {'A':{'B':'C', 'D':'E'}}
>>> x
{'A': {'B': 'C', 'D': 'E'}}
>>> x['A']['B']
'C'
>>> x['A']['D']
'E'
> keyを持たなければそのkeyで初期化 そのための setdefault というメソッドがあるんで、それを使えば x={} x.setdefault('A', {})['B'] = 'C' とできる(最初の初期化は必要だけど)。 分かりやすさは・・・いまひとつかも。
>>706 Pythonの辞書型はタプルもキーにとれるから、x['A', 'B'] = 'C'といった感じで書けるよ。
710 :
706 :2007/03/22(木) 13:05:03
>>707-708 実際は
A,B,C
A,D,E
・・・
というファイルがあって、これを読み込みたいんです。
keyが’A'だけとか固定ならいいんですけどいろいろ変わりますし。
python 辞書の辞書でぐぐっても無いのは、perlのコードをそのまま
持ってくるのが変なのかと思ったのですが、pythonらしいコードが
他にあるんでしょうか。
>>710 ファイルを読んでなにをするの?
Aから始まる行の総数を集計するとか?
hexdump の方法をいろいろアドバイスありがとうございます すみません、次なる質問なんですが バイナリデータの中に3byte (24bit)のカウンタというか測定値が 埋まっていることが分かりました。 2byte, 4byte なら struct.unpack でこんな感じ: struct.unpack('>I', somechararray[172:176])[0] でいけるみたいですね。でも24bit 分を抜き出すってのが出来ません... 32bit で読み出して & 0x00ffffff するのが正解ですか?
714 :
706 :2007/03/22(木) 13:43:22
>>709 あ、すごい簡単に書けるんですね。
ちょと感動
>>712 DBから吐き出したCSVを読み込みたいんです。
>>713 きっちり3byteしか入ってないのに4byte読んだら、ゴミが入るでしょう。
struct.unpack()でパースしたいなら、
3byte読んで、ヌルバイトを頭かケツにくっつければよい。
データはビッグエンディアンのようだから、
struct.unpack('>I', somechararray[172:175].insert(0,chr(0)))[0]
のような感じで良いのでは。
4バイト読んでマスクしたほうが速いんじゃないかな
717 :
715 :2007/03/22(木) 14:54:24
考えてみればどうせマスクするんならゴミを読んでもおkだよな スマソ
718 :
713 :2007/03/22(木) 15:34:36
>715-717 thx やっぱり C な感覚(?)で mask しる! でいいんですね。 もとが 4byte なく本当に 3byt しかないときは >715 のようなやり方がつかえるってことですね。
くだらない質問ですみませんが、 pythonのどこらへんが Monty Python Flying Circus から由来している みたいなトリビアがあったら教えてください。
FAQに書いてある内容が全てなのかな。実はこのパッケージ名/関数名/変数名は
このシリーズに由来してる、とかそういうのあるかなと思ったのですが :-p
http://python.rdy.jp/ ↑ いいサイトだな。ありがと。
windowsでcryptモジュールと同様のことがしたいときはどうすればいいのでしょうか?
無駄にかっけえw
駄本には駄本なりの表紙。 良本には良本なりの表紙。
おっPython
>>731 ネタはともかく
pycryptoがあればたいがいなんとかなる
みんな、IronPythonの何にそんなに期待してるの? どういうメリットがあんの?
736 :
734 :2007/03/25(日) 17:07:58
環境は、WinXP、Python 2.4.4: C:\Python24\python.exe ImportError: No module named fcntl args = ('No module named fcntl',) というエラーが出てうまくいきませんでした
pykfってもう公開してくれないの?
PythonでProce55ingみたいな事が出来る方法、拡張とかってありますかね? セルオートマトンやL-Systemを描画するための描画ライブラリーであったり、 3Dのモーショングラフィックみたいなのを表示するための描画ライブラリーであったり、 動画を読み込んでエフェクトかけて動画ファイルに書き出したりとか。 Javaより動作が遅いのであまり現実的じゃないんでしょうか?
>>739 グラフィックス系の処理はできるけど、
グラフィックス系のらくちんなライブラリはProce55ingほどたくさんはないと思うよ。
処理速度的な話なら、PurePythonなライブラリでもない限り問題ない。
pygame系でいろいろあさってみてはどうだろう。
あとはJythonからJava系のライブラリを使うとか。
pythonて、有償ソフトに組み込んでも大丈夫なの? 出荷した後で「ソース公開しる!!」とか言われない?
Python自体はオッケー。 サードパーティーモジュールのライセンスには気をつける必要あり。 >出荷した後で「ソース公開しる!!」とか言われない? とはいえ、配布するスクリプトは言われるまでもなく公開状態とほぼ同じになるわけだが。
>>734 ありがとう
ということは、標準配布されてるモジュールしか使わないなら問題ないわけか。
スクリプトも、自前で簡易暗号化したファイルを持っておいて、
メモリ上に展開してCから直接Python呼び出すようにすれば
ナマのスクリプトファイル入れなくても大丈夫ってことね
会社で「専用スクリプトつくれ」とか言われたんだけど
仕様を聞くとどう考えても自前で作るよりフリーのスクリプトを
組み込んだ方が高性能かつ速そうなので。
早速オライリー買って来て研究してみまつ。
745 :
デフォルトの名無しさん :2007/03/27(火) 13:58:39
この人、Python歴6年だったのか
Zope臭が。
ちょっと前にエロゲにpythonが組み込まれてた疑惑がなかったけ
それなんてエロゲ?
Python歴40年の俺にはかなうまい
俺も股間でPythonを飼い出してから30年近くになるぜ
752 :
デフォルトの名無しさん :2007/03/27(火) 18:46:00
>>743 とはいえ、配布するスクリプトは言われるまでもなく公開状態とほぼ同じになるわけだが。
py ファイルではなく pyc ファイルを配布すればいいだろうが。
つ dis.disassemble
専用スクリプトなんて、どういう場面でどういうメリットがあるんだろう・・・
組み込みならLuaのほうが向いてると思うけど。
>755 それ、よく聞くけど、何故? 本体が小さいから?
どうして首がないんだろう。
.pyoじゃねぇの? と重箱
ぴょ?
リバースエンジニアリングを防ぐ最良の方法は、リバースエンジニアリングしたくなる ほど凄いものは作らないように気をつけることだよな。
まぁ、雇われの身ならリバースエンジニアリングされますたっつーても 給料が下がるわけじゃないだろうが。
>>763 雇われてからそういうことを言えよ、な。
一生ニートでいられるなんてうらやましい
まあ、享年20何歳とかでも一生は一生だしな
殺すなよ(ww
そうか俺はニートだったのか。 知らなんだ。気づかせてくれてありがとうw
勤め人でも心はニート。 一般的には社内ヒキコモリとか呼ばれるのかな?
たとえどんなに稼いでしまっても、ニートの心を忘れずに生きていきたいものですね
心がニートで人生楽しいかなあ...?? Pythonで言うとモジュールをインポートしないでコードを書くかんじか(www
ちがうよ、コードを書かずにモジュールだけもらう。
windowsでマウス操作に関する自動化したいのですが pythonでもできるのでしょうか? 例えば パワーポイントの4ページ目の中央にjpg画像を貼る というようなことができればいいのですが
あいあんぱいそん?
あいあむぱいそん(゚∀゚)
>>774 COMインタフェイス使えるから余裕で可能。
>>777 中央からちょっとずらして貼るとかもできるのですか?
だったらロケットマウスから乗り換えます
>>773 壮大なプロジェクトを夢想しているけど、
実際は毎日
import this
してるだけ何でしょ
from __future__ import VeryBigDream もしてる
>>778 COM インタフェースを使う場合は、マウスを動かすのではなく
PowerPoint を直接制御することになると思われ。
毎日from __future__ import bracesして鬱になっている俺が来ましたよ。
なんか変わるの?
>>780 File "<stdin>", line 1
SyntaxError: future feature VeryBigDream is not defined
まず、VeryBigDreamを定義するところから始めた方がよいらしい
>>784 SyntaxError: not a chance
>786 RuntimeError: too late
おまえら Traceback すら無しか
5種類以上のクラスを使うような規模ではクラスごとにソースファイルを分割する 方針でやってるんだけど、お前らはどうですか。 でもインスタンシエイトする文が冗長になってくやしいっ
なんで冗長になるのよ
ああ、hageClass.pyってファイル名なら from hageClass import hageClass ってやれば hage = hageClass() でいいのか。 今まで hage = hageClass.hageClass() と律儀にやってた。 頭沸いてるな、寝るわ。
まず早寝早起きから始めようよな。 ビッグドリームを夢見るのはそれからだ。
自分ならクラス分割するとき冗長になるような名前付けはせず、 モジュール名込みで初めて意味が通るような名前付けをする。 そうすると修飾が野暮ったく見えなくなって気分がいい。 import 機能名 x = 機能名.具象クラス名() ie) filedb.Database, bbspost.Dialog まあ場合にもよるけど、ほとんどの場合はこう命名できる。
>>795 が正論。逆に言うとこの規則に従うなら「5種類以上のクラスなら分ける」などと
いうことに拘らないほうがいい。
仕事じゃJava漬けだから、Pythonでもついファイル名を具象クラス名にしちゃうんだよね……
そこでJythonですよ
pythonからJavaに戻ると、1ファイル1(public)クラスの制約がうっとーしくてしょうがない。 あれはIDEに頼りたくなる気持ちもわかる。
そこで C# ですよw
モジュール分割ってガイドラインとか無いよね? どこでひとつのモジュールに区切っていいのか相当悩む場合がある・・・
ガイドライン: 他の奴のことも考えてくれ Carbon.Xxx うざすぎ。
いくつかのコードのベンチマークをとりたいのですが、 perlのBenchmarkモジュールみたいなものってないでしょうか? ググッたところpybenchというのを見つけたのですが、これってpython自体のベンチマークソフト という認識でいいでしょうか?
>803 Python2.4 チュートリアル10.10 Python2.4 ライブラリリファレンス10章
hotshotの使い方 def main(): func() def profile(fname='test.Prof',mode=True): import hotshot if mode: prof=hotshot.Profile(fname) prof.run('main()') prof.close else: import hotshot.stats stats=hotshot.stats.load(fname) stats.strip_dirs() stats.sort_stats('cumulative') stats.print_stats(80) debianでは、ライセンスの関係で、profilerがついてこないので注意が必要です。
from threading import Thread で ImportError: cannot import name Thread となるのですが何がいけないのでしょうか? IDLEでだと問題ないのですが・・・
threadのないpythonを使っているとか?>806
IDLEでいけてるなら違うんじゃね?
806の頭がおかしいんだよ。
それだな
カレントディレクトリに独自の threading.py があるんじゃない?
>>806 import threading にして threading.Thread で試してみたら?
それでダメなら dir(threading) を表示して、Thread があるか確認してみるとか。
813の頭もおかしいらしい。
IDLEとコマンドラインで別のpythonを参照してるなんて可能性も‥‥‥
近くに潜んでいるディオが時止めで錯覚を起こさせてるかもしれない。 耳をすませてみて「ムダムダ」とか「ウリー」とか聞こえたらその可能性が高い
expecto Patronum: raise
皆様レスありがとうございます
>>812 それでした
むしろスクリプト自体がthreading.pyでした
ボケてました、馬鹿です、春です、申し訳ありませんでした
マヌケがァ〜〜〜!
Rubyの方が向いていると思うよ。
Perl7の方がいいんじゃねえかなぁ
マヌケだけどありがち
PyXMLでWebから取得したXMLをパースしようとした所(PyXML-0.8.4/demo/sax/saxtrace.pyを使ってます) 半角アンド(&)部分でfatalErrorとなりそれ以上パースしてくれません。 半角アンド(&)を正しく読み込ませる方法などありませんでしょうか。
ヤスパース
どこかで面白いエイプリルフールやってませんか?
つまらない
早速割り箸買ってくる!
粉糖と重曹も忘れるなよ
でりぽは普段からネタっぽさ全開だからなw コンビニわりばしがえらいたまってる俺にはかんけいないぜ ……で、重曹はどこに売ってるんだろう
おまえら重曹を買うときは食品グレードのものにしろよ。掃除用を食うのは不衛生だぞ。
去年の大掃除に重曹使った。換気扇の油よごれもよく落ちたよ。 何より手あれほとんどしないっていうのがいいね。 ていうかここはいつからライオンのお掃除スレに
掃除は大切だろ。掃除や洗濯にこだわりのない奴はろくなプログラム書けない。
早速掃除してくる!
きれい好きで発想力の無いヤツと 掃除洗濯はずぼらだけど発想力のないヤツを比べると 後者の方がプログラマとして優秀だよな ただのきれい好きは置換可能だけど 発想力のあるヤツはそういないので、置換不可能だし
屁理屈こねてる暇があったらさっさと掃除しろ、布団干せ>836
>>836 ちょっっ、どっちも発想力ないならきれい好きがいいだろ
ごめん、マジで間違えた...orz... 要はきれい好きかどうかより発想力があるかないかのほうが貴重な能力だ ということを言いたかっただけだ
840 :
642 :2007/04/02(月) 13:46:01
前回はエンコードの問題でお世話になりました。みなさまありがとうございます。 今回もエンコードに関する質問です。URIのエスケープ文字(空白が%20とかの)をデコードするためurllibのunquote()関数を使用しました。 ところがどうやらこの関数で返される文字列はデフォルトで日本語のエンコードのcp932にされてしまうようなのです。 中国語のエンコードであるgbkでデコードされた文字列を返すにはどうしたらいいのでしょうか?
841 :
642 :2007/04/02(月) 13:46:46
すみません・・・ageてしまった・・・
発想力だけで書いたスパゲッティソースなんて誰も見たくないし バグが出たら本人でも触れないようなのは、プログラムでもなんでもない。 単なる文字の羅列だ。 部屋を片付ける時間をソースの整理に当ててるなら判るが、そんなやつはもともと散らかさない。
と,綺麗好きだけが取り柄の842が言っています.
馬鹿以外全員がうなずくところに噛み付くのって ある意味玉砕だよなぁ。
うんうん。そうだね。
>>840 unquoteはquoteされた7bit文字列を元のバイナリに戻すだけだ。
文字コードは関係ない。
>>> u"あ".encode("cp932")
'\x82\xA0'
>>> quote(u"あ".encode("cp932"))
'%82%A0'
>>> quote(u"あ".encode("euc-jp"))
'%A4%A2'
>>> quote(u"あ".encode("utf-8"))
'%E3%81%82'
>>> unquote(quote(u"あ".encode("cp932")))
'\x82\xA0'
unquoteしてcp932の文字列が出てきたと言うなら、それは元々cp932だったということ。
>>842 詭弁の代表例
極端すぎる例を持ち出すな
掃除とか整理整頓以前に
人間力を磨いた方がいいと思うぞ
人間力(笑)
(笑)(笑)
SEってこういう話好きだよな
超がつくほど綺麗好き ほんとは異常な潔癖性 他人を馬鹿呼ばわり 発想力がないとたしなめられる毎日 心に秘めるビッグドリーム ※間奏
>>839 その結論は当然だろうが、掃除の話をしてるのに唐突に発想力の話を持ち出すところに
君の掃除能力に対する劣等感が見られて興味深い。
発想力と掃除能力が負の相関を持っていることを示せば多少説得力のある議論になる
ので、今後の精進に期待したところである。
人間力(笑)
で、掃除の能力とプログラミングってどんな関係があるの?
>>852 「発想力」という言葉が君にとって劣等感をくすぐる言葉であるということがよく分かったよ.
リファレンスカウント法の是非が問われているのだよ
857 :
642 :2007/04/02(月) 16:03:55
>>846 ありがとうございます、少しだけ理解が深まりました。
現在扱っているデータが下のように、unicode()関数を使わなければ文字化けする部分とquoteされた7bit文字列のままで十分な部分が混在しているのですが、そのような場合はどうやって文字化けを解消すればよいのでしょうか?
>>> print urllib.unquote("%E8%AE%B8%E5%B7%8D") #文字化けせず
许巍
>>> print urllib.unquote("%d5%c5%f6%a6%d3%b1") #文字化け
ユナモア
>>> print unicode(urllib.unquote("%d5%c5%f6%a6%d3%b1"),"gbk") #文字列は上と同じ。文字化けせず
张靓颖
あとunicode()を使った場合type()でみると<type 'unicode'>となり、<type 'str'>とはなりません。これら二つは排他的な関係にあるのでしょうか?
私自身がどこかで根本的な勘違いをしていることは理解できるのですが、その点についても教えていただければ幸いです。
>>855 ぐだぐだ言ってないでさっさと掃除しなさい
>>857 えっと、簡単に言うと print が元凶
真の勝者は普段から散らかさない努力をするものだ 故に掃除掃除と言っている奴は敗者である おまけに発想力もないならプログラマとしてまったくもって見込みがない
そこまで粘着するなら、まず発想力というものをきちんと定義してくれ
>>861 ぐだぐだ言ってないでさっさと掃除しなさい。
>861 >そこまで粘着するなら ニヤニヤ
>>857 strをかえす関数が用意さてています。:)
発想力 vs 掃除力 のスレでも立ててそっちでやってくれ。 正直どちらも興味ない。w
>>859 ,
>>864 ありがとうございます。とりあえずPythonの宿題スレで丸投げてきました。
みなさまのコードを見ながら勉強の参考にさせてもらおうと思います。
また問題ができましたら質問することになるかもしれません、そのときはまたよろしくお願いします。
うわはははははははは、 すごい根性
だれかコイツを掃除してください。
┌┴┴┴┴┴┴┴┴┴┐ | | | ● ● | (○┘ ______ └○) | ______ | _______________ /__________\ / || | | | | ||<おでかけですか〜♪ レレレのレ! || └―┘ └―┘ || \ \\ ┌―┐ //  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \\ | | // ( 〇) \ ̄ ̄ ̄ ̄ ̄ ̄/ ∩ || `――┐┌―-′ /└┴┴つ / ̄ ̄ ̄ ̄/――( ∫ | / ̄| ̄\__) /⌒\/___ノ |_/ || /λ \ __∠ || / )\  ̄\ λλλ (/ | ) \_ノ \______/ / | /∠_ / | (__) ノノ人人
おまえは、はき散らかしてるだけだろ
┌┴┴┴┴┴┴┴┴┴┐ | お掃除大好き | | ● ● | (○┘ ______ └○) | ______ | _______________ /__________\ / || | | | | ||< 消毒消毒、清潔第一!! || └―┘ └―┘ || \ \\ ┌―┐ //  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \\ | | // ( 〇) \ ̄ ̄ ̄ ̄ ̄ ̄/ ∩ || `――┐┌―-′ /└┴┴つ / ̄ ̄ ̄ ̄/――( ∫ | / ̄| ̄\__) /⌒\/___ノ |_/ || /λ \ __∠ || / )\  ̄\ λλλ (/ | ) \_ノ \______/ / | /∠_ / | (__) ノノ人人
汚物は
はいはい、消毒だー
875 :
デフォルトの名無しさん :2007/04/03(火) 01:34:43
a=1.2 a=1.2+1.0000000000000000 ってやるとaが 2.2000000000000002 になって困ってます どうやったら解決しますか?
>>> from decimal import Decimal >>> Decimal('1.2') + Decimal('1.0000000000000000') Decimal("2.2000000000000000")
ありがとうございます
ほんとにぱいそん信者は使えないねw
>875 ぶっちゃけ何が困るのか分からない人が多数
なんとなく気持ちが悪い
>>880 こういう現象をみて「なんでだろう?」と考えることが重要。
この現象が起こる原因を学ぶことによって得られることはとても多い。
こういうことを気にしない奴は三流。
それをいちいち口に出す奴は四流
ごみ掃除に命をかけるのが二流。 ごみ掃除が必要ないコードを書くのが一流。 そして、ごみ掃除は他人任せな勝ち組のオレ。 え? そういう流れじゃないの?
>>884 三流呼ばわりしてごめんな、この5流野郎(wwww
「株を引っ張るおじいさん、それを引っ張るおばあさん」みたいな
掃除をする桃太郎。
まちがえて職場でpython.comにアクセスしてしまった orz
thikpad(T43)を使っているんだけど、c:\IBMTOOLS\python22にはじめから pythonがインストールされていて、pathもデフォルトで設定してあります。 この状態かから、2.5をインストールした人いますか? 別の場所にインストールして、pathを書き換えたときにPCがちゃんと動くか心配‥
カイーコ
python.com 知らんかった 左側に Powered by Python 書いてあるぞい. どんなpythonだから知らないけど…
>>890 Pythonは違うバージョンの共存で気をつけることはほとんどないよ
スクリプトを実行するときにどのバージョンのインタプリタを使うかってだけ
困るとしたら.pydタイプの拡張モジュールが当該バージョン向けに提供されてないとき
895 :
デフォルトの名無しさん :2007/04/03(火) 22:09:07
Google社内で失踪したPythonが見つかりました その代わりといってはなんですがPythonの父が失踪しました
898 :
890 :2007/04/03(火) 23:09:54
>>894 ありがとうございます。
まずはインストールしてみます。
>>889 エロサイト乙www
ウチの職場に18禁サイト巡回してた奴が居て
俺らまで外部ウェブアクセス全て禁止になったぞw
…(´□`
学生時代友達が見てる前で gooのエロサイトの方開いちゃって気まずい沈黙が流れたこと思い出した
神社 …
http://jinja.pocoo.org/ [...] provides a Django-like non-XML syntax and compiles templates
into executable python code. It's basically a combination of Django
templates and python code.
>>900 goo.co.jpナツカシスw
今もう無いね
>>903 エロサイトとは言え、いくらなんでもあの判決は酷過ぎると思った。
後から別ドメイン取ったヤツが自分とこのアドレスと紛らわしいから
どけって、それどんなジャイアンだよ。
日韓ワールドカップのとき、 かなり昔からあった「ワールドカップ」って地酒が 販売を控えさせられたこともあったな。 いや、揉めただけで結局出せたんだったかな? 結末は忘れてしまったけど、とにかくあれも、似たようなジャイアニズムが発動してた。
>>905 韓日ワールドカップより前かもしれんが、ワールドカップよりは後だろう。
100% Python好きで使ってる奴がいるとしたら正直キモいよな
わざわざPythonのスレで同意を求める事かよwたちわりいな
>>910 P言語を使っているヤツらはたいていそんなもんだろ
Rはどうだか知らないけど
hate っていうかそういうのは興味深いけど そういうからには,好き・理想とするのは どういうものなのかを教えて欲しいなぁ
チミ達はIDEというかエディターなどというものはなに使ってる まさかメモ帳はありえないだろ普通wwww おれはsciteを使ってます
916 :
デフォルトの名無しさん :2007/04/05(木) 19:05:00
vim-7
xyzzy
IDLE
emacs five-things-I-hate ってちゃんと使ってないと怖くて書けないよな‥
PyScripter + IDLE
秀丸
秀丸 たまに PyCrust 併用 最終確認が必要な場合は eclipse など
大量のデータを処理するプログラムを書いていて どうもメモリをモリモリ食べちゃうみたいです. 関数だけで処理していたときは起きてなかったんですが データ処理クラスをつくって, どんどんインスタンス変数・リストにデータを追加して 一杯になったら統計処理とかをして,リストを空にして また始める,みたいなプログラムにしたら大変なことに. python でのメモリリークさせないための一般的な注意事項が どこかにまとまっていたりしますでしょうか? あと,どの変数? リスト? が肥大化しているかとかを 調べることって簡単に出来るんでしょうか?
それはリークでもなんでもないような あとリソースの使用状況調査にはまずプロファイラを使うのがセオリー
メモリーにデーターを作りすぎてしまうと言うことだろ その場合クラスを小さくして一杯作ればいいんじゃないかな
データーって言うヒト初めて見た。
f(x)の答えが小数点で欲しい場合 f(4.0)ってやらないと少数にならないのですが f(4)だけで答えが小数点になる方法教えてください f(x)の中は自由に変えてもいいです
floatにしてから計算すればいいんじゃまいか
floatにしたくてもやり方がわかりません 自分で調べるので答えは要りません
intをfloatにするほうほうがわかりません
>>>float(4) 4.0
ありがとうございます とてもさんこうになります カッコのなかは文字じゃないとだめとおもってました
スレ違い失礼 例のpythonデザパタ厨が 隔離スレの埋め立てを開始したw 悲惨
隔離スレの話を持ち込むな
隔離スレのスレ主降臨か
隔離スレってどこにあるの?
馬鹿ばっか
キチガイには常人がキチガイに見えるらしいよね.
たまにしかキチガイを見かけない俺様は 常人ということですな
本当の常人は常人であることをことさら主張する必要すらないと思うがね(wwwwwwwwww
向こうのスレで思う存分やってください
向こうのスレってどこにあるの?
「皆さんエディタは何をお使いですか」 的な話題を振ると非常に食いつきがいいな、このスレは。
みんなエディタには苦労しているんだよ。
エディタどころか「食器用洗剤は何をお使いですか」でも反応ありそうな気がする ちなみに漏れはキュキュットさん IronPython本、Nokia柴田Python本、みんPy柴田TurboGears本、 日本語で読めるPython本もだいぶ増えてきたね そのうちIronPython本を立ち読みしてきたけど、関連情報が豊富でよさげだった
オライリーに翻訳がんばって欲しいなぁ・・・ 原著は疲れる
Py厨の諸君へ告ぐ! 「日本語のは入門書ばっかりで飽きた」とか ほざいてみるのが中級者への第一歩なのじゃよ〜
日本語のは入門書ばっかりで飽きた というか内容かぶりすぎ
中級者なら、Perlクックブックの内容を Pyに読み替えて役立てるくらいしろ。
いや、中級者と思うようなヤツこそ、今一度基本をおさらいするべきだ. ちゃんと書かれた入門書を隅から隅まで読め.コードの質が高まるぞ.
>>952 それはそのとおりだと思うが、退屈に耐えられるかどうかが問題だな。
ある種、拷問に近いぞ。
ていうか繰り返し読んでコードの質が高まるような本、 そんな本ってPythonにあるの?あれば具体的に挙げて欲しい。 ライブラリのソース読んだほうがよほど良さそうな気がするんだけど。
952は「ちゃんと書かれた入門書」の具体例を挙げるべきだろうな
きみきみ,隔離スレに戻りなさい。
952ではないが、 だいぶいんつーぱいそん
python初心者が達人に説教を垂れるスレはここですか?
>>953 がみんPyとか口走って袋叩きにあう展開を期待していたのだけど。
Dive into Pythonは自分も好き。ただ、あれが入門書かって言うと
いきなりコード提示して説明してくスタイルだから微妙な気がする。
dive into python ってもう古くない? 何とか新しいバージョンのPythonに付いて行こうとして 加筆した形跡があるだが、もう諦めましたって感じ。
キチガイには常人がキチガイに見えるらしいよ.
どうもPythoniansにはスルー力が欠けているようだ
いまだに「するーか」と読んでしまう
「するーちから」と読んでしまう奴はダンバインマニア?
読むべきはインタプリタのコードだろ
>967 イデオンスキーな俺もそう読むぜ
>969 スパロボ好きの俺もだ
頼むから隔離スレに帰ってくれよ
なんでも隔離スレって言ってればいいもんじゃねーぞ
>344 名前: ひろたか Mail: sage 投稿日: 2007/03/30(金) 14:44:46 >>ひろたかは何のためにPythonを使おうと思ったの? > >あん? 金儲けのためよ。 >俺様がPyhonの本を書けば、Py厨が喜んで買うかなと思ったんだ。 >が、市場調査の結果、お前らは金持ってなさそうだと判明したんで >撤退しというわけ。 > >世の中、ゼニだ。金持ちを相手にしないとな。 がんばれよ(wwww
出典を示さない引用は捏造と変わりがない。
隔離スレってこのスレか。 すげえな(w
すげえよ
あれはいろいろ言われて、開き直ってキャラ作ってるだけ
みなさん「スルーか」が足りん。 隔離スレに言及しちゃ隔離する意味なくなっちゃうでしょ #ああだめだ「スルー力」が「スルっとKANSAIカード」に脳内変換されてしまう…。
正しくは「スルッとKANSAI」だ (小さいツはカタカナ)
春だな。
なにこのスラド
ルールを守る力を、ルールカと命名する。
ならパイソンのプログラミング技術はパイソン力か! # 下らないので AC
アニオタゲームオタ氏ね。
関西の奴らはレベルが低いでFA?
関東も「スイー力」とかいう言葉があったら反応するね
日本の恥。
釣り師惨敗。ム板のスルー力に感動。
993 :
デフォルトの名無しさん :2007/04/09(月) 12:25:42
あと残り少ないからくだらないことを書き込んでみるぜ。 スルー力を見てユンカースJu-87スツーカを思い出したオレは軍板住人。
なんかパイソンカってネフレン・カみたいな響きだな。
チェブラーシ力
埋め
探し物は何ですかー
梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。