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


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

Pythonのお勉強 Part34



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/

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')







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

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

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