- 1 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:23:19 ]
- Pythonオフィシャルサイト
www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc12.2ch.net/test/read.cgi/tech/1240678081/
- 702 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:13:57 ]
- >>698
デコレータは関数を引数にとって「何か」を返す関数。 クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。 そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
- 703 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:30:51 ]
- >>701
それ自体が>>699の誤読の見苦しい言い訳であり 脳内からはみ出たお前の妄想じゃんw
- 704 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:10:27 ]
- >>696
classと無関係なただの関数はself書かなくていいよ
- 705 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:13:24 ]
- お前は何が言いたいんだ
- 706 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:15:07 ]
- 基地外が暴れだしたか
- 707 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:22:47 ]
- 今更selfがなくなると違和感ありまくり。
- 708 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:44:13 ]
- 解説ありがとうございます。でもやっぱりわからない。
>>702 >デコレータは関数を引数にとって「何か」を返す関数。 >クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。 ↑これはわかる。↓これがわかんない。 >そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
・コンパイル時に「何か」を決定することと、暗黙の引数を追加することに、どういう関係がありますか? ・コンパイル時ではなく実行時に決定するのではだめでしょうか。 ・暗黙の引数を、追加するのではなく最初から追加しておけばいいように思うけど、それだとまずいでしょうか。 だれか時間のある人教えてください!
- 709 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:45:54 ]
- オナニー言語やね
- 710 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 14:42:38 ]
- 低脳はPHPがRubyをやればいいよね
- 711 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 14:54:08 ]
- またRuby厨が荒らしてるのか
まったく・・・
- 712 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:04:02 ]
- >>698
デコレータは関数を関数に変換するもの(最近はクラスもできるが)。 self必須にすることで関数とメソッドはほぼ互換になる >foo.meth(arg) == C.meth(foo, arg) ここで、C.methは関数扱いできる。 メソッドが関数として扱えるので、 メソッドのデコレータは関数のデコレータを作るのと同じやり方でできる。 逆にself省略できるようにしたらメソッドのデコレータを作るのが難しくなると思う。
- 713 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:20:37 ]
- >>712
若干の冗長性が柔軟性を生むいい例だね。 Pythonは仕様の簡潔性が特徴のスクリプト言語なわけで。 (予約語や特殊な文法が少ない)
- 714 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:33:22 ]
- >>712
厳密に言うと、デコレータの出力は関数とは限らないよね。 @property def foo(self):... みたいにすると、 foo は foo.__get__() というメソッドが定義されたオブジェクトになる。
- 715 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:37:47 ]
- すげー今更だけどこれって紹介されてたっけ?
Python 3.0開発者ガイド:コア言語の変更点 Python 3.0の主要な言語機能 codezine.jp/article/detail/4051 Python 3.0開発者ガイド:数値、文字列、データ codezine.jp/article/detail/4052
- 716 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:41:09 ]
- >>714
いや、まぁそこら辺は厳密性を犠牲にして説明しやすくしたということで(ry
- 717 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:08:14 ]
- codezineの翻訳はクソ
- 718 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 02:33:13 ]
- >>717
神降臨 書き換えてこい
- 719 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 09:37:04 ]
- reportlabでpdfを作ると
同じものを作っても作るたびに 出来るファイルのサイズが違うのですが こんなもんなのでしょうか? pdfデータに日時が入ってるのかな
- 720 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 10:24:59 ]
- 帝国ピストンはMLで質問しろよ
- 721 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 11:47:07 ]
- 動的に渡す関数(メソッド内で関数を定義して戻り値で返すような)って、
自由変数の束縛はいったいどうやるんだ? そういうことをやりたいときはグローバル変数使うかクラス使うかしかないんだろうか……。
- 722 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:31:53 ]
- やってからいえ
関数の呼び出し->local名前空間の生成->関数オブジェクト生成->local名前空間の解放->関数オブジェクト返る 関数オブジェクトから参照してる変数は上位の名前空間が消えてもクロージャな参照が残ってるからGCに回収されずに使える
- 723 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:21:31 ]
- >>やってからいえ
その言葉をそのまま返そう。 外側のメソッド[A]で定義した関数内関数[B]で[A]のローカル変数aを[B]内で使用しようとしたとき、 [B]内でそのままaと書くと未定義参照エラーになる。 かといって[B]の引数で与えても値渡しなのでa自体を書き換えることはできないよね。
- 724 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:32:29 ]
- python3 nonlocal
- 725 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:38:48 ]
- >>> def fa():
... a=3 ... def fb(): ... a=5 ... print a ... print a ... return fb ... >>> b=fa() 3 >>> b() 5
- 726 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:42:35 ]
- nonlocalをpython2.xで模倣するときは
・L=[x]みたいにリストにして、L[0]に対する操作にする ・f.x = xのように関数の属性にして、f.xに対する操作にする
- 727 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:53:18 ]
- >>725
>>> def fa(): ... a=3 ... def fb(): ... a+=5 ... print a ... print a ... return fb ... >>> b=fa() 3 >>> b() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in fb UnboundLocalError: local variable 'a' referenced before assignment >>>
- 728 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 16:05:07 ]
- >>726
ですよねー。 ふと調べてみたらそれについて記述したページを見つけたよ。 www.shido.info/py/py1_comment.html 実際にやってみたら 関数内関数[B]の中だけじゃなくて、 外側のメソッド[A]の側でも配列参照してあげないと 変更後の値にアクセスできないね。 実用にはなるんだけど不便だ……。 ともあれ、やり方がわかったよ。ありがとう。
- 729 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:11:51 ]
- >>726
>>> def fa(): ... a=3 ... def fb(): ... fa.a+=5 ... print fa.a ... print a ... return fb ... >>> b=fa() 3 >>> b() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in fb AttributeError: 'function' object has no attribute 'a'
- 730 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:14:10 ]
- >>728-729
>>> def fa(): ... fa.a=3 ... def fb(): ... fa.a+=5 ... print fa.a ... print fa.a ... return fb ... >>> b=fa() 3 >>> b() 8 >>>
- 731 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:40:00 ]
- >>727 >>729-730
Pythonのニシキヘビ共が、タチコマみたいな会話してるみたいで萌えたw
- 732 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 03:07:25 ]
- pprintを使ってて、読めなくなった日本語をそのまま、読めるようにしたい。
>>> k=dict(hoge=u"欝") >>> k {'hoge': u'\u6b1d'} >>> r=pprint.pformat(k) >>> r "{'hoge': u'\\u6b1d'}" >>> これを、pprintのフォーマットを保持したまま "{'hoge': u'欝'}" みたいに人が読める形に、出来ませんか?
- 733 名前:732 mailto:sage [2009/09/09(水) 03:22:29 ]
- 自己レス
一旦unicode化して、"unicode-escape"を使えば行けた。 #!/usr/bin/env python # -*- coding:utf-8 -*- import pprint d=dict(hoge=u'欝') k=pprint.pformat(d) print k >>>{'hoge': u'\u6b1d'} u=unicode(k,'utf-8') print u.decode('unicode-escape') >>>{'hoge': u'欝'} 配列の中に入った日本語とかも効くようだ。
- 734 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 07:20:56 ]
- 関係ないけど /usr/bin/env を使うのは環境依存でハマる事があるからあまり良くない気が。
- 735 名前:デフォルトの名無しさん [2009/09/09(水) 12:17:23 ]
- 環境依存ではまらないように設けた仕組みだろうに、
環境依存で動かないなんて本末転倒だな。
- 736 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 12:20:34 ]
- > /usr/bin/env を使うのは環境依存でハマる
具体的に詳しく。 /usr/bin/env が無くて /bin/env とか、 PATHの設定に問題が、とか?
- 737 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 12:30:11 ]
- /usr/local/bin/env
- 738 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:07:17 ]
- >>734
おれも詳しく知りたい。 #!/usr/bin/python #!/usr/local/bin/python はよくなくて #!/usr/bin/env python とするほうがいいとずっと思ってたんだけど、違うの?
- 739 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:17:43 ]
- 734は相当劣悪な環境を使っているに違いない。激しく同情する。
- 740 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:20:49 ]
- レンタルサーバで使えない
- 741 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:21:17 ]
- HOME以下に自分でビルドしたPythonをインストールしてパスを通してるとき、
/usr/bin/meld とかディストリビューションのアプリが #!/usr/bin/env 使ってて 軒並み動かなくなったなぁ。
- 742 名前:デフォルトの名無しさん [2009/09/09(水) 15:49:53 ]
- ターミナルから起動して使うと、なぜか出力が最後にまとめて行われてしまいます。
バッファリング周りを自分なりに調べて試してみたのですが、改善しません。 教えていただけるとうれしいです _ _ #!/usr/bin/env python -u import sys for line in sys.stdin: line = line.rstrip() if line: print "true" else: print "false" sys.stdout.flush()
- 743 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 15:54:45 ]
- >>741
どうでもいいところでハマってそれを自慢したがるド変態のM夫君っているものですね。
- 744 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:07:48 ]
- 質問の本題とは関係ないのだが、
> #!/usr/bin/env python -u shebang で複数の引数を渡そうとした場合の動作は移植性がない。
- 745 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:36:04 ]
- >>743
でもこの場合は、単に君が、どうでもいいところで「こいつは自慢してるんだろう」と誤読する キチガイなだけでは?
- 746 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:45:37 ]
- #!/usr/bin/python
にすればいいじゃん?
- 747 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:06:46 ]
- python2.6.2/python3.1.1 ○バッファされない ×バッファされる
× py2 sys.stdin ○ py2 sys.iter(stdin.readline, None) ○ py3 sys.stdin ○ py3 sys.iter(stdin.readline, None) ファイルのf.next()は効率のために先読みするんだけど、それが原因かな。 py3でどこが変更されたかはよくわからなかった
- 748 名前:747 mailto:sage [2009/09/09(水) 17:07:36 ]
- 訂正。
× py2 sys.stdin ○ py2 iter(sys.stdin.readline, None) ○ py3 sys.stdin ○ py3 iter(sys.stdin.readline, None)
- 749 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:08:49 ]
- 出力がバッファリングされてるんじゃなくて、
> for line in sys.stdin: これのために、入力が終わるまで実行が止まってる。 for line in iter(sys.stdin.readline, ""): こうする。
- 750 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:21:07 ]
- ああpy3kのf.__next__は単純にf.readlineを呼び出すだけみたいだ。
ドキュメントには先読みすると書いてあるけど、たぶんこれはドキュメントのバグ。
- 751 名前:742 mailto:sage [2009/09/09(水) 17:36:41 ]
- >>744 ありがとうございます、勉強になります!
>>747-750 ありがとうございます、出来ました! バッファリングの問題じゃなかったんですね、お恥ずかしい。
- 752 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:49:21 ]
- >>745
変態のくせにプライドだけ高いなんてどんだけひとりぼっち君。
- 753 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 18:00:03 ]
- >>752
今度の設定はプライドか。ってか俺は>>741ではないし。 なんか君のキャラ設定って、鏡に映った君自身っぽい。
- 754 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 19:31:14 ]
- >>753
>なんか君のキャラ設定って、鏡に映った君自身っぽい。
- 755 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 19:52:00 ]
- 自分のキャラ設定は鏡に映った自分自身という、再帰的新感覚キャラ「なんか君」
- 756 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 20:06:07 ]
- てっきりスルーされると思ったらそうでもなかった。
env の話はこのへん分かりやすかったです。 ya.maya.st/d/200606c.html#d20060625
- 757 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 22:23:02 ]
- 情けないようで逞しくもある
- 758 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 22:45:56 ]
- 俺はUnix系の環境持ってないから分からんけど
#!python だとダメなの?
- 759 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:48:18 ]
- 堂々巡り開始
- 760 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 12:56:13 ]
- >>758
#!./python
- 761 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 13:48:03 ]
- emacsでpython編集してたら、なんか嫌になった
netbeansにしようかなあ
- 762 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:44:37 ]
- >>760
えーと、どゆこと? パスが必須ってこと? それとも、そういう意味に解釈されてしまうってこと?
- 763 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:35:12 ]
- >>761
バイナリをテキストエディタで編集しちゃダメですよ。
- 764 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:40:31 ]
- slimeだったらタグファイル作らなくてもタグジャンプしてくれたり、
何も設定しないデフォルトでほとんど何でもできちゃうのに python.elが貧弱すぎる
- 765 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:44:17 ]
- うちのCentOSのPythonは
/usr/bin/python 2.3 (プレインストール) /usr/local/bin/python 2.5 (自分でコンパイル) が入ってる ちなみに /usr/bin/python を 2.5 で上書きしてしまうと yum が動かなくなるのでこうしてる 自分の shell の path は /usr/local/bin/python が先なので #!/usr/bin/env python と書いても大丈夫なような気がするけど 自前のスクリプトは #!/usr/local/bin/python で作ってるよ
- 766 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:51:22 ]
- stow使ってる
- 767 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 03:05:13 ]
- >>761
kondoはどうよ?emacsキーバインディングもある www.activestate.com/komodo_edit/
- 768 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 03:35:09 ]
- >>767
もちつけw
- 769 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 11:01:20 ]
- こども? 近藤さん?
- 770 名前:デフォルトの名無しさん [2009/09/11(金) 11:35:07 ]
- Python 3 シリーズを将来使うために
今 2.3 とかで動かしているスクリプトを メンテのたびに 2.6 に移し始めてます. 以降のためのガイドライン(from future importとか) のページってありませんか? 出来れば日本語だとうれしい・・
- 771 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 12:02:29 ]
- >>770
>出来れば日本語だとうれしい・・ Rubyなら日本語の情報が盛りだくさん!
- 772 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 12:13:59 ]
- >>761
Editraはどうよ?viキーバインディングもある editra.org/
- 773 名前:デフォルトの名無しさん [2009/09/11(金) 13:21:08 ]
- eggファイルってWindowsのPythonでも使える?
- 774 名前:デフォルトの名無しさん [2009/09/11(金) 16:07:04 ]
- つかえましたすまそ
- 775 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:18:07 ]
- eggファイルといえば、site-packageにはいったeggが
展開もされずにそのまま動いてて、どうしてコレで動くんだろ? って思ったことはあるな。
- 776 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:26:28 ]
- Pythonのimportは拡張することが出来て、zipファイルからimportする拡張がデフォルトで入っている。
非圧縮zipだとファイルシステムからstatする時間が要らなくなるので通常ファイルのモジュールよりも 高速にロードできる。
- 777 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:30:00 ]
- 777
- 778 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 18:16:23 ]
- Windows版2.5.1で試したことあるが
python.exeとpython25.dllだけあれば 後は全部zipに入れても動くよw zipの中身適当に絞り込んだやつと、exeとdllを、未だUSBに入れてあるわ〜
- 779 名前:デフォルトの名無しさん [2009/09/11(金) 18:38:46 ]
- Python でメモリがつがつ使うプログラム書くと,
当然ながら仮想メモリまで食いつぶしていきますよね? せめて自分がどれくらいメモリを使っているかくらいは 知りたいのですが,OSに依存しないメモリ使用量の 取得方法ってあるでしょうか? メモリ上にデータをキャッシュするようなアプリを書いていて 最終的にはスラッシングが起こりだしたらキャッシュの量を 減らすというような処理を行いたいと思っています. 最終的には.
- 780 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 19:06:40 ]
- >>OSに依存しないメモリ使用量の取得方法
ざっと探してみたけどないので君が作るといい
- 781 名前:デフォルトの名無しさん [2009/09/11(金) 20:26:46 ]
- easy_install は便利だけど同じパッケージの新しいバージョンをインストールしても
上書きしていくだけなんだよね?古いバージョンのアンインストールをきれいにやってから 新しいバージョンのパッケージをインストールしてくれないものだろうか?
- 782 名前:デフォルトの名無しさん [2009/09/11(金) 20:32:06 ]
- 俺もピートン勉強すっかな
- 783 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 22:29:18 ]
- >>772
日本語を入力するまでは満足してました。
- 784 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 23:09:59 ]
- >>779
どれぐらいのメモリを使ったらスラッシングが始まるのかがOSに依存すると思うのですが。
- 785 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 23:18:02 ]
- >>784
それは別にOS依存しててもいいのでは? 大事なのはスラッシングが起こったことが検知できるかどうかでしょ。
- 786 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:09:53 ]
- ああいえばじょうゆう。
んなことできる訳ねーダロカス
- 787 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:18:06 ]
- むしろスラッシングが起こったことをアプリ側に分からないようにするのが近代的なOS設計だと思うんだが。
それに逆らってどうする。
- 788 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 05:36:22 ]
- >>787
スラッシングがおこってもプロセスが実行しつづけられるようにするのは近代的なOSの設計だといえるけど、 スラッシングが起こったことを検出できない、検出させないのは、別に近代的でもなんでもない。 検出できるような設計にしたら近代的でなくなるのか?そんなわけない。
- 789 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 08:34:37 ]
- 今年はじょうゆう14年か
- 790 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 11:30:03 ]
- >>788
で? Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか?
- 791 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 11:31:32 ]
- >>788
は気にくわないことすべてに文句つけそうで怖い。
- 792 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:21:38 ]
- 788の方がまっとうな考えだな。
にちゃんは半可通が多数決で正しい答を出すから恐いw
- 793 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:31:19 ]
- >>790
間違いを指摘されたからといって怒るなよ。 なんで > Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか? ということになるんだ?意味わかんねー。 別に間違っててもいいじゃんか。指摘されたら修正すればいいだけ。 間違いを認めようとせず、ごまかすためにキレるほうが格好悪いぞ。
- 794 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:39:55 ]
- まぁ、かと言って、全く非の打ち所のない言語もまだないからな。
その中でPythonはかなり使いやすい部類だと思う。
- 795 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:42:47 ]
- 摩訶不思議なコードを書いて俺SUGEEEしてる人が少ないのが良い
- 796 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:02:05 ]
- つか当初の質問のレベルが低すぎるだけじゃね。
- 797 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:04:38 ]
- >>795
摩訶不思議なコードを書くのは そうでもしないと今流行りの機能が実装できない(C++の謎なテンプレートとか)か、 変なコードのほうが高速だったり(末尾再帰とか) ミスが起こりにくかったりする(if(0==x){〜とか) とか、そんな事情がある。 Pythonはそもそもそういうのが起こらないように設計されてるからなー
- 798 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:06:36 ]
- 最初はメモリ使用量とスラッシングの話だったのに
気づかないまま別の方向に向かっているおまいらがすき
- 799 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:38:21 ]
- zope.interfaceが"要らない"ことに気付くまで1年かかった
- 800 名前:デフォルトの名無しさん [2009/09/12(土) 17:07:43 ]
- Windows で IDLE を起動してただ exit() と打つと
Python IDLE "The program is still running! Do you want to kill it? っていうダイアログボックスがでてくるんだけどこれはバグ? Windows Vista Business 上で Python 2.5, 2.6, 3.1 で確認しました
- 801 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:30:00 ]
- ばかじゃないのおまえ
- 802 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:54:01 ]
- >>792
x 半可通が多数決で正しい答を出す o 半可通が多数決で出した答を正しいと思い込む
- 803 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:56:27 ]
- >>792の意図するところはこっちだろう
o 半可通が多数決で「正しい」答を出す
- 804 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:56:50 ]
- 何をもってしてバグとするんだ?
- 805 名前:デフォルトの名無しさん [2009/09/12(土) 20:04:53 ]
- print __builtins__ の結果と
import __main__ print __main__.__builtins__ の結果が違うのはなぜでしょうか? たとえば __builtins__.__dict__ はありますが __main__.__builtins__.__dict__ はありません
- 806 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 20:20:47 ]
- >>805
処理系のソースコード調べて考えろ。
- 807 名前:デフォルトの名無しさん [2009/09/12(土) 20:32:48 ]
- >>806
アドバイスありがとうございます CPythonのコードはまだ読んでいませんがIDLEのコードを読んでいます。 lib\idlelib\AutoComple.py の中に import __main__ 中略 namespace = __main__.__dict__.copy() namespace.update(__main__.__builtins__.__dict__) というコードがあって、__main__.__builtins__.__dict__ の意味が分からず悩んでいます。
- 808 名前:805=807 [2009/09/12(土) 20:52:19 ]
- >>806
たびたびすみません,原因が分かりました. EclipseのPyDevで開発しているのですが, デバッグモードで動かすと __builtins__ は dict です. 通常モードで動かすと __builtins__ は module です. デバッグモードではこのような違いが随所にあったのが原因でした. なお,PyDev のソースを読んだところたしかに pydevd.py で そのような違いが表れていることが分かりました. eclipse-pydev.sourcearchive.com/documentation/1.0.3-1ubuntu1/pydevd_8py-source.html
- 809 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:19:57 ]
- なんかあさってだな
- 810 名前:805=807 mailto:sage [2009/09/12(土) 21:50:14 ]
- >>809
スレを汚してしまってすみませんでした
- 811 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:05:33 ]
- そういう意味ではない
- 812 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 07:39:27 ]
- python2.6でpy2exeを使いmechanizeをimportしたスクリプトをexe化したいのですが
なにやら色んな物がないといわれます。で色んなもを入れたり、パス変更したりして 対応したのですが dummy.Processというモジュールだけ見つかりません。 (python2.6/Lib/multipurocessingの中にprocess.pyがあったので/Lib/dummy/process.py と置いてみましたがダメでした) easy_installを試しましたがダメでした。 対処法もしくはdummy.Processがどこにあるかわかる方いますか?
- 813 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 08:09:46 ]
- /Lib/dummy/process.py
-> /Lib/dummy/Process.py
- 814 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 08:17:23 ]
- from multiprocessing.dummy import Process
- 815 名前:812 mailto:sage [2009/09/13(日) 09:27:34 ]
- >>813
それでやってみましたがダメでした >>814 自作スクリプト内ではdummy.processをimportしておらず、mechanize内でもimportされていなかったので どのスクリプトのimportをそのように書き換えるのかわかりません で、なぜかLib/multiprocessing/dummy/processとするとdummy.processは通りました しかし、また新たにmultiprocessingが必要(?)でて easy_installすると こんどはmultiprocessing._mmap25とwin32processが必要といわれ。。。 なんだかきりがないように感じられたので諦めます すいませんでした
- 816 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 14:03:24 ]
- なんでPythonはRubyの文法を盗んでるのでしょうか
- 817 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 14:04:32 ]
- 具体例を挙げてください。
- 818 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:00:45 ]
- defなんてそうだよね
- 819 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:02:40 ]
- Rubyのが先に世に出たのに後からでたPythonが元祖語ってるという皮肉
- 820 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:11:03 ]
- ttp://ja.wikipedia.org/wiki/Python
登場時期 1990年 ttp://ja.wikipedia.org/wiki/Ruby 登場時期 1995年
- 821 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:11:18 ]
- >>819
アホか。Pythonの初出が1991年でRubyが1993年だろ。調べてから言え。 それから、RubyとPythonがどっちが優れてるかなんてフレームの元なのでやめたほうがいい。 用途によって使いやすいほうを使えば十分。
- 822 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:14:59 ]
- >>818
いまだとBooとかScalaとかあるけど PythonやRubyの前って関数定義にdef使ってるのってないのかな
- 823 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:32:01 ]
- Assembly
BASIC C ... O Python Q Ruby S ... Z
- 824 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:36:47 ]
- スルー
- 825 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:01:43 ]
- >>822
BASIC
- 826 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:38:10 ]
- procedure hogehoge
function hogehoge
- 827 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:50:59 ]
- >>825
DEF FN……懐かしい。
- 828 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 11:25:01 ]
- Python2.5.2ですが、ユニコードって内部的には一律一文字2バイトで表現されていると思って良いのでしょうか?
C拡張でユニコードを扱う関数を作りたいんですが、Cでどのようにユニコード文字のバイト区切りを判断すれば良いのか分からなくて。
- 829 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 11:41:21 ]
- ユニコード文字のバイト区切り?
- 830 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:09:04 ]
- たぶん、Pythonでの扱い以前にUnicodeの基礎知識が不足していると思われ
- 831 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:15:39 ]
- UnicodeとUTF-8の違いは?
pc12.2ch.net/test/read.cgi/tech/1177930957/
- 832 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:22:32 ]
- 欠けている部分があるので分からないわけですが、
基本知識はあると思ってるのですが... そもそもUTF-8なんて話してません、ユニコードそのものの話です。 pythonにおいてunicode()で生成したユニコードのインスタンスをCレベルで操作したいという話です。 初期のUnicodeが16ビット固定長だった事は知っています。 しかし現在は21ビットにまで拡張されています。 ということは16ビットでは不足するケースがあるわけで、 原理的に固定長決め打ちというわけにはいかないはずです。 また、pythonのレベルからはunicode文字列の実バイト数を知るメソッドが見付けられませんでした。
- 833 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:23:50 ]
- あ、>>832は、コードポイントをそのまま二進数で表現していると推測しています。
- 834 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:28:16 ]
- また、BMPだけならば16ビット固定でも良いのでしょうが、
Pythonのunicodeobject.hやunicodectype.cには UCS2、UCS4という文字列が両方とも含まれているので、 16ビット固定なのか32ビット固定なのか良く分かりません。
- 835 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:30:07 ]
- 2バイト固定や4バイト固定と知っているならそうと、どちらかなら判別方法を教えてくれればいいのに、わざわざUTF-8を持ち出して混乱させようとするなんて、ほんとににちゃんねるってのは根性悪いですね。
さようなら。
- 836 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:34:52 ]
- さようなら
- 837 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:10:56 ]
- >>> u=u'日本語'
>>> u u'\u65e5\u672c\u8a9e' >>> s=u.str() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'unicode' object has no attribute 'str' >>> s=str(u) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) >>> l=u.split() >>> l [u'\u65e5\u672c\u8a9e'] >>> l=u.split(u'') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: empty separator uを s='\x65\xe5\x67\x2c\x8a\x9e' または l=[0x65,0xe5,0x67,0x2c,0x8a,0x9e] というバイト列にしたいのですが どのような方法があるでしょうか?
- 838 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:16:32 ]
- >>> u=u'日本語'
>>> u u'\u65e5\u672c\u8a9e' >>> l = [] >>> for i in u: ... n = ord(i) ... l.extend((n >> 8, n & 0xff)) ... >>> l [101, 229, 103, 44, 138, 158] >>> map(hex, l) ['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']
- 839 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:26:59 ]
- >>834
len(u'\U00010000')
- 840 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:49:25 ]
- >>838
thx! >>> u=u'日本語' >>> map(hex, reduce(lambda x, y: x + [ord(y) >> 8, ord(y) & 0xff], u, [])) ['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']
- 841 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:51:27 ]
- おいおい。
sys.setdefaultencoding()で文字コードを再設定してやるのが先だろ? むちゃくちゃやってやがるな……。
- 842 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:55:33 ]
- >>828
- 843 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 15:54:14 ]
- もう手遅れかもしれんが、Pythonとunicodeについて。
Pythonのビルドオプションで、unicodeはUTF-16とUCS4が選択できる。 デフォルトではUTF-16になっていて、これはWindowsでUnicodeファイル名を そのまま扱えたり、.NET や JVM のUTF-16文字列と互換性があったりと、 相互運用性が求められるときに便利。 でも、一文字を1カウントで扱いたいという要求もよくあり、 .NET/JVM/WindowsAPI などとの 相互運用性が求められない分野ではUCS4が使われることもある。 たとえばFedoraやUbuntuなんかのPythonはUCS4でビルドされている。
- 844 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 20:02:10 ]
- import sys
sys.argv.append("-n") from idlelib.PyShell import main main() スクリプトの最後にこう書けばIDLEのインターフェイスを 立ち上げることができるんだけど,その時 Tk の メニューを隠すとかできないもんかなぁ. PyShell のコード自体に手を入れることはしたくない.
- 845 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 22:22:58 ]
- しかし、ほんとユニコードってうんこ仕様だな。
まさに誰得だよ、これ。
- 846 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 22:32:35 ]
- >>845
まあ欠点も色々あるが、結局Unicodeほど便利な文字コードも無いからな。 特にWebアプリはUTF-8で統一してしまうのが一番簡単。
- 847 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:08:02 ]
- UTF-8はBOMをつけてはいけないという仕様にしてくれてれば殆ど困らなかったのになぁ。
- 848 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:26:21 ]
- むしろ日本人ならBOMに理解を示そうよ。
一番BOMの恩恵受けるのは日本なんだし。
- 849 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:42:04 ]
- UTF-16ならBELEあるからBOMの必要性がわかるが、
なんでUTF-8にBOMが必要なんだ? いやとあるスレで、SJISやEUCテキストとの識別を容易にするために BOM付きUTF-8を提案したのは俺だったりするのだが。
- 850 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:52:04 ]
- BOMはトラブルの元って認識なんだが。
- 851 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:12:02 ]
- Pythonやっぱつかえねーなー
- 852 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:20:26 ]
- BOMはPython関係ねー
- 853 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:37:51 ]
- やっぱRubyだなー
- 854 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:38:04 ]
- UTF-8でソース書くときは
いつも付けてるが。
- 855 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:45:08 ]
- >>850
BOM のせいで shebang がどうさしないとか
- 856 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:49:52 ]
- PythonやPerl、Lispはやってて面白いし使える言語だがRubyだけは使いたくないな
存在価値も無いし
- 857 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 02:53:36 ]
- Rubyしかありえねえだろ。日本だぞここは
- 858 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:19:11 ]
- 俺にとって四国は海外なので無問題。
- 859 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:20:32 ]
- 四国と何の関係があるの?
- 860 名前:858 mailto:sage [2009/09/15(火) 04:05:24 ]
- 松江って四国にあると勘違いしちゃった。テヘ
- 861 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 05:39:33 ]
- 松山と間違えたわけか
- 862 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 07:48:27 ]
- >>843
ありがとうございます、助かります。 ヘッダやライブラリの何かの変数でどちらか判定できそうかと思ったんですが、 そこまでは分かりませんでした。 でも、debian sid x86_64ですが、UCS2っぽいです。 UCS2だとwchar_tを使っているみたいなのでなんとかなりそうです。 ctypes.c_wchar_pも使えそう。
- 863 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 08:12:56 ]
- withステートメントの意義が分からない
- 864 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 08:36:39 ]
- スレッドの同期オブジェクトをwithで使えるクラスを書いておくと、めーっちゃ便利。
def something(self): 通常の処理 with SynqObj(self.lock): クリティカルセクションな作業 通常の処理
- 865 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 09:12:14 ]
- >>862
関係ないかもしれないけど gcc で wchar_t って UCS-4 相当というか4バイトじゃなかったっけ?
- 866 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:39:39 ]
- >>862
pyconfig.hに Py_UNICODE_SIZEってのがある
- 867 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:48:49 ]
- >>860-861
中国はパスポートが必要
- 868 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:50:14 ]
- >>864
thx!
- 869 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 11:40:05 ]
- あれ、with lock: ... って書けるよね。threadingでもthreadでも
- 870 名前:デフォルトの名無しさん [2009/09/15(火) 12:00:28 ]
- with 構文の as は何のため?
- 871 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 12:33:02 ]
- reStructuredTextをはがしてPlain Textにするモジュールってありますか?
- 872 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 13:18:30 ]
- >>869
ああ、864は複数のスレッドの呼び分けをログで確認するためにラッパーを介しているだけだから。キニスンナ。 普通はlockオブジェクトを直にwith呼び出ししてかまわない。 >>870 Python 2.6のリリースノート読め!
- 873 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 13:44:36 ]
- >>871
ttp://stackoverflow.com/questions/1192632/how-to-convert-restructuredtext-to-plain-text
- 874 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:08:01 ]
- >>873
サンキュー。 でもドキュメント無いからソースよめってことね…。
- 875 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:29:11 ]
- shebangのこと忘れてたよ
- 876 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:38:22 ]
- rst2xxx -> xxx2txt みたいな経路でいけないかな?
- 877 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 16:39:11 ]
- Pyhton3.0以降の言語仕様を日本語で解説してるサイトや書籍ってある?
3.0以降の資料が少なすぎて、勉強がさっぱり進まない やはり英語を覚えるのが先なのか・・・
- 878 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 17:24:52 ]
- 腐るほどあるような気が
Python3.0でググるよりPython3000のほうが多いかも
- 879 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:29:18 ]
- オライリーの第3版初めてのPythonの中でちょっとだけ触れられている
- 880 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:37:56 ]
- >>878
うーん、一部を解説したものしか見つからない できたら3.1までの仕様変更点を全て網羅している 解説が欲しいんだけど
- 881 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:56:31 ]
- >>880
Python 3.0/3.1のリリースノートを読むのが結局一番早いよ。 Pythonはこの辺とても丁寧。 ところで、 IronPythonに向いた軽量なO/Rマッパーが見当たらなかったので 『100行ちょっとのやる気のないPython製O/Rマッパー』をベースに 実装してみたんだけど、試してみたい人います? 一応、Python/IronPython両用です。
- 882 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:25:58 ]
- >>877
読んでみたけど ttp://docs.python.org/3.1/whatsnew/3.0.html ttp://docs.python.org/3.1/whatsnew/3.1.html これくらいのボリュームなら自動翻訳でもかなり役立つと思うが。 # この先、仕事でプログラムするなら英語は何れ必要となるだろうからガンバレ # 最近の翻訳は中国語から順に整備される傾向があるからな・・・
- 883 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:35:40 ]
- >>866
確かにありました。 4になっていました。 >>865 sizeofで確認したところ確かに4バイトでした。 pyconfig.hの記述と一致してます。 UCS2って2バイトだと思ってましたが、 実装上はwchar_tで表現するので4バイトになってるってことなんでしょうか。 UCS4は元が4バイトですよね。 とりあえずPythonではunicode一文字は4バイトと思って良いのかな。 ほんとunicodeとその周辺のエンコーディングはよく分かりません。
- 884 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:40:43 ]
- >>881
柴田さん乙
- 885 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:47:36 ]
- pyconfig.hはautoconfなんかで出力してんじゃないの
- 886 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 20:37:03 ]
- >>883
ucs4を使うかutf-16を使うかはconfigureオプションで指定して、 sizeof(wchar_t) == 4 && ucs4 の場合か、 sizeof(wchar_t) == 2 && utf-16 の場合にのみ wchar_t を使う・・・という仕様だった気がする。 Pythonの拡張モジュールを作るときには、wchar_tを直接使うんじゃなくて、 Py_UNICODE を使う。 docs.python.org/c-api/unicode.html#Py_UNICODE
- 887 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 22:00:25 ]
- >>886
あー、なるほど・・・ とりあえずLinux(gcc)ではi686でもamd64でもwchar_tがあり、 >>865さんの指摘どおり両方とも4バイトでした。 UCS4の場合にはどちらもwchar_tで4バイトですが、 UCS2(UTF-16)の場合にはwchar_tと不一致なので unsigned shortが使われるようです。 これも両方共2バイトでした。 ということで、Linux(gcc)ではUCS2ならばunsigned shortで2バイト、 UCS4ならばwchar_tで4バイトということですね。 最近のLinuxディストリビューションではUCS4が多いらしいです。 Debian sidでもそうです。 Py_UNICODEを使った方が良いのだと思いますが、 Cで書く部分はできるだけPython独立にしておいて ctypesからそれを利用したいので、 とりあえずwchar_tを使うことにします。 でもimmutableだからなのか、unicodeをそのまま渡して 中身を変更するような事はすぐにはできないっぽいです。 create_unicode_bufferを使うしかなさそうです。
- 888 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 22:08:01 ]
- boostPython
- 889 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:13:28 ]
- >>881
プププ、クソ本の著者乙(wwWwwwwWWWwwwWwWwww
- 890 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:15:28 ]
- >>884,889
いや、当の著者の再配布許可が出たところなんだけど。 別に信じないならいいけどさ。
- 891 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:37:33 ]
- 884と889は低脳。
みんぱいの人に嫉妬するクソ本作者。
- 892 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:52:06 ]
- またruby房の嫌がらせか
- 893 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:03:24 ]
- 大抵の謎の書き込みは >892 で納得できちゃうね
- 894 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:47:25 ]
- Pythonスレはスルー力が有って良いと思う
- 895 名前:デフォルトの名無しさん [2009/09/16(水) 10:48:56 ]
- 何か書こうと思ったんだけど忘れた
- 896 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:09:33 ]
- 逃げるなよ。
- 897 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:27:59 ]
- 逃げるが勝ちだな
- 898 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:41:43 ]
- 逃げちゃだめだ
- 899 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 18:05:00 ]
- >>888
ひょっとしてctypesよりboost.pythonの方が良いっていう意味のレスですか? そうでないとしても、それをきっかけにしてboost.pythonも検討してみました。 boost.pythonとしては、まだunicode文字列を引数としてどう受け渡すのか 方式が定まってないっぽいんですが、とりあえずPyObject* opとして受け取って PyUnicode_AS_DATA(op)でconst char*として実際のデータバッファのアドレスを取り出して、 それをwchar_t*にキャストして自作のC++関数などに渡せば良さそうです。 C++ではwchar_t*として扱うPython独立なプログラムとして作成して、 引数を渡すところだけはこの変換をするために一枚かぶせる感じです。 unicodeの実装がwchar_tではない場合には困るんすが、C++だし、 とりあえずテンプレート使っておけば後々それほど困らないでしょうし。 これでunicode文字列をC++の中で書き換えることもできました。 boost.pythonって、ほんとに楽にC++とやりとりできますね。
- 900 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 18:42:02 ]
- >>897
働いたら負けだよな。
- 901 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 19:30:48 ]
- 俺が逃げるまで逃げるなよ
- 902 名前:デフォルトの名無しさん [2009/09/17(木) 06:49:55 ]
- はやくにげてえーーーー
- 903 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 11:18:04 ]
- boost.python前提になると他の言語からも使えるdllにならない
- 904 名前:デフォルトの名無しさん [2009/09/17(木) 11:28:50 ]
- Eclipse で Java 開発環境と mingw による C言語での開発
環境をスタンドアロンで持ち歩いてるんですが, PyDev と Python 実行環境もそんなことができればなぁ と思ってます.Windows 環境です. Windows の Python はレジストリに何か登録しているよう なんで,そういうポータブルなことは難しいでしょうか?
- 905 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 11:54:05 ]
- portablepython.com/
公式からもリンクされてるからそんなに怪しいものでは無いと思う。 公式からのリンク:python.org/download/
- 906 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 20:32:24 ]
- >>903
まずはC++で(Pythonその他から)独立したクラスを作っておけばいいんじゃないですか?
- 907 名前:デフォルトの名無しさん [2009/09/17(木) 21:24:45 ]
- unittest.TextTestRunner で複数のテストを次々と実行するトキ,
最初に発生した例外でストップしてほしいんですが,できますか?
- 908 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 05:57:29 ]
- emacsのpython-mode.elで、ユニコードリテラル中にエスケープせずに文字を書くのと、
エスケープコードを書くのとで、py-execute-bufferの際に別物にされてしまう。 (素のバイトストリング扱いになるらしい) C-x C-f foo.py #!/usr/bin/python # -*- mode: python-mode; coding: utf-8 -*- print u'あ' == u'\u3042' C-c C-c => False $ python foo.py True どうしたものか。
- 909 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 08:15:29 ]
- sys.getdefaultencoding()
- 910 名前:908 mailto:sage [2009/09/19(土) 04:44:02 ]
- sys.getdefaultencoding() は環境によらず ascii を返すので原因は違うところにあるようだ。
ちなみに locale.getdefaultlocale() はいつでも ('en_US', 'UTF8') が帰る。 C-c ! で ipython を出しておいて C-c C-cすれば普通にターミナルからやるのと同じ挙動に なったので、それでいいことにしたわ。
- 911 名前:デフォルトの名無しさん [2009/09/19(土) 09:48:33 ]
- 循環参照してしまうとそのオブジェクトはプロセスの
終了まで解放されない? class ClassA(object): def __init__(self): import sys sys.stderr.write("ClassA.__init__(...) %s\n" % str(self)) def __del__(self): import sys sys.stderr.write("ClassA.__del__(...) %s\n" % str(self)) class ClassC(object): def __init__(self): import sys sys.stderr.write("ClassC.__init__(...) %s\n" % str(self)) self.a1 = ClassA() self.a2 = ClassA() self.a1.a2 = self.a2 self.a2.a1 = self.a1 def __del__(self): import sys sys.stderr.write("ClassC.__del__(...) %s\n" % str(self)) これで ClassC のインスタンスを作ると, ClassA.__del__ は永遠に呼び出されない. せめてプロセスの終了時には呼び出されると思ってた.
- 912 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:57:26 ]
- ふうむ,ガベージコレクタが __del__ の
呼び出し順を決定できないからか. そもそもデストラクタがあるのに循環参照が 起きるような設計をするなということだよな.
- 913 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 10:45:10 ]
- >>908
C-x C-f foo.py #!/usr/bin/python # -*- mode: python-mode; coding: utf-8 -*- print u'あ' == u'\u3042', hex(ord(u'あ')), u'あ'.encode('utf8') C-c C-c => False (どうなりますか?)
- 914 名前:908 mailto:sage [2009/09/19(土) 17:52:16 ]
- >>913
C-c C-c => False 0x20 と出ます。u'あ'.encode('utf8') はエラーも出さずに飲み込まれてしまっているみたい。ちなみに print u'あ’ -> なにも表示されない、 print u'\u3042' -> UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042'... となる。あらかじめC-c ! でipythonのバッファを出しておけばこれらの問題は起きない。
- 915 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:40:27 ]
- >>911
そういうのって明示的に循環参照削除するメソッド作って呼び出すもんじゃないの? と最近Pythonに興味もったPerl使いが言ってみる。 Perlだと参照を弱める(リファレンスカウント減らす)方法あるけど、 Pythonだと似たような方法有るのかな。
- 916 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:57:07 ]
- del
- 917 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:58:55 ]
- boost だと weak_ref とかの弱参照なスマートポインタがあるよな
- 918 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:00:17 ]
- Pythonにもweak_refあるけど、やっぱり明示的に参照切るほうが多いかな。
weak_refは余計なコストかかるし。
- 919 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:08:20 ]
- >>915
www.python.jp/doc/2.4/ext/refcounts.html これ、絶対入ってるよね。 (文中の『デフォルトでは入っています』に対するレス)
- 920 名前:デフォルトの名無しさん mailto:sae [2009/09/19(土) 22:27:55 ]
- infopile思ったより本格的だった
朝から使ってたけど普通に常用メーラで行けそう
- 921 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:40:02 ]
- C++は元々が自前でメモリ管理しなきゃいけないから余計にああいうの欲しくなるけど
最低限で済むPythonではやはり最低限で良いと思うやね
- 922 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:54:52 ]
- >>920
宣伝乙
- 923 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 23:47:44 ]
- >>920
Windowsだけなんだっけ?
- 924 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:35:03 ]
- >>> L=[]
>>> L[:] [] >>> L[:]=[1,2,3] >>> L [1, 2, 3] リストの初期化がなんか違和感が… 納得できん
- 925 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:43:30 ]
- 2つのクラス同士でクラスオブジェクト同士を相互参照したい場合、
class Topic: child = Reply class Reply: parent = Topic なんて書いてたら、当然2行目で未定義識別子の参照でエラーになる。 これって、2つの定義を相互参照なしに定義した後で、classmethodを明示的に呼び出して 動的に結びつけるしか方法がないよね? 用途としては自作の軽量ORMライブラリを作ってるところで、 オブジェクト化したテーブル同士の親子関係を表現しようとしている。 で、例えばTopicから連結されてるReplyのインスタンスが欲しいので何らかの形で事前に教えておく必要がある、と。
- 926 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:51:30 ]
- class Topic:
pass class Reply: pass Topic.child = Reply Reply.parent = Topic
- 927 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:01:17 ]
- >>924
それ、初期化じゃなくて代入だから・・・
- 928 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:38:33 ]
- ?
- 929 名前:デフォルトの名無しさん [2009/09/21(月) 01:38:05 ]
- >>924
の思考に違和感が
- 930 名前:デフォルトの名無しさん [2009/09/21(月) 01:40:50 ]
- class Topic:
children = [] class Reply: parent = Topic Topic.children.append(Reply)
- 931 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:21:42 ]
- >>924
入門書嫁。
- 932 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:34:48 ]
- >>924は何に対して違和感を感じているんだろう
配列が伸び縮みすることになのか 要素の範囲を指定して代入することになのか L[:] ってなんかきんもー、なのか
- 933 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 10:42:30 ]
- >>> l=[9,8,7,6]
>>> l [9, 8, 7, 6] <- 普通 >>> l[1:]=[3,4,5] >>> l [9, 3, 4, 5] <- 普通 >>> l[1:]=[2,1] >>> l [9, 2, 1] <- きもい >>> l[:]=0 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only assign an iterable <- 微妙 >>> l[:]=[0,0] >>> l [0, 0] <- きもい
- 934 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 10:47:29 ]
- [1:]=の結果に違和感覚えないのに[:]の結果に違和感覚える理由が解らん
- 935 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 11:08:09 ]
- >>933
スライスの代入で左辺と右辺のリストの要素数が 一致していなくても構わない(右辺にあわせて伸び縮みする)のが気持ち悪いってこと? だったらリンクリストでも勉強すれば違和感なくなるんじゃないかね
- 936 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 13:53:54 ]
- >>934
>>> l[1:]=[2,1] >>> l [9, 2, 1] <- きもい
- 937 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:02:18 ]
- だから入門書読めよ低脳。
- 938 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:14:12 ]
- バカだなあ。
- 939 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:31:56 ]
- つーか、それがキモイならスライスの意味ないだろとw
- 940 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:05:35 ]
- >>> l[1:]=[3,4,5]
>>> l [9, 3, 4, 5] <- 普通 >>> l[1:]=[2,1] >>> l [9, 2, 1] <- きもい このきもいと普通の違いがわからん 要素が1個減ったらきもい?何か見落としてるんだろうか・・・
- 941 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:42:29 ]
- C言語の配列かなんかと勘違いしてるんじゃね?
抽象度の高い操作を理解できないとか
- 942 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 18:08:31 ]
- スライスの代入ってあんまりやんないからどうでもいいや
- 943 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 20:57:09 ]
- python の配列って中身はリストなんですか?
と思ったら L=[] で L に代入してるな orz
- 944 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:06:25 ]
- 変数名がL,M,Nではじまる場合にはリストなんだよ。
- 945 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:12:52 ]
- >>941
あぁ。3要素のときはreplaceに見えるからきもくないのか よくわかったありがとう
- 946 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:13:33 ]
- Pythonのお勉強 Part35
pc12.2ch.net/test/read.cgi/tech/1253535109/
- 947 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:30:13 ]
- >>943
質問の意味がよくわからないが、 Pythonのリストはメモリ上の連続領域を利用した配列型のリスト (C++のstd::vectorやJavaのArrayListの類) いわゆる連結リストではないので途中に挿入する操作には弱い。
- 948 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 23:45:44 ]
- >>942
直感的に思えないから、俺もあまり使わないな。 冗長でも、新しいリストを作ってしまうな
- 949 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 02:10:54 ]
- >>948
>>947 の言う通りなら新しく作りなおしてもそんなに速度は変わらなさそうですね
- 950 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 10:35:41 ]
- 実装は連続メモリ型かも知れんが
表向きリストのような動作をするように設計されてんだろうな
- 951 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 12:59:51 ]
- from VideoCapture import Device
cam = Device() cam.saveSnapshot('image.jpg')
|

|