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


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

Pythonのお勉強 Part37



1 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:59:28 ]
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/1264924208/

562 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:34:55 ]
>>559
なんでサーバー的にダメなんだ?

563 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:45:14 ]
Pythonなら標準で入ってるからとかかな?

564 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:10:55 ]
>>562
遅いからじゃないかな

565 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 14:05:19 ]
Pythonより数倍遅いのはいただけないねえ

566 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 15:18:25 ]
Ruby はメモリも食うしな

567 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:19:08 ]
つーかrubyは動作が不安だろ

568 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:51:02 ]
あれだ
そもそもこのスレでRubyを出しちゃいけなかったと思うんだ

569 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:57:07 ]
python厨とruby厨が仲直りするスレって昔あったよね

570 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:02:51 ]
厨は天敵への偏見に使うものだと認識されているよ
日本語の基礎すら出来てないようだね



571 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:06:04 ]
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)


572 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:01:13 ]
>>555
UTC使うのが当たり前なマだけしか使わないならいいんだけど、
そんなこと考えもしないバカがバカやらかすからそれじゃダメ。
ttp://www.itmedia.co.jp/news/articles/0811/19/news051.html

573 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:03:40 ]
>>570
使い方として間違ってない気がするが、それはこの際どうでもいい。
ネットスラングの誤用で日本語の基礎力疑われるのか。
インターネットも身近になったものだ。

574 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:05:17 ]
文系はこれだから

575 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:27:06 ]
>>561
つまりこれからはpipでパッケージ書くのが推奨ってことでいい?

576 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:51:31 ]
スラングこそ基礎力が試されるだろ
>>505みたいな基礎力がない奴が短縮化するとアホみたいなコードが出来る

577 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:53:09 ]
>>575
pip はタダのインストーラで、distutilsやsetuptoolsの置き換えではなく、
setuptoolsの中のeasy_installだけの置き換え。
パッケージ作る人が使うのは、現時点ではdistributeが推奨で、distutils2 1.0が
リリースされたらそちらが推奨になる。

現時点だと、pipだとeggをインストールできないので、eggに依存しているもの
(Tracプラグインとか)はeasy_installを使わないといけない。
なので、まだコミュニティ全体の方針としてpipが推奨されている訳はない。
pipにも良いところがあるけど、使い分けが面倒だから俺はeasy_installを使っている。

578 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:19:53 ]
__(ダブルアンダースコア)の名前修飾ルールについての質問です。

class Foo:
__x = 100
def func(self):
return self.__x
Foo().func() # (1)これはOK
def func(self):
return self.__x
Foo.func = func
Foo().func() # (2)これはダメ

この原因を教えて欲しいです。そもそも__xは_Foo__xという
名前に変えられてしまうのに、何故(1)のときにエラーにならないのか不明です。
クラス定義が終了した瞬間に、すべての__で始まる名前(呼出側も)書き換える、
ということなのでしょうか。

579 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:24:17 ]
>>578
Yes。関数名だけじゃなくて、全部の __ が置き換えられる。
でも、 __ は非推奨。 _ だけ使えば良い。

580 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:27:33 ]
インデントがorz
class Foo:
 __x = 100
def func(self):
 return self.__x
Foo().func() # (1)これはOK
def func(self):
 return self.__x
Foo.func = func
Foo().func() # (2)これはダメ

すみませんでした。



581 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:31:55 ]
>>579
ありがとうございます。__はprivate(サブクラスへの隠蔽)で、_は
protected(外部への隠蔽)として使う。また、普段はprotectedで十分なので_を使う。
ということでよろしいでしょうか。

サブクラスで自由なアトリビュートを持たせられるようにするために、
この名前修飾ルールがあるのですよね。

582 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:35:26 ]
>>> class Foo:
... __x = 100
... def func(self):
... return self.__x
...
>>> Foo().func()
100
>>> vars(Foo())
{}

>>> class Hage:
... def __init__(self):
... self.__x = 200
... def func(self):
... return self.__x
...
>>> Hage().func()
200
>>> vars(Hage())
{'_Hage__x': 200}

この違いは何でしょう?

583 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:40:50 ]
Fooの__xの方はインスタンス変数でなくてクラス変数
vars(Foo), vars(Hoge)もみるといいと思う

584 名前:581 mailto:sage [2010/04/15(木) 21:45:21 ]
>>582
Fooでの__xはクラスのアトリビュートでインスタンスからは間接的に参照される。
Hageでの__xはインスタンスに直接所属するアトリビュート、ですよね。

P.S.
以下のコードで呼出側も修飾されることがわかりました。
>>> class Foo:
... __x = 100
... def func(self, other):
... return other.__x
...
>>> Foo().func(Foo())
100

Pythonってよくできていますね。Javaのprivateと全く同じです。

585 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:46:32 ]
文系乙

586 名前:581 mailto:sage [2010/04/15(木) 21:50:45 ]
>>585
理系大学生です。でも物理の成績は悪いので、文系頭かもしれません。

587 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:10:11 ]
確か、完全に隠蔽するつもりはGuidoにはなかったよね。
隠蔽しなかったら、わかる人には便利だし、わからないのに使う人はタダのバカだから放っとけばいいって話だったかと。

588 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:34:09 ]
やべー
いままで自分が作ったクラスのメンバ全部 self.hoge って書いてた
これからは self._hoge を使わなきゃ

589 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 18:42:08 ]
Python 2.6.2のcsv書き出しについて質問です。

x=csv.writer(file(csvfile.csv,"wb"))としたとき
x.writerow(["あああ","いいい","ううう"])
と出力させたところ、生成されたcsvはメモ帳などで表示させればきちんと表示されているんですが
excelで表示させたところ文字化けします。
utf-8から、shift-jisで出力させる方法を教えて欲しいのですが。dialect='excel'としてもエラーを吐きます;

590 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:42:56 ]
x.writerow([u"あああ",u"いいい",u"ううう"])




591 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:44:26 ]
やってみます。ありがとうございます。

592 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:48:19 ]
駄目みたいです
もっと調べてみます。すみませんでした。

593 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:08:25 ]
u"あああ".encode('shift-jis')

594 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:43:01 ]
>>593
ありがとうございます。
レスに気付かないまま夢中でやってました;
いったん、unicodeでutf-8からunicodeへ変換して→encodeでunicode→shift-jisへ変換して無事に解決しました。
リスト化しているので、for文を使用し手前で変換しておいて吐き出すようにしようと思います。

>>590 >>593 ヒントありがとうございました。

595 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:48:01 ]
"あああ".decode('utf-8').encode('cp932')

596 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:52:46 ]
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた


597 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 21:52:39 ]
Pythonで日本語の出力とか使うつもりなら
3.x使うか他の言語にした方がいいよ

598 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:16:22 ]
そんなばなな

599 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 23:12:52 ]
勉強会やるやる詐欺。

600 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 01:54:13 ]
>>594
codecsは使えない?



601 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 11:07:50 ]
>>597
同意。
2.xは本格的に文字列処理するには面倒だし、3.xでかなり変更されてるのに今更本格的に覚えるのもバカバカしいよね。

602 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 11:57:50 ]
rubyを使えば解決だね!

603 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 12:30:45 ]
>>602
うん。本格的な文字列処理とか正規表現とかやりたいんだったらruby使えばいいと思う。

エンコードの問題の他にもPythonは文字列処理のしにくさを抱えている。
rubyやらがどうなってるかは知らんが、Pythonでは文字列は変更不可能な型だから破壊的な処理ができなくて、
一文字でも変更しようと思ったらインスタンスを作り直すことになる。

604 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 12:52:04 ]
じゃあperlでいいや

605 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:03:37 ]
変更可能な文字列型があるのはともかく
デフォルトの文字列が変更可能なのはダメだろ……

606 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:11:55 ]
ruby使うぐらいならperlの方がまだマシだな

607 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:59:11 ]
ruby って結局 perl の汚いところと C++ の汚いところを両方引き継いでるよね www

608 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 15:42:44 ]
from ctypes import *
s = "aaaaa"
get_charptr = lambda s, pos: c_char_p(memset(s, 0, 0) + pos)
memset(get_charptr(s, 2), ord('b'), 2)
print s
# ===> aabba

まったく推奨しないが、こういう変換方法もないわけではない。

609 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 16:03:03 ]
>>608
流石にそれでctypes使うのは行き過ぎじゃないのかな
大抵arrayでいいと思う

610 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 16:43:15 ]
以下のようにlistにして変更して最後に''.joinとかはどうだろうか。
ham = list('ham')
ham[1] = 'm'
ham = ''.join(ham)



611 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:10:32 ]
>>609
>一文字でも変更しようと思ったらインスタンスを作り直すことになる。
への反例だろ

612 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:13:43 ]
>>610
それはインスタンスを作り直すことになるだろ

第一listは文字列じゃないし

613 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:15:49 ]
アイライクシーライク

614 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:27:22 ]
>>611
は?arrayってinplaceで変更できるでしょ
x = array.array('c')
x.fromstring('abcde')
x[4] = 'D'
とか

615 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:13:08 ]
arrayは文字列じゃない

616 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:15:25 ]
っつーか「インスタンスの作り直し」の意味が判ってないアホがいるなw

617 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:15:27 ]
ああ、Stringがimmutableな世界で、StringBuilderみたいなものも
使わない方向で考えたわけね
やっと意味分かった、すまんかった


618 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:18:53 ]
>>614
先生!
s が変わりません!

>>> import array
>>> s = 'hogehogefugafuga'
>>> x = array.array('c')
>>> x.fromstring(s)
>>> x[4] = 'D'
>>> x
array('c', 'hogeDogefugafuga')
>>> s
'hogehogefugafuga'

619 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:20:13 ]
>>618
うん、意図を誤解してた
「C風にinplaceなバイト列の編集がしたい」という話だと思っていて、
immutableなstringを「弄る」ことを本質だと思ってなかった

620 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:23:55 ]
>>619
先生ごめん
reload してなくて入れ違いになった



621 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 21:51:30 ]
文字列がimmutableなのは別にかまわん。
問題は、時々EUCのdecodeに失敗すること。
面倒でかなわんぜ。

622 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 21:54:10 ]
ignore指定すりゃええが

623 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 21:56:07 ]
>>621
euc_jpを使っているのなら
euc_jisx0213を使えば少しマシになるかも

624 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 00:50:08 ]
>>622
今はそうしてる。
エラーがあったかわからないのが困るが…

>>623
ありがとう。試してみるよ。

625 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 02:02:18 ]
〜が変になるね

626 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 02:18:45 ]
誰がマッピングを間違えたんだろうな

627 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 02:42:56 ]
カと力が間違われなくてよかったな

628 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:05:07 ]
decimalってデフォルトだと四捨五入するらしいんですが
精度を2に設定した下記の計算では切り捨てられています。
これはどういうことでしょう??本来ならDecimal("2.1")になると思うのですが・・・。

>>> import decimal
>>> decimal.getcontext().prec = 2
>>> a = decimal.Decimal(str(1.01))
>>> b = decimal.Decimal(str(1.04))
>>> a + b
Decimal("2.0")


629 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:20:01 ]
decimal.Decimal(str(1.01+1.04))
>Decimal("2.05")
decimal.getcontext().prec = 3
a = decimal.Decimal(str(1.01))
b = decimal.Decimal(str(1.04))
a + b
>Decimal("2.05")

630 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:24:27 ]
>>> decimal.getcontext()



631 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:25:54 ]
途中で投稿してしまったが、
python decimal 四捨五入
でGoogle検索すればデフォルトで四捨五入されるなんてことはないと分かるはず

632 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:30:10 ]
食いつきのいいえさだな

633 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:32:30 ]
食いつきのいい餌ってなんだよ
餌は生きたサメでアジでも釣るのか?

634 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:34:58 ]
>>633
>>633
>>633

635 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:39:58 ]
>>628
Pythonライブラリリファレンスのやつは読んだ?
DecimalはFAQもあるからそれ読んだほうがいいよ

636 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:48:25 ]
pygameの64bitピルドのパージョンはリリーズされてるんですかね?

637 名前:628 mailto:sage [2010/04/18(日) 16:49:02 ]
>>631
ありがとうございます。四捨五入では無いですね。
オライリーのPythonクックブックに四捨五入って記載されていたので。。。


638 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 16:56:34 ]
ひどすwww

639 名前:デフォルトの名無しさん [2010/04/18(日) 17:01:57 ]
>>637
四捨五入されるなんてどこにも書かれてないぞwww
ttp://www.python.jp/doc/pdf/release/tut.pdf


640 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 17:04:38 ]
>>637
立ち読みすればわかるけどクックブックは初心者向けの章がごっそり削られてるから初心者は買わないほうがいい



641 名前:628 mailto:sage [2010/04/18(日) 18:03:39 ]
>>639
チュートリアルでなくクックブックの方です。

beebee2see.appspot.com/i/agpiZWViZWUyc2VlchQLEgxJbWFnZUFuZFRleHQYl5NlDA.jpg

p117
beebee2see.appspot.com/i/agpiZWViZWUyc2VlchQLEgxJbWFnZUFuZFRleHQYoONsDA.jpg



642 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 21:10:09 ]
Decimal.quantizeのオプションで指定すれば四捨五入してくれる

643 名前:628 mailto:sage [2010/04/18(日) 22:51:21 ]
>>641
2枚目の写真横向きで撮ればよかった。こういうセンスが足りないんだよなぁ

644 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 22:56:22 ]
は?

645 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 22:59:58 ]
pythonの公式オフ会に参加した奴いる?

646 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 01:54:45 ]
単三電池の方なら参加されたのではないでしょうか

647 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 03:10:40 ]
彼は単二電池を入れることができるまでに成長しました

648 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 15:14:02 ]
質問です
Pythonではglobal変数を関数内では更新できない
らしいことをようやくながらおぼろげに理解しました

複数の関数内にて更新すべきglobal変数を多く抱えている場合
これらの全てにglobal宣言していくしかないのでしょうか?

649 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 15:15:50 ]
うん

650 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 15:23:31 ]
>>649
そすか
こりゃ1から書き直した方が良いのかもしれん…



651 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 15:37:00 ]
module にするだけでも楽になるよ

652 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 16:12:17 ]
そういう場合は自分はまとめてクラスにしてしまう。

けど何か負けたような気がするのも確か。


653 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:14:00 ]
辞書にすればいいんじゃね?
辞書をグローバルに置くと、辞書そのものは変更できないけど
要素は(グローバル宣言しなくても)好き勝手に変更出来る。

654 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:24:03 ]
なんのためのクラスだよ
静的クラス使えばよし

655 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:44:47 ]
静的クラスってなんだよ
monostateパターンのことか?

656 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:49:08 ]
クラス変数と静的メソッドを併用しろってことでhそ

657 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:55:22 ]
で、そのクラス変数をglobalに置いて(ry

658 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:57:05 ]
マジレスすると
globals.py
とかを作ってそこに全部global変数書く

他のコードから使うときは
import globalsして、
全部
globals.foo
でいい
global文要らなくなる

659 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:10:40 ]
今は角電池くらいがちょうどいいです。

660 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:16:07 ]
>>658
正解



661 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:25:21 ]
昔は電池と言っただけでこのスレがあっというまに埋まったのに

662 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:46:19 ]
突拍子もないセンスもないので廃れました

663 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:49:42 ]
ぼるたんの電池おっきいです。

664 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:12:00 ]
ぼるたん?

665 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:17:13 ]
>>658
別ファイルに隔離することも目的の一つならいいんだけど、そうでないなら
globals()['foo']
でよくね?

666 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:33:45 ]
>>665
毎回そんな風にタイプしたくないべ

667 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 01:03:14 ]
>>666
g = globals()
g['foo'] = 'foooo'
print foo
# ==> foooo

668 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 02:03:10 ]
>>658
pylonsのg.(グローバル変数),h.(ヘルパー関数),c.(コンテキスト)みたいな使い方だろ。
こんな感じだったっけ。

globals.py:
class Globals: a = 1
g = Globals()


app.py:
from globals import g

g.b = 2

def hoge():
    print g.a, g.b
    g.c = g.a + g.b
    g.a = 4

hoge()
print g.a, g.b, g.c

グローバル変数を余所で書き換えたり、定義するのはアレだが例なので。
実際のg.はグローバル定数として使って、リクエスト毎にc.(コンテキスト)を処理していく感じ。

669 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 10:48:27 ]
XMLを処理するには何がお勧めでしょうか? 色々と選択肢があって
迷います。 使い方としてはデータモデルを定義したXML(たぶんW3C XML Schema)を
読み込み、そのツリーを辿りながらテンプレートエンジンCheetahを使って
コード生成するという考えでいます。

選択肢としてはlxmlとElementTreeがあるように思えますが、他にもありますでしょうか? 
使っているのはPython 2.4なのですが、ElementTreeは2.5で標準装備になったという事で、
これがベストだと判断されたという事でしょうか?

670 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 11:01:50 ]
せやで!



671 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 11:24:00 ]
ElementTree は小さすぎるので、自分は全部 lxml だけれど、
ElementTree で処理がすむならそれでいいと思う。
速度や機能が不足したら lxml を入れれば、移行は大して
手間がかからないし。


672 名前:669 mailto:sage [2010/04/20(火) 11:33:08 ]
>>671
なるほど。 ということはElementTreeはlxmlのサブセットという理解で
いいのですね。 

673 名前:669 mailto:sage [2010/04/20(火) 11:53:32 ]
>>671
ちなみにRPMパッケージでもないかなと探し始めたらlibxml2ライブラリに付属するPython
バインディングでlibxml2-pythonというパッケージがインスコされている事に気づきました。

これはあまり主流ではないのでしょうか? 

674 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 12:41:25 ]
yaml使えや

675 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 15:43:32 ]
Yaml知りませんでした。 参考にさせていただきます。

676 名前:デフォルトの名無しさん [2010/04/20(火) 16:08:02 ]
>>669
amara Gnosis_Util

Cheetahは今時ありえない。spitfireなりchameleon.genshiなり使ったほうがいいかと

677 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 16:48:54 ]
>>676
>amara
っげ、また選択肢が(汗)

> Gnosis_Util
あの、ググったら3ヒットだったんですがw これ全部ネタじゃないでしょうね?

>Cheetahは今時ありえない。spitfireなりchameleon.genshiなり使ったほうがいいかと

そうだったんですか! いや、それぞれのサイトを見てると流行り廃りの実感は良く分かりませんね.
Cheetahは今でもある程度頻繁にアップデートされているので廃っているとは感じませんでした。
テンプレートの文法のコンパクトさが気に入ってたのですが。

薦められた他のも検討してみます。

678 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 17:21:51 ]
日本語のみ検索でググるとは言わんだろ

679 名前:677 mailto:sage [2010/04/20(火) 17:44:41 ]
>>677
あ、Gnosis-utilsで沢山ヒットしましたw。 英語環境でwww.google.comで
ググってますがgnosis_utilは本当に3ヒット。 

680 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 17:54:05 ]
アンダーバーの意味はモジュール名だろ
というかそれをスペースで区切って検索するのが普通だろ



681 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 18:36:06 ]
648です。一応事後報告だけ
モジュールでどうにかしようとするもダメ
リストや辞書なら行けそうとあたりを付けたがダメ
モジュールに辞書置いてどうにか動きましたとさ

もっと早くここに戻ってれば良かったorz
参考意見を見ながらもうちょっと色々試してみます
どもでした

682 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 18:49:25 ]
>>681
クラス使えって散々いわれてるだろ。

class Foo: pass
Foo.bar = 1
Foo.baz = 2

これなら用途ごとに分けられるし、スタティックメソッドで処理書けたりと便利。

683 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 23:25:46 ]
過去のスレも見てればわかるが
時期によっては変なレスつける奴が多い
グローバル変数にglobalsだとか辞書だとかなんて初めて聞いたわ

684 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 23:30:10 ]
誰にでも初めてはあるさ
少しずつ成長していこう

685 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 23:42:37 ]
>>683
class使えってのはもう出てたから、別のを出したまでだ。

686 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 01:49:38 ]
There's more than one way to do it!


687 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 06:51:25 ]
more than one way ということは 1 つとは限らないから
There's じゃなくて There are じゃないのかな

688 名前:669 mailto:sage [2010/04/21(水) 08:31:56 ]
>>676
結論としてはお勧め頂いたパッケージはどれも2年ほどアップデートがされておらず、
半死亡状態と判断しました。 今のところドキュメントも整っており、最近もリリースが
行われているlxml+Cheetahで行こうと思います.

689 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 09:52:30 ]
過去のスレ読んでない奴は初心者スレ行けってことですね

690 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 20:54:04 ]
>>687
ttp://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it



691 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:05:54 ]
There's なのは知ってるんだけど
文法上なんでそうなるのってことだろう

>>687
q.hatena.ne.jp/1183288572
www.biseisha.co.jp/lab/lab1/24.html

692 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:08:21 ]
不可算名詞じゃね?

693 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:47:36 ]
one way って数えてるんですけど

694 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:49:53 ]
one wayは色んな道って意味だろ
まさかoneを1と解釈してる訳じゃないだろうな?

695 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:50:44 ]
en.wikipedia.org/wiki/There's_more_than_one_way_to_do_it


696 名前:695 mailto:sage [2010/04/21(水) 22:51:57 ]
すまん、既出だったな

697 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 22:57:44 ]
>>691
勉強になりました
ありがとうございました

698 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:01:26 ]
academy6.2ch.net/english/

699 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 10:06:43 ]
組込言語として使う場合なんだけど、
C++のクラスとかをPython側
に公開するのに
オススメなバインダーとかありますか?

700 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 10:36:05 ]
ctypes
swig
cython



701 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 10:47:43 ]
>>699
boost.python

702 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 10:49:11 ]
ExtensionじゃなくてEmbeddingだよね
boost.pythonがいいんじゃないの
ttp://wiki.python.org/moin/boost.python/EmbeddingPython


703 名前:702 mailto:sage [2010/04/24(土) 10:50:06 ]
かぶった

704 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 12:26:44 ]
>>700-702
さんくす
boost.pythonすごいですね これ使ってみます

705 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 12:58:17 ]
みんなのPythonのWebアプリ編って2.6でも大丈夫でしょうか?


706 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 14:17:44 ]
ok

707 名前:デフォルトの名無しさん [2010/04/24(土) 22:50:02 ]
www.python.org/dev/peps/pep-3146/
これCPythonが大量にメモリーを食うようになるということ?

708 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:52:25 ]
今時メモリ使用量を気にするようなやつはクソか鯖缶のヘタレ野郎だけだ。

709 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:58:19 ]
なるほど、おれがメモリ使用量を気にする理由がわかった

710 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 23:28:08 ]
バイナリでかすぎだろ>>Unladen Swallow



711 名前:デフォルトの名無しさん [2010/04/24(土) 23:34:26 ]
>>710
LLVMがでかいんじゃないの?

712 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 00:25:42 ]
>>711
そうらしいけどpy2exeとかで配布しにくくなるなあ

713 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 00:29:02 ]
今時ファイル容量を気にするような

714 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 11:00:55 ]
なんか実行速度が1.N倍程度のオーダーなのに
バイナリが10倍オーダー、起動時間も遅くなるってシロモノに見えるのは
気のせいか

715 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 12:01:47 ]
ベイジアンフィルタが酷いことになってるなww

将来性はあるのかもしれないが、少なくとも現状では入れる価値があるようには見えない。

716 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 12:28:50 ]
PyPyの方が速いね
speed.pypy.org/overview/






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

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

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