1 :
デフォルトの名無しさん :
2005/08/28(日) 01:10:15
3 :
デフォルトの名無しさん :2005/08/28(日) 01:48:57
最近はじめたけどいいね Python 使うほどになじんでくる感じがある ライブラリが小文字で打ちやすいし ただ、python-mode でインデントを一段下げるのだけが めんどくせー
>>3 下げるてネストを浅くするってこだよね。確かに面倒だなや。標準でありそう
な機能だけどないんだっけ。
一段深くする、ということじゃないか? タブ一度押しでネストが浅くなっちゃうと、 タブを何度も押さないと元の深さまで戻らないのがめんどくさい。 リージョン指定すればC-c <とC-c >でインデントの深さは操作できるけど、 一行だけのためにリージョン指定するのはめんどくさい。
>>5 あー深くするほうが面倒やね。俺が記憶違いしてた。
こういうとき括弧がないと不便だな。
てか、よく考えたら自動的にインデントされるレベルより更に深くしたいときっ てそんなにあるっけ?
浅くしたい事はあっても深くしたい事ってないなあ
必要ないところで深くすると実行時にエラーにならない?
そりゃ他の言語で括弧が無駄に1つ入るのと同じ訳だから
あ、そっか。 そう言われてみればそうだ。
python2.4.1 で CGI作ってるんですけど、フォームから入力された(name, value)の組を 一発でディクショナリに置き換えることは出来ないでしょうか? cgi.FieldStorage の keys() で name の方だけリストとして取り出せるので、 これでループさせたりして getvalue で取り出すしかないでしょうか。
14 :
デフォルトの名無しさん :2005/09/02(金) 19:30:39
form = cgi.FieldStorage() try: hogeValue = form["hoge"] except KeyError: hogeValue = None
間違えた。 hogeValue = form["hoge'].value
>>14-15 ちゃんと質問の意図を汲み取りなよ
Dictionaryにしたいんだとよ
ほかのライブラリとかに渡すんじゃねーの?
dict([(k, form.getvalue(k, None) for k in form.keys()])
18 :
デフォルトの名無しさん :2005/09/03(土) 09:00:28
pythonからmp3ファイルのタグ情報を読み込もうとしてるんだけど 日本語名のファイルを読み込むと訳のわからない文字コードになります。 例: 口唇 → \x8c\xfb\x90O 誘惑 → \x97U\x98f ↑これはなんですか?通常の日本語にする方法はありますか? ちなみにeyeD3とid3readerっていうモジュールを使用しました。
タグはSJISで環境はun*xなのか? >> print pykf.toeuc('\x8c\xfb\x90O') とかやればちゃんと表示される。
pythonってなんで日本ではこんなにマイナーなの?
使っている人はそこそこいるとは思うんだけど、あまり大々的に表に出てくるような ものを作るのには使ってないのかもしれないね。 国内では Perl, PHP, Rubyの日本語の情報が充実してるし、Pythonででしかできないことは無いしね。 結局、判子押す権能を持っている人が良く知ってる(名前を良く聞く)という言語が 一見メジャーに見えているだけのような気もするよ。
>>20 あまりCGIで使うもんじゃないから厨房が使いたがらない
無料レンタル鯖がどれだけ対応してるかと本屋の棚の占有率は比例する
日本で一番活発なユーザサイドのMLってどこですか?
24 :
18 :2005/09/03(土) 16:27:02
>>19 レスありがとうございます。
環境はWinXPです。
Pythonのバージョンは2.3+JapaneseCodecs
教え頂いた方法で試したところ、『'ク\xfdソー'』と表示。
あと上で説明を間違えていました。正確には『u'\x8c\xfb\x90O'』でした。
ちなみに
>>> print pykf.toeuc(u'\x8c\xfb\x90O')
?u?O
となってしまいます。
文字コード訳わからん...orz
print pykf.tosjis('\x8c\xfb\x90O')
単純に u'...' の u を取るには encode('latin1')すりゃいいから、 >>> print u'\x8c\xfb\x90O'.encode('latin1') でいいのでは。(SJIS環境なら今回はpykf不要)
27 :
18 :2005/09/03(土) 18:46:03
print u'\x8c\xfb\x90O'.encode('latin1')で出来ました。
>>25 ,26
ありがとうございます。
28 :
デフォルトの名無しさん :2005/09/08(木) 19:32:40
二度も失礼 うまく書けそうにないですが最後はAタグです
>>29 正規表現でマッチさせるのをどうやってるかで異なるが、普通は
・マッチさせる
・マッチした部分を取り出す
の2ステップになると思う。
単純に、文字列中に一種類のパターンが1回しかでてこないのであれば
text = "aa123bb"
MatchObj = re.search("(\d+)", text)
print "<A>%s</A>" % MatchObj.group(1)
こんな感じかな。マッチする部分が複数あるならfindallメソッドとか使う。
>>33 自分で試してから言ってるんだとしたら意図が分からん。
35 :
28 :2005/09/09(金) 07:27:31
>>31-34 ありがとうございます。うまくいきました。
ソースまで書いていただいて勉強になります。
まだURLの正規表現が足りない気がしますが
使いながら修正していこうと思います。
import re
fin =open('src.txt', 'r')
fout=open('dest.html', 'w')
for text in fin.readlines():
text=re.sub('(
http://[\w./%]* )', '<a href="\\1">\\1</a>',text)
text+='<BR>'
fout.write(text)
fin.close()
fout.close()
36 :
デフォルトの名無しさん :2005/09/09(金) 20:39:55
ポストンがいいこと言った!
>>13 遅レスなんだけど
cgi.FieldStorage()ってディクショナリを返してると思うんですが。
そのまま使えばいいんじゃない?
質問です。 C で言うところの関数の内部の静的変数(static 変数)って python にはないのでしょうか? (関数内部で呼び出された回数を数えるカウンタ、みたいなやつです) それは python way として間違っている、のなら どういう処方箋が良いのでしょう? どっかに FAQ がありそうなんですが、ググりづらい… よろしくお願いします
1. オブジェクトを使う
class A:
def __init__(self):
count = 0
def __call__(self, *args):
count += 1
〜
2. 関数と引数デフォルト値の仕組みを流用する
def f(a, b, c, count=0):
count += 1
〜
>>40 1のがいいと思う
2だとcountの値を関数の外から取り出せない?かも
42 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 19:49:50
>42 表示できません
パンパンパパパン黄色いパイソンよ♪
>41 なるほどやっぱり class を作ることになるんですね。 ちょい面倒な気がするけど、そういうものなら仕方ないか… 引数の方は読んでも良く分かりませんでした… なんか昔、リストをデフォルト引数にするとかなんとか 聞いた気がするけどその手の奴ですかね? (具体的な処方箋を思い出せない…)
>>41 2のやり方がよくわからないです(´д` )
>>45 変数の先頭にアンダースコアを付けておけば、モジュール単位でローカルにできるので
他モジュールから from import * されても大丈夫です。
Cのファイルローカルなstatic変数に当たります。
同一モジュール内における関数・クラスの干渉が気になるなら、
管理できる規模でモジュールを再構成。
_count = 0
def hoge():
global _count
_count += 1
print _count
コピペしたらスペースがががががorz _count = 0 def hoge(): global _count _count += 1 print _count
関数もオブジェクトだからこんなのも def foo(): foo.count += 1 print foo.count foo.count = 0
デコレータ使おうよ。
デコレータだとこんな感じで良いんだっけ? def countable(f): f.count = 0 return f @countable def foo(): foo.count += 1 print foo.count
51 :
46 :2005/09/10(土) 23:53:54
いま2.3消してして、2.4インスコしました。 初めてのデコレータで次のようなものを製作。 添削してくだされ(゜∀゜) def countable(func): func._count = 0 def wrapper(*args, **kwargs): func._count += 1 print func._count return func(*args, **kwargs) wrapper.func_name = func.func_name return wrapper @countable def hoge(): print "hoge" hoge() hoge() hoge()
countが外から見えずにしばし悩んでいました。 def countable(func): func._count = 0 def wrapper(*args, **kwargs): func._count += 1 wrapper._count = func._count return func(*args, **kwargs) wrapper.func_name = func.func_name # これってなに? return wrapper @countable def hoge(): print "in hoge: " + str(hoge._count) hoge() print "ex hoge: " + str(hoge._count) ところで、意味わからないまま入れていますが、これって必要ですか? wrapper.func_name = func.func_name
関数実行時にデフォルト引数にバインドされるオブジェクトは関数定義時に1回だけ作られる、 だからmutableなものをデフォルト値にするのは気をつけろ。 って確かはじパイに書いてあったから、41の2の方法は def f(a, b, c, count=[0]): count[0] += 1 みたくすると望み通りになるっぽい。外から見たいときはf.func_defaultsから見るw
>>55 俺が書き込もうとしたら既に書かれていたなんて…
そんな…
俺みたいなアホがもうひとり居たなんて…orz
python の名前付け慣習?について書いてあるページってどこでしょうか? python naming convention で検索してもいまいちいいのがでてこない。 変数も関数名も全部小文字? pythonnamingconvention みたいな。
なんか リストの内包表記 って 機能的には悪いとは思わないんだけど、 見た感じすっきりしてなくて python らしくないと思わない? なんか中途半端に英語っぽいところとかが 中途半端に perl っぽい。
デコレータの @ 表記よりはマシと思うけど。
関数型言語からのもらい物だからねー。 | とか <- とか ; とかの記号がいやで英語っぽくしたんだけどねー。
>61 そういわれると... ぐぅ >62 そういう感じなのかぁ。 勝手な俺的印象としては python って徒に 1行に詰め込まずに、 (敢えて利便性を捨ててでも)強制インデント式の文法により 見た目をすっきり書かせる言語という印象があったので、 内包は読んでると違和感があるんですよね。
>>63 ここではシーケンスを生成してるんだぞ!というふうにコード上で明示できてると考えてはどうかね。
そう考えれば、単純なシーケンス生成で、itertoolとかyieldとか使うよりも、脳みそのロードは節約できるとおもうけど。
これ幸いとばかりに乱用しまくるのは頂けないと思うし、あまりPython的じゃないなと思うのは同意。
何が違和感って、Pythonは基本的に前からだらだら読めて PerlやRubyみたいな後置条件式みたいのもないのに 内包表現だけ語順が逆転しちゃってるのがなんとも。
map や filter を入れ子にするのは気になるの??
67 :
デフォルトの名無しさん :2005/09/18(日) 01:21:32
内包表記は何だかSchemeに似てるんだよな〜 Schemeに美しさを認めても拒否反応が起きる私 内包表記は機能的に悪くないけど慣れそうもないです
全然似てねえYO 内包表記は数学で集合を記述する表記法だ。
内包表記とかジェネレータ式を入れ子で書くのに慣れると止められなくなるよね。
Schemeを読むときは脳内スタックに積み上げつつ後ろまで読んで、
前に戻りつつ何をしてるコードなのかを組み上げる作業しとります。
脳内スタック( ゚д゚)ドカーン。
内包表記も同じように読んどる。こっちはたいてい1行だからマシだけど。
>>69 入れ子にされたら
((((;゚Д゚)))ガクガクガクブルブルブル
すみません、質問させてください。 datetime = date(2000, 1, 1) + time(3, 0) みたいなことをやりたいのですが、 datetime = date(2000, 1, 1) + timedelta(0, 3 * 60 * 60) みたいに書くしかないのでしょうか。
pythonでデータベースを扱うことは可能ですか?
可能です。
各々のオブジェクトが持つメソッドの一覧が知りたいのですが、 例えば、マニュアルのどこら辺に list のメソッド一覧が載っているのでしょうか? 別にマニュアルでなくても良いのですが。 sort や push など無いのだろうか……
help(list) じゃいかんの?
79 :
デフォルトの名無しさん :2005/09/19(月) 22:01:54
httpsの接続についてですが、urllibのマニュアルには
>HTTPS のサポートは socket モジュールが SSL をサポートするように
>コンパイルされている場合のみ利用できます。
とか書いてあり、socket.ssl()も無いようなのでどうやら僕の環境では
SSL非対応らしいのですが、SSLサポートでコンパイルされたsocketモジュールは
どこからダウンロードできるのか教えてください。
えっと今使ってるのはw2kのActivePython2.4です。
一応↓のサイトは見つけたのですが、2.4用のが無いようです・・・
http://alldunn.com/python/
>>78 気持ちはすごくよく分かるが、グーグルのキャッシュが古いのは、グーグルの責任。
>>71 >datetime = date(2000, 1, 1) + time(3, 0)
>みたいなことをやりたいのですが、
結果はdateで欲しいの? datetimeで欲しいの?
>datetime = date(2000, 1, 1) + timedelta(0, 3 * 60 * 60)
>みたいに書くしかないのでしょうか。
dateで欲しい = datetime(2000, 1, 1, 3, 0).date()
ないしは
datetimeで欲しい = datetime(2000, 1, 1, 3, 0)
文字列 str が us-ascii のみを含むか、それ以外の文字も含むかを判定したい んですが、どうやるのがスマートですかね。パッと思い付いたのは↓なんですが。 re.compile('^[ -~\n]+$').match(str)
は? \nとかus-asciiにはないの?
は??
え?
>>84 もしもーし
^はブラケットの外に出てますよー
71は日付と時刻の演算をしたいとのことです。 答)timeには演算できないって書いてあった気もする。
>>71 >timedelta(0, 3 * 60 * 60)
これが良くわかんないんだけど。
timedelta(hours = 3)
ってこと?
ちなみにdateに24時間未満のtimedeltaを加えても切り捨てられるんで、
datetime(2000,1,1)にしないとうまく動かないと思う。
90 :
デフォルトの名無しさん :2005/09/21(水) 03:33:28
import urllib2
URLObj=urllib2.urlopen('
http://www.python.jp/Zope/hoge.html ')
print URLObj.read()
存在しないページにアクセスすると当然404: Not Foundがでます。
そしてアプリケーションが終了してしまうのですが、
終了せずに、404や403などに対応した処理をさせるには、どうすればよいでしょうか?
>>90 urllib2.urlopenは存在しないページへのアクセスなどにはurllib2.HTTPError
のexceptionを投げます。
そいつのurllib2.HTTPError.codeが404等のエラーコードです。
それを適当にハンドリングしてやればいいんでないでしょうか。
92 :
74 :2005/09/21(水) 04:21:10
>>75 ,
>>76 ,
>>77 ,
>>80 多謝です。要領がまだ全然分かってなくて、参考になりました。
なんか、オンラインマニュアルは情報が散在していて辿り着けないし、
系統立った一覧表はないみたいだし、サイト内検索も無いみたいだし、
教えて頂いた方法で調べようにも、そもそも組み込みで何が存在してるのかすら分からないから orz
と思ってたけど genindex.html から、なんとかなりそうかなぁ。
継承関係が良く分からないけど orz
うーむ、本買ってきた方が早いか。種類があまり無さそうだけど。
ちょっと試したかっただけなんだけど orz
95 :
83 :2005/09/21(水) 20:21:38
ちゃんとコントロールコードとかも見なきゃ駄目ですね…。 結局以下でやりました。 re.compile('^[\x00-\x7f]+$').match(str)
max(s)<'¥x80' なんてどうかな
97 :
デフォルトの名無しさん :2005/09/21(水) 21:44:17
>>> s = ['aaa'] >>> s.extend(['bbb']) >>> s ['aaa', 'bbb'] このノリで >>> [s.extend(['aaa']) for s in [["bbb"], ["ccc"]]] すると、 [None, None] なんですけど、なにがまずいんでしょうか
s.extend(['aaa'])が返す値がNoneだから s.extend(['aaa']) == None
[['bbb','aaa'],['ccc','aaa']]を得たいのなら [s+['aaa'] for s in [["bbb"], ["ccc"]]]
100 :
デフォルトの名無しさん :2005/09/21(水) 22:13:43
どうもありがとうございます。 >s.extend(['aaa'])が返す値がNoneだから ということはsがリストに収まってから.extendが呼び出される訳でなく、 .extend()が済んでからリストに収まるってことか そりゃそうか てかドキュメント読めば普通に書いてありそうな話ですね 正解もありがとうございます どうもすいません
101 :
あうう :2005/09/21(水) 22:16:29
すいません
>>82 ,88,89
回答ありがとうございます(^-^)
言葉足らずですみませんでした。
質問の趣旨は
>>88 さんのおっしゃる通りです。
> timedelta(hours = 3)
こんな書き方ができるんですね。
help()だけでは気づきませんでした。
ありがとうございました。
[[s, 'aaa'] for s in ['bbb', 'ccc']] の方がいいんじゃないかな.
104 :
91 :2005/09/22(木) 02:22:05
>>96 なるほど。ただ max(s)<='▼x7f' でないと
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)
と言われちゃいますね。
でちょろっと試してみたんですが re の方が圧倒的に速いみたい。
% time ./test_max.py
./test_max.py 14.65s user 0.06s system 98% cpu 14.982 total
% time ./test_re.py
./test_re.py 1.23s user 0.04s system 99% cpu 1.271 total
>>105 なるほど,そういうエラーが出るんだ.ということは,頼んでもいないのに
max(unicode(s, <default_encoding>)) してるってことだよね.遅いのも
そのせいかな.
107 :
94 :2005/09/22(木) 18:30:57
>>104 90にレスしようと思って間違って91にレスしてしまった。
91の説明に突っ込んだわけではないです。
まぎわられくてゴメソ。
>>106 > 頼んでもいないのに
> max(unicode(s, <default_encoding>)) してるってことだよね.
違うのでは。
>>96 > max(s)<'\x80' なんてどうかな
s が unicode 型なら max(s) も unicode 型なので、
coercion により unicode('\x80') という変換が起こる。
max(s) < u"\x80" または ord(max(s)) < 0x80 なら無問題。
モジュール内で定義されたクラスから 同じくモジュール内で定義された、2重アンダースコアで始まる変数に アクセスしようとすると、クラスの難号化にじゃまされてアクセス できません(>_<) どうすればアクセスできるでしょうか。 よろしくお願いします。
数値を文字列にするにはどうすれば… orz
>>110 pythonを起動して、試しに help(int) ってやってみると、ずらずらと
整数に対して可能な演算が出てくる。で、str( ) という関数が見つかる。
そこで試しに str(123) と打ち込んでみると、'123' と表示されたぞ。
同様に str(0.987) も、ちゃんと文字列になった。
Pythonのヘルプは、ちょっと度忘れしたとき、本を見なくても結構
あてずっぽうでいろんなことが見つかるから、勉強し始めたときに
凄く助かった。
>>109 globals使う方法しか思いつかないわ
__hoge = 100
class Test:
def __init__(self):
print globals()["__hoge"]
Test()
なぜ 2.4.2 に触れないの?
>>112 ,115
レスありがとうございます
下記みたいなものも作ってみましたがあんまりいけてないです。。。
globals()の方がうんと簡潔なので、
>>115 さんの方法で対処しようと思います。
ありがとうございました。
__privValue = 100
def __getter(self):
. return __privValue
def __setter(self, val):
. global __privValue
. __privValue = val
class Public:
. __getter = None
. __setter = None
. def __init__(self):
. self.__setter(20)
. print self.__getter()
Public._Public__getter = __getter
Public._Public__setter = __setter
> 115さんの方法で対処しようと思います。
間違えました。
>>112 さんです(T-T)
118 :
115 :2005/09/24(土) 06:22:04
>>116 ちょっと勘違いしてました。下の例みたいな問題なのね。
gnum = 10
__gnum = 20
class A:
def __init__(self):
print gnum #これはOK
print __gnum #こっちはダメ
if __name__ == "__main__":
a = A()
この場合クラスAの中で変数名「__gnum」が「_A__gnum」に自動的に
置き換わるので、うまく__gnumを参照できない、てことですね。
つーか「__」による変数名の擬プライベート化って、クラス変数名でしか
有効でないんだから、それ以外ではそもそもつけるべきでは無いと思います。
上の例のような問題もあるし、from hoge import *でインポートされたくない
なら、「_」一個に(今回なら「_gnum」)するべきです。
> from hoge import *でインポートされたくない > なら、「_」一個に(今回なら「_gnum」)するべき あわわ。そうだったんですか。 全然知識不足ですね、自分。 精進します。
except 節を空にすることはできないみたいなのですが、 例外が発生した時に、何もしたくない場合はどうしたら良いのでしょうか?
pass
122 :
デフォルトの名無しさん :2005/09/25(日) 02:51:03
except IndexError, e: pass passでいいんじゃないの
>>121 ,
>>122 ありがとうございます。期待通りの動作でした。
pass に辿り着けなかった orz
やっぱ、リファレンス本でも買って来て、
一通り読んで辞書代わりしないと駄目かなぁ……
公式で配布しているマニュアルだけで十分ですよ
>123 まぁ買うのは止めないけど。 本が売れれば出版社も関連書籍を出す気になるだろうし。
stringのfindで作ってた部分を正規表現に置き換えようとしています。 re.search と (?P<name>...) を使えば、丸括弧でくくったパターンの文字列に アクセスできるんじゃないかとIdleで試しているのですが、 これの返値「MatchObjectインスタンス」というのは、どのように使用すればよいのでしょうか?
グーグルで調べ回ってたら戻ってきてしまった…。
nameでアクセスとは違うけど、>31がほぼ回答ですね。読み込みが足りなかった。ごめんなさい。
>>127 日本語HELPのチュートリアルから順にリファレンスの文字列あたりまでは読んだのですが、
reの返値をどのように使うのか理解できず、例題を探し回ってました。
紹介されたページを読んできます。
つい先ほどpythonを知ったんですが、 数値計算をするためにはJavaとpythonどちらのほうがおすすめでしょう。 習熟のしやすさも考慮に入れてプログラミングn00bに教えてください!
jython..._〆(゚▽゚*)
jythonはいいがCPythonとJava両方ある程度勉強しないとワケワカランと思う
>>129 何が必要?
・高速演算
・簡潔性
・多倍長演算
・有理数演算
・複素数演算
・行列演算
etc.
134 :
129 :2005/09/25(日) 19:38:28
>>133 生体データを扱うので、
行列演算が高速で行えればいいかなと思います。
MATLAB
いや、MatchObject の扱い方って 分かればどうってことないんだろうけど 最初はマニュアルに書いてあることの意味からして 良く分からなかったぞ。 2,3 の例題を見ないと全然わからん。
Javaってさ中間言語にコンパイルしているのにもかかわらず異様に遅いしメモリー食うよね。 あの上で高級言語を動かしてまともなパフォーマンスが出るのかなって思う。
同感だがスレ違い
Jythonで数値計算してJava3D使って表示するのを作ったことならある。 データの大きさは5M〜50Mぐらい。 用途次第じゃないのかな。
>>136 HELPに入っているのと同じ資料ですよね。それを読んでも理解できませんでした。
マニュアルと首っ引きで、例題を一部変更→
→他の命令へ置換→機能を追加→自分用の関数作成
とかして学習するにはどうにも手頃な資料が見当たらない。
他言語修得済なら問題はないのだろうけれど…。
143 :
デフォルトの名無しさん :2005/09/26(月) 09:10:08
なかなか良さそうなサイトだ。 しかし ダークな背景に明るい文字のページって 白地にカラー印刷するとすげー見辛い。 せっかく keyword highlight されているものを モノクロでっていうのも芸がないしなんとかならんもんかのう。 (暇なときに読もうと思って印刷したときの話)
Array や Hash など Python から入った人だと、何のことか悩みそう。 ところで、module をパスを指定して読み込んだり、 ソース内でパスを追加する方法ってありますか? ポインタだけでも教えて頂けると助かるんですが。
sys.path
サンクス
python-mode.elとpython.elの使い勝手の違いってどうなのかな
149 :
デフォルトの名無しさん :2005/09/26(月) 21:08:01
Rじゃ数値計算とグラフしかできなくね?
152 :
デフォルトの名無しさん :2005/09/26(月) 23:33:06
>>150 140 です。
私は R は行列計算も可能な GPL で配布されているソフト程度の知識しかありません。
LAPAcK 程度の機能と認識しています。
もし R が Lapack 程度の機能ならば python 使いが R を使う理由はないと考えます。
SciPy python packe をインストールするほうが手っ取り早く数値演算について高機能が
得られると考えます。
150 さんは R と python の両方に詳しいと思います。比較意見を伺えますでしょうか
153 :
デフォルトの名無しさん :2005/09/27(火) 00:31:55
http://www.okada.jp.org/RWiki/ にいってみれば?
R は数値計算、こと統計にかんしては相当にパッケージがそろってます。
確信はないが、python でできることは R で全てできるのでは。
アプリはつくれないけれど、割に簡単にパッケージはつくれる。
ちなみに、速度を求めるならば、うらで C で書くという手がある。
あと、速度は多少速いが機能的には劣る scilab もある。
154 :
デフォルトの名無しさん :2005/09/27(火) 00:45:28
>>153 さん、御指摘ありがとうございます。140 です。
R 入門として下を飛ばし読みしてきました。
http://stat.sm.u-tokai.ac.jp/~yama/R/Rintro.html R は統計処理に特化した数値処理ソフトと理解しました。
mean(), median(),max(),min(),var(),sd()
などを超えるベイジアンなどの統計処理を処理をするのならば R を使う価値が有りそうです。
でも平均や分散を計算する程度の統計処理ならば python 使いが R を新規に勉強してまで使う意味はなさそうです。
SciPy のほうが、ずっと使い回しできそうです。
私は python はじめたばっかりなので詳しくないですが、 マトリックスの要素ごとの計算も簡単にできるようだし、 簡単な用途ならば、python で十分です。 MCMC やるなら、選択肢は R しかないですけど。 パッケージもそこそこあるし、うらで WinBUGS も回せる。
150 じゃないけど >154 R は S 言語を内部で scheme に処理させる処理系。 python 使いの私には(機能はともかく)文法といい、 諸々のセンスといいあまりしっくり来ないんだな。 R の価値は統計機能というより 統計ライブラリ にある、と思う。 (外部の各種パッケージや S などの解説書を含めて) あのライブラリ群が python から使えるんなら R なんて わけわかんねぇ言語は死んでもつかわねーよ。 でもそうじゃないから R も使う。
157 :
デフォルトの名無しさん :2005/09/27(火) 01:26:50
私には関係ないよ
スレ違い気味ですまんけど、R は言語と考えるのは正しくないと思う。 データの下処理をするスクリプトを書いたり、 C で書かれたライブラリをコンソールから呼び出したりするためのソフトないし環境であって、 プログラム言語では決してない。 うらを見ればわかるけど、R なんて C そのもの。
うらってどこだよ
rpyというラッパーがあるよ # 資源はマージして使おう
161 :
150 :2005/09/27(火) 02:31:07
164 :
150 :2005/09/27(火) 11:48:25
>>158 >C で書かれたライブラリをコンソールから呼び出したりするため
そうだから言語でない、という論理は破綻しまくりな気がする。
しかも実際、Rでプログラム書けるんだから、やっぱ言語だろ(S言語)。
ちゃんとRを使いこなしているのか心配です。
ちなみにおすすめは、PyにせよRにせよ、UNIX(-like)のOSで走らせること。
Py/Rの外にもたくさんのコマンドが揃っていると心強い。
>160,161 thx. 最近はそういうのがあるのか。 もっとも R は R+ESS+emacs でやっと "解析環境" だと思うので Rpy (の類い)も周辺環境が整うといいねぇ。 >164 >158 は無視していいでしょ。 ド偏狭Cプログラマが perl/python はインタプリタタイプの "ツール"であって言語じゃない と妄想しているようなレベルだし。R/S を分かってないことだけは確かだ。
166 :
158 :2005/09/27(火) 18:30:51
python プログラマも R を愛してることを知りました。 どうもすいませんでした。
pythonはCとかに比べると大容量な数値計算などに向かないって書いてあったんだけど、 本当でしょうか。
>>167 PythonはCよりメモリを喰うし、遅いし、ハードウェア寄りのことがやりづらいしと、
昨今の汎用スクリプト言語にありがちな特徴を過不足なく兼ね備えていますから。
>>166 ほんと、Rスレ(あるのか?)に紛れ込んだのかとw
>169のおかげで道に迷ってしまったじゃないか。 おなかがすいたよー。ごはんを炊こう
>>167 それはNASAに啖呵をきっているとみなしてよいんだな?
172 :
167 :2005/09/28(水) 10:15:25
>>171 えっとあるwebサイトに書いてあっただけなんで…
phytonかjavaから始めてCをやりたいんです。
それで言語でやりたいこととしては、それなりにでかい行列の計算と、
unixとwindowsでのGUIを使ったアプリケーション作成なんです。
NASA好き
Cが大容量な数値計算を得意とするなんて初耳だ
phytonとかにくらべたら高速、という意味ではないでしょうか。 学校行ってくるんで、帰ってきたらまた相手してください。 NASA大好き
numarray とか Scipy ってある程度の速度で 処理できるんじゃないの? 良く知らないけど。
scipyってRがいらなくなるほどすごいのかなー? Rが備えているような統計解析が同程度のコード量でできるんだったら Python+scipyだけにしちゃうんだけど、そうもいかなそうなので いまのところは用途に合わせてMatlab+R+Python+Javaから選択してる。 自分がPythonを使いこなせてないだけなんだと思うんだけどね。
RとPythonって文法結構似てるよな。 Rをしばらく使った後でPython使うと、ついつい for i in 1:10 とか、「:」でエラー出してしまう。
178 :
175 :2005/09/28(水) 13:54:14
175 は "速度" の話に関して誰か知らない? ってつもりで書きました。 > Rが備えているような統計解析が同程度のコード量でできるんだったら それは無理だと思う(少なくとも今後数年程度では)。 最低限の統計(関数電卓レベル)はともかく…
179 :
154,140 :2005/09/28(水) 17:39:32
>>175 は "速度" の話に関して誰か知らない? ってつもりで書きました。
自作の逆行列ライブラリの逆行列計算と python の inverse() の
CPU タイムをを実測してみました。256x256 の複素行列で python
の方が二桁以上高速でした。
256x256 行列では、逆行列を求める計算時間よりも HDD から元
データを読み出す時間が、二桁以上余分にかかっていました。
python は充分に高速です。
自作の行列ライブラリは valarray を使って L/U 分解アルゴリズムを
汎用的に templatelate 記述しているので遅いだろうとは思っていま
した。でも、python より二桁以上遅いとは org.
python の線形演算は weave を使って C でコンパイルされた lapack
のコードを動かしています。ですから C での線形演算と同等程度の計
算速度だと推測します。
-----------------------------------------------------------
逆に統計処理以外で scipy より R の優れた点はあるものでしょうか。
「R なら こんな計算ができるよ」など具体例を教えてください。
> unixとwindowsでのGUIを使ったアプリケーション作成なんです。 そこで Kylix ですよ? # 責任は取れない
182 :
167 :2005/09/28(水) 23:49:06
やさしいPython 出ないかな〜
IronPython .... MonoもWindows.Formsのサポートがぼちぼち動き始めてるし。
>>179 思ったより高速だにゃーPython
専門性ばりばりでかつかつにチューンしたいとき以外はもうPythonでいいかも、な印象
>>183 IronPythonって実行するとexeファイル吐き出すけど、何なんですか?
実行するとエラーで落ちるし。
Pythonをインストールしていない環境で使用できるようにするものではないんですか?
>>179 統計用に特化してる環境に対して「統計処理以外」なんて
制限を付けたらRが不利になるのは当たり前じゃん。
python+scipyとRの単純比較かと思いきや、
行列計算にはLAPACKを使ったりするんだもの。
公正な比較じゃない。
・・・と、好きでもないRの肩を持ってみたりする。
Pythonの初心者向けの書籍が見つかりません。 というか5、6冊しか出てないんですね。 やさしいpython希望
というか、tutorial の和訳が一番。 それ以上はライブラリレファレンスを必要に応じてとか 例題集を眺めるってのでどうです?
ok 探してみるぜボーイ
出張に持って行けるサイズのはじパイ希望。 オライリーさん、要専用ブラウザでもいいから電子書籍化してくれ〜
あれー? chmが晒されてたよね(英語だけど)
>>192 ほほぅ、本家では3rd ed.まで出てたのか。
和訳版1st ed.はできが悪かったが、
>>190 Dive Into PythonをPluckerでPalm Handheldに入れて読む。これ最強。
かみがいいです
>195 プリンタで出せば良いじゃん
英語ですか・・・、一度に2言語の習得はちょっと。 義務教育マジメに受けてれば理解できる!と言われそうだが。
>>198 ジョークなどという軽い呼び方をする域はゆうに越えてるな。
Huguninって何て読むの?
ふぐにん
204 :
203 :2005/09/30(金) 17:01:32
あ、書き忘れ。 この話が出たときのこのスレの反応ってどんなだったの?
過去スレ見れ。 Pythonは書くとき面倒なんだよ。他の言語に比べて手数が多い。 おかげで読むときは割と読みやすいんだが。 それがますます増える。 内包表現は高階関数として使えないのもマイナス。 単にそういうときは自分で関数を定義すればいいと思うかも知れないが、 同じ操作の名前を言語のユーザが共有しているというのは割と重要。
206 :
70 :2005/09/30(金) 20:53:48
>>198 (((( ;゚д゚)))アワワワワ
俺を殺す気ですか
>>204 自分も今日になって知りました。
Py3への変化のほとんどは自分の思い通りの
変化なので、個人的には満足です。
ただ、ラムダがなくなるのは困るかも。
関数型言語といやー Haskell だが、 この間、数十分ネット読んでみたが、あまり良く理解できなかった記憶が。 > Pythonは書くとき面倒なんだよ。他の言語に比べて手数が多い。 そうなんだ? むしろ少ないと感じてたんだけど。 ただ、インデントは面倒だ。ブロック終端を表す記号が無いので、 オートインデントやインデント量が、しばしば悲惨なことになって手間取る。
>208 Lispを書くときに支援エディターの機能を使わずに「かっこの対応で混乱する」と言うタイプ?
>>209 Lispを書くときに入れ子のデータ構造を使わずに「かっこの対応で混乱しない」とか言うタイプ?
>210 うん
>>211 まてい、偽物
>>210 いや、python-mode.el と py-mode.l を使ってるが、
簡単に揃えられるキーバインドがあるのかな。
最近 python を始めたんでまた分かってない。
原理的に制御構文の後のブロックなど、
インデント量は自分で直すしかないと思うんだけど。
213 :
212 :2005/10/01(土) 11:00:04
あ、読み間違えた模様 orz ゴメンなさい
>>211
>>212 (add-hook 'python-mode-hook
(define-key python-mode-map "\C-m" 'reindent-then-newline-and-indent))
とか。
ある任意の文字列がどの charset で表せるかってのを python で知る方法は あります? email.Charset はこの用途には使えないっぽいし。どうやればいい すかね。
>>215 for teststring in (u'Hello, world!', u'\u00a9', u'ほげ', u'\u266a', u'\u2665'):
print '"%s"' % teststring
for codec in ('ascii', 'latin_1', 'shift_jis', 'cp932', 'utf_8'):
print codec,
try:
teststring.encode(codec)
except ValueError:
print 'NG'
else:
print 'OK'
こういう事?
>208 > ただ、インデントは面倒だ。ブロック終端を表す記号が無いので、 > オートインデントやインデント量が、しばしば悲惨なことになって手間取る。 オートインデントの失敗はともかく、インデント量がおおきくなるのは コードの構造が悪いんじゃないか?
python はインデンテーションが意味をもつくせに def でコロン : 使ったり、なんか中途半端な気がするんですけど、これ如何に?
219 :
215 :2005/10/01(土) 16:23:36
>>216 どーも。やりたいことはそういうことです。やっぱ自力で except 拾うしかな
いんですかね。メールを扱うことを想定してるんで codec をズラズラと羅列
するのはちょっとツラいなあ。むむぅ。
>>218 意味不明。
コロンが行末にあったら次行はインデントして、
なかったらインデントしないんだから一貫してるだろうに。
ipythonをデフォルトシェルにしている人はいると思うんですけど 使い勝手はどうですか?支障はありませんか?
>>220 その考え方なら、(行末にコロンが無くても)defが行頭にあったらインデントすればいい話じゃ?
ブロックに括弧を使わないなど、冗長性を押さえる方向性を採っているのPythonにおいて、
関数を表現するのにdefと : の両方を必要とするのは冗長だって意味だと思った
(1) xxxx xxxx xxxx: xxxx xxxx xxxx xxxx xxxx xxxx (2) xxxx xxxx xxxx: xxxx xxxx xxxx; xxxx xxxx xxxx; (3) xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Python-listから転載。 Pフォントを使ってると見難いかも。エディタにでも貼ってくれ。 三番目でもヽ(゚д゚)ノ ええじゃないかってことだよな。
224 :
200 :2005/10/01(土) 22:37:58
>>222 それなら意味がわかる。でもあんたがエスパーにみえるけど。
想像付きそうなもんだが
xpy作れ
>>219 メールならヘッダに charset が書いてあるんじゃねーの?
スパムフィルター生成のために'aaaaa.com'から'zzzzz.com'までのドメイン文字列を生成しようとして for a in range(97,123): for b in range(97,123): for c in range(97,123): for d in range(97,123): for e in range(97,123): domainname = chr(a)+chr(b)+chr(c)+chr(d)+chr(e)+'.com' なんてしたんだけど。 もっとスマートな書き方ってありそうな気がする。(あとドメイン名だから-とか数字も有るし) おすすめな書き方ってありますか?
フィルターだったら正規表現でなんとかならんか? 全文字列を生成するって、まるでスパムを作るみたいじゃん。
> 全文字列を生成するって、まるでスパムを作るみたいじゃん。 全く同感。
26*26*26*26*26=11881376 アタマワルス
229 名前:デフォルトの名無しさん[sage] 投稿日:2005/10/02(日) 09:08:48 スパム生成のために'aaaaa.com'から'zzzzz.com'までのドメイン文字列を生成しようとして for a in range(97,123): for b in range(97,123): for c in range(97,123): for d in range(97,123): for e in range(97,123): domainname = chr(a)+chr(b)+chr(c)+chr(d)+chr(e)+'.com' なんてしたんだけど。 もっとスマートな書き方ってありそうな気がする。(あとドメイン名だから-とか数字も有るし) おすすめな書き方ってありますか?
ヒント:ベイジアンフィルタ
:が行末にあると次行インデント、の方が defかifかelifかelseかwhileかforかtryかexceptかfinallyかclassが行頭にあると次行インデント、よりも 人が憶えるのも楽だしパーサも単純になるから、 あえて冗長にしたんじゃないのかなぁ。 あるいは、インデントを伴う構文は重要であり他と特に区別すべし、 というGuidoパパの信念がそうさせているとか。
>>236 上手いこと言うね。なるほど。
そういえば俺も、そういうバランス感覚が好きでPythonを使い始めたんだっけ。
pythonで作ったアプリにプラグイン機構を組み込みたいのですが 何かお手軽な方法、または、よく使われている方法はないでしょうか。 前提条件は ・コンフィグファイルの内容で読み込むプラグインを変更する。 ・プラグインはplugins/の中にある。 ・プラグインも自動でバイトコンパイルされる。 ・プラグインは'任意.py'で定義されている'class 任意'だとなおうれしい。 です。 ここ見ろ!でもかまいません。 よろしくお願いします。
>>236 ちょっとおかしいところがあるな。現状
defかifかelifかelseかwhileかforかtryかexceptかfinallyかclassが行頭にあると行末に : があるかどうかをチェックしないといけないわけだからパーサ的には別に単純になってないんじゃないか?
人が憶えるってのに関しても、どれの後ろに : をつけて次行はインデントってのと、どれの次行はインデントってのを憶えるのは結局同じだと思う。むしろ : はめんどくさい。
>>239 テキストエディタでpythonモードを作るときは
コロンの次行がインデントに統一されているほうがやりやすい
>230
肝心な事を忘れていました。
qsv系spam(
[email protected] とか)からスパムがやたらと来るので、あらかじめqsv系が持っている
ドメインを割り出して拒否リストを作りたいのです。
そのスパム業者はhost -t NS kkjhs.comとしてNSレコードを引くとns1.kim-name.netを使っている
のが特徴です。
>>235 RSS = XML だから <?xml encoding="ほにゃらら" ?> と書いてあるんジャマイカ?
エンコーディングを指定しないお行儀の悪い RSS が多いのかな。
スレと関係ない話題で失礼します。
>>242 これひどすぎですよね。
この件で議論しているスレッドってないでしょうか。
とりあえずISPに連絡してみました。
>>242 qsv系のspamが今この瞬間にkim-name.netに登録されてるホストだけを将来も使い続ける保証がないから,ホストよりも内容でフィルタした方がいいように思うけど?
それでもやりたいなら,メールが届くたびに送信元ドメインのNSレコードを引いて調べるフィルタを作ったらどう?一度弾いたドメインはキャッシュしておけばいいでしょ.
>>245 > ホストよりも内容でフィルタ
そうしたいのは山々ですけど
一目でプライベートメールと区別がつかないSPAMが
増えていて、とてもベイジアンだけで対応しきれないんです。
誘導するURLやヘッダも毎回異なり、
>>242 さんの手がかりが
ほぼ唯一の共通点なんです。
>メールが届くたびに送信元ドメインのNSレコードを引いて調べる
がよいと思います。
スレ違いすみません(>_<)
>>240 ご回答ありがとうございます^-^
なんとか以下のように実装することができました。
ありがとうございました。
def loadAnimal(modname, clsname):
import imp
fp, path, desc = imp.find_module(modname, ['plugins'])
try:
module = imp.load_module(modname, fp, path, desc)
finally:
if fp: fp.close()
return vars(module)[clsname]()
# test
modname, clsname = 'Dog', 'Poodle'
obj = loadAnimal(modname, clsname)
obj.eat('food')
# もっと簡潔ですばらしい方法があればぜひ教えてくださいm(_ _)m
>>247 sys.path.insert(0, "plugins")
obj = getattr(__import__(modname), clsname)
>>239 1. def 文や if 文のヘッダ部は1行に収まるとは限らない.
def myfunc (foo, bar,
baz, spam, egg):
...
2. def や if 文全体は 1行におさめて書いてもよい.
if reply=”blue": raise Galahad
ので,ヘッダ部の末尾を示すコロンは曖昧さをなくすのに必要じゃないかな.
>>249 1. に関しては、長くなりすぎて改行したいときには \ で改行の意味を消せるってのがあるので、それに統一すればよい。
2. に関しては、python は改行、インデントに意味を持たせたかったんだろ?一行におさめたいなら、既存の ; をもった言語のほうが柔軟。
2. に関してはわざわざ言うまでもないと思っていたよ。
なにをしのごのいっとるんだ
forkしてxpyでもつくれ
>>241 まぁそれは確かにそうかもしんない。
インデントを必要とする予約語が増えたとしても変更なく対応できるしな。
でも、python モードを作るエンジニア一人(または少数)がちょっと楽をするために、大多数の普通の python ユーザが一々 : を打つという手間をはらっているってんではそれはおかしいと思う。
: がないと無理だってんならともかくなぁ。
なにをしのごのいっとるんだ
小指を動かすのも面倒なんだろうな
>>255 言語設計の思想、哲学のレベルの話をしているんだべ?
python 本家でそういう議論さすがにあったと思うんだけど、
昔から関わっているような人ってのは・・・・さすがにいないか。
大分基礎部分だもんな。
Pythonが「冗長性を押さえる方向性を採っている」(
>>222 )という見方には同意しかねるなあ。
むしろ可読性のために冗長性を取り入れている希ガス。
すぐに思いつく事例:
・os, sys など多用されるモジュールもいちいち import 汁。
・正規表現のサポートも文法要素じゃなくただのモジュール。冗長、てゆーかマンドクサイ。
・メソッド内が self であふれかえる。
・三項演算子がなく if: else: で書くしかない。以前は += なども中田。
・True/Falseの後付け。可読性は上がるが言語仕様としては冗長で今さら感あり。
俺的にはこのあたりの冗長性(可読性)のさじ加減が気に入ってる。
あ、極め付けのを忘れてた。文字列リテラルの書き方。 ・'…' (シングルクオート) と "…" (ダブルクオート) が選べる。 ・トリプルクオートも '''…''' と """・・・""" が利用可能。 ・"…" (string) に加えて r"…" (raw string), u"…" (unicode), ru"…" (raw unicode) と4種類もある。 これを冗長といわずして何と言おうか。でも好き♥(藁
訂正:ru"…" → ur"…"
"`"これは好きじゃない"`"
>>248 がーん
2行ですんでしまうんですね。鬱。
>>250 その考え方は物理行に執着し過ぎだと思うなぁ
>245 スレ違いな話題で申し訳ないが。 PostfixだとNSレコードを引いて該当するドメインだと拒否する機能があったりします。 私はqmailを使っています。 まぁqmail-smtpd用にNSレコードを引いて拒否するフィルターを書いた方が筋が良いのも分かります。 ……ただ、Pythonの演習として'aaaaa.com'から'zzzzz.com'までの文字列を生成するのに forを五重にするよりもスマートな書き方がないのかな?と思って質問してみました。
>>263 s = list("abcdef.....12345677890_")
("%c%c%c%c%c.com" %(a,b,c,d,e) for a in s for b in s for c in s for d in s for e in s)
なんてどうかな
a+b+c+d+e+'.com' でもいいけど,上の方がちょっと速いらしい.
すなおに関数で書いてみた。limitwidthで文字幅を決める。デフォルトは'a'から 'zzzzz’まで。basecharsetは作りたい文字のリストとかを指定。 ('a','b','c'・・・)みたいなtupleを作って入れたほうが少し速い。 結果はリストのリストで帰ってくる。+で連結するよりappendのほうが速いから。 def generate(lowerlimitwidth = 1,upperlimitwidth = 5 \ ,basecharset = string.ascii_lowercase): generatedstringslist = [] charsequences = basecharset for i in range(1,upperlimitwidth): if i >= lowerlimitwidth: generatedstringslist.append(charsequences) charsequences = [x + y for x in charsequences for y in basecharset] generatedstringslist.append(charsequences) return generatedstringslist とりあえず、同じ処理なら229、265のやつの3-5倍は速いみたい。
>>267 generatedstringslist.extend(charsequences) ジャマイカ?
特に generate(1, 1) のとき。
>>268 のリンク先はためになるな。俺もやってみた。
import string
def generate(n, limit, s = string.ascii_lowercase):
assert n <= limit
if n < limit:
for i in range(n, limit):
for item in f(i, i):
yield item + ".com"
elif n > 1:
for item in f(n-1, n-1):
yield item
for c in s:
yield item + c
else:
for c in s:
yield c
for item in generate(1, 3):
print item
関数名の置換をミスってた。スレ汚しスマソ orz import string def generate(n, limit, s = string.ascii_lowercase): assert n <= limit if n < limit: for i in range(n, limit): for item in generate(i, i): yield item + ".com" elif n > 1: for item in generate(n-1, n-1): yield item for c in s: yield item + c else: for c in s: yield c for item in generate(1, 3): print item
>>271 氏ね。
import string
def generate(n, limit, s = string.ascii_lowercase):
assert n <= limit
if n < limit:
for i in range(n, limit):
for item in generate(i, i):
yield item + ".com"
elif n > 1:
for item in generate(n-1, n-1):
yield item
for c in s:
yield item + c
else:
for c in s:
yield c
for item in generate(1, 3):
print item
273 :
267 :2005/10/03(月) 04:03:45
>>269 それでもいいんだけど、appendでも大丈夫。appendだと結果が、
[['a','b'...]['aa','ab'...]...]
こうなって、同じ幅の文字のリストが手に入るのが微妙に俺ごのみなだけです。
あと、appendのほうがちょっと速いっぽい感触。
つか268のよいね。iteratorの良さがやっとわかった。
幅5桁までなら267の関数のほうが6倍くらい速いけど、6桁以上伸ばそうとすると、
メモリがいっぱいになってエラーで死ぬ。267のは20分以上かかったけど6桁のループ
回してる間メモリ使用量は一定量からほとんど変らず。すげー。
これからはちゃんとgeneratorの勉強もしようと思いますた。
274 :
267 :2005/10/03(月) 04:05:07
>>273 ×267のは20分以上かかったけど
○268のは20分以上かかったけど
けっこうpythonやってる人いるんだね。 とちゅー鳥みながら言ってみる。
GoogleもPython製らしいな
>>275 おれは「perlは便利」と信じこんで生きてきたが、
「正規表現の使えるスクリプト」で「ある程度ライブラリがある」
ものならなんでもよかったらしい。
で、知らぬ間にPythonユーザーになってた。
無料レンタル鯖でPython使えたらPerl切り捨てられるんだけどなぁ
perlで実装されたpythonがあればいいんだよな(嘘
Perl python 略して Python あれ?
昔、CGI用にライブラリ全部スタティックリンクして、バイナリファイル1個で動くようにしたPythonを見たような。
>268 ドメイン名で使用できる文字は"英字(letter)、数字(digit)、ハイフン(hyphen)"なので、 アンダースコアじゃなくてハイフンで。
RFC1123によると英字・数字で始まって(つまりハイフンで始まるのはダメ)途中はハイフンもありで 最後は英字・数字で終わる。 [a-zA-Z0-9] ([a-zA-Z0-9-]* [a-zA-Z0-9])?
こうして山のような無意味なクエリーが発行されるのね…
286 :
デフォルトの名無しさん :2005/10/04(火) 09:33:57
Pythonユーザーの方に質問です。 PythonでかかれたアプリをWindowsネイティブバイナリにコンパイルすることは可能でしょうか? Javaならgcjを用いて高速化ができますのでそういう選択肢があるとうれしいのですが。
>>286 py2exeで実行ファイルにできるけど、高速化するのかな?
>>288 py2exeはスクリプトとスクリプトがimportしているモジュールとpython2*.dllをzipして,pythonを起動してスクリプトを実行させる小さなプログラムの後ろにくっつけるだけで,ネイティブコードへの変換や最適化は行わないよ.
psycoを使えば少しは高速になるかもしれないね.
>>288 必要なモジュールと起動用exeを詰め合わせるだけで、
実行はインタプリタまかせだったような気がする
1日10レスもないスレで被った 結婚しよう
Psyco 経験者 ↓
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ _、_ │ ヽ( ,_ノ`)ノ 残念 私のおいなりさんだ │ へノ / └→ ω ノ >
294 :
288 :2005/10/04(火) 18:38:04
>>181 OpenOfficeのフォームエディタでダイアログつくって、という手もあるかも。
マクロでPython呼び出して使えるらしい。
297 :
デフォルトの名無しさん :2005/10/05(水) 00:18:52
PythonCard 誰でも本格的に導入できるようにパッケージした強者はいませんか? 開発のしやすさに触発されました。
ああ,それならPDP-11用に作ったよ. って言ったら要る?
299 :
デフォルトの名無しさん :2005/10/05(水) 01:13:43
E・∇・ヨノシ <300ゲット♫
wxPython2.6-win32-unicode-2.6.1.0-py23.exe PythonCard-0.8.1.FIXED.win32.exe この二つを順にインスコするだけじゃん。何が問題なんだ?
303 :
デフォルトの名無しさん :2005/10/05(水) 02:08:13
Python、wxPython、PythonCard これだけ、優れたプロダクトなのにバラバラになっていてはもったいないと思いませんか? ひとつのパッケージとして、整理してリリースすれば(日本語説明書、インストーラ完備) そこら辺に転がっている糞みたいなオールインワンのBASIC言語の開発環境とかとくらべても目じゃないです。 言語仕様もシンプルで美しいし、 PythonCardでGUIも簡単に構築できて、 クロスプラットフォーム対応アプリがビルドできて、 日本語の文書も充実していて、 導入が簡単になれば、ひとつの市場が生まれるのでは?
そこらへんのどの糞を見て云ってるのかわからんし.市場がどうの っていうの
にも懐疑的だけど,
>>303 のアツさに感心した.面白そうだからプロジェクト
上げたらどう?まずは Py+wx+PyCard の使い方のまとめページとか作ってみたら?
Python: Python Software Licence
wxPython/wxWidgets: wxWidgets Library Licence
PythonCard: BSD Licence
なので,バイナリパッケージを作って配るのは問題ない(と思う)
インストーラはともかくとして,問題は誰が日本語説明書を書くか,だねぇ.
>>305 のアツさに感心した.面白そうだからプロジェクト上げたらどう?
まずは
>>305 の使い方のまとめページとか作ってみたら?
307 :
デフォルトの名無しさん :2005/10/05(水) 07:55:13
>>304 ライセンスOKならやってみようかな。
wikiでも立ち上げて、ちょっとヅツやってれば、そのうち誰か手伝いに参加してくれるかも?
日本Pythonユーザ会にも声かけてみるね。
P.S.
俺はWindowsとMacOSXの両刀使いだがLinuxはやったことないので対応できないと思ふ。
308 :
デフォルトの名無しさん :2005/10/05(水) 07:56:46
>>305 Fensterは汎用性がないし、なによりPythonCardで簡単に開発始められる訳じゃないから却下です。
>>306 に同意
PythonCardって古くさいな
310 :
デフォルトの名無しさん :2005/10/05(水) 08:10:41
>>309 ほかに古臭くないトレンディな開発環境があるんですか?
>>305 「ctypesに触発されてwin32のライブラリをラップしたけど,それだけで満足して20ヶ月以上も放り出されているプロジェクト」に見えるな.
windows.pyとかgdi.pyの末尾が泣かせる.アルファギーククオリティ.
HyperCardにあこがれていた自分は PythonCardをやってみようと、いま思った。 がんばるよ、みんな。
「トレンディ」というコトバ自体が古臭いと思う今日この頃。
314 :
デフォルトの名無しさん :2005/10/05(水) 11:22:13
やばい。使いやすくパッケージングしたら売れるよ絶対これ。 インストール > GUI エディタ起動 > 簡単に GUI が設置できることにまず食指が動かされる > 何かが作れそうな予感 > コード書きが簡単 > デバッグが手軽 > アプリ完成 > Mac & Win & Linux 対応で配布可能 これはおそらく プログラムのビギナー層に受け入れられる。 特に初心者向け開発環境に貧しい Mac OS X だと受けがよさそう?
売るんだったらwxWidgetsに存在するプラットフォームによる違いを 自力で補完できる能力は必要だよ。
興味がでたのでPythonCardをインストールしてみた 起動しなかった
いいねぇ,オレもはじめてみるよ,PythonCard
319 :
次スレ :2005/10/05(水) 13:53:28
ttp://tabesugi.net/memo/cur/cur.html#041118 > しかしなぜ、ファイルを一度ぜんぶバッファにためこむようにしなかったんだろう?
それはttyをファイルと同一視するという哲学からきた仕様です。
端末からの操作も#!による実行も同じセマンティクスで動いています。
^D(End of File)でログアウトできるのがその証拠。
source: "The Unix Programming Environment"
321 :
デフォルトの名無しさん :2005/10/05(水) 14:11:09
>>316 インストーラの不親切さからか出だしでつまづく人が多いんだよね。
やっぱり統合パッケージ化はあるといいね。
プログラムを書こうという人間がそんなところでつまずいていたら 先が思いやられると思うんだが・・・。
wxか。。。でかいから嫌だな・・・。
325 :
305 :2005/10/05(水) 17:39:31
>>306 おれが今までvensterを利用して作ったものはサンプルの範囲内。
だからあまり意味は無いかも知れんが思いを伝えるには必要かも。ちょっとサイト立ち上げ検討します。
>>311 確かにそう。保留のままになっている部分がめっちゃ多い。
そしてctypesを使用して扱っている部分があまりにもネイティブ過ぎて今の俺には意味不明。
なんてったって俺は使いやすさでPythonを選んだ男でありC++など弄ったこともない。ってか理解できない。
Winで開発している皆さん。一度使ってみて下さい。wxにはないCOOLBARにも対応しており、またさらに開発を進めれば、どんなWinGUIだって作成出来る。
そして何度も言うが、めっさ軽い。一度vensterとwxのサンプルを見比べて見て下さい。
wxはインポートしただけで約20メガの仮想メモリを使用。一方vensterはフレームだけだったら4メガ以下。Delphiには敵わないが、VBには負けていない…と思う。
ただ最大の問題点は難しくPythonっぽくないって事。
ってことで今回は却下だな。
> ちょっとサイト立ち上げ検討します。 > ってことで今回は却下だな。 どっちなんだよっ!
VCLライクなGUI Toolkitはないんか
Apollo
329 :
デフォルトの名無しさん :2005/10/05(水) 19:38:51
楽するために努力する。 新しいこと、面白いこと、よりよいものを作ろうとしている人の出足を引っ張ってはいけない。 Pythonは魅力的な言語だし、日本ではまだまだ未開拓の分野。 これから草の根の活動に支えられて発展していくことを願います。
楽するために努力させる。
PythonCardって、boa constructorと比較してどうなの? 開発環境とか、wxPythonをラップしたクラスのとっつき易さとか。 個人的にはboa使ったことあるんだが、感想こんな感じだった。 - Delphiライクにつくれていい - wxPythonそのままなので、デフォルトで選べるGUIコンポーネントがいまいち少ない - メニューの作成が面倒
333 :
デフォルトの名無しさん :2005/10/05(水) 22:46:26
PythonでWGETをつかった巡回スクリプトみたいなものは出来ますか?
できるけど,そんなことbashでやれよ...
お勉強スレだからべつにいいんじゃねぇの
pythonで書くほうが楽。
>>334 bashでもできるけど、そんなことPythonでやれよ...
python mkwgets.py | sh で。
>>325 >>COOLBARにも対応しており、
コボラに対応したのかと思った。
>>334 に一票
それどころから用途によってはhttrack + zsh くらいで十分.
Python ってシェルスクリプトより面倒なんだw そんじゃ Gentoo って何なのよ?
まあダウンローダー作るにはurllib、urllib2のurlopenはちと遅い 俺はpycurlで書いてるけど、これはかなり速くて良し オプションの設定がめんどいときは popen2.popenなんとか("curl なんたら") で済ますこともあるけど
っていうか「連番エロ画像をダウンロードしたい」という質問の方が食い付きが良いかもよ。
345 :
デフォルトの名無しさん :2005/10/06(木) 02:12:08
PythonCard の件ですが当面はローカルで作業して ある程度形になったら ここと日本Pythonユーザーの会に連絡して何らかのリリースを行えたらと思っています。 プロジェクトのネーミングも募集です。 「py-card」「PythonCreator」「PythonCard ~」とかでしょうか?
urllib(|2)はconnectだけでなく、以後も遅いの?
プログラミングがほとんどできないので、 チュートリアルで勉強しつつそのパッケージの動向を見守らせていただきます。 がんばってください。
>>346 timeitモジュール使ってちょっと試してみたけど、そんな感じみたい。
urllib2.urlopenしてから計測開始して、read()し終るまでの時間で、
pycurlはconnectとreadが終ってた。
>>345 一括インストールパッケージであることがすぐに理解できる名前がいいです。
「PythonCard 〜」とかはいいと思う。
「py-card」「PythonCreator」はまったく別の新しいものを想起させるのでイクナイ。
ActivePythonが「Python + win32all + IDE(pythonWin)」であることを考えると、 やっぱりPythonCreatorって名前もありかも。
PythonCardKit でどうでしょう
こういうときは略称から決めるのも手
ぱいぱん
PythonCard Package、QuickPython、pythonCardなんかどうでしょう
ぱいぱい PyPI ぱいぱん pypan ぱいちんこ Pychinko 卑猥だなw
PyPAMはpypanとは別にあるよ。
VisualPython …
こゆーのは堂々とした方がいいんだよ ぱいよりおまんこ pyYoriOmanko これだねやったもんがちよ?万華鏡とかフェラガモとかが先駆者だね
*激しくモチベーション低下中*
VisualManko
pycでええやんと思ったがpython compilerとかぶるな。
ふつうにグラフィカルパイソンとかじゃだめ?
366 :
デフォルトの名無しさん :2005/10/07(金) 12:09:20
PythonCard Kit か PythonCard Creator で決定でいいよ。
Visual Python.NET
PythonCard Studio という手もあるね
PCSじゃパイパンカードキャプターになっちまう
そろそろお勉強再開・・・
PythonCardCaptorSakura 和風でいい名前じゃないか 桜なら海外でも通じるだろう Captorの意味もそんなに悪くない
さくらたん(;´Д`)ハァハァ
>>345 おい、そろそろこの流れに収拾をつけてくれ
375 :
345 :2005/10/07(金) 22:32:26
>>374 仮称で「PythonCard Kit」に。
実際の成果物のほうが肝心なので、これから作業に集中します。
先にOSX版を完成させてからWin32に移植予定です。
VisualBasicのプロジェクトファイルをPythonCard用に変換できるのは便利ですね。
OSX版のサンプルのアプリケーションもサクサク動いています。
亀レスですけど
>>243 あんまりチェックしてないけどまず指定してるんじゃないすかね。
ってかencodingは必須でなかったっけ。
そこから引っ張ってくるのが素直だとは思うんですが、少なくとも日本語の場
合はそれを直接使えないので特別扱いしなきゃいけないのがやっぱりスマート
でないんですよねえ…。ちょっと悩みどこ。
>>376 > 日本語の場合はそれを直接使えないので特別扱いしなきゃいけない
どゆこと? <?xml encoding="ほにゃらら" ?> が指定されていて
実際のエンコーディングと合ってるなら特別扱いの必要はない気が
するんだけど。
>>377 「直接使えない」ってのは語弊があるか。
メールに変換するって前提なんで、euc-jp/shift-jis あたりはそのまま使うの
は気持ち悪いな、と。まぁちゃんと Content-Type 付けてやれば今時はそう困
らないのかもしれませんけど。
OSX版てFreeBSDで使え!!!! ないか orz
print ("hello python.") からはじめました。
括弧で囲むなら、 print と括弧の間は半角スペースを空けない方が自然だよっ
383 :
初心者 :2005/10/08(土) 13:16:46
なでしこをはじめました。 なでしこを少しいじれるようになったら、pythonをはじめます。
そう書き込まないとはじめられないのかね。 なら紙にでもそう書いときなさい。 掲示板でわざわざ宣言する必要性は? 無いよね。
正直スマンカッタ ,.、,、,..,、、.,、,、、..,_ /i ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i '、;: ...: ,:. :.、.∩.. .:: _;.;;.∩‐'゙  ̄  ̄ `"゙' ''`゙ //゙`´´ | | //Λ_Λ | | | |( ´Д`)// \ | | / / / __ | | __ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
例えば x=1 y=2 print "_",x,"_",y を走らせたときの結果が _ 1 _ 2 となってxの前後に必ず が一つ入るのが気になる。 また3行めを print "_",x,"_",y, としても _ 1 _ 2 のように一行あくのが気になる。 プログラミングって難しいですね。
print "_%d_%d" % (x, y)
def gojohou(a,b): while b: a,b = b,a % b return a ポカーン…こんなのかけねぇよおぉおお
PyJUGの中の人よ、web開発系の情報ポインタをキボンヌ。 ・素のCGIはインデントと相性悪い ・ZopeはPythonで開発ってのとちょっと違う ・海外では色々なフレームワークが乱立しているから好きなの使えよ、 っつても数多すぎて評価するのが大変すぎる。 rubyとかはrailsやらで盛り上がってるのにpythonではそーゆーの話題にならんので寂しいよ!
パッケージが色々あって、インストールの仕方も初心者には難しいのではないだろうか。 私は先ほどpygame入れてみた。 えへへー
393 :
PyJUGの中の人 :2005/10/09(日) 15:24:01
YONDA?
>>391 確かにフレームワーク多いな。日本語情報がないのが結構きつい。
CherryPyはシンプルでわかりやすい。
Subwayにも使われてるから知っとくと良いと思う。
Twistedが気になる。オライリーの洋書買っとくか・・・。
ちなみに、PythonCookBook和訳が今年12月から来年初頭に出るってさ。
Python.jpって、slashdotみたいに誰でも投稿できるの?
できるよ
だれでも投稿できるのに、どうしてあんなに閑散としているの?
実用面はVBやJavaでじゅうぶん間に合うからだよ。 それ以上は遊びになってしまう。 日本人は真面目だから遊びには情熱を注がない。
(゚д゚)
>>389 なにこれ?宿題?別にすげえ読みやすいソースだとは思わんけど、
関数名からなにしたいのかはすぐ分るぞ。
つかPythonの文法がわからんのかユークリッドの互除法のアルゴリズムが
わからんのか問題を切り分けてみ。
文法がわからんのなら自分の分る範囲で冗長でもいいから書いてみればいい。
アルゴリズムがわからんのなら・・・紙の上でペンで問題を解いて体で覚えれ。
>>402 一応大学生なのでアルゴリズムはわかります。
while b:とか、さらに言うとその次の行がさくっと書いてあるのがすごいなと。
Pythonソースを2chに書き込むときは半角スペースを全角に置き換えてね。
ためしに投稿してみ
おれも釣られたい。。。。 def gojohou(a,b): while b: a,b = b,a % b return a ↓ def gojohou(a,b): while "forever": if b == 0:return a tmp = b b = a%b a = tmp こうすれば分かるのか??
>>404 なぜ半角スペースを全角スペースに置き換えるの?
ノートンさんが反応するから?
のほうがいいよね
import sys for line in sys.stdin: line = line.replace("&", "&"); line = line.replace("<", "<"); line = line.replace(">", ">"); print line.replace(" ", " ").strip()
>>406 どうやら389は関数の動きがわからないんじゃなくて、
ああいう書き方ができることに感動しているみたいね
つかその書き換えって逆にわかりづらいよ
while b == 0:でええやん
俺もPythonに感動してハマるきっかけはあの書き方だったな 確か入門者向けのドキュメントのどれかに書いてあったやつだ
while b!=0:
413 :
410 :2005/10/10(月) 17:50:55
珍しくもない書き方だけど正直言って良くないと思う
pygameで遊んでみた。 デスクトップに保存した.pyファイルが削除できない→再起動 →visual styleにエラー→ウイルスソフトが終了 →ウァアア 今ここ。
416 :
415 :2005/10/10(月) 18:21:06
デスクトップをDesktopとかリネームしたのが悪かったらしい。 元に戻したら直った。
>>414 理由をかけ。
通常は行数が短く済むほどいいはずだ。
414はどのコメントへのレスなのかわからんが・・・
>>417 一般の話をするなら、長くなっても、多少効率が落ちてもソースの可読性の
高さを第一に考えるなあ。互除法の例なら389ので別に問題ないと思うけど。
「行数が短く済むほどいいはず」てのはちと乱暴かと。
冗長でも分かりやすく書け がPython思想じゃなかったっけ。
420 :
414 :2005/10/10(月) 19:13:04
ループ継続の条件が (b!=0) なのに (b) で代数式として評価してる。結果は同じだけどね。 ループ内部も出来れば展開した方がいい。これを一瞬で把握しろと言うのは無理。 短いならいいけどこの調子で延々と続けられたらたまらん、ということ
pygameのmovieは消えたのか?
>>422 消えてないよ。実ファイルはunixuser.orgにある。
一時的に見れなかったのは、proxy(coralCDN)の調子が悪いせいだと思う。
見易さじゃなくて美しさを誇りたいなら Haskell でも使ってろよ。 2ch への投稿でインデントに悩みたくなかったら、navi2ch でも使ってろよ。
S式はどうしてああも後味の悪いポストが好きなのか。
VAX, Sun, NEWS, Apollo とかで育った老人臭がするよね。
Py+wx+PyCard の使い方のトレンディでナウいまとめページはマダァ?
>>426 > S式
禿ワロスwwwwwwwwwwwwwwww
日本人が書いたPython入門書出ないかなぁ… byte of python読みながら思った。 pygameで簡単なゲームを作るのを目標にしてみたんだけど、 byte of python読んだら何したらいいんだろう…
>>430 「入門」はもういいよ・・・
日本人が書いた本はまぁ欲しいけど
>>430 byte of python読んだなら、pygameにさわってみれば?
いじりながらでも、なにか作れると思うよ。
昔ならばブロック崩しとかテトリスでも作ってみるところだと思う。
グラフィックスの要素がシンプルで、当たり判定とか、
入力デバイスのイベント処理とかも出てくるよ。
>>432 danke. インベーダに挑戦してみようと思う。
ということでpygameの資料を探してくる!
アァー明日早いんだった…
>433 まずはchimpから。
435 :
デフォルトの名無しさん :2005/10/12(水) 11:16:04
MacユーザーですがいままでREALbasicで開発してきました。 同じアプリをつくるとしたらREALbasicとwxPython どっちのほうが実行速度が速いのでしょうか? クロスプラットフォームで開発ができるし もしREALbasicよりも軽いならwxPythonを勉強しようかなと思っています。
自分で比べてみ。結果報告よろしく。頑張れヒーロー。
REALbasicのほうがネイティヴコード吐くから速い事が多い。 ただモジュールの類いがシェアウェアが多くて不自由な感じ。
438 :
デフォルトの名無しさん :2005/10/12(水) 17:50:13
>>437 ありがとうございました!
wxPythonの導入は保留にしREALbasicを使いつづけることにします。
REALbasicのパッケージが O'ReillyのXXXX HACKSみたいでかっこいいな
>>440 追うな。
自分で試してから質問しない奴はポストン一人で十分。
442 :
433 :2005/10/13(木) 00:08:14
byte of pythonまだ半分くらい… ぱいがめ待ってろォオ
全部読まなくていいから、さっさとpygame始めればいいのに… Byte of Pythonを読破してない奴にはPythonでプログラミングする権利がないとでも思ってるのかい?
そんなケツの小さいことを気にするのは
>>443 くらいでしょ。
好きなやり方で勉強させてやれよ。
♪お尻の小さな女の子〜
pygameってPythonのさめがめ? んなわけないか
>>448 そう?俺なら
>>> import time, calendar
>>> [(b+a)/7 for a, b in [calendar.monthrange(*time.localtime()[:2])]][0]
5
ってするけど。
ワンライナー厨的にはこうだ。 >>> [(b+a)/7 for a, b in [__import__('calendar').monthrange(*__import__('time').localtime()[:2])]][0] 5
そこまでしてワンライナーにしたくない
さらにlambda厨だとこうなることを発見した。 >>> (lambda a, b: (a+b)/7)(*__import__('calendar').monthrange(*__import__('time').localtime()[:2])) 5
やっぱりpythonic wayがいちばん。元とあんまり変らないけど・・・ import datetime import calendar today = datetime.date.today() thismonth = calendar.monthcalendar(today.year, today.month) fridaycounter = 0 for oneweek in thismonth: if oneweek[calendar.FRIDAY] >= 1: fridaycounter += 1 print fridaycounter
>>449 ,450,452
つかチミら、今月の金曜は4回ですがな・・・
問題を良く読め。数えるのは日曜日だ。
ゴメン、アホなこと書いた。 453はCookBook読んで書いたんで、そこの例のFRIDAYを引きずってた。 日曜は5回です。ハイ。
>449,450,452 は python 認定プログラムで不合格とします 不合格理由: タテ・ヨコ比がおかしい まあ 449 はアリか...
ヤなlintだなそれ。
TinyP2Pをlintしてくれ
460 :
デフォルトの名無しさん :2005/10/14(金) 20:14:03
今PythonでBMPファイルのヘッダをUnpackをつかって取り出そうとしているのですが、unsigned (short|long|short|short|long) のフォーマットのサイズを調べると14バイトのはずが16バイトになってしまいます。何でそうなるのか教えてもらえませんか。 環境はWinXp Home。 Python 2.4.2 commandline modeです。
462 :
デフォルトの名無しさん :2005/10/14(金) 22:00:36
PILでそう言う事って出来ないの?
>>461 ありがとうございます。
先頭に'='を付けたらちゃんと14バイトになりました。
Pythonでバイナリデータをバイト単位で処理とか、ライブラリに頼らずにLow-レベルな とこに手をだすと、けっこう難しい感じがする。 という流れで例題を出したいのだけど思いつかないや…。
cal | grep "^ [0-9]" | wc -l
Cygwin で wxPython を使いたい場合は、どうインストールすれば良いですか?
>>464 WAVE とか tar とか JIS X 4081 とか MeDoc とかいろいろ自前で
バイナリ処理したけど、これといって難しいことはなかったなあ。
データの仕様通りにプログラムを書き下すだけなんで至って単純。
モーレツに面倒だけどね。
符号あり・なしで微妙な問題が出そうな、 32ビットのデータはどうやったらスマートに扱えるんだろう
l (符号あり) と L (なし) で処理を分けるんじゃダメなの?
Pythonの解説サイトない? ちょっと中級者向けぐらいの
ごめん、PythonのじゃなくてPygameの
Pythonのチュートリアルよりわかりやすい解説サイトみたいのありますか?
無い
orz Unixを前提としてるっぽい+変な日本語 でもうだめぽ
具体的に指摘しないと無能が愚痴をたれてるのと区別がつきません。
>>476 インタプリタの起動とか実行の仕方が分らないの?
479 :
466 :2005/10/15(土) 22:51:21
Cygwin で wxPython は無理ってことで良いですか? あと Python には、ソースに埋め込む標準のドキュメントの記法みたいなものはありますか?
>>477 >>478 えっと、とりあえずインストールまでは事故解決したんですけど、exeにして吐き出させるのがわからないんです。
>>480 よくわからないけど、
tp://py2exe.org/
>>481 >>482 本当にありがとうございます
環境がwinxpなのでexeファイルが作られなかったので、聞いてみたんですがこれを使えば、exeファイルが作られそうですね。
linuxとかだと勝手にexeファイルとかが作られるのでしょうか?
それともpythonではexeファイルが作られないのでしょうか?
重ね重ね申し訳ありませんが答えてくださるとありがたいです
exeファイルをわざわざ作るのです。
こいつはインタプリタとコンパイラの区別が付いていないのだとおもわれる。
488 :
485 :2005/10/16(日) 00:34:24
>>485 >>486 やっとわかりました。本当にありがとうございます。
インタプリタというのはコンパイラの親戚みたいなものだと思ってたので、exeファイルが生成されるのが当たり前だと思ってました。
そんな私はどう見ても精子です。本当にありがとうございました
pyfreezeなんてのもあるよね。 py2exe関連で。
>>490 -
>>493 本当にありがとうございます。
すごく面白そうなものがいっぱいあるんですね。すんごくわくわくしてきました。
一気に全部を学ぶのは無理だとは思いますが少しずつがんばっていろんなことができるようになりたいと思います。
皆様本当にありがとうございました。
From: Neal Norwitz
Subject: [Python-Dev] Guido v. Python, Round 1
我々は皆 Guido が Python を好きだと知っている。
しかし、真に問題なのはパイソンが Guido を好きかということだ。
http://python.org/neal/
ぴちょん君はlambdaと別れたくないのに……、って事?
テラエロス
>>497 pythonのサクーシャって、以前見た写真だともっと若い感じだったんだが
オンラインでpythonコード学習できるサイトないかなぁ。 jythonとか使ってさ
502 :
499 :2005/10/18(火) 23:41:18
503 :
デフォルトの名無しさん :2005/10/19(水) 05:29:58
長年思い続けていたギャグを言わせてくれ オッパイソン !!!! ふーすっきりした
zope3.1.0上でplone2.1.1を動かした強者って居ますか?
宣教師が URL 配って布教活動をするとか?
似合ってない。目が優しすぎる。
COREBLOG2.0ダサすぎw
511 :
501 :2005/10/20(木) 00:23:51
実行環境入れるのがメンドクサイ場合でも ちょっとした確認とかできてうれちい
512 :
デフォルトの名無しさん :2005/10/20(木) 00:55:02
新規インストールしたpython2.4.2にPILをインストールしたいんだけど、うまくいきません なぜか/opt/python2.4.2/lib/ 配下にpython2.3のフォルダーができてそのなかにサイトパッケージができてします。。 うまい方法ない?
>>512 間違ってpython2.3用のPILいれたからじゃないの?
/opt ってことは、BSD系か? それともSoralis?
>>511 その用途なら、python入ってるレン鯖なりにログインすればいいんでないの?
Pythonには、ネットからモジュールをもらってきてインストールする仕組みとかないの? PerlのCPANみたいなやつ。 PyPLがそれかと思ったんだけど、なんか違うみたいだし。
setuptools に入っている easyinstall 使えば モジュール名指定して pypi からダウンロードとインストールしてくれるよ
>>516 ありがとう。これは便利かも。
setuptoolsは最近できたばかりのようですね。
PyPIに初めて登録されたのが2005/06になってた。
フリーのレン鯖ある?
>>510 それは前のバージョンよりマシになったと褒めているのか。
みんなに質問 Pythonを何に使ってるの?
Bridge Commande
>>520 シェルスクリプトの替わり。
実験データの処理。
PythonからExcelとかをwin32comでごにょごにょ。VBAが嫌いだから。
そいうえば Python Programming on Win32 の翻訳でないかなー?
>>520 ・電卓として(WindowsではIDLE、Unixではコマンドライン版のインタプリタ)
・アルゴリズム・データ構造の試作に(勉強したものを実際に動かしてみる)
常用しているアプリ:
・日記の変換スクリプト(自作DTDで日記を書いている。PyXMLでHTMLやLaTeXに変換)
・メモ書き用の簡易メイラ(所定のメアドに投げるだけ。UIはTkinter)
・外国語学習ソフト(単語などを暗記するため、個人的要求に合わせて自作)
最近は仕事で作っているシステムの回帰テストにunittestモジュールを使っている。
自分のwebサイトの日記みたいなのとか趣味方面のカタログみたいなのとか、 最低限のテキストやデータだけ作って自作スクリプトでhtmlに変換してうpしてる。
PythonってwindowsのDLLが公開している関数を呼び出すことはできませんか? Python for Win32 Extensions を一緒にインストールすると、 Win32apiが使用できるようで、 win32api.LoadLibrary() win32api.GetProcAddress() ってすると関数のアドレスが取得できますが、この取得したアドレスの 関数を呼び出す方法ってあるのでしょうか? もし、無いとしたら上のAPIって意味がないのでは?
>520 かけ算と割り算
532 :
520 :2005/10/21(金) 21:29:49
みんなありがとう 僕はPanda3Dを利用してゲームを作ってます。
>>520 Webアプリ。CherryPyでがんばってます。
次はTwistedで。
>>520 byte of pythonのサンプルコードを作っています。
エディタとかつくってみてぇええええ
536 :
527 :2005/10/22(土) 00:18:27
>>528 >>529 うぉー。
ありがとうございます。
ctypesを使うことでやりたいことができました。
ctypesすこぶる快調絶好調です。
本当にありがとうございました。
しかし、こんな便利なモジュールがあるとは・・・。
もっと調べてみる必要有り。
pythonからCのライブラリを使うときの方法としては、
>>529 にもあるような直書き
swig
ctypes
Pyrex
の四つのアプローチがあるよね。
どれも長所短所あるのでうまく使い分けられるとベストよね。
そうだわよね。
その辺は各自ググって調べる方向でいいんでは?
どの方法も分かりやすいチュートリアルが用意されてるので
てか拡張モジュールを書くのにいろんな方法があることが分かって
勉強になりますた。サンクス
>>538
541 :
537 :2005/10/22(土) 12:44:12
542 :
デフォルトの名無しさん :2005/10/22(土) 16:45:26
data1=["a","b","c"] data2=[1,2,3] を、python内でパイプを通して、 コマンドに渡したいのですが、 いったんtextに渡して txt='' for i in range(3): txt+=str(data1[i])+' '+str(data2[i]) if i != 2: txt+='\n' cmd='echo "%s" | コマンド' % txt os.system(command) しか思い浮かばす、効率が悪くて困ってます。 popenもうまくつかえません。 どうしたら良いのか、ご教授よろしくお願いします。
544 :
デフォルトの名無しさん :2005/10/22(土) 18:04:17
>> 543 ありがとうございました。 参考にしてうまくいきました。
thx
popen系は名前の付け方がアレなので
>>545 に乗り換えるよ
Python以外で書かれたライブラリをラップする場合だけど、 漏れはPyrexを使う場合が多いかな。 スタティックリンクなライブラリでも使えるしね。
548 :
デフォルトの名無しさん :2005/10/23(日) 17:19:24
なんかclose()のタイミングによってread()の挙動が違っちゃうのはなんでだろ ↓test.binという999bytesのファイルを全部読み込もうとしたとき >>> f = open('test.bin') >>> s = f.read() >>> len(s) 0 >>> f.close <built-in method close of file object at 0x00E98B18> >>> len(s) 0 >>> f = open('test.bin') >>> s = f.read() >>> f.close <built-in method close of file object at 0x00E98B60> >>> len(s) 999
↑close呼んだことになってないけど誤記?
550 :
デフォルトの名無しさん :2005/10/23(日) 17:48:32
うわぁあああああああorz
551 :
548=550 :2005/10/23(日) 17:49:11
実行時にプログラム全体で生存中のインスタンスのリスト等を取得して、 そこからインスタンスを得るなんていうウルトラCはできますでしょうか。
553 :
548=550 :2005/10/23(日) 19:56:59
やっぱおかしいにょ。バグかな >>> os.path.getsize('test.doc') 19456L >>> f = open('test.doc') >>> s = f.read() >>> f.flush() >>> len(s) 6
zope上のpython scriptの例とか参考になりそうなサイトを紹介して欲しいです。
555 :
548=550 :2005/10/23(日) 20:24:58
なんか00をEOFと勘違いしちゃうとかありますか。。。クマッタ $ head -c 16 test.doc|xxd.exe 0000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000 書き忘れましたが環境はオフィシャルから落とした バイナリのpython2.4.2です。windowsxpです。
f = open('test.doc', 'rb') でバイナリモードで開けば良いんじゃない?
>なんか00をEOFと勘違いしちゃうとかありますか EOFは0x1a
559 :
548=550 :2005/10/23(日) 20:41:52
560 :
548=550 :2005/10/23(日) 20:42:46
>>558 そうなんだよ!!!初めて知った!ありがとう!
普通のファイルに対しては'rb'とかでバイナリモードに、 stdinとかstdoutを対象とする時にはmsvcrtを使うということかな。
562 :
デフォルトの名無しさん :2005/10/23(日) 21:55:41
ある callable なオブジェクトが、実際には引数をいくつ取るのかを 呼び出し前に知るにはどうしたらよいですか?
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′ ̄ ̄(,,゚Д゚) < UU ̄U U. \________
>>562 somefunc.func_code.co_varnames
詳しくは inspect の所を見てみて
ごめん。ローカル変数も入るから somefunc.func_code.co_varnames[:somefunc.func_code.co_argcount] の様にスライシングしなければ駄目だった
566 :
562 :2005/10/23(日) 22:37:52
>>564 ,565 THX
somefunc.func_code.co_argcount / co_flags / co_varnames のあたりに欲しかった情報がありそうです。
EOFがC-zなのはwinだけなんだっけか
>567 VMS
wxPython をインストールしたら PyAlaCarte PyAlaMode PyCrust PyShell という 似たようなエディタが4つも付いてきて訳が分かりません 何で4つも付けてくるの?
サービス精神
Robin Dunnがお人好しだから
Pythen
575 :
デフォルトの名無しさん :2005/10/24(月) 22:59:55
576 :
デフォルトの名無しさん :2005/10/24(月) 23:01:31
↑ 「ス」と「か」の間に任意の好意的な形容詞が入るヨ もとい打ち間違い
このクイックリファレンスwwwwwwちょwwwおまwwwwwwwwwからみんなも行ってみなよマジおすすめ。 好意的な形容詞を入れてみた。
>>569 すみません、もうひとヒントいただけないでしょうか。
for n, t in globals().iteritems(): print n
だとすべてのインスタンスを補足できません(T-T)
import gc gc.get_objects() でどう?
>>570 サンプルじゃない??
ソース見れるでしょ。
>575 を、印刷用 PDF とかに収めたものってないのかな? ブラウザから印刷すると一部はみ出るし、 テキスト化すると各種デコレーションやカラー属性が 消えちゃって残念なんだよなぁ。
>>585 http://rgruet.free.fr にはHTMLを各スタイル毎にPDF化したやつ
・ Quick reference for Python 2.4 (PDF / Modern Black & White style, A4)
・ Quick reference for Python 2.4 (PDF / Modern style, A4)
・ Quick reference for Python 2.4 (PDF / Classic style, A4)
ってあるんだけど、これではだめだったの?
個人的には、上記のPDFでもページ境界とかがいまいちで、reStructuredTextを
公開してほしかったなーと思う。
588 :
587 :2005/10/25(火) 11:32:36
かぶった
あーおもいっきり見落としてた(quickref ページしか見てなかった) ありがと。 でも、せっかくの pdf が psnup で 4-up 印刷とかかけると化けちゃうYO…orz
590 :
デフォルトの名無しさん :2005/10/25(火) 17:48:38
NewList = [OldList[8], OldList[5], OldList[11], OldList[3]] としたいときに、もっと短く書く方法はありませんか? 番号ならべるだけで NewList = OldList[8, 5, 11, 3] みたいな感じでできないでしょうか?
内包厨がやってきましたよ. [OldList[i] for i in [8, 5, 1, 3]]
リスト内包表記がわからなくて↓で書こうとしていた俺氏ね。 NewList = [] for n in (8, 5, 11, 3): NewList.append(OldList[n])
593 :
590 :2005/10/25(火) 18:44:13
おおっ、内包表記がありましたね。 ありがとうございます。
pygameドキュメントの和訳ありませんか?
CherryPyとか最近アツいらしいね。 v0.9頃の解説サイト( montpython.s13.xrea.com )とか見て へんな書き方とか昔思ってたけど、v2.1見たら完全に別物じゃん。 どうなってんの?
597 :
デフォルトの名無しさん :2005/10/25(火) 23:51:27
Python Imaging Library で、与えられた日本語の文字列を与えられたサイズで描いて、 適当な形式(例えばpng)で出力するってどうやったらいいですか?
jython使ったらjava使うの少しはマシになるかと思ったけど メソッドシグネチャが被ってるときは、しょーがないから型指定しなきゃ いけないのがわかって悲しくなったよぅ。
>>597 # -*- coding: sjis -*-
import Image, ImageFont, ImageDraw
image = Image.new("RGB", (256, 256))
font = ImageFont.truetype(r"C:\WINDOWS\Fonts\MSGOTHIC.ttc", 50)
draw = ImageDraw.Draw(image)
draw.text((50, 50), u"Hello", font=font)
draw.text((0, 100), u"こんにちは", font=font)
image.show()
600 :
597 :2005/10/26(水) 01:46:26
>>599 滅茶苦茶助かりました!ありがとうございます!
>>596 CherryPy2系はかなり変わったね。
シンプルにわかりやすくなったと思う。
ただ、まだHTTP/1.1未サポートのようだから、bihindApacheで利用するようだ。
パフォーマンスは、Apache+mod_rewrite+CherryPyの構成で、FastCGIと互角ということだよ。
602 :
デフォルトの名無しさん :2005/10/26(水) 12:49:40
603 :
デフォルトの名無しさん :2005/10/26(水) 23:21:31
py2exeで1つのexeファイル(singlefile)にできないので泣いてたら、いつのまにかできた。 ウレシス from distutils.core import setup import py2exe setup( options = {"py2exe": {"compressed": 1, "optimize": 2, "bundle_files": 1}}, zipfile = None, console = ["test.py"], )
605 :
デフォルトの名無しさん :2005/10/27(木) 18:35:37
pythonのsignal(というかos.kill) って、Mainthreadから叩かないとダメぽ? つーか、別threadで走っているsocket.pollを中断させたいんだけど、 妙案求む。(asyncore使用中)
socket には poll ないぞ. select.poll を使ってるなら,timeout を設定して時々処理を戻させて,終了フラグで 落とすようにしたらどう? Thread.join() で落ちるまでブロックできると思うよ.
>606 select.pollだごめん。 やっぱりtimeoutしかないかなぁ。0.05とかに設定してるけど、なんか気持ち 悪いのと、負荷分散ネームサーバ書いてるので反応が遅いのは激しくマズー。 signalについては、URL忘れたけどpythonのThreadとsignalの相性が悪い という話を読んだ。
608 :
デフォルトの名無しさん :2005/10/28(金) 15:23:01
もしかして、Cの型ってPython2.2の書き方で書き直さないと 継承できないの?
610 :
608 :2005/10/28(金) 15:48:07
>>609 ガーソ!!世の中そんなに都合良く行かないよな...orz
Pythonでプログラミング始めようと思ったんだけど、 良い本が無さそう。 苦難の日々が続く
>>611 安心しろ、Web上に有用なドキュメントがある。
気になったんだけどOreillyのPython入門や初めてのPython 第2版買った人居る?
>>612 初めてのPython第2版とクイックリファレンスを買ったよ。
614 :
611 :2005/10/28(金) 19:20:06
どこかの大学のテキストはなんか偏ってる感じがしてだめだった。 んー・・・
>>611 初めてのPython第2版をお勧めするよ。
Pythonの基本知識として知っておくことが
これ1冊でだいぶわかると思う。
616 :
デフォルトの名無しさん :2005/10/28(金) 19:21:09
「初めてのPython 第2版」を買いました。4800 円の価値はあります。元は取りました。Web だけで済ませていたら何百時間も余分に仕様を調べるだけで浪費れたと思います。 python はドキュメントがしっかりしています。でも分かり難いドキュメントも多く有ります。この本は python を解りやすく説明する仕事をしてきたプロが書いた本であることが良く分かります。
宣伝みたい。
618 :
デフォルトの名無しさん :2005/10/28(金) 19:51:20
ハジパイ第1版をamazonで安く買ったけどわかりやすくてよかった。 その前に買ったオライリーのヘビ表紙のやつは中級者むけらしく全くわからんかった。
619 :
デフォルトの名無しさん :2005/10/28(金) 19:56:30
ネット上の情報が少ないことは確かだと思う。良いテキストはけっこうあるけど いろんな場所にバラけてて捜しにくい。まとめサイトが欲しいぽ。
620 :
612 :2005/10/28(金) 20:07:25
結構買ってる人いるのね。本なんて要らないと思ってるのは少数派のようだな〜
>>620 > 本なんて要らないと思ってるのは少数派のようだな〜
そんなDQNが大勢いたら困るよw
そこで Python.jp ですよ。 のはずなんだが、標準ドキュメントの日本語訳を配布している以外に全く役に立たない罠…。 # 日本語ドキュメントにはとてもとてもとっっても感謝しています。が、、、、、、
- tutorial 日本語訳 - quick reference - library reference - 経験値(コード読みあさり・書きなぐり) これ以外に何か必要? (といいながら本も見てる口だけど)
お題を出して初心者が解くのとかどうすか? pygameでもなんでも、使わせるかんじで。
> - 経験値(コード読みあさり・書きなぐり) > - 経験値(コード読みあさり・書きなぐり) > - 経験値(コード読みあさり・書きなぐり) すこしでも参考テキストを読んで経験値をためやすくしたいです… orz
。じゃなくて.を使うあたりが研究者っぽいな。 わかった、読んでみる。 餌も時々与えてくれよ”
>>626 やっぱプログラミングは人のコードを読んで勉強するもんだよな。
629 :
デフォルトの名無しさん :2005/10/28(金) 22:13:46
>>626 チュートリアルをモニタで読むのに疲れたorz
pdfで配布されていないか探してくる!
インタラクティブ・モードで、 >>> hoge = "あいうえお".decode("sjis") >>> hoge u'\u3042\u3044\u3046\u3048\u304a' としたとき、かわりに >>> hoge u'あいうえお' と表示される方法はないでしょうか。 Pythonを再コンパイルせずに、site.pyに何か書いてフックするとかしたいんだけれど。
つ sys.displayhook
基本的な文法の入門はWEBに十分あるけど ライブラリの使い方ドキュメントが足りない
それって "プログラミング入門" とかそのものだと思うんだけど…。 "ライブラリの使い方"というのは要するに"プログラミング技術"であって、 どの言語においてもキチンとしたドキュメントはWebになんかないから、 それこそ本とか買わなきゃ読めないと思うんですが。 Pythonでプログラミングする本は確かに少ないけど、ちょっと違うのかな。 >635 は何が欲しいといってるんだろう。
Python Cookbookとかでいいんじゃないの?
>>636 使い方がわかる程度に書かれたリファレンス
今あるのはただの関数一覧表
>>638 あのライブラリリファレンスを読んでも使い方が分からないとは
単純に経験不足だと思うが……
>>639 サンプルコードもたくさん入ってるし
Pythonのライブラリリファレンスは必要十分
それ以上学びたければ
アルゴリズムやデータ構造などプログラミングの基礎を勉強するとか
他人のソースコード解析するとか
師匠を見つけるとかすれば?
誰かのソースを読むのが一番なのかな?やっぱり。
ここらへんが 書けるようになる/なれない の一つの分岐点なのかも。 あながち初心者に限った話ではない気がするな。興味深い。
いまさらながら CherryPy をはじめた。 (・∀・)イイ! Zope3に挫折したヘタレな漏れもこれなら逝けそうだ。 ところで、お前等お勧めのTemplateライブラリを教えてください。
pythonのジェネレータってrubyのイテレータと同じだと思ってよい?
人様の書いたコードを読んで勉強、ということでは BitTrrentを読んで学ぶPython、みたいな日本語の記事がどこかにあったよ。 「あとで読む」でブクマしてる奴は多いはずw
素人の日曜プログラマだけど、手も足も出ないってことは無かったが、 「関数一覧表」って表現には激しく同意だな。 それなりに無駄な時間を使ってる気がするし、ストレス溜まる。 Ruby のリファレンス・マニュアルみたいに簡単な例文が書かれてると、だいぶコストが違う。 つか、経験値を要求する時点で、ちょっと間違ってないか? その経験値はどこで溜めろと? と思うんだが。
関数一覧って、それがライブラリリファレンスってものじゃん。 ライブラリリファレンスは、特定のオブジェクトやメソッド等を知る ためのものであって、言語自体を知るためのものではないと思う。
つまるところ理想と現実だよ。 理想なのはユーザが求めるあらゆる情報を完備したマニュアルだが、 現実には欲しい情報が載っていないマニュアルの方がずっと多い。 開発者としては理想的なマニュアルを目指して努力を続ける一方で、 ユーザとしてはマニュアルの不足を補う情報収集能力を養うしかない。 開発者が「理想的なマニュアルなんて無理」と開き直るのはある意味怠慢だが、 ユーザが自分の情報収集能力の不足を人のせいにするのも同じぐらい怠慢。
タイマンじゃこら!表出ませんかコノヤロゥ!
http://pydoc.org/ の日本語版が欲しい。
っつーことはソースに日本語版パッチ当てないとだめなのか?
pyjugはsunみたいに言語ビジネスしてるわけではないからやってられんだろなと思うが、
zope japanの中の人が布教のためコアライブラリだけでもやってくれることを妄想中。
651 :
650 :2005/10/29(土) 15:23:45
URL間違えた。あれだよ、コマンドラインでpydocで立ち上がるアッチの方。
>>650 >zope japanの中の人が布教のためコアライブラリだけでもやってくれることを妄想中
中の人などいない!
ライブラリは中も見えるので問題なく使えるが、exceptionまわりの こまかい仕様とか、内包表記とかジェネレーターとかイテレータープロトコルとか 説明が散ってたり、言語仕様(Language Reference)見なきゃいけなくてウザい。
そこまで望むならお金払って本買うしか
どんどんライブラリが開発され標準に取り込まれて 発展してきた経緯から仕方ないんだけど いろいろなライブラリ・クラスでなんとなく統一性・一貫性みたい なのがない点はイヤっていうことを書いている人がいたね。 具体例すぐに上がらないけど hoge.remove() だったり fuga.delete() だったりとかそういう部分が "フツー、コレ" っていう風に決まっていない。 ライブラリの末端までそういうのがきちんとしている言語なんてあるのか? という気もするけど
>>656 おれは普通の文字列操作とreオブジェクト使った操作が
ややこしくてこまる
AWT・Swingの地獄よりマシ まぁ最低のシステムと比べても意味ないが
関数一覧を欲っする人はPythonのソースコードを読んでください。
関数一覧を欲する人はライブラリドキュメントのreが参考になるでしょう。
言語構文説明とかに出てくる「式」と「文」の違いがわからんので教えてちょ。
664 :
608 :2005/10/30(日) 01:16:14
>>663 文の内で、値を返すものを式という。
でいいのかな?
文は、例え1文字だろうがSyntaxErrorがでなければPythonは
文として認識してるということだろう。
>>664 まだよく意味がわからないけど返答thx
今言語仕様読んでるんだけど
while の式のとこに代入文書けないっぽいことがわかって悲しい。
私の力では説明しがたいのだが >文の内で、値を返すものを式という。 これは違うぞ。 文(statement)は組み合わせが出来ない。 式(expression)は組み合わせることが出来て、他の式の一部にもなれる。 文はツリーの幹で、式はツリーの枝。
C言語だと代入式だからwhileに入れられるけど、 Pythonだと代入文だから入れられない。
>>666 ちょっと分かりました。
条件「式」と実行「文」かな?
>>667 C言語系から来た人からすると少し悩みましたぜ
インタプリタが何故に入力を弾くのか
言語仕様読んで納得するっての
ちょっとは経験ないとわからないだろうから
アホでも分かるBNFとかの説明とかあるといいなぁ。
pythonに直接関係ないけど。
関係ないけどperlでリストに対する「スカラ」ってのが 説明なしでいきなり登場するから全然意味わからなかったなぁ。
670 :
デフォルトの名無しさん :2005/10/30(日) 02:10:33
スカラーとベクトルって数学で習ったよ
BNFの分かりやすいHPの紹介キボンヌ
BNFはアホでもわかるだろう。 なんせ<〜>で表す非終端記号と::=と|の3つ(と具体的な文字か文字列)しか 要素はない。
問題は組み合わせたときに結局なにが書けるのかイメージするのが慣れないとたいへんてことかと>BNF あと拡張BNF表記法の氾濫
>665 式・文はさておき、その件については C で == と = を間違える事故が死亡事故のうち 無視できない割合を占めていることへの反省だと思う。 俺も while の中で代入するのはイクナイと思う
C言語が「左辺が定数のときのみ比較できる」仕様だったらよかったのに。 pythonに関係なくてスマソ。 pythonのBNFドキュメントはハイパーリンクになってるのがすげー読みやすい。
676 :
675 :2005/10/30(日) 16:11:10
pythonスレのまとめサイトって無いんでしょうか? 過去ログを読みたいんですが
moinmoinで作ってよ
681 :
664 :2005/10/30(日) 21:56:59
>>666 > 文はツリーの幹で、式はツリーの枝。
ということは、式は文に含まれているということでしょ?
ツリーを例に使ったのは失敗だろうな。
>>662 をローカルに一気に落とせる場所はないだろうか?
つwget
pydoc --help
686 :
666 :2005/10/31(月) 02:15:26
脈絡もなくツリーを例に持ち出したのは失敗だったか。 文が存在しない言語もあるし、return文もあるから、 >文の内で、値を返すものを式という。 この表現に違和感を感じたんだよ。 確かにPythonの文は式(式文)を含むことに間違いない。
>>686 return 文自体が値を返す言語なんてあるの?
688 :
681 :2005/10/31(月) 14:28:27
>>686 > 脈絡もなくツリーを例に持ち出したのは失敗だったか。
ツリーって構文ツリーの事じゃなかったのか?
> 文が存在しない言語もあるし、
Lispの事か?
> >文の内で、値を返すものを式という。
> この表現に違和感を感じたんだよ。
例えば、C言語でfor文があるが、例えばbreakで抜けたかどうかの
真偽値を返すfor式だとしたらどうだ。
そうすれば、intを要求している所に書くことができるだろう。
しかし、実際はfor文は値を返さないので、intを要求している所に
書かれても、それ以上評価のしようがない。だから、エラーになる。
Lispの様に全てが式の言語もあるが、それと比較して文は?と言われたら
値を返さないものと言う以外にないだろう。
return文とは言うけど、実際に値を返してるのは関数呼出しのhoge()だろう。
return文自体が値になるわけじゃない。
情報工学とかでは式・文の定義ってどーゆー風になってんのかな。 そっちの学科でも定義はスルーして対象言語だけ学習するもの?
>>689 式や文の定義は言語依存だよ。一般論は存在しないと思う。
対象言語を限定しないで式だの文だのを議論するなんてのはナンセンス。
>>690 なに! じゃぁpythonドキュメントを目を皿にして読めば書いてあるのかな…
書いてないなら定義なしで用語を使ってるドキュメントであり、そんなことはありえない…のか?
692 :
691 :2005/10/31(月) 17:07:37
>>692 初心者は「文とは何か」「式とは何か」なんて考えない。
また、そういう問いに厳密な答えを提供するのはBNF以外にあり得ない。
例えば「式は文の構成要素、文はプログラムの構成要素です」と言ったところで
初心者にしてみれば右から左だろうし、答えとしては大雑把すぎて理解を助けるどころか
理解を阻害しかねない。結局、きちんと理解したければBNF嫁ということになる。
つーことで、
_
/,.ァ、\ B
( ノo o ) ) N
)ヽ ◎/(. F
(/.(・)(・)\ . 嫁
(/| x |\)
//\\
. (/ \)
式は文だよ派 └文のうち値を持つのが式だよ派 └文は値を持たないよ派 └return文は値を持つよ派 │└値を持つのは関数呼出でreturn文自体に値はないよ派 └call文は値を持つよ派 式は文じゃないよ派 └式と文は別物だよ派 └式は単文でもあるから文だよ派 └式は文の一部になれるから文だよ派 └式は文の一部になれるけど文じゃないよ派 式・文の定義は言語依存だよ派 └Lispには文はないよ派 │└アセンブリ言語には式も文もないよ派 │ └あれは言語じゃないよ派 └BNFで定義できるよ派 └BNFは構文の定義だけで本当の式と文の定義は別にあるよ派
>>693 「初心者は「文とは何か」「式とは何か」なんて考えない」けど、
マニュアルに式だのなんだの書いてあるから「それってなに?」ってところに
いきなりBNF嫁ってお前らBNF派の血は何色ですか
>>694 BNF嫁
>>694 分類が下手だなあ。プログラム書いても場合分けとか苦手だろ。
組み込み型の、例えば文字列が str なのか stringなのかとかって type()すりゃ分かるにしても、 マニュアルだと どこらへんに書いてありますか?
>>696 きっとインデントを全角スペースに置き換え忘れたんだ、察してやれよ。
>>695 問いの答えは必ずしも簡単とは限らない。勉強になっただろ?
700 :
688 :2005/10/31(月) 20:39:41
>>694 おもろいね。
callが値を返すなら、callは演算子と言った方が正確だろうね。
「言語仕様がキモいと言ってくる他言語ユーザーがいても無視してください」 HSPユーザーML
Ruby のことかー
またGoogleのシンパか
>705 まぁまぁ、落ち着いてくださいよ。
707 :
デフォルトの名無しさん :2005/11/01(火) 16:20:53
Pythonのyield文使ったジェネレータ構文て、すごい便利だよね。 もっと特徴として有名になってもいい気がするんだけど。 ほかの言語にも似たような機能ってある? Rubyにも似たのがあるらしいけど、ちょっとちがうよね?
入れ子になったリストを辞書に突っ込みたくって、 タプルに変換しようとしたけど、tuple()って中まで変換 しないんだけど...。 出来るかぎり高速に一発で変換するにはどうすればいいんでしょうか?
>>> def recursive_tuple(t): if isinstance(t, list): return tuple(map(recursive_tuple, t)) return t >>> recursive_tuple([1, [2, [3, 4], 5], 6]) (1, (2, (3, 4), 5), 6) >>>
キーをstrで文字列にするとか
713 :
709 :2005/11/01(火) 20:37:51
>>710 どうもです。
やっぱり、自前でやるしかないのかなぁ。
>>711 取り出して使うことを考えると、そのまま格納したいなと。
てきとーなクラスを定義してwrapすりゃいーんじゃね?
yieldがよくわからん
プログラムの途中で抜け出して、 再び途中から始めるための機構
2.4になって、ジェネレーター表現ってのが追加された事を 今更思い出したんで、ちょっと調べてみた。 g = (x**2 for x in range(10)) print g.next() と def __gen(): for x in range(10): yield x**2 g = __gen() print g.next() が同じで、 print [x**2 for x in range(10)] と print list(g) が同じなんだな。 やべー、理にかなってる!! リスト内包って、ジェネレーターをリストに展開したものだったのかー!! だったら早く言ってくれよ。リスト内包だけ見せられても違和感があったよ。
719 :
707 :2005/11/02(水) 10:08:39
>>712 >>718 ありがとう。IconとC#、調べてみるよ。
>>715 716の言うとおり。具体的な使い方としては、
717みたいな緩慢なイテレータとしての使い方と、
スレッドみたいなもの、というか半コルーチンとしての使い方の両方ある、
よね!?
720 :
715 :2005/11/02(水) 10:17:43
>716-719 yieldの件参考になりましたありがとう。 今度使ってみます。
おれはメタクラスがよくわからん
時代遅れの人向け python キャッチアップ用のページとか どこかにないのかな?
別に背伸びする必要はない。
ジェネレータ表現のおかげで、 >>> tuple(x**2 for x in range(10)) (0, 1, 4, 9, 16, 25, 36, 49, 64, 81) タプル内包ができるけど、もう「内包」って言葉は無意味だね。 俺には馴染みがないし、いずれなくなるんだろうな。
726 :
デフォルトの名無しさん :2005/11/02(水) 21:04:22
無くなりはしないだろう。 計算済みの要素から成るリストが欲しい場合には依然としてリスト内包が有効。
駐車違反でレッカーされる直前のことだろ。
731 :
730 :2005/11/02(水) 21:40:06
さんきゅー
>722 オフィシャルに出てるPythonのWhatsNew( >733 のやつだね)を 自分の知っている最後のバージョンから順に読んでいくのが良いんじゃないのか? でも2.4のWhatsNewは日本語訳されてないんだね。
>>726 リスト内包は、list(ジェネレータ表現)と同値だから概念としてなくなる
ってだけで、機能的にはなくならないよ。
辞書の内包表記無いんだね. dict((x, math.sin(x)) for x in (2*math.pi*i/360.0 for i in range(360))) でとりあえずは書けるけど.
>>738 とりあえずって言うか、書けてんじゃん。
しかし、なぜそんなに複雑な例を...。キーに浮動小数点使ったら
値を取り出し難くない?
キャッシュ目的の三角関数表を作るんだったらこれでいいんじゃない?と思ったけど, 分割数が分かってるならキーを整数にした方が高速なのかな?
dictionaryのもつアイテム数が同じ場合、キーに整数を使うか浮動小数点数を使うかで、 dictionaryの応答速度は変わるものなの? こういう時にこそ timeit() で測るべきなのかな。
742 :
739 :2005/11/03(木) 01:08:39
>>740 ,741
俺が言いたいのは、浮動小数点は計算仮定によって結果が微妙に
一致しなくなる事があるんで、キーには不向きだという事。
浮動小数点同士をイコールで比較するのが馬鹿げているのと同じ事。
Python Cookbook の翻訳マダー?
ニシキ蛇の料理レシピ
らくだより(゚д゚)ウマー
>>747 俺だったら英語見た瞬間やる気なくすので
自分で辞書片手に翻訳すれば 英語とPythonの勉強になって さらに人の役に立っていいことづくめじゃん なんでやらないの?
二兎追うものは代アニに入学するっていうじゃん
Pyお姉さんの解説希望
Pychinkoって言って欲しい
>>748 だってこのポッドキャスト英語だよ?
聞けって紹介してんだから、イントロダクションが日本語だろうが関係なくね?
それはともかく、そのポッドキャストでも紹介してたけど、Magnus Lie Hetland
(PyJUGに訳があるインスタント・ハッキングとかを書いた人)の
Beginning Python: From Novice to Professionalは良い本らしいね。
http://www.hetland.org/writing/beginning-python/ Apressがebook版出してれば即買いするんだけどなあ
Pythonって整数変数が不変性(immutable)オブジェクトになってるじゃん。 これのネタ元になってる言語があると推察してるんだけど。 こういう仕様になってる他の言語ってある?
Javaも小さい正数値はそうだったと記憶しているよ
すまん Javaの方が後発でした
pykfを2.4にインストールしたいんだけど 教えてください。
zopeは機能が豊富すぎるので必要最低限の機能(任意で選択)以外を削りたいんだけど。
>>759 コンパイラなくてコンパイルできんのです
分かってんじゃん。
解決したよ。ハゲ
良かったな。
764 :
デフォルトの名無しさん :2005/11/04(金) 18:02:22
変数に対してその変数名を得るメソッドや関数はありませんか?
( ,,,,,,..)、、_ / `ヽ、 / / ̄ ̄ ̄ ̄ヽl l_/ ● ● i 1本生えてるってばー!!! | ( _●_) / 彡、 |∪| 、`\ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
>>764 多分ないと思う。
Pythonの変数は辞書に格納されてるから、名前→値とはなってるけど
名前←値は無理っぽい。
objが目的の変数だとして、めっさ強引にやると
>>> obj = 3
>>> [key for key, value in vars().iteritems() if id(value) == id(obj)]
['obj']
プリキュアが一人増えた
何でPython使ってる香具師に アニオタや虹オタが多いの?
虹と蛇って似てるよね
>>767 「pygame実況中継」効果
…は、日本だけか。
2.4以前にinternの意義がよくわからん。パフォーマンス用?
メモリ消費量の減少と辞書検索効率の向上が効果だそうな>intern ただあんまり劇的に向上するわけでもないとか、 Unicode文字列にintern関数が効かないとかいう話も。 普段は全く気にする必要はないと思われ。
zipfileでファイルを少しづつ読み出しながら処理をする事ってできないの? 大きなファイルを読み出そうとして、うっかり他のプロセスを システムに殺されそうになった。
zipfile.py の 347 行目ぐらいで bytes = self.fp.read(zinfo.compress_size) と一気に読み込んでいるからこの部分を変更しないと無理
pythonからmp3ファイルのタグ情報を読み込もうとしてるんだけど 日本語名のファイルを読み込むと訳のわからない文字コードになります。 例: 口唇 → \x8c\xfb\x90O 誘惑 → \x97U\x98f ↑これはなんですか?通常の日本語にする方法はありますか? ちなみにeyeD3とid3readerっていうモジュールを使用しました。
ぐぐれよ… 最低でもこれくらい書け * ID3 タグのバージョン * 使っている python の id3 パッケージの種類/バージョン
あ eyeD3 ね。eyeD3 と id3reader 併用するのが良くわからんが eyeD3 は v2.x を自分で読み書きする範囲では UTF16 で 日本語もそこそこ問題なく扱えてます。 他所で書いた ID3 タグを読むのは ID3 version と (各々好き勝手にやっているらしいところの)文字コードを 考えないとダメだと思いますよ。
インターネット越しに取得したEUC_JP文字列をUnicodeで保存し、 次に保存した文字列を読み出して画面に表示させようと思い、 ・保存時 data = unicode(s, 'euc_jp') ・表示時 str(data) としたのですが、UnicodeEncodeErrorになってしまったので、 ・表示時 str(data.encode('utf-8')) として切り抜けたのですが、これでよかったのでしょうか? ご助言お願いしますm(_ _)m
str() はいらないんじゃないかな
すみません。それぞれ data、 data.encode('utf-8') の間違いです。
785 :
デフォルトの名無しさん :2005/11/06(日) 16:59:05
winのIDELでCtrl+Pを間違えて押すとプリンタと通信するの抑制できないでしょうか。
786 :
785 :2005/11/06(日) 17:20:32
>>785 設定のkeysetを変更することで可能になりました。
Idel Unix Styleはemacs系か。bashっぽい定義と差し替えできないかな。
import this やってみてください。面白いのがでてくる(interactive・commandlineモードでよい)
788 :
デフォルトの名無しさん :2005/11/06(日) 17:49:40
>>770 おいおい。両方俺に当たってるけど(ry
けど、俺留学のとき蛇にはまったから、アニメ・ラルクは関係ないかも
>>787 >import this
ネタばれ注意につき、 おー! とだけ書いておく。
ファミコンの裏技みたいだ
>788 極めてどうでもいい話だが 770の「虹」はラルクじゃなく「二次元」、つまりアニメ・漫画・ゲーム全般を指すと思われ
虹 = ラルク方程式はまぶしいよ。 なんて普通の人なんだ。 虹裏とかいう言葉とは無縁なんだろうな。
「パイソンたん」
L'arc en Cielが虹の意味だと今知った俺はどのくらい普通の人でしょうか
よくimportされるモジュールのかなり正確なランキングが知りたいんですけど・・・ある?
投票で sys 1 re 1 struct 1
Blender 1
# find /Library/Frameworks/Python.framework/Versions/Current/lib/python2.4/ -name "*.py" -exec grep "import" {} ¥; >allimport.txt infile = file('allimport.txt', 'rb').read() import re ptn1 = re.compile(r'^¥s*import (.+)$', re.M) ptn2 = re.compile(r'^¥s*from (.+) import .+$', re.M) mods = [mod.strip() for mod in ','.join(ptn1.findall(infile)).split(',')] + ¥ [mod.strip() for mod in ','.join(ptn2.findall(infile)).split(',')] count = {} for m in mods: if not count.has_key(m): count[m] = 0 count[m] += 1 print sorted(count.items(), key=lambda k: k[1], reverse=True) ----------------- [('pytz.tzinfo', 1577), ('sys', 1271), ('os', 975), ('types', 689), ('string', 516), ('time', 360), ('unittest', 358), ('re', 310), ('wx', 282), ('test', 205), ('Pythoncard', 203), ('Numeric', 198), ...
>>799 サンプルに偏りが認められる。
したがって不可。
801 :
デフォルトの名無しさん :2005/11/07(月) 08:51:32
もれの場合、標準モジュール以外のモジュール中 wx, Numeric よく使う
良く使うのはwin32oleかな。
俺はkinterbasかな
mathとrandom
reとurllib2
re, string
>>801 で気づいたんだけど,今のrandomはシステムのrandomを使ってないんだね.それとも昔から?
PythonにはC言語のdo...whileの様な制御文は無いかな?
C以外にその制御構造って採用してる言語多いの?
>>809 多いかどうかはしらんがPascal、modula-2/3にもあるな
>>805 >PythonにはC言語のdo...whileの様な制御文は無いかな?
ないよ.
whileと break を使えばいいからじゃないかな.
>809 QuickBasicにもあったような気がする。 WHILE〜WENDとLOOP〜WHILEだったかな。
813 :
808 :2005/11/08(火) 21:14:42
>>811 サンクス
>>809 C#、Java、Perlも採用してるから
do...whileの様な制御文を持つ言語は多いと思う
公式にルビまなんて発刊してるとこには永遠にかなわないと思う
>>814 そのPEPから飲尿。
do:
<setup code>
while <condition>:
<loop body>
妙な感じだなー。whileとdo-whileを並べてみるテスト。
while <condition>:
<loop body>
do:
<setup code>
while <condition>:
<loop body>
うーん・・・。
do:
<setup code>
while <condition>:
<loop body>
while <condition>:
<loop body>
ううーん・・・。
do: を単に if True: の syntax sugar にして, while を do: ブロックの中に入れたらいいんじゃね? って誰か言ってなかったっけ.
do while は条件が倒置されて (書きやすくても)読みにくくなりやすいので python way では無理にその記法を導入しなくても いいんじゃないかと思うんだけど 今までなかったのはそういう理由じゃないのか?
上でいうところの <setup code> をうまく書けるようにしたいということなんじゃない?
doしちゃいな!
doすりゃいいんだい?
dowhile <condition>: <loop body> 一回目は condition を無視 ・・・直感的とは言い難いなぁ
それは地雷以外の何者でもないと思う… のは保守的すぎ?
>>823 こう書けば直感的に分り易いと思う。
do:
<loop body>
while <condition>:
ループ きたー
Pascal/modula-2系では、直感的に前判定か後判定かわかるように、 while do .. と repeat ... until というように、 あえて予約語が同じにならないようにしている、というのを何かで読んだ。 (たぶんWirth先生のどっかの談話)
PEP315は普通のwhile文と間違いやすいから whileの替わりにuntilを使った方が良さそうだな
PythonたんがPythonの基礎を優しく教えてくれる入門書が欲しい
流れをぶった切る質問で恐縮ですが,Windows で使える Python の違いって なんなのでしょうか? ちょっと調べたところ, 1. cygwin の python 2. ActivePython 3. PyJUG にある日本語環境 Python がありました.1 と 2 は 2.4,3 は 2.3 ベースなので新しい方がいいかなと思ったの ですが,日本語が使えないのは嫌だなぁとも思います.この違いを猫でもわかるよう に噛み砕いて説明してくださると大変ありがたいです. あと,プログラムも日本語を扱うものがあるとうれしいかも.
2.4から標準で日本語codecが組み込まれてるよ
837 :
デフォルトの名無しさん :2005/11/10(木) 17:43:13
2.4になってやっと、公式配布でも普通に日本語が使えるように なったと言ってもいいのかな?
840 :
デフォルトの名無しさん :2005/11/11(金) 00:27:58
オライリーのPyhthon本は分厚いので電車で読めるように上下巻とかにして欲しい
あの本は「始めの」シリーズの中で一番分かりにくい。
やさしいpythonまだー
なぜ teststring = "hogehoge" で size = teststring.size() が出来ないんだ? size = len(teststring) なんて、オブジェクト指向か? import string size = string.size(teststring) もダメだし。。。。。
そうだそうだ! teststring.new() teststring.sizeof() teststring.instanceof(string) testlibrary.import() bits.rightshift(3) test.as(hoge) test.is(fugo) func.syncronized() ができなきゃオブジェクト指向じゃねーよ。 で、オブジェクト指向ってなに?
848 :
847 :2005/11/12(土) 00:13:53
儂も気になったので訳してみました。 synchronizedは俺も欲しい (Javaで唯一「使える」機能だと思ぅ)
850 :
847 :2005/11/12(土) 00:14:59
s/以前/依然/; # orz
len(s)は関数というより演算子という考え方なんだろ。
>>845 "hogehoge".__len__()
[1, 2, 3].__len__()
{1:"a", 2:"b"}.__len__()
否定するなら、もっとちゃんと調べてからにしろよ。
まぁ、次は「__len__って。ダセーwww」とか言うんだろうけど。
853 :
847 :2005/11/12(土) 00:55:48
まぁ、PythonはPythonだ。Object指向であるかなきかは関係ない。 そんなことより、久々にjython使ったら2.1に対応するコードってめんどちゃいね。
enthonってのがあるのか・・・・ 2.3.5ベースだけどインストール楽そうでいいな・・・。
855 :
845 :2005/11/12(土) 02:51:15
いやいや、みんな ありがとう。 実はつい最近pythonを使い始めたところで、よく分からんまま ちょっと愚痴っちゃったわけで・・・。 歴史的な経緯も理解できるし、 >852 さんのように、.__len__()がある事も分かりました。 ホントにありがとうございますです。 今日は、1つ勉強になりました。 これで、Pythonレベル +1 ですね!
856 :
デフォルトの名無しさん :2005/11/12(土) 06:13:26
858 :
デフォルトの名無しさん :2005/11/13(日) 16:14:12
>>852 コールバックされることを期待しているような
__XX___() を直接呼ぶのはpythonの作法としては真っ当なんでしょうか?
オレpython初心者でスタイルやイディオムがわからんので教えて〜
859 :
デフォルトの名無しさん :2005/11/13(日) 16:30:46
pythonの作法に従うなら、 len(List) を使う。
sage
過去スレとかどこかにおいてないの?
私も過去スレdatのうpヽ(´ー` )ノキボン
まとめwikiが欲しいなぁ。 MoinMoinで〜なんていわないから、PukiWikiとかでもいいから。
pukiwikiはもうぐだぐだだからやめといたほうがよろし むしろMoinMoinを積極的に使っていこうぜ
こんな雑談スレにまとめサイトなんて・・・
旅の恥はかきすてのつもりだったのに、と思っているそこの香具師!
そこにHikiをすすめるおれがきましたよ
結局誰もまとめようとしない、に100マイル@ルフトハンザドイツ航空。
871 :
デフォルトの名無しさん :2005/11/15(火) 01:24:32
いろいろ書き加えてみた。立てた人乙
datとか持ってる人がいないとまとめる物がない。
|∀゚》 だれかいる?
ぁ ぼくがいて きみがいる
ところで >375 のPythonCard一発インストーラ どうなりましたか?
877 :
デフォルトの名無しさん :2005/11/16(水) 09:11:10
>>875 chm型式のdocumentまであったんだね、感動した!(俺が探せてなかっただけだが
管理人タンテラオツカレス
sh で書くと ----- for i in 1 2 3 4 5; do echo -n "."; done echo ----- のようにループの最中にどの程度処理が進んだかを逐次画面に出力するような 事をしたいのですが、python ではどう書けばいいのでしょうか? ----- for i in 1 2 3 4 5: print i, ----- ではループが終わった後でまとめて出力しているようですし。 教えてエロい人!!
879 :
デフォルトの名無しさん :2005/11/16(水) 11:47:45
sys.stdout.flush()
881 :
デフォルトの名無しさん :2005/11/16(水) 16:57:49
おおーやっと来たか! SVN時代からちょっとずつ使ってみてたけど、Djangoはかなり筋がいい フレームワークだと思う Ruby on Railsも気になるけど、プログラミング言語としてはPythonの方が好みなので こっちを期待してる てかRuby on RailsとDjangoの比較のまとめってどこかにあるんですかね? Djangoが正式版になったからこれから書かれるんでしょうか?
883 :
875 :2005/11/16(水) 22:38:07
>>877 あんなディレクトリがPyJUGにあったとは私も知りませんでしたよ
書いてくれた人アリガトン
ところで2.4のchmが読めないのは私だけ?
ほんとだ。目次だけしか見れない。 ひょっとして、 Python24jp.chm 壊れてるのか?
置き換えました.これでどうですか?
886 :
884 :2005/11/17(木) 00:28:02
うーん,何でだろう.ビルド環境は Win2K SP4+HTML Workshop 4.74.8702.0です. 直接開くと症状が出るようですね. ファイルをダウンロードしてから開いてみてください. 直接オープンできないよう,zip に差し替えます.
XP SP2 の人は落とした chm のプロパティ開いて「ブロックの解除」すれば 表示されませんか?
889 :
884 :2005/11/17(木) 01:23:34
>>887 > 直接開くと症状が出るようですね.
> ファイルをダウンロードしてから開いてみてください.
> 直接オープンできないよう,zip に差し替えます.
確認できました。
zip書庫の方はOKでした。本文もちゃんと表示されてます。
どうもありがとうございました。
# chmを直接ダウンロードするとファイルがおかしくなるのかなぁ。
# 直接落としたのとZIPの中身をmd5sumしても同じ値だったのに。なぜだ〜
890 :
884 :2005/11/17(木) 01:29:55
>>888 > XP SP2 の人は落とした chm のプロパティ開いて「ブロックの解除」すれば
> 表示されませんか?
直接落としてきたchmのプロパティで「ブロックの解除」してみました。
正常に表示できるようになりました。
こんなオプションあるなんて知らんかった…。 orz
どうもありがとう、おしえてくれた人。
892 :
デフォルトの名無しさん :2005/11/18(金) 00:59:29
Pythonでは、オブジェクトのメンバに、関数を入れて使うことは出来ないのでしょうか。 関数は、selfを引数に取らないものです。 class Hoge f def hoge(x): return f(x) h = Hoge() h.f = lambda x: x h.hoge(1) →引数大杉エラー とりあえず、こんな泣きたくなるような逃げをしているのですが… class Hoge f def hoge(x): return f[0](x) h.f = (lambda x: x, None) h.hoge(1) 1 Pythonでは関数はオブジェクトとして使うのは、流儀に半数のでしょうか。 とすると普通は、こう言うのはどうするものでしょう。
def hoge()にselfの記述がないのは、そゆもんなの?
クラスメソッドの定義では、暗黙的な引数として self を最初につける。 >>> class Hoge: ... f = None ... def hoge(self, x): ... return f[0](x) ... Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 2, in Hoge NameError: name 'f' is not defined
>>> class A: def __init__(self, f): self.f = f def g(self, x): self.f(x) >>> def foo(x): print "foo:", x >>> a = A(foo) >>> a.g("Hello") foo: Hello >>>
しまったー! >894 はTraceBackなんか起こしません。
ここしばらく本題から逸れ気味だったので嬉々としてレスしている奴が数名…w
これって要するに MixIn するのとは違うの? てかPythonにはMixIn無かったか。
900 :
892 :2005/11/18(金) 02:09:53
初心者丸出しで済みません。
問題の環境が手元にないので、手元のWindowsにインストールしてやってみたら…
>>> class Hoge:
... f = None
... def hoge(self,x):
... return self.f(x)
...
>>> h=Hoge()
>>> h.f=lambda x:x
>>> h.hoge(1)
1
>>>
普通にいけますね…。おかしいな…。…、あ、会社でも行った…。
selfになれてないので、
>>893 の言う通り、
問題の環境でもどこか抜けていたのかもしれません。
ありがとうございました。
ふと気になったんですが、-xオプションってどういう時に使うものなんでしょうか。 skip first line of source, allowing use of non-Unix forms of #!cmd の後半の英語がわからんです・・・
>>901 UNIX以外の#!cmdが使えるように第1行目をスキップする。
なぜなら、2行目にWin32等のpython用のコマンドが書かれてることが多いから ie. #!c:/python/bin/python.exe
>>902 なるほど、winでもシャバン(#!)使えるんですね。
ディレクトリの区切りが/なのはcygwinとかでしかダメなのかな、
winのこの辺の仕組はよくわからんです・・・
でも読み飛ばそうがしまいが、シャバン行はShellが解釈する為の
ものだと思ってました。Pythonだと単にコメント行扱いですよね。
うーん、まだ混乱中・・・
>>904 シャバンって...初めて聞いた。
で、そのシャバンはshellじゃなくてexecが解釈するんじゃない?
execは、その後に書かれた実行ファイルを起動すると。
pythonにはファイル名が渡されて、#の行は普通に読み飛ばすから
-xの存在する意味がわからん。。。
pythonがコマンドを起動する分けでもあるまい。
shebangをシャパンと読むのはネタだよね
シャバン あばよ涙
909 :
デフォルトの名無しさん :2005/11/19(土) 01:16:11
よろしく勇気!!
そんなんでageんなよw
こんな使い方はどう? 下記2行をhello.batというファイル名で保存し、実行 python -x %0 %* & goto :EOF print "Hello."
さて、そろそろ次スレのタイトルを考えようか。 自分としては最後に "Pythonのお勉強 Part8" を付けることだけは譲れない。
913 :
デフォルトの名無しさん :2005/11/19(土) 02:08:12
シャリバン ギャバン とか名前だけ知ってるけど、同類?
エクステーション pyとpycて何が違うんですか。
>>911 随分とトリッキーな事を思いついたな。
確かにそういう使い方があるかも。
BATはよく知らんが、goto :EOFじゃなくて、exitみたいなのって
なかったっけ?
>>915 .py→ソース(テキスト) .pyc→.pyのバイトコード(バイナリー) .pyo→.pycが更に最適化されたモノ
918 :
デフォルトの名無しさん :2005/11/19(土) 09:44:33
マジレスするとシェバング。スペルわかんねぇけど shbang かなぁ。
919 :
デフォルトの名無しさん :2005/11/19(土) 09:50:33
イテレータとジェネレータがよくわからない!!教えてください! たとえば for files,dirs,root in os.walk('/home/nanasi/'): for name in file: print os.path.join(root,name) とかもイテレータ、ジェネレータで書けるの?
920 :
918 :2005/11/19(土) 09:52:32
>>904 「シャバン」ってのはネイティブっぽく gを抜いて発音してる?
pingをピンって言う人?
904さんの方が正しいような気がしてきたが日本人からしたらスゲー違和感ある
もともと「shell bang」なのを「shebang」だったり「shbang」と書いたりするやつね。 アメリカ人はシェバーングとかシュバーングっぽく発音するけど、グはかすかに聞こえるくらい。 ふつうの日本人が聞いたらシバンって聞こえるんじゃないだろうか。
うちの地方じゃイゲタビックリ
オラが地方じゃぁシャープビックリ
しゃーたまげた
うちじゃシャープのシャとまざってシャバングになってる。
要はpingをピンとするのかピングにするのかの違いってことだろ。
ぷいんげ
うちの先輩はそれをピングぅーとゆいます>ping
python → pyてょn → ぴちょん
てょん
ぴんぐぽんぐってない発音まで交えてpingを読む先輩をなんとかしてください。
n と ng は別の音なので、日本語の文章の中で「ン」「ング」と 書き分ける(誇張して発音する)のはある意味正しい。 ba と va を「バ」「ヴァ」と書き分けるのと同じだね。 あと、shebang は辞書にも載ってるね。 手元の辞書には #! の意味は出てないけど発音は載ってる。
さーて来週のサザエさんは
波平です。北風が厳しい季節になってきましたな。 街頭では早くもクリスマスソングが聞かれるようになりました。 今年のクリスマスはカツオには「Cookbook」、ワカメには「入門」、 タラちゃんには「はじパイ」をプレゼントしてやろうと考えております。 さて、次スレのスレタイ候補は、 【これだけは】Pythonのお勉強Part8【ゆずれない】 ★Pythonって死滅しちゃうの?Part8★ ♥萌えるPythonプログラミングPart8♥ の3本です。 次スレもまた観て下さいね〜。 じゃんけんポンッ! うふふふふふふ。
【ここいらで】Pythonのお勉強 Part8【一念発起】
なんで糞なサブタイを
>919 がネタに埋もれてスルーされちゃってる件...
>>941 こんなので許して
[os.path.join(r,n) for r,d,ns in os.walk('/home/nanasi/') for n in ns]
>>942 それって、イテレータ・ジェネレータとは微妙に違うような気が。
お勉強wikiに参考図書の項目を追加してみたよ。 「Pythonの本を紹介して」って質問に対する回答みたいなのが欲しかったので。
import sys, os def flist_generator(dir): for fn in os.listdir(dir): path = os.path.join(dir, fn) if os.path.isdir(path): for subfn in flist_generator(path): yield subfn yield path if __name__=="__main__": for f in flist_generator(sys.argv[1]): print f
946 :
942 :2005/11/19(土) 22:38:49
あ、こうすれば正解だったのか・・・ (os.path.join(r,n) for r,d,ns in os.walk('/home/nanasi/') for n in ns)
947 :
デフォルトの名無しさん :2005/11/20(日) 00:49:06
IronPythonのステータスってまだベータなんだっけ
949 :
デフォルトの名無しさん :2005/11/20(日) 01:57:07
>948 early pre-alphaだから、アルファ以前のうえ、しかも初期段階、ということなんだよね? それでいて「CPythonより速いぜ」なんて言ってるんだから、末恐ろしい。
>それでいて「CPythonより速いぜ」なんて言ってるんだから、末恐ろしい。 単にいろいろと実装してない分いろいろと実行しないから早いだけ、 と言う可能性があるので、まだ眉に唾をつけておいた方がいいと思う……。 いや期待はしてますよ。うん。
IronPythonはもともとJythonの開発をやっていたひとが作ってるんでしょ? AppletがPythonで作れるのはすごく便利だから、Jythonには期待してたんだけどなー。 せっかくPSFから助成金もらったのに、最近とんと音沙汰がないね。
FAQちょっと訳した。パイパニックって何ですか?って入れようかと思ったけど 怒られると思ったからやめた。
パイパニックって何ですか?
956 :
デフォルトの名無しさん :2005/11/20(日) 14:26:55
957 :
デフォルトの名無しさん :2005/11/20(日) 14:28:24
958 :
デフォルトの名無しさん :2005/11/20(日) 14:30:02
うーん、マジレスしたいお年頃。
# あかん
ageでこんな返事が来るとは思わなかった 今は後悔している
962 :
デフォルトの名無しさん :2005/11/22(火) 20:03:33
最近時々見掛ける.egg形式ってどう使うんですか‥‥‥? Djangoさわってみようとして気になったんですが
964 :
962 :2005/11/22(火) 22:06:26
>>963 ども。jarみたいなもんか。なるほど。
setuptools使わなくても、dlした.eggを
そのままsys.pathに通せばzipimportで使えるわけね。
お勉強wikiのページにちょっと書き足したら、 「修正した際にはこのページの下にある更新履歴に書き込みして下さい。」 って言われた。 履歴機能の弱いFSwikiを採用しておいてそりゃないよー。 いちいち手で履歴書くなんてめんどくさい。
そこで闇修正ですよ
967 :
966 :2005/11/23(水) 02:22:11
まぁセマンティックな履歴を出してくれるwikiなんぞないだろうし、 私は履歴書くのも書かないのも気分次第ですな。 ところでUnicode(BOMなしリトル)で書かれたテキストファイルは 普通に読めないのかな。 2バイトづつ読み込んで処理するのを、別に設けなければいけない?
履歴というかコミットログみたいなものじゃないのか?
PukiWikiにすれば履歴ってかバックアップが自動じゃないか?
PukiWikiはかなりグダグダ
971 :
デフォルトの名無しさん :2005/11/23(水) 09:32:19
>965 っていうか、そんなのは本来は人間がやる仕事じゃないよな。 プラグインとかで対処すべき問題だろ。
2chらしくはないけど、あれだな。 更新してくれた人に感謝するためにあると見た。
消すか消されるかっていう殺伐感がwikiの醍醐味なんだから モジモジしてないで、書くなら書いて反応みればいいのよ
履歴が気になるということは 既にある内容を消して書くのとかが大丈夫か気になってるとか。
どういう考えから更新したなんてプラグインじゃムリぽ 俺は一行アピールの場だと思ってる 自動更新履歴なんて見てもつまらない
ん? それは更新履歴の話ではなくてChangeLogの話だよな? 965の話は「ソースや文章を直したのなら、なぜ直したのかをChangeLogとして記録してくれ」 ということなの?
978 :
965 :2005/11/23(水) 13:51:34
>>977 どちらともいえるんだよな。
おそらく管理者さんとしては、「書き換えの 意図 をChangeLogとして残して欲しい。」ということ
なのだと思う。
でも、wikiを書き換えた意図が理解できないなら、もっといい記述に書き換えるとか、元に戻す
とかすればいいだけだし。元に戻すには履歴保存機能が必要なんだけど、FSwikiにそれがな
い為に、仕方なくああなったんじゃないだろうか。
# MoinMoinのような履歴保存機能があればなぁ
979 :
965 :2005/11/23(水) 14:03:55
「履歴」という言葉は混乱の元になりやすいので、 履歴保存機能 => diff, CVSみたいなやつ, Pukiwikiでいうバックアップ と読んでほし
履歴=Historyと読んでた そりゃ話が食い違う罠 2ch出身のwikiにバックアップなぞいるまいフフフ
>>971 サンクス
encodingsディレクトリを見て、どう使うのかとずっと悩んでいたよ
982 :
ミスターパイソン :2005/11/24(木) 13:15:15
じゃあここからは「あなたの選ぶマニアックなモジュール紹介」でよろしく
import threading 別にマニアックじゃないか…
BF2ってゲームのフォルダあけたらpythonのファイル出てきたよ。 好きなゲームに使われてたら親近感わくね。 外国では結構メジャーらしいけど、pythonを解説してる日本語サイトもっと増えないかな。
★Pythonって死滅しちゃうの?Part8★ を先に消費しなくて良いのか?
このスレッドもそうだけれど たぶんそっちのスレッドを使いたくないから 確信的にやっているんだろう? ま、あの名称嫌いだし、どうでもいいけどね。
というか死滅しそうにもないので、スレが伸びないんだろう
うむ アホが立てたスレはずっと放置で良い
>>989 死滅するときはスレが伸びると思ってるの?
さすがにそれはないと思うよ
end = 0 … … … … def f(n) return n end
end = 0 … … … … def f(n): return n end
死滅スレは隔離用ですか。 なんか棲み分け方がDebianスレみたいだなw
もううめちゃおう
うめうめ
1000どぞ↓
case文きぼんぬ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。