1 :
デフォルトの名無しさん :
2009/04/26(日) 01:48:01
_ ∩ ( ゚∀゚)彡 おっぱいそん!おっぱいそん! ⊂彡
3 :
デフォルトの名無しさん :2009/04/26(日) 03:40:09
ぱいちんこ
ぱいぱい! ぱいぱい!
10分前にPython 3.0.1インタプリタをダウンロードしたものですが >>> "hello world" 'hello world' >>> print "hello world" File "<stdin>", line 1 print "hello world" ^ SyntaxError: invalid syntax これはどういうことでしょうか? いきなり挫折しそうです
print ("hello world") 自己解決すますま
Python3はprintが関数に変わったんで print("hoge") ってやらなきゃ駄目なんじゃね
>>6 Python 3.0 はまだαだから開発者以外手を出すな。
Python 3.1 はまだβだから一般人は手を出すな。
Python 3.2 はまだRCだから初心者なら手を出すな。
Python 3.3 から初心者もOK。
今、「環境変数取得APIをUnicodeにしちゃったけど、ちゃんとデコードできない
バイナリ列どう扱えばいいと思う?」とか議論しながらAPIを整備中。
3.4になったら本気出す。
11 :
デフォルトの名無しさん :2009/04/28(火) 12:43:20
うちのはPython 2.4だけど 俺がPythonを覚えられない原因がわかったよ
3.4に手を出すと色々対応してくれるまで待つのが長いね
なんだ、ABCでもダックタイピングできるんじゃねえか ABCMeta.registerとかってなんのためにあるんだよ import collections class Con(): def __contains__(self): pass class NotCon(): pass print(issubclass(Con,collections.Container)) print(issubclass(NotCon,collections.Container))
>>13 うっかり結果を書くのを忘れた
print(issubclass(Con,collections.Container)) # ==>True
print(issubclass(NotCon,collections.Container)) # ==> False
>ABCMeta.registerとかってなんのためにあるんだよ 自己解決。collectionのABC実装を見たところ、 ダックタイピングしてもissubclassで型チェックできる =issubclassの結果を変える__subclasshook__があるのは 実装のないBaseClassのみだったんだよね。 つまり実装のあるBaseClassに関してはするか 手動でメソッドチェックしてregisterしないといけない。うーん……
と、思ったけどregisterって動的継承するわけじゃないのか isinstanceやissubclassが通るようになるだけで、 MutableMappingをregisterしてもpopを自動的に実装してくれるわけではない…… CのクラスをABCに登録するとき用と考えたほうがいいのかなあ……
と、いうわけで、未知のクラスにabstractmethodで指定したメソッドが実装されているかのチェックと、 もし可能であれば対応するAbstract Base Classを継承したクラス用 インターフェースを作成する関数を作ってみた。 def is_abc_castable(instance, C): return all( any(hasattr(Base, abm) for Base in type(instance).__mro__) for abm in C.__abstractmethods__) def abc_cast(instance, C): if isinstance(instance, C): return instance if is_abc_castable(instance, C): class Wrapper(type(instance), C): def __init__(self, hold): self._hold = hold def __getattr__(self, attr): return getattr(self._hold, attr) return Wrapper(instance) raise TypeError("Can't cast")
連投すまん。 これは関数内部でダックタイピング的なチェックを行い、チェックが通ったら動的継承を行う。 委譲ラッパーを使うので関数の外部に影響を及ぼさない。 class Interval(metaclass = abc.ABCMeta): @abc.abstractmethod def begin(self): return NotImplemented @abc.abstractmethod def end(self): return NotImplemented def __str__(self): return "({begin}, {end})".format(begin = self.begin(), end = self.end()) class DuckInterval(): def __init__(self, begin, end): self._begin = begin self._end = end def begin(self): return self._begin def end(self): return self._end
def interval_print(interval): if is_abc_castable(interval, Interval): casted = abc_cast(d, Interval) print(str(casted)) else: print("This is not Interval.") if __name__ == "__main__": d = DuckInterval(1,2) interval_print(d) # ==> (1, 2) print(isinstance(d, Interval)) # ==> False print(str(d)) # ==> <__main__.DuckInterval object ...>
numpy.arrayじゃなくて 素のlistで行列計算をやってくれるlibraryはないのでしょうか cのshard libなど(lapack.soなど)を読み込めない環境で数値計算したいのです
pythonのコードが2chでは潰れてしまうから、勉強がてら変換コマンドをつくってみようと思ったら、
>>1 のまとめサイトにあったw
やっぱりみんな考えることは同じだぬ・・
3.1は全角でも実行可能
まじで?
コードの半角スペースはそのまま書き込んでいいから自己アンカー付けるようにしてくれよ。そうすりゃ專ブラのポップアップでちゃんと表示できるから。 レス番選択→右クリック(Janeのバヤイ)でもポップアップできるけどメンドい。
PythonPath を call multiply multiply 3 2 として、 PyScripterで2.6と3.01を両方起動できるようになったんだけど call multiply multiply 3 2 はどういう意味ですか? あと、3.1もリリースされているけど、今のPyScripterでは 使えないですか?
26 :
デフォルトの名無しさん :2009/05/02(土) 22:49:40 BE:544161986-PLT(12000)
Pythonはじめました
がんばって
28 :
デフォルトの名無しさん :2009/05/04(月) 09:12:35
Pythonの並列計算用のppっていうのって、Core2Duoとか同じマシン上のマルチコアでも並列化してくれるの?
29 :
デフォルトの名無しさん :2009/05/04(月) 09:31:11
解答まだ?
がんばって
31 :
デフォルトの名無しさん :2009/05/04(月) 11:28:19
Pythonに限った話じゃないかもしれませんが、2つの整数が与えられたとき異なるビットの数を求めるよい方法はないでしょうか?たとえば、1111(=15)と1001(=9)が与えられたら真ん中の2つのビットが異なるので2を返したいのです。
32 :
デフォルトの名無しさん :2009/05/04(月) 11:34:30
釣りだとおもうけど ヒント:XOR
Pythonは超初心者だけど、こんな感じかな? str1 = format(15, 'b') str2 = format(9, 'b') count = 0 i = 0 while i < len(str1): if str1[i] == str2[i]: count += 1 i += 1 print count
34 :
デフォルトの名無しさん :2009/05/04(月) 11:56:43
>>32 >>33 アドバイスありがとうございます。
>>32 XORとると0110(=5)になって1の場所数えればよいわけですね。でも肝心の5という数値をビット列と見なす方法がわかりません・・・
>>33 Python2.5なのでformatメソッドがないのですが、推測するにstr1=format(15, 'b')って'1111'を返してくれるのでしょうか?それならすべてOKなのですが、2.5の範囲で同じことできないでしょうか・・・
35 :
デフォルトの名無しさん :2009/05/04(月) 11:57:05
PYTHONてバイナリ値を いきなり文字配列に入れられるのか 便利だな
36 :
デフォルトの名無しさん :2009/05/04(月) 11:58:47
すみません、自己レスですが、python binary formatでぐぐったら
>>> bstr_pos = lambda n: n>0 and bstr_pos(n
>>1 )+str(n&1) or ''
>>> bstr_pos(15)
'1111'
という方法を見つけました!これでできそうです。アドバイスありがとうございました。
37 :
デフォルトの名無しさん :2009/05/04(月) 11:59:21
メソッド名やアトリービュート名の先頭につけるアンダースコア(_) アンダースコアが1つついているのと、2つついているのの 違いってなんでしたっけ?
38 :
デフォルトの名無しさん :2009/05/04(月) 12:05:19
マスクBITをANDで順次 0にならない値をカウントとか
アンカ間違えた
>>34 しかも 5 じゃなくて 6 だし・・・
41 :
デフォルトの名無しさん :2009/05/04(月) 13:11:10
4桁のバイナリなら 汎用なら (4BITの場合) XORでもとめた値を 0001=1 0010=2 0100=4 1000=8 を順次に対象の値とAND演算 結果が0にならない値をカウント だよね
42 :
デフォルトの名無しさん :2009/05/04(月) 13:17:09
ゴメン、”てにをは”がおかしかった…
1bitずつ右シフトして1とandとった方がよっぽどマシだろ。 何がどう汎用なのか小一時間
初心者スレにまでPython叩きに来る信者って 惨めだな
45 :
デフォルトの名無しさん :2009/05/05(火) 00:54:31
右シフトとかアセンブラじゃないんだから よく知らないけどCとかJAVAはできるの?
CでもJavaでもPythonでも右シフト演算子はあるよ。 シフト演算子が無くても整数型を2で割るだけだから、できない言語の方が少ない。
というか、とりあえずhamming distanceでぐぐれ。
ググった。 unsigned dist = 0, val = x ^ y; while(val) { ++dist; val &= val - 1; } return dist; クヌースさん、歪みねぇな。
WikipediaにはKnuth's Algorithmって書いてあったけど、 本の初出が1968みたいだからPeter Wegnerのほうが先なのかな。 先にペーパー出してるかもしれないし、よく分からん。
>>46 整数型に対する右シフトは、Cだと結果が未定義だぞ。
符号無し整数型ならOKだが。
仕様厨か?
違う。右シフトするときにMSBがどう処理されるかの、現実的な問題だ。
gccで試したら、-2を右1ビットシフトすると-1になった。
処理系によっては、INT_MAXになるはず。
で、前者だと
>>46 の通り整数型を2で割ったのと等しいが、今回の目的には使えない。
後者だと今回の目的に使えるが、整数型を2で割るのと結果が異なる。
54 :
デフォルトの名無しさん :2009/05/06(水) 20:01:06
1になってるbit数数えるのが目的の用途に符号なし整数使わず わざわざ整数型持ってくる香具師が馬鹿でFA?
1ビット2ビット帰れない〜
うーん、あまりにも小さなネタ過ぎるのか、アルゴリズムの本やそれこそKnuth本を当ってもHamming Distanceの計算方法が見付からないな... 誰かKnuth本の出てる場所知ってたら教えてくれろ。
差分をとるのはXORで明白だから、
調べるなら
>>49 みたいに"bit count"のほうがいいんじゃない?
あーーーーーーがらっとるーーーーーーーーーーーーーーーー なにがったんじゃーーーーーーーーーーーーーーーーーーーーーーー
ubuntuを最近の9.04にして 何かアプリいれると勝手にpython2.6が入るぞ
別にUbuntuじゃなくても
debianとか誰に必要とされてるんですか? osにお金も払えない貧乏ニンですよね
貧乏人でもいいじゃない。
心が貧しくて卑しい
>>62 より
実際、フリーソフト教って怪しいよね
ソース公開されてなきゃ気持ち悪くて使えないって人とか? 使うソフトいちいちソース調べてるんか
x = [1, 2] x += [9, 8] x == [10, 10] True みたいな事ができる、メソッドか関数か計算式ってありませんか?
マッピー
map(lambda x, y: x + y, [1, 2], [9, 8])
In [3]: from operator import * In [4]: map(add, [1,2], [9,8]) Out[4]: [10, 10] もしくは In [5]: [x+y for x,y in zip([1,2], [9,8])] Out[5]: [10, 10]
import numpy x = [1, 2] x = numpy.add(x, [9, 8])
>>68-71 どれが一番速いですか?
どれが一番メモリ効率良いですか?
キー・タイプ数の点で早いのは
>>69 モジュールをインポートする必要がないという点で
メモリ効率が良いのは
>>68
>>70 俺は直す知識が無いからパッチ書いたりとか出来ないけど
ハードコーディングされてて使い難いと思ったところを
ちょこちょこっと書き換えて自分ライクにしたりとかはある。
76 :
デフォルトの名無しさん :2009/05/09(土) 05:34:00
zipの中身ってyieldだっけ?
3.0
天下のnumpy様に 標準ライブラリや組み込み関数が勝てるわけないだろう。
>>78 やってみたぞ。
a, bをランダムな整数10000要素のリストとして
1. map(operator.add, a, b)
2. map(lambda x,y: x+y, a, b)
3. numpy.add(a,b)
を各1000回実行するのにかかった時間をtimeitモジュールを使って測定した結果は
以下のとおり。(CPU: Core2Quad Q6600, OS: Linux 2.6.28, Python: 2.6.2)
1. 0.977833986282
2. 1.91782212257
3. 0.0156099796295
ということで当然ながらnumpyの圧勝。
ただし、最初にnumpy.array()でシーケンスをnumpy.ndarrayに変換しておく必要あり。
これをやらないと逆に一番遅い。
>>78-80 numpyは中身がlapackかなんかじゃなかった?
どっちにしても一部cで書かれてるから場合によってはnumpyが早いかもね
正直言うと全部pythonのlistのまま処理してくれないとめんどくさくて嫌なんだけどね
arrayってなんだよ
numpyとscipyとpylabとmatplotlibの関係が良く分かんないんだけど。
>>> _lambda.repeat(1,100000);_operator.repeat(1,100000);_numpy.repeat(1,100000) [0.5832531788257711] [0.43510585842614091] [1.2607769981939327]
>>83 おまい使ったことないだろ。使えばすぐに分かるぞ。
おおざっぱに言うと、numpyで効率的なn次元配列及びそれらに対する
基本的な演算が与えられ、それを使ってscipyで計算をし、
結果をプロットするのがmatlabplotだ。
スクリプト系は結局こうなるよな。 アルゴリズムの知識じゃなくて、モジュールの知識。
最近の言語はそうじゃない? 今C#やってるけど、ひたすら.NETFrameworkの使い方調べてるぞ。
>>87 ある程度ライブラリが揃っていれば、スクリプト言語かどうかに関係なく
どの言語も似たようなものだろ。
Python 2.x ではstatementだったexec が3.0ではfunctionになりましたが、 2.xと3.0の両方で動作するように書くにはどうしたらいいでしょうか。 exec '....' in globals, locals # 2.x exec('.....', globals, locals) # 3.0 globalsとlocalsを指定しなくていいなら exec('....') でいいのですが、globalsとlocalsも指定して、なおかつ2.xと3.0の両方で動かしたいです。
from __future__ import exec exec('.....', globals, locals) とかすればできるのかな。 future文使ったことないから知らん。
pythonで動画扱いたいのですが どのライブラリがお勧めですか?
速さは分かったけど メモリ効率って どうやって調べられるん?
topでresident sizeでも見れば?大雑把な指標にはなる。
resourceモジュールだっけな、もう忘れた
resourceモジュールってgetrusage()呼んでるだけだよな。 ということはtopを見れば十分という話だな。 WindowsでもProcess Explorer使えば同様にモニタリング出来るし。
MacOS XでPython3.0を使っているのですが、help()を使うとときどき UnicodeEncodeError: 'shift_jis' codec can't encode character '¥xab' in position 3701: illegal multibyte sequence というエラーがでます。 たぶんデフォルトの文字コードがshift_jisになっているせいだと思いますが、 デフォルトの文字コードをutf-8に変更するにはどうしたらいいですか。 できればLANG以外の方法で。
>¥xab \が全角だから
円マークじゃなくて、\x5c の文字である必要があるから、環境によってはバックスラッシュかもね。
import math print math.e ** (1j * math.pi) がOKで print math.exp(1j * math.pi) がNGなんだけど expがcomplex を受け取らないのは何か理由があるの?
>>101 複素数用にcmathが用意されてるから。cmath.exp()を使え。
expがcomplex を受け取らないのは何か理由があるの?
ソース読んで自分で調べろボケ
105 :
デフォルトの名無しさん :2009/05/10(日) 13:57:09
みんなのPython 改訂版 が出たと思いますが 初心者にはおすすめでしょうか? まったくの初心者です。
プログラム初心者ならみんパイ Python初心者ならはじパイって感じじゃね? amazonのレビューとかは気にすんな
107 :
デフォルトの名無しさん :2009/05/10(日) 14:15:06
ありがとうございます。参考になりました。
裏でなにが行われてるか知らないとキモチワルイ! ってタイプの人なんだろう。 でもそういう人はソースくらい自分で読めないとね
どうせいつものなりすまし厨だろ。
おっぱいそん初心者です。 固定長データの中に16進コードで日本語の地名が入っているのですが、 それを日本語で出力するにはどうしたらいいのでしょうか。 (例えば、「東京」ならデータ中には 「93 8C 8B 9E」 とshift jisで入っています) 固定長のデータを変数に入れたとして、 b='93' c='8C' d = '\x' + b + '\x'+ c として「東」 を表示しようとしましたが、dに代入するところですでにエラーが。 どなたかお助けを…
とりあえず d = r'\x' + b + r'\x'+ c
あ、それだと駄目なのか
>>> s = ["93", "8c", "8b", "9e"] >>> print "".join(chr(int(x, 16)) for x in s) 東京
116 :
デフォルトの名無しさん :2009/05/11(月) 03:12:10
頭に血が登ってアンカー間違えたか? くだらん言いがかりつける暇あるなら調べろよカスが
118 :
100 :2009/05/11(月) 06:17:42
python に慣習、主義があって
それにしたがってんのかと思い聞いてみたんだが
この感じだとそんなんじゃ、なさそうやね。
単に処理速度の問題かな。
自分のコピペんのせいで荒れるの嫌だから
一応念のためにいうけど
>>100 とこのレス以外は別人なんで、よろしく。
2.6用 3.0用 のコードをブランチで分けて darcsで同じパッチ当てながら開発って クエン酸いれたらどうっすかなみのアイデアですか
120 :
デフォルトの名無しさん :2009/05/11(月) 09:26:32
2.x系と3.0とを判定するよい方法はありますか。 現在は sys.version.startswith('3') で調べていますが、もっといい方法はありますか。
>>108 >訳) 2.6と3.0の両方で動くように書いたらダメってGuidoが言ってた
原文は It is not recommended だから、ダメじゃなくて おススメしないというだけだよね。
>現在は sys.version.startswith('3')で それでいいんじゃないかと思うけど 適当に考えついた他の例 def is_python3_or_later(): return range(0) != list(range(0))
>>121 sys.version_info >= (3, 0, 0)じゃだめ?
126 :
デフォルトの名無しさん :2009/05/12(火) 16:07:35
合格です おめでとう
('3')が顔文字に見えてきた
>>125 ググってみたら、著者はzope、ploneな人たちっぽい...orz...。
>>124 sys.version_info なるものがあるのか! これは助かりました。ありがとうございます。
130 :
デフォルトの名無しさん :2009/05/12(火) 18:06:52
>>130 その本はひどく読みづらい日本語で書いてあったなあ
あと、著者はPython分かってないと思う(w
10日で〜シリーズはそういう層がターゲットだからあんまり期待してもしょうがないでしょ。 それにしてもそんな本でなんでそんなに著者が多いのか・・・
束になってウンチ本を書いたんですね。ご苦労様です。
>>130 のは少なくとも入門書てしては失敗してると思う・・・
Python云々ではなく
>>115 ありがとーん。
配列なめるあたりも分かりやすいですね。
いつもどおりにawkで書いたのですが、ユーザー関数つくらないとダメでした。
真剣にぱいてん(他言語からPythonへ転向)を考えております…
>>130 この本は、著者タソの才能が著しく低いか、やっつけで書いたのかどっちかだとおもう。
内容については1万歩譲るとしても、書籍として成り立ってない。
DRYが説明なしにでてきた気がするんだが説明されてた? Pythonエクスプローラのときはちゃんと説明あったが
ドジャンゴってゾープと似てね? 使ってる人たちが。
140 :
デフォルトの名無しさん :2009/05/13(水) 00:58:22
>>137 そういうのは編集者の方でなんとかすることは出来なかったんだろうか?
ploneってゾープと似てね? 使ってる人たちが。
てか、PloneってZopeの直系っしょ?
144 :
デフォルトの名無しさん :2009/05/13(水) 04:04:13
pythonってrubyと似てね? 使ってる人たちが。
そりゃねーわ
ダンジョーはこんなもの。 それが感想。大勢で書いた割にはgdgdだったし。
147 :
デフォルトの名無しさん :2009/05/13(水) 08:42:12
はじめてのPythonをやってから リファレンスとか見れば良いだけのような。 はじめてのPythonやってないと 細かな罠にひっかかりまくると思うぞ。
149 :
デフォルトの名無しさん :2009/05/13(水) 09:50:36
>>148 >細かな罠にひっかかりまくると思うぞ。
やっぱり勘の悪い人が買うんだ(笑)。
恥ぱいで身につくとは思えない
パイチュー
>>151 身についたと思っているカンの悪い人が上に居るみたいだ。
154 :
デフォルトの名無しさん :2009/05/13(水) 13:46:09
rubyの%記法の文字列リテラルみたいな物ありますか? %w[foo bar baz] で ['foo', 'bar', 'baz']と等価になる物です。
>>154 よく使われるのは "foo bar baz".split()
.split() を省略するためだけにそんな特殊な表記を導入したくないな。
156 :
デフォルトの名無しさん :2009/05/13(水) 15:28:37
どこのpearl
Rubyも結構変なことやってんだな
{'foo':'foo', 'bar':'bar', 'baz':'baz'} print '%(foo)s %(bar)s %(baz)s'%x
みんpyとか・・・・ ワロスw あんな本意味なし。ゴミくずだ。
初版は産廃だったけど改訂版はだいぶ持ち直してるみたいだぞ
162 :
デフォルトの名無しさん :2009/05/14(木) 00:56:22
>>160 あ?
今から勉強しようと思ったら急遽PHPでいろいろ作業することになってみんpy読むひまがない俺にけんか売ってんお?
グロ注意
[85444, 2300832, 713157, 473942, 3507283, 6213812, 737398, 582550, 9148273, 733699, 5265275, 4307330, 2603059, 2314503, 2253004, 2420119, 5637322, 3994275, 3706583, 3181024, 9019492, 2558557, 1025660, 4504277, 9910254, 4737662, 5362664, 4515987, 4342684, 2881108, 5788213, 2794348, 4332896, 3082922, 2418008, 6420796, 8640377, 8780202, 8790787, 6080687, 9504108, 7991910, 8999531, 4909827, 614814, 2013544, 6017311, 2334914, 1045624, 7220658] このリストがちゃんとヒープになっているか調べるのが面倒くさいので スクリプトで解決してください
166 :
165 :2009/05/14(木) 01:23:48
すみません、なってないですね。四つ目で気付けますよね・・・ 自己解決しました・・・
激しくデジャブ。
>651 名前: nobodyさん Mail: sage 投稿日: 2009/05/04(月) 23:37:44 ID: ???
>
ttp://sugaya.otaden.jp/e35093.html >
>ダンジョーが何匹集まってもかないそうにないね.
>
>652 名前: nobodyさん Mail: sage 投稿日: 2009/05/05(火) 14:03:29 ID: ???
>グロ注意
>>165 L1 = [ (中略) ]
L2 = list(L1)
heapq.heapify(L2)
print L1 == L2
169 :
165 :2009/05/14(木) 02:09:54
>>168 ありがとうございます
自分で書く必要なんてないんですね
ここで聞くと参考になる答えは返ってこないかと・・・
pythonのコードをreadableなcに変換する方法はないのでしょうか readableなら完全な変換でなくて、多少の手で書きなおす部分があってもいいです
readableの定義は?
めんどくせw
ちょっとまって、ヒープは一意に決まるのかな?
177 :
デフォルトの名無しさん :2009/05/14(木) 22:53:53
>172 pythonのコードをreadableなcに変換する方法はないのでしょうか 無理だ
178 :
デフォルトの名無しさん :2009/05/14(木) 23:20:24
lambdaが使われているソースがキモすぎて理解できません 誰か親切丁寧かつほのかなエロさで教えろ
ラムダ計算を勉強してこい
pythonのlambdaを使うだけならλ計算の勉強はしなくていいです。 lambda a, b: a + b ってのは、 def foo(a, b): return a + b という関数定義がその場にあって、 その場で foo と参照するのと同じ。 以上。難しくないでしょ?
>>180 簡潔。俺のような低能の長年の疑問が…。
f = lambda: f() f()
lambdaの中で使う変数のnamespaceってどうなってんの?
クロージャの話をしろということだろうか
n = [] foo = lambda: n.append("unko") bar = lambda: n bar() foo() bar() n = 123 bar()
各オブジェクトのメモリ使用量とか分かるモジュールありますか?
2009-05-17 ■[Python] Pythonプログラムがメモリを大量に使っているとき もし想定以上のメモリを Python プログラムが消費しているのであれば、ループの中で循環参照が生まれていることや、回収不能オブジェクト(循環参照なうえに __del__ メソッドが存在するためにgcがどこから循環を切っていいのか判らないオブジェクト)が存在しないかを疑う。 import gc gc.set_debug(gc.DEBUG_LEAK) gc.disable() # 問題の処理 gc.collect() # 回収された循環参照や回収不能オブジェクトが表示される
190 :
188 :2009/05/17(日) 20:09:57
ありがとう。heapy試して見ます。
Python3.0 changes に > dict methods dict.keys(), dict.items() and dict.values() return "views" instead of lists. とあるんですけど、views とはなんですか。iteratorとはまた違うんでしょうか。
>>> d = {"abc":2, "def": 0} >>> d.keys() == {"abc", "def"} True >>> "abc" in d.keys() True >>> len(d.keys()) 2
>>192 データベース用語じゃないかな。
デリヘルだったのが業態変更で覗き部屋に変わりました
みたいな感じ。
195 :
デフォルトの名無しさん :2009/05/22(金) 19:20:38
プログラミング初心者です。 ちっちゃいツールを作れたら…と勉強開始しました。 最初のうちって数字を抜き出したり、表示させたりばっかりですが なんかプログラミングって感じないんですよね。 最終的にはそれなりなツールが作れるといいんですが… ちなみにスライスとかインデックスを指定とかって実際のプログラミングで使ったりするんですか?
つRails
windowsな人はブビでもやるよろし
198 :
デフォルトの名無しさん :2009/05/22(金) 20:53:42
linuxも勉強中ですので、頑張って続けてみます。 ありがとうございました。失礼します。。。
ひでw お勉強スレでなんで違う言語に誘導すんだよw
質問には答えようぜ >195 > ちなみにスライスとかインデックスを指定とかって実際のプログラミングで > 使ったりするんですか? 超使います。例えば掲示板ソフトを作ったとして、メッセージの195番っつた ら、 messages[195] とか書けるように作るのが単純なやりかた。 (もちろん、凝ろうと思えばいくらでも凝れます)
messages[194]がいいです
>メッセージの195番っつた >ら、 messages[195] とか書けるように ちょうウケる(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
”とか”って書いてるからいいじゃん 民主党みたいなことすんなや
,..--‐‐‐‐‐‐‐‐---.. /::::ヽ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) |::::::::::/ ヽヽ .|::::::::::ヽ ........ ..... |:| |::::::::/ ) (. .|| i⌒ヽ;;|. -=・=‐ .‐・=-.| 党首辞任”とか”してみたりなんかしちゃったりして |.( 'ー-‐' ヽ. ー' | ヽ. /(_,、_,)ヽ | ._|. / ___ .| _/:|ヽ ノエェェエ> | :::::::::::::ヽヽ ー--‐ / ::::::::::::::::ヽ \ ___/
うわー ところでmessages[0]はNone?空文字?
好きな人の名前に決まっているだろ!
messages[0]は0番だろ
thebbsはたしか0番から始まってた…と思ったらthebbs閉鎖したのね。
こうして今日もPythonの話題から脱線していくのだったとさ・・・
211 :
デフォルトの名無しさん :2009/05/22(金) 23:59:16
>>200 すごくわかり易かったです!
ありがとうございます。
基礎は重要ってことですね!
しっかり学びます。(みんなのPython改訂版使用)
図々しいですが、わからない事がありましたらまたお願いします。
もしかしてPythonが初めてのプログラミングなのかしら・・・
プログラミングに向いてない 別のことに時間使え
214 :
200 :2009/05/23(土) 14:12:12
こんなにウケるとは思わなかったwwww >201 わかってんならいいよ。でもoff-by-oneバグには気をつけて。 >203 そんな面白い?テヘ(´▽`) >205 鳩山って一応工学部出てんだけど、なんであんなにデムパなのかね‥‥‥ >206 Noneでも空文字でもいいけど、俺が作るならスレッドタイトル入れとくかなぁ。 >207 おかーちゃんの名前を入れておけ! >211 がんばれ。
>>212 俺、Pythonは2番目
最初に覚えたのはbashプログラミング
Perlから鞍替え組しかいなかったころがなつかしい
順番 Ruby->Pythonと Python->Rubyのひとは どっちが多いですか
Ruby->Pythonの方が多そうな気がする。主に実行速度の面で。
>>218 実行速度もそうですが
Rubyのプログラムの書き方が合わないっていう人はいないんですかね。
自分は関数定義(def)の時のブロックにbeginをつけない所と、
lambda式の記述の仕方がどうも合わなかったんですが…自分だけか…
perlのせいでLLを毛嫌いしてたけど、 pythonが出てきてからは何にでも使うようになった。
Perlを知ってからは何にでも使うようになったら 後で酷いことになった。
>>219 俺は end が嫌だったのと、関数が名前空間違う部分が無理だったな。
Rubistにしては書くときに楽しいのかもしれんが、読みやすさは圧倒的に
Pythonの方が上。Pythonを知らない人にも読める executable pseudocode
まじで!? 基本的にpython大好きだけど ブロック終端記号がないのだけは好きになれない。
Pascalのcase-endですらいらついたしRubyもbeginなしendだし うっとうしいだけ
インデント守ってないコードで終端記号なかったら訳分からんけど Pythonの場合無くても問題にならないだろ
Pythonで唯一面倒なのは、テストで途中でブロック追加したり取ったりする場合だな。 まぁ、エディタでブロックごとインデント付けたり消したりできればいいだけなんだけど。
>>226 それはEmacsで楽に出来るから問題ないな。
Emacsで、ある範囲を指定してインデントを増やす/減らすのはどうしたらいいの? いまは C-x r t としてスペースを4つ指定しているんだけど、かっこわるすぎる
>>228 リージョンを指定して、C-c > で右 C-c < で左インデント
Pythonは読みやすいけどインデントが嫌だ
Pythonは基本読みやすいですが、 書籍に載ってるプログラムで次のページにまたいでるとき、 インデントがどうなったのか分かりにくい時があるのがたまにきずですかね。
ぶっちゃけ、インデントは慣れればそれほど問題じゃないって感じだな。 おまえインデントブロック初めてか?みたいな人にはインパクトはかなりあるがw 結局俺の場合、何で書いてもだいたい同じような見た目になるしw 構造自体が全然違うってのは、関数系言語だな。
頼むからインデントに最低スペース4つは使ってくれ
GoogleAppEngineでは2つが標準みたいだよ
ブロックのインデント表現は流行らないと思うわ 括弧とか改行とか、もっと積極的な表現の方が人間が認識しやすいもの
>>237 それにこだわるひといるみたいだけど
なんか意味あるのか?
>>241 インデントが深くなったときパッと見で判別しづらいからとか?
dict1 = {'a':1} dict2 = {'b':2} とあったときに、2つをマージした新しい辞書dict3を一発でつくるにはどうしたらいいですか。 dict3 = dict1.copy() dict3.update(dict2) とするしかないのでしょうか。 dict3 = dict1 + dict2 とかできませんか?
>>241 それにこだわる人と同じ理由ではないと思うけど、個人的には読み難いし、綺麗じゃない
まぁおれがいつも4つ使ってるから慣れてないだけなのかもしれんけど。
ところで皆さんインデントはスペース派?タブ派? 作者はスペースを推しているけど。
タブ4。
vimでSpace4
スペース4だな
251 :
デフォルトの名無しさん :2009/05/24(日) 16:03:13
pythonだけでも十分?
タブ2だな みんなけっこう違うんだな
スペース2にきまっとる
pep8 では4スペースだから、新規に標準ライブラリにはいるコードは全部4スペース。
1段目:Space6 2段目:Space5 3段目:Space4 4段目:Space3 5段目:Space2
途中で改行したばあいの2行目以降の字下げも推奨値あるの?
>>256 それ気になる。配列や辞書を途中で改行している場合、かっこを閉じる位置をどこにするか迷う。
辞書や配列の閉じカッコって、使ってるテキストエディタによって 微妙に位置が違ってなんか痒いところだよな。
>>245 >D1.update(D2)
これだと D1 が変更されますよね。
やりたいのはD1もD2も変更せずに、かつD1とD2をマージした辞書を一発で新たに作りたいということなんですけど。
むりぽ
dict1 = {'a':1} dict2 = {'b':2} >>> dict([(k, dict1[k]) for k in dict1] + [(k, dict2[k]) for k in dict2]) {'a': 1, 'b': 2} 普通すぎてスマソ
>>> dict(list(dict1.iteritems()) + list(dict2.iteritems())) {'a': 1, 'b': 2} あんまり変わらんか orz
eval(",".join((str(dict1)[:-1],str(dict2)[1:]))) 気持ち悪い
>>264 その方式ならこうじゃね?
>>> d1 = {'a':1}
>>> d2 = {'b':2}
>>> dict(d1.items() + d2.items())
{'a': 1, 'b': 2}
>>256 PEP8では「適切にインデントすること」としか書かれていないけど、サンプルコードを見ると
改行前の要素に合わせてるな。
foo(bar,
baz)
どっちかというとそういう関数作った方がキレイだな。
setと違って+演算子を割り当てなかったのは、足す前の辞書の要素のうち足す辞書に 重複するキーがあった場合値を上書きしてしまうと言う動作が、+演算子の 「追加する」というイメージに合わなかったからだろうな。 あくまでも更新(update)であって、追加(add)じゃない。 clone() して update() するのが正解だと思うよ。別に面倒でも汚くもないし。
d3 = d1 || d2
>>270 Pythonにそんな演算子ねーよw
それに、 d3 = d1 | d2 にしても、やっぱりd1にある要素が「消える」ということを考えると
bitwise or とは違うよね。set ならそれでも意味通るけど。
エディタのタブ記号のお世話になっているのでタブ4 ※タブが推薦されない理由って何?
環境によって深さが変わるし
いまどきのエディタ使ってりゃ2でも4でもどうでもいいんだけどな それより深くなり過ぎそうならその前に関数にするとかモジュールにするとか なんか工夫するはずだからな タブにこだわってる香具師とかインデントにこだわる香具師は 机上の空論 畳の水練
Perlでも使ってろ
>※タブが推薦されない理由って何? 関数の括弧でそろえたいときとかにスペースと混在するしか無くて、 そうすると環境によって見た目がめちゃくちゃになることかなあ。 どの環境もタブ=スペース4つ分とかで統一してくれればいいのに。 何でタブ=スペース8つ&スペース混在をデフォルト設定にしたんだ。>アレ
アレって何だ?IBM?ゼロックス?
おひざもとのコーディングルールが 8タブ& 4インデントのアレとか?
昔はタブ8桁だったからしょうがないね。 スペースだけにするのが一番問題無い。
それ、別に昔の話でもない 端末(エミュレータ)やウェブブラウザなど、多くのソフトウェアは今でも 普通は8タブのはずだよ
TAB 八画
282 :
デフォルトの名無しさん :2009/05/25(月) 22:23:14
みんなのPythonすごく読みやすい。超面白いんですけど、毎日ガンガン読んでます。
日本語でおk
みんなのPythonすごく読みやすい。超面白いんですので、毎日ガンガン読んでます。
ガンガンってまだあったのか
みんなのPythonすごく読みやすい。超面白いんですので、毎日ボンボン読んでます。
殴って人が殺せそうな厚さのコミック雑誌名列挙禁止なw 先月付けの号でガンガン超えてたのあったな…。1000Pとかマジ基地
みんなのPythonすごく読みやすい。超面白いんですので、毎日京極夏彦読んでます。
みんなのPythonすごく読みやすい。超面白いんですので、毎日時刻表読んでます。
誰かが面白いこと言うまで続くの?
ちんこ
乳輪大納言
久しぶりに7巻読んでみた
またruby厨の荒らしが来てるのか
295 :
デフォルトの名無しさん :2009/05/26(火) 18:01:16
デコレータって気持ち悪いね・・・
むしろ気持ちいい
デコレータイイ メタクラスヘン
>>244 dict1 = {'a': 1}
dict2 = {'b': 2}
dict3 = dict(dict1, **dict2)
こんなのどう?
299 :
デフォルトの名無しさん :2009/05/27(水) 03:31:21
dict3 = dict(**dict1, **dict2)
300 :
デフォルトの名無しさん :2009/05/27(水) 08:55:08
>>301 >dict3 = dict(dict1.items() + dict2.items())
やりたいことを明示的に示しているという意味ではこっちの方が分かりやすいと思うけどな。
効率はおいとくとして。
結局copyしてupdateの方が明示的のような。
2回updateでいいじゃんよ 1行で済ませようとするとろくなことにならんぞ
dict3 = dict().update(dict1).update(dict2)
あら素敵
頭良いな。
>>306 update() は inplaceに処理する関数でupdate後のdictを返す訳じゃないから
それじゃダメ。
dict3 = dict1.copy()
dict3.update(dict2)
素直だし読みやすいし何も問題なし。
Pythonはsortにはsorted、reverseにはreversedみたいな値を返すタイプがもれなくあるから updateみたいにinplaceのみで値を返す選択肢がないメソッドは意外
青年よ、PEPを書け
彼は書いた。 日本語で。
dict object に updated メソッドを追加するにはどうすればよいですか?
適当にdictを継承すれば
これでいいだろ なんでメソッドにしたいんだ def marged(*dicts): marged_dict = {} for d in dicts: marged_dict.update(d) return marged_dict
mergeな
辞書をマルゲッドする方法を教えてください
>>313 複雑な式よりもシンプルな文を選ぶと言う点では、Pythonの文化は
Javaに近いと思うよ。
もちろんスクリプト言語の利点や動的型付けの利点があるから、
Javaよりも圧倒的にアジャイルに開発できるけど。
なんでイテレータどうしを足したらだめなんだろう? itertools.chainの動作をしてくれれば良いだけだと思うんだけど。
list ならそれでいいんじゃね?
今更だが、Pythonってインデントによるブロック表現とかリスト内包とか Miranda譲りの部分があるんだな。
ミランダつーか関数型言語方面からの影響ね。
Miranda以外にインデントでブロック表現をする関数型言語あったっけ?
Cyan
>>327 初めて聞いた言語だな。
ググってもウェブサイトが出てこないが、相当マイナーな言語なのか?
インデント > Haskell Pythonの内包表記はHaskell譲り。
MirandaもHaskellもMLからの影響だな
>>330 そう。系譜的にはML->Miranda->Haskell。
ただしリスト内包の導入ははMirandaから。
だから、Pythonのインデントやリスト内包はMiranda譲りと言うべき所だな。
<丶`∀´>インデントと内包表記の起源は韓国ニダ!
PythonのインデントはABCからだろ
本人がABCの仕事してただろが
335 :
デフォルトの名無しさん :2009/05/31(日) 14:22:28
あの〜すごくレベルの低い話で申し訳ありませんが
みんなのPython改訂版で勉強してます。
for文でちょっとわからないところがあります。
お持ちの方がいましたら(p,105上部のコードです。)
>>>rssitem = {"title":u"Pythonを勉強中",
... "link":"
http://host.to ",
... "dc:data":"2006-05-16",
... "comment":5}
>>>validattrs = ["title","link","dc:data"]
>>>rsskeys = rssitem.key()
>>>for key in rssitem.key()
... if key not in validattrs:
... del rssitem[key]
...
>>>rssitem.key()
['title','link','dc:data']
del文のところの意味がわかりません。
なんでこの文で'comment'だけが消されるのか…
低レベルで申し訳ありませんが、宜しくお願い致します。
336 :
デフォルトの名無しさん :2009/05/31(日) 14:23:44
※すみません、インデントがなくなっちゃってますが(汗
>>335 いやーんなコードだな・・・
それはともかくrssitem.keys()とvalidattrsの出力を比べてみたらいいかも
338 :
デフォルトの名無しさん :2009/05/31(日) 14:37:51
rsskeys = rssitem.key()でエラーになるんですけど、どういうことですかね?
keys()が正しいから
まさか、if key not in validattrs: の意味が分からないのか?
341 :
デフォルトの名無しさん :2009/05/31(日) 14:43:40
>>339 本当ですね、ありがとうございます。
rssitem.keys()とvalidattrsの内容はわかります。
やろうとしていることはわかるんですが…
(rsskeys = rssitem.key()とvalidattrsで合致していない項目を削除)
del rssitem[key]ってどういうことですか
342 :
デフォルトの名無しさん :2009/05/31(日) 14:45:17
>>340 そこはわかるんですけど(汗
その次が…
344 :
デフォルトの名無しさん :2009/05/31(日) 14:49:54
del文は■■■.del[]で引数にはインデント番号や辞書で言うキーを入れると思いますが、 上記のコードでは[key]となっています。keyってキーはなかったので この文で、「comment」が消えた意味がわかりません。 私変な質問してますかね?(滝汗
>>344 おまいマジで言ってるのかよ
keyは変数だろ?中身に何が入ってるかprintしてみろよ
とりあえずfor〜in〜を勉強し直すと良いと思うよ
347 :
デフォルトの名無しさん :2009/05/31(日) 14:53:16
>>343 ありがとうございます。
del rssitem[key]のような使い方がないんですよ(涙
引数の[key]ってどこからきたのーーーーー?
>>347 for key in rssitem.keys(): を100回声に出して読んでみれ
349 :
デフォルトの名無しさん :2009/05/31(日) 14:56:37
あ、…解決しました。 keyは繰り返し変数でした。 お時間をとらせてしましてすいません。勉強になりました。 大変お騒がせ致しました。 ありがとうございました。
350 :
デフォルトの名無しさん :2009/05/31(日) 15:05:57
あ、最後にひとついいでしょうか rsskeysは、rssitemの全てのキー つまりkeyも同様にrssitemの全てのキーの繰り返し ですよね? del文で、rssitem[key]をやると、全てのキーが消えてしまうように思えますが…
>>350 for の次の行で key を print してみろ。
配列に対してインデックスでアクセスしないことで 操作イメージが掴みにくくなることもあるんだな いい勉強になった
漏れもPerlのforeachを理解するのに丸一日かかったことがある いい思い出だ
痛レータ
と思った俺が悪かった。 彼はどこに誘導してやればいいのだろう・・・
>>335 みんなのPythonってサンプルソースでもこんなに誤字脱字だらけなの?
# 元々のデータ(型:ディクショナリ)
rssitem = {"title":u"Pythonを勉強中",
"link":"
http://host.to ",
"dc:data":"2006-05-16",
"comment":5}
# 「元々のデータ」の中で残したいキーの名前が入ったリスト
validattrs = ["title","link","dc:data"]
# 「元々のデータ」のキーを繰り返し読み込む(変数keyに格納)
for key in rssitem.keys():
# もし、keyが残したいキーの名前が入ったリストに含まれて"いなければ"
# ディクショナリ中のrssitem[key]は消したいのだからdel文で消す
if key not in validattrs:
del rssitem[key]
これで解決します?
これで解決しないのなら、質問する前に本を一から読み直す事をおすすめします。
あと、ぬいぐるみに質問したい事を先に話してみてから、
質問にくるといいかもしれません。
米国のどこかの大学は、そうすることで、
相談室にくる生徒の数を5割近く減らせたそうです(自己解決したということ)。
能力があっても 人を傷つけるのに使うってのがアイタタタタ
誤植を抜きにしても このコードで勉強する初心者かわいそす
こんな簡単なコードで悩むやつはプログラミング向いてないから他のことやったほうがいいよね。 人生みじかいんだから自分の得意な分野でがんばったほうがいいよ。
364 :
デフォルトの名無しさん :2009/05/31(日) 20:59:22
>>359 わかりました。ありがとうございます。
del rssitem[key]ちょっとわかり難かったですが、359さんの説明でわかりました。
みんPyを見てみたけど、リストにはちゃんと説明書きがついてるのな。 日曜にやることがない奴らが盛り上がるネタとしては最適だったかもな(爆笑)。
釣りだったってこと?
釣りかどうかは知らないけど カルシウム足りなそうな奴は友達いないな確実に(wwWwwWwwWW
理由も示さず誹謗中傷してる人がいるけど、病院に行くことをオヌヌメしる。分裂症の疑いが強い。 分裂症患者は普通の会話ができないので、日曜に時間がたっぷりあるのももっともなわけだが。
ちょっとまて そのかきこみは あさひかも
>>369 キチガイには正しいモノが間違って見えるらしいよ
またruby厨の荒らしですか
なんでこんな突っ込みどころのない簡単なコードで盛り上がってるんだ? 釣りってかんじでもなさそうだったけど。
rssitem = {"title":u"Pythonを勉強中",
"link":"
http://host.to ",
"dc:data":"2006-05-16",
"comment":5}
for key in rssitem.keys()
del rssitem[key]
これを実行したとき
全keyは確実に消えますか?
消す順番によってはいくつかのkeyが残る気がして不安です
またrssitem自体は消えますか?
rssitemって命名からして嫌な悪寒がしますた
rssitem.clear() やっときゃ完璧。
RSS処理するならfeedparserだろ
次の患者さんどうぞ。
>>374 詳細は
>>375 >>375 実際にコードを書いて試したらいいと思いますよ。
荒らしたくてしてるんならこのまま質問攻めでいいですけどね。
(そうなら心置きなくあぼーんできますしw)
> 消す順番によって…
おそらく、ディクショナリのところに書いてあると思います。
ディクショナリは格納する時に、プログラムに書いた通りの順番に
保存する事を保証してくれません(と本に書いてあるはずです)。
それさえ分かっていれば、「順番によって…」というのはないと分かるでしょう。
> rssitem自体は消えますか?
おそらく、これもリストやディクショナリの所で書いてあると思います。
例えば
toy_box = {u"ぬいぐるみ": 2, u"プラモデル": 3, u"ボール": 5}
for toy in toy_box.keys():
del toy_box[toy]
とすると、おもちゃ箱(toy_box)までなくなる事になります。
おもちゃ箱は空になるだけですよね。
試せばtoy_box = {} になると思いますよ。
(ここで、ぬいぐるみは2個あるので1個になることはありますか?とかは愚問です。)
2chは宣伝禁止ですよ
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
384 :
デフォルトの名無しさん :2009/06/02(火) 11:02:01
pyqt4.5の開発版は既に3.0に対応してるのか もしかして今後主流になるのか?
>>384 pyqt4.5はもうそろそろリリースされそうだね。
でも、Py3k が主流になるのにはまだまだ時間がかかるよ。
Python 3.0 が出た後にも py3k には後方互換性を失う変更が入ってくるし。
>>381 スクリプトエロゴトニクス通信の人の香ばしさは、頭が良すぎることから来てるのかな?
病院で直るタイプの病気ではなさそうだ(w
387 :
デフォルトの名無しさん :2009/06/02(火) 16:46:04
初歩的な質問で申し訳ありません。 .pyのついたファイルをウィンドウズで実行したいのですが、どのように設定をしたらいいでしょうか? python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;
388 :
デフォルトの名無しさん :2009/06/02(火) 16:48:46
まずPythonをアンインストールしろ
389 :
デフォルトの名無しさん :2009/06/02(火) 17:02:05
超初心者スレのほうで聞いてみることにします。 ご迷惑おかけしました;;
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
>> 387 …釣りじゃなかったのか…
アンインストールしろも嘘じゃなかったんだがな! 半分だけど
gtkモジュールの初期化をスキップする方法はないでしょうか? gtk.gdk.pixbufを使いたく、gtkそのものは不要なのですが 普通にgtkをimportすると初期化中にXサーバとの接続までやってくれちゃうらしく /usr/local/lib/python2.5/site-packages/gtk-2.0/gtk/__init__.py:72: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning) という警告が出力されます。 それでも動くのですが、不要な警告が毎回出るというのも気分がよくありません。
394 :
デフォルトの名無しさん :2009/06/04(木) 02:16:15
except
ruby厨の荒らしがいるのはここだけです
397 :
デフォルトの名無しさん :2009/06/04(木) 16:27:29
python の help(..) 結果の文字列をコンソールではなく、str 文字列に簡便に取り出す 方法がないでしょうか。 -------------- python の help(..) 関数は、文字列を返すのではなく、コンソールに直接出力していま す。でも、その文字列が多すぎると読みきれません。例えば help(scipy) などとすると、 二万行を超える結果が返ってきます。 この多すぎる文字列を正規表現で絞り込もうとしています。自前の help 関数を作り、組 み込みの help が返す結果の文字列から正規表現にマッチする行を抜き出して表示しよう と思います。 でも help(..) 関数がコンソールに直接出力しているので困っています。pydoc のソース も追ったのですが、help(..) 結果を str に変更する上手い手が見つかりません。 上手い手段を御存知の方、教えてもらえますでしょうか。ヒントだけでも助かります
399 :
デフォルトの名無しさん :2009/06/04(木) 20:48:27
>>398 ありがとうございます。397 です。
リダイレクトを使ったコマンド・ラインで実行でテキストに落とさせ、そのテキストに正規表現を働かせます。
プログラム内だけで処理をしようとして、リダイレクトを忘れていました。ありがとうございました。
import sys from StringIO import StringIO sys.stdout = StringIO() help(dir) content = sys.stdout.getvalue()
>>399 import pydoc
doc = pydoc.getdoc(dir)
print doc
402 :
デフォルトの名無しさん :2009/06/05(金) 13:43:39
FTPの受信がうまくいきません # coding=utf8 from ftplib import FTP ftp = FTP("server.com", "user", "pass") hoge = ftp.storlines("RETR hoge.txt", open("foo.txt","w")) print hoge で 226 Transfer complete. と出て foo.txt も生成されますが ファイルに何も書き込まれていません。 どこが間違えているのでしょうしょうか?
generatorをfunctionのようにcallableにする、いちばんスマートな方法を教えてください。 def gen(): i = 0 while True: i += 1 yield i g = gen() print g.next() # これを g() で済むようにしたい print g.next() print g.next() 今は def to_func(g): return lambda: g.next() g = gen() g = to_func(g) としているんですけど、もっとかっこいい方法があれば教えてください。
g = gen().next おすすめはしないが
g = g.next どういう場面か知らんけどジェネレータをそのまま扱った方がいいんじゃないの
>>402 from ftplib import FTP
ftp = FTP("server.com", "user", "pass")
fp = open('test.txt', 'w')
def callback(s):
print >> fp, s
hoge = ftp.retrlines('RETR hoge.txt', callback)
print hoge
407 :
デフォルトの名無しさん :2009/06/05(金) 15:51:05
>>400 ありがとうございます。探していたものでした。 397 です。
mport sys
from StringIO import StringIO
stdout = sys.stdout
sys.stdout = StringIO()
help(dir)
content = sys.stdout.getvalue()
sys.stdout = stdout
print content
----------------
「sys.stdout = stdout」 と戻すことを忘れて、少し悩んでしまいました。でも助かりました。
409 :
デフォルトの名無しさん :2009/06/05(金) 16:49:49
>>401 御指摘ありがとうございます。397 です。
pydoc.getdoc(..) は個別の関数などに限定されるので使えませんでした。でも、それでも良いときは単純で便利ですね。
>>408 すいません。無視したわけではないのですが、連続書き込みで撥ねられて、別のことをしていたら今になってしまいました。
連続書き込み規制意味ないよなぁ
>>404 ,405
なるほど。nextを直接使えば良くて、lambdaは不要でしたね。
感謝感謝です。
for とか while に else があるの最近知ったわ。 何気に便利だな。
みんなのPython改訂版p155のコードを打ってみたらエラーになった。 本では、 >>>s = set([1,2,3,4]) >>>s.append(5) >>>s set([1,2,3,4,5]) て書いてあるんだけど、 俺がやると、 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'set' object has no attribute 'append' と言われる。。。なんでだろ? Python 2.6.2です。
>>413 その本ひどいな。捨てた方がいいんじゃないか?
dir(set)すれば分かるが、appendなんてものはないぞ。
s.add(5)とすれば期待する結果が得られるはず。
>>> s = set() >>> help(s) Help on set object: class set(object) | set(iterable) --> set object | | Build an unordered collection of unique elements. | | Methods defined here: | | __and__(...) | x.__and__(y) <==> x&y (中略) | x.__sub__(y) <==> x-y | | __xor__(...) | x.__xor__(y) <==> x^y | | add(...) | Add an element to a set. | | This has no effect if the element is already present. (以下略)
>>414 素早い回答ありがとう。
俺の勉強してる本はとんでもない本なのかよ!
>>1 のまとめwikiにも載ってる本なのに・・・。
>>413 "改訂版"なのに・・・
実はPython3.0系だとあるとか?
やったことないけど
>>417 3.0でも無いよ。っていうか、集合にappendなんて演算がある方がおかしい。
>415さんもどうも。 やれやれ。ソフトバンクの本だから嫌な気はしてたんだ。 でももう一冊候補だった「実践Python」も誤植が多いらしいから避けてこっちにしたのに。なかなか安心して勉強できないなあ。 これからもちょくちょくこのスレで質問すると思うので、よろしくお願いします。
そう、チュートリアルやるべし。 読み終わったらあれもこれもとモリモリ書きたくなる。
やっと初めてのPython読み終えたぜ とりあえず誤植はそんなにないと思う(数個はあったが) ただ、やはりいちいちまわりくどい印象 あと重い
界王星で本を読むからだよ
IPython なら set? だ。
最近出たPython本のアマゾンの順位を出た順に並べてみたんだけど。 初めてのPython 第3版 48,513位 Django×Python 23,790位 Python ポケットリファレンス 29,175位 みんなのPython 改訂版 2,799位 10日でおぼえる Python 入門教室 48,289位 クソ本なのにみんな買うんだよな。なんとかならないのかね。 順位から見ると、他の本の10倍売れてるってことか? Python 入門教室は新刊なのに売れてなさすぎて笑う(ww
Django本は俺も買った。 どこやったかな
>>418 append と add の意味の違いがまじでわからんです
だれかおしえてくれまいか
C#とかVBだと定番だけどな>append
C#VBこそAddばっかりじゃないか StringBuilderはAppend?
StringBuilderは新しいインスタンス作らない 既存のChar配列を書き換えてるから速いしメモリ食わない
>>429 計算機科学ではappendには末尾に追加するという意味で使われることが多い。
例えばリストやレコード構造など。それに対して順序関係の無い集合には
末尾という概念は無く、要素の追加を表すのはaddが最も適切、という意味で
Pythonのsetもaddが使われていると思われる。
push_backなんで論外だ、ということですね(>_<)
>>434 push_back()ってSTLのことじゃないの?
STLのsetへの要素の追加はinsert()であってpush_back()は無いけど。
それはそうと、STLのsetには順序関係があるんだよな。順序関係を持たない
unordered_setがやっと標準化されたけどね。
436 :
429 :2009/06/06(土) 11:50:44
>>429 appendは「末尾に付け加える」という意味。でも集合の要素には順序がないから
末尾がそもそもない。だから単純に「加える」という意味のaddを使う。
書き込む前に更新し忘れたorz
439 :
429 :2009/06/06(土) 11:54:04
>>437 ありがとう亀な人!無駄な時間を使わせてごめんなさい
dictにもaddはないよね。 辞書の要素には順序がない。
>>440 dictにはd[key]=valueという形で要素を追加出来るから
わざわざ必要ないってだけでしょ。
関係ないけど、PHPでは、 $ar = array(); //の配列に対して。 $ar[] = 'A'; $ar[] = 'B'; $ar[] = 'C'; こんな風に、append していく。
うん関係ない
うん関係ない
>>441 関数渡しみたいなのはdict.__setattr__使えばいいしね。
>初めてのPython 第3版 48,513位 >Django×Python 23,790位 >Python ポケットリファレンス 29,175位 >みんなのPython 改訂版 2,799位 >10日でおぼえる Python 入門教室 48,289位 残酷な現実だな><
みんなのPythonはわりと普通じゃね?
合コンでPythonの話ししてもだれも食いつかないんだけど
釣り乙
>>449 魅力のないヤツはどんな話してもダメだよ
俺、女の人と話すの苦手だから合コン行ったことない
PyPyの話でもしてろよ
そこでpychinkoの出番です。
合コンなんて行かなくても彼女は出きるさ。 ・・・できた彼女がメンヘラだったりするがなorz
457 :
デフォルトの名無しさん :2009/06/06(土) 16:51:08
pyqt4.5がリリースされたな。 ライセンスはGPLのまま。 python3.0に正式対応。
pypy pypi pychinko ooo.py
初めてのPython第3版いつの間に出てたんだ 第2版持ってるけど買いかなあ?
みんパイ(改)は何気に嘘・間違いがコマゴマとあるね。 上のsetもそうだけど、載せるコードは必ず確認するような慎重さというか誠実さはないんだろうね。
とくに書いてあること鵜呑みにせざるおえない初心者へ向けてるんだからなおのことなw
みんパイは何故か布教する奴がいるからなおさらなぁ…
このスレではアンチの必死ぶりばかりが目立つのは気のせいか?
>>463 こんなところで毒吐いたってなにも変わらないのにご苦労なことだな(w
しょせんその程度の小さい人間なんだろうが(wWwwwWWwww
>>463 アンチっていうかしっかりした公式ドキュメントがあるんだから勧める理由がないんだよ
初心者にはとっつき難いんだろ 自己中オタ根性丸出しだと普及しないぞ
しっかりしてるから、とっつき難くないよ。 とっつきの悪さというのも「しっかりしてなさ」の一つだと俺は考えるし、 それを含めた上で、しっかりしていると言える。 少なくとも、馬鹿を「わかったような気にさせる」ことに特化したような 不出来な書籍を薦めなきゃいけないほどのとっつきの悪さは、どこにも見出せない。 「手っ取り早くわかった気になりたいです。何を読むのがオススメですか?」 という質問なら、まぁ、みんPyを薦めるかもしれないけど、 「Pythonを身につけたいです。何を読むのがオススメですか?」 という質問なら、俺の回答は公式のドキュメントだな。
自己中オタに他人の意見を聞く心の余裕がないのは至極もっともな話だと思った。
確かに、公式のドキュメントから目をそらして みんパイがいいみんパイがいいとうるさい自己中は 余裕がまったく感じられないよね。
「初めてのPerl」とか「初めてのPython」は著者が その言語が好きだと分かる所がいいと思う。 好きで語れる人が書いてるから、こっちもなんか熱くなるw
こんどは観念論か。オナって寝ろ(wwwWWwww
>>471 間違ってるのは早稲田だよ!
自己中キモオタアンチじゃないよ!!!
初めてのPerlは別格だろう
>>474 二度目の!マークを増やす書き癖、直したほうがいいと思うよ。
色々バレちゃうし。
C、Java、Haskellと一通りやったあとに始めたスクリプト言語だから 初心者の視点が全くわからないんだが、 公式ドキュメント読むだけじゃ理解できないんだろうか? まぁ俺もJavaやってた頃は分厚い本買って安心したがってたところあるけど
>>460-461 初心者にありがちな間違いを敢えて混ぜ込むことで
理解を深めさせるという教育的配慮でございます
>>477 Java本はなぜかぶ厚い割に中身がスカスカの本が多いよね
キモオタの理論はオリジナリティが高すぎて難解だな! キモオタ呼ばわりされるのも当然だ!!!
顔が映ってないってことは不細工なんだろ なんて嫌味しか言うことができない・・・ 負けたよ大負けだ
そういえば顔が映ってるひとは いつも一方からしか撮らせない ところが池田大作に似てる
本の話は他でやれよ いっつも話の展開が同じだし
聞きたいことがあったんだけど 何だったか忘れちゃったので 思い出したらまた来ますね
お前らも書籍を書いたり、勉強会を主催したりすれば Pythonスキーな女性が寄ってくるんじゃないのか? ※ただしイケメンに限る
勉強会 : ×(自己中だから人が集まらない) 書籍執筆 : ×(書籍を書くほどの脳力と知識がない) イケメン : ×(骨格からしてダメなので整形不可能。一度死んで生き返るしかない) キモオタには高いハードル過ぎるな.
>>483 本気で勝負しようと思っているところがキモさ倍増ですね。
Jython2.5はそろそろ正式版? ここではα以来スルーされつつ、rc3まで行ってるようだが・・・
>>483 勝ち負けの前に同じ土俵にすら乗ってないから(wwWwWWwwwwwwwWwwwWwwwwwwwwwWwwwwwwwww
みんパイを批判すると、筋道だった反論は一切来ないけど 批判した人間に対する人格批判がすごいよね、いつも。
それが楽しみで巡回してる奴が殆どだろ。 強者には徹底的に媚びへつらい、弱者を探しては煽ったりして楽しむ。 これが2chに出来上がった文化。便所の落書サイトの運命
WSGIの質問はここでいいですか?
>>495 それは2chの文化を勘違いしてるなぁ。
都合が悪くなったらいつでも「無かったことにして逃げられる」点を利用して、
弱者が強者にデタラメに噛み付くのが2chの文化だよ。
それこそが「こういう所でしか出来ないこと」だからね。
(強者が弱者を攻撃したり搾取したりするのは、実生活でもやれることだから、
そんなのは2chならではの文化になったりはしない)
弱者に逃げ道を用意しておくのは大事だろ それこそ弱者なんだから どうせ行動力無いんだから言いたいだけ言わせとけよ
キモオタはなんでも人格攻撃ということにしたがるよね。
もう本の話はどうでもいいだろ。 チュートリアルとリファレンスを読むのが嫌な奴等が買えばいいだけ。
むしろ全部読め
本の話ではなくてキモオタの話ですよ。
肝を多が全てロリコンじゃないのと同じ理屈なんだよな たとえ一般人から見れば全てロリコンに見えても。
かくいう私もロリコンでね
507 :
デフォルトの名無しさん :2009/06/10(水) 02:59:51
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
508 :
デフォルトの名無しさん :2009/06/10(水) 07:37:19
変数や関数の命名規則に camel, pascal, underbar がありますよね。 言語仕様的にはどれでも良いみたいですが 慣習的に推奨されているものありますか?
>>508 PEP 8
Style Guide for Python Code
perliament
wxPythonのサイトが繋がらない 何でこんな見たいときにかぎって…
後で見るかもってページは根こそぎwgetしとくのが基本だぜ? そんなこんなで俺の「あとで見るかも」フォルダは1TBを超えました
デジタル積読か
514 :
デフォルトの名無しさん :2009/06/11(木) 08:49:10
>>497 そのおかげで誰もあえて指摘しない
明らかにおかしい矛盾点に気がつけるからいいんだけどね
俺もいろいろ洗脳されてた点に気がつけた
>>512 そんな基本聞いたこと無いけど(ww
キモオタは自分を基準にしたがるの?
>>512 自宅鯖たててsquidキャッシュをつねに串として使えばOK
そのフォルダをぜひどこかにアップしてほしい 特にニュース系は消えたり、加工されたり頻繁にあるからなあ
yahooのニュースサイトで翌日には見れなくなってるのとか大杉w きっと過去にさかのぼって読まれたくないんだろうなww
>>515 2.6.2は嬉しいですね
スクリプトで実現可能な処理の例として、
インテントの処理
アクティビティの開始
テキストメッセージの送信
バーコードのスキャン
ロケーションやセンサー入力の読み取り
テキスト読み上げ
>>520 あれは新聞社から記事をいついつまで掲載していいって条件で借りて載せてるから
それコピペ
>>497 「ハッカーになろう」とか希望的観測書きまくりな文章をそのまま信じないで
なんか一部変なんじゃねと思えるようになるよ
うそをうそと見抜けないひとは 2chを利用しようと思わない方がいい
↑うそです
クレタ人「クレタ人はうそつきである」
クレタ人はうそつきではありません。 うそつきは僕です。
>>525 希望的観測書きまくりな文章をそのまま信じるような人間は、
2chに来たら2ch信者になってるよ。
「2chは社会に大きな影響を与えている」「強権によって隠された真実が書いてある」
「世論を動かしている」「あの人はこのスレを見てる」「2chねらは強いんだぞぅ!」etc。
>>530 2chのネタをマジで書いてると信じちゃってる人乙
それって論理的にいって、2chのレスに向かっては書けないよね。
2ちゃんねるに書いてあることをマジで信じてる奴は実際いろいろ見られるけどなw
言えてる
日本語とロシア語しか分からないのでロシアのサイトを使って勉強をしたいのですが Pythonはロシアでも人気ですか?
ブッシュが下院で弾劾決議されてるのは2chで初めて知った もちろんマスゴミは一切そういうことは報道しない まあ情報収集の大事なツールの1つさ
アメリカの政治についてのニュースが本当に知りたい人は、 普通アメリカのニュースサイトを巡回しない? 自分で勝手にアンテナ低くしてる人の有り難がり方で、たまの一発をアピールされても・・・。
おまいらスレ違いもいい加減にしろ
Pythonにはスレ違いをやめさせるライブラリって無いんですか?
>>537 いつも外国の情報は日本では報道しないならそうだが、
マスゴミに都合の良いニュースだけ取捨選択して垂れ流すのが問題なんだよ。
その外国だって偏向だろうし。
まぁ、TV見てる奴信じてる奴がアホなんだが。
546 :
デフォルトの名無しさん :2009/06/12(金) 19:50:58
悪いがエラーを再現できない
ほんとに2.6を使っているかを確かめてみたら? python -V だっけ?
>>546 文字列リテラルのprefixだろ?
なんで open のオプションにして unicode 読み込みという意味になるのか解らない。
unicode を読み込みたかったら、
import codecs
f = codecs.open("hoge.txt", "rt", encoding="utf-8")
text = f.read()
550 :
デフォルトの名無しさん :2009/06/12(金) 20:57:00
>>547-549 レスありがとうございます。
設定ミスで別にインストールしてる2.3を読みに行ってました…。
焦って調べた。 U は universal newline じゃねーか。 Unicode じゃないよ。
PyPyでどんな面白いことが出来るの?
>>555 電信柱をぶん投げてそれに乗って海外へ行けるようになる。
スレ違いの話題を最初に振る人は覚悟して振りましょう 本のアンチをやめさせるなど何か意図があったのかもしれませんが その話題でどっちが正しいかの論争になりますので 当初の意図と違う方向にいってからスレ違いと騒がれても困ります
>>557 >本のアンチをやめさせる
単著が欲しいなら日本語を勉強しような。
誰が短小やねん!
>>560 'text' という意味。デフォルトだから気にしなくていいよ。
逆に、バイナリファイルを読み込む時には 'b' を入れる必要がある。
初心者が Linux では動くけど Windows では動かないプログラムを書いて
しまう落とし穴の一つ。
>>561 嘘を言うなよ。
codecs.pyで定義されているopen()に't'なんていうモードは無いわけだが。
しかも
if encoding is not None and \
'b' not in mode:
# Force opening of the file in binary mode
mode = mode + 'b'
file = __builtin__.open(filename, mode, buffering)
とあるようにencodingが設定されていたら勝手に'b'が追加されるし。
pylabでグラフの縦横スケールを同じにするオプションと グラフ描画範囲(xrange?)を指定するオプションを同時に使えない 他のプロットツール使ったほうがいいの? 他にいいの知らないのだけど
まじかよ…pylab終わったな
改行を含むような文字列を、正規表現を使って一行ずつに分解しようとしたのですがうまく行きません。 どなたかアドバイスを。 >>> input = "foo¥nbar¥nbaz¥n" >>> rexp = re.compile(r'^', re.M) >>> print rexp.split(input) ['foo¥nbar¥nbaz¥n']
>>565 なんでそんなことにregexpが必要なんだよ
input.split('\n')でいいだろ
言えない。.splitlines()なんて言えない
>>> "abc\ndef\nxyz".split('\n') ['abc', 'def', 'xyz']
無理にでも正規表現を使いたいなら re.compile(r'\n', re.M) ただし末尾に空白文字列が入る
570 :
デフォルトの名無しさん :2009/06/13(土) 18:26:17
ppkdってどこかに落ちてない?
>>566 ,568
正規表現で r'^' を使っていることからわかると思ったのですが、
改行文字を含めたまま行ごとに分解したかったのでsplit()は使ってません。
>>567 splitlines() というのがあるんですか。ありがとうございます。
でもできれば正規表現でできたほうが、いろいろ融通がきいてありがたいんですか。
ていうか、r'^' でなんで行ごとに分解できないんでしょうか。
>>> re.findall(r'^.+\n?', 'foo\nbar\nbaz\n', re.M) ['foo\n', 'bar\n', 'baz\n']
>>571 正規表現は
文字列全体にではなく
行ごとに適用されるので
それを無効にするための
オプション指定が必要
>>574 オプション指定というのがre.Mのことであれば、
>>565 に書いてますが、すでに指定しています。
576 :
デフォルトの名無しさん :2009/06/14(日) 11:48:37
>>575 こういうのでいいわけ?
import re
sample = """foo1
foo2
foo3
foo4
"""
rexp = re.compile("""^(.{1,})$""", re.MULTILINE)
>>> rexp.findall(sample)
['foo1', 'foo2', 'foo3', 'foo4']
行末の改行が欲しければ、
>>> [currLine + "\n" for currLine in rexp.findall(sample)]
['foo1\n', 'foo2\n', 'foo3\n', 'foo4\n']
こんなとか。
>>577 代替案ありがとうございます。
でも結局、Pythonでは r'^' で split できないということなんですよね。
うーん、こんな落とし穴があろうとは。
>[currLine + "¥n" for currLine in rexp.findall(sample)]
これは sample の最後が¥nでない場合に違った結果に成りますよね。
まあsample[-1]を調べればいいだけなんですけど。
from StringIO import StringIO s = 'HOGE\nFUGA\nMOGA' sio = StringIO(s) L = sio.readlines() print L
579 は改行が CRLFとLFのときのうまくいく。 CRだけの時には分割されない。 readline は、LFで分割してるんだな。
r'^'で改行で区切れないことが落とし穴なの?
俺も最近悩んだんだが、改行コード混在のデータを 混在したまま編集・加工するってのは茨の道。 素直に改行コード統一するのが一番いい。
>>578 ぶっちゃけ、findallでキャプチャしてる対象は、
改行のみの行を除く「\n」で改行されたテキスト。
正規表現での行頭を示す「^」は、“行頭に存在する
何かの文字”ではなく、行頭という“位置”を示すので、
具体的な何かのバイトに変換される性質のものじゃないしね。
文字列シーケンスにアクセスしている時のシークポイントを
示すに過ぎない、と考えておくと分かりやすい。
>>[currLine + "¥n" for currLine in rexp.findall(sample)]
>これは sample の最後が\nでない場合に違った結果に成りますよね。
>まあsample[-1]を調べればいいだけなんですけど。
これについては、findallでキャプチャしたものが「\n」を取り除いた
文字列の配列になるはずなので、どうしても改行が入っている配列に
しておきたいならどうぞ、っていう程度のものです。
findallで出来上がった配列の要素に何か処理をして、もういちど
テキストファイルに書き出すような処理をするなら、改行コードなしの
ままで処理するのがいいと思う。最後で
u"\n".join([処理済み配列])
すればいいわけだし。
584 :
デフォルトの名無しさん :2009/06/14(日) 18:26:45
どうやったら標準出力取得できますか?
GetStdHandle
>>578 >でも結局、Pythonでは r'^' で split できないということなんですよね。
>うーん、こんな落とし穴があろうとは。
^は行頭じゃなくて文字列の先頭にmatchする
>>580 >CRだけの時には分割されない。
Macのファイル?無視無視
>>582 改行コード混在(LF,CR,CR+LF)のものを
LFのみに統一するための
一発でできる正規表現ってありますか?
正規表現ブームだなw
>>582 modeを'rU'にしてopenすればいいんじゃないの?
>>582 混在って一個のテキストデータの中に
いろんな改行が混ざってんの?
なんだそれ
>>592 たとえば、photoshopEPS/JPEGがそう。
xincludeあたり使うと混ざったxml文書ができあがることもある
>>588 '\r\n?' これでいけんじゃない?
\r\n と \n と \r が混在してたら、 \r\n は一つの改行なのか、 \r + \n の2つの改行なのか 区別できないなw。
よくわからんがもはや正規表現単独の話題のような・・・
>>597 そんな時は前後の文章から話題が変わったか
どうかで判断すればいいんじゃない?
>>592 引用符""付かないのに項目中に改行が入ってるcsvとか
Python使いはみんな正規表現嫌いなのかと思ってたが 意外に食いつきがよかったでござるの巻
Pythonじゃないけどnkfのソースでも見たほうが早いんじゃねぇの?
途中で改行の表現が変わるために文脈の判断が必要だとしたら 一発で解く正規表現を求めるのなんて時間の無駄くさくないか
任意の状況に対応するのは必要だが、元のデータの仕様を整備した方が簡単だし確実。 そもそもそこまで気にするなら、文字コード自体が(r
マスゴミに都合の良いニュースだけ取捨選択して垂れ流すのが問題なんだよ。
>>601 正規表現のキーワード、覚えられません><
どうして\beginじゃなくて^で、\endじゃなくて$なんでしょうか。
perl臭いです。
perlは関係ない
>>606 嫌ならオレオレ表現から正規表現へのトランスレータでも作ればいいだろ
(*)とか(:)の性器表現ってのはどうだ
ところで諸兄はエディタ・IDEは何をお使いですか。 とりあえずEclipse+pyDevでお勉強中なのですが、 なんかJava臭いwのでなんとかしたいのです。 The Eric Python IDE Wing IDE Personal (有料ですが使いやすいなら$35くらいおk) 等どうかなぁと思うんですが。
xyzzy idle
Emacsのpython-mode
みんなストイックすぐる… 変数ウォッチとかオートコンプリートとか 組み込みのUnitテストとか無いとやだいやだい
いまさらですが。 > 565 >>> s="foo\nbar\nbaz\n" >>> re.findall("([^(?:\r\n|\r|\n)]+(?:\r\n|\r|\n))", s, re.MULTILINE) ['foo\n', 'bar\n', 'baz\n'] > 588 >>> s="foo\rbar\nbaz\r\n" >>> re.sub("(?:\r\n|\r|\n)", "\n", s) 'foo\nbar\nbaz\n'
gedit
osiri kaikai
emacsにpythonのリファクタリングツールあるけど、あれって便利なのかな
Eclipseはpython専用エディタになってる もとはjavaだったな
komodo edit(komodo ideでもいいけど)はよくなってきたよなあ
Aptana Studio なかなかいいよ。 rubyや、javascriptと比べると、もう一つpythonにはサポート薄いけど。
622 :
デフォルトの名無しさん :2009/06/16(火) 02:55:37
>>620 AptanaはEplipse+pydevだろ
Eric IDEと、wxPythonのプラグインを入れてみた… おお。SUGEEEE。
ZUGOOOO
いいね
vim一択
いやそれはエディターじゃないの
emacs一択の馬鹿は結構いるんだよな なんでもかんでもemacsで済まそうとする
大規模に開発するには、やはりIDE、しかもPython専用のを使いたいな。 Ericよさそうですね。でも俺友達いないから、一人subversionやっても空しいだけだよね。
>>632 昨日の自分は明日の他人だ
一人subversionには意味がある
>>629 ブラウザまでemacsなんですね
わかります
>>629 emacs儲は本当にうざいですよね、Lispに付いて語るの止めて欲しいです。
今やってるプロジェクトはPython/Zopeなんですから、もういいですから。
navi2chでニヨニヨしてるとか見てて恥ずかしいです。
Zopeの人ってみんなこうなんだね。怖いね。
厨二病的に「Zope最強だぜ!!!」なんです
一人subversionしてる俺が通りますよ
一人subversionとか、なんか、悲しすぎる…
少なくともこのスレでemacs厨が暴走なんてしてないのに あいつらキモ委よな、みんなそう思うだろ?な?な? とか勝手に同意を押しつける方がよっぽど不快。 ところで、 みんなviこそ最強の開発環境だと思うだろ?な?な?
netbeansはデフォルトでhg入ってたぞ
ひとりHGなめんな
>>640 VisualStudioが最強に決まっているじゃないか。
そして最強の言語はPython。つおい。
つまりIronPythonStudioが最強だと当然みんな思うだろ?な?なぁ?
>>641 >netbeansはデフォルトでhg入ってたぞ
これってさ、mercurialがjavaに移植されたの?
それともJython上でmercurialを動かしてるの?
IronPython Studio は document って変数名を使おうとすると 勝手に Document にするのがうざいから使うのをやめた
PyScripter使ってる 他のも試してみたいけど、なかなかめんどくさい
それどこの宿題
>>617 ropeを使ってるやつかな
rope、リファクタリングに加えてideの補助ライブラリも含まれてて、
xyzzyから呼び出して補完に使ってみたりしてた
なんだけどあれプロジェクト作らないとダメで(まあ当たり前か)
ちょっと軽快さ減だしあんまでかいのはpythonでは作らないんで気にしないことにした
>>623 トン、dive into pythonにSOAPの章なんてあったんだ!
読んでみます。
650 :
デフォルトの名無しさん :2009/06/16(火) 22:35:28
pythonでテキストエディタ作るのとC++でテキストエディタ作るのはどっちが難しいですか?
>>650 パイソンだと単独で配布できる実行ファイル形式にするのが面倒なので、
パイソンの方が難しい。
そんなばかな
「難しい」のと「面倒くさい」のは別だからなぁ
Jython 2.5.0 final 来たね
Jython 2.5.0 fatal にみえた orz
JSONでいいよ
Jython汚ね
PythonでのSOAPライブラリってSOAP.py使えばいいんですか? 随分と更新されていないようですし、ドキュメント通りにインストールもできず、困っております。 Pythonは2.5で
来たね
北ね
喜多ね
木田ね
着たね
>>657 馬鹿辞書
Vimを使っている人いますか。 autoindentやsmartindentをonにしているときに、インデントを浅くする(一段戻る)方法が分かりません。 たとえば■がカーソルを表すとして def f(): return 1 ■ カーソルがこの位置にある時に、インデントを戻す方法が分かりません。 BackspaceやC-hを押してもインデントに変化なし。 今はいちいちESCを押して'<<'を押して戻っているんですけど、バカすぎる。 誰か助けて。
>>660 vim を使っているが、そんな症状にはならない。
return文の後に改行すると自動でインデントが元に戻るし、
自分でインデントを調整したい場合は C-h か BS でできる。
^A
python使いならeditraのソースコードぐらい読めるよな?
>>660 Ctrl+D でインデントを減らす事ができました。またCtrl+Tで増やせます。
お騒がせしました。
Ericイイ
頭文字の話かよ
python.elで C-M-TAB で補完しようとしたら1つ前の補完候補らしきものにジャンプしてから補完しやがった
間違った C-M-i だった
>>660 set backspace=indent
editraはいつになったら実用に耐えうるレベルになるの?
日本語さえ入力できるようになれば最強過ぎるeditraちゃん ここのスレの住民でデバッグしたらええがな
なんだそれ!ヨサゲじゃん リポジトリに無いだろうと思って検索かけたらあった ちと入れてくる
wxGTKが要るのか
editraはPythonシェル/クラスブラウザ付きエディターなのかな。デバッグ機能は無さそうだけど、 お手軽なスクリプトを書くには十分そう? IDEはEric最強っぽいな。Eclipse+PyDevはいまいち弱い
676 :
673 :2009/06/19(金) 00:54:26
あ!インストールしたの忘れてた 自分のレス見て思いだした orz
pyscriptor使ってるけど、ちょっともっさりだね。 機能的には不満ないんだが。もともと補完無しで書いてたし。
Eric最強
> Eclipse+PyDevはいまいち弱い PyDevは、上位の商用版を売りたいためのものだから、弱いのは当然だなぁ。 Ericはかなり最強ですな… そもそもPythonで書かれてるからな。 自分で自分を開発するという変態IDEですね。わかります。
emacsも変態なんですね。わかります。
もちろんemacsは変態です。わかります。
確認するまでもありません
eric入れるとpythonの実行遅くなる?
Windows で Eric4 使ってるかたに質問です。 Plugins を追加するときに ZIP からしか選べないようなのですが、 wxPython の Plugin は tar.gz で提供されていて、 無理やり選んでも ZIP じゃないからって怒られてしまいます。 ZIP 版のもあるのでしょうか?
ericってなんですか? ググっても音楽関係とか教育機関がヒットしてしまいます
editraで日本語入力がおかしいのは何が原因か分かる人いませんか?
エディタスレになったw
eric起動するときにこんなエラーが出るんですけど どこを治せば良いですか? Warning: translation file 'eric4_ja_JP'could not be loaded. Using default. Warning: translation file 'qscintilla_ja_JP'could not be loaded. Using default.
>>670 setlocal backspace=indent
でいけました。さんくす。
Emacsってもう時代遅れなんですか? 先輩にエディタと言えばEmacsしかないっ!って言われてEmacs使ってんすけど・・・
>>695 こうして変態文化は連綿と継承されていくのですね。わかります。
697 :
デフォルトの名無しさん :2009/06/20(土) 13:16:40
俺もEmacs使ってるよ。
VimとEmacsは不滅です
>>695 Sony news800シリーズとか、縦長のキャラクターコンソールだったら、
Emacsがわりと使いやすいと思うよ。
djangoの話題を扱ったスレってどっかにないでしょうか?
editraを日本仕様に改造しようプロジェクトやります
>>701 なるほどWebProgって板があったのね
ありがとう!
editraってPythonで書かれてるのかすごいな
だから起動が重いのか
Pythonってちょっと深めの再帰をさせるとRuntimeErrorになるのが嫌だな。 Guidoも末尾再帰の最適化はしないって言ってるし。 関数型言語っぽい機能がそれなりにある分、期待してしまう。
708 :
デフォルトの名無しさん :2009/06/20(土) 17:57:15
そーゆー人向けにスタックレスなアレがあるんじゃないのかな。707が評価報告してスレのみんなを幸せにしておくれ
>>707 読みやすくなるわけでもない書き換えを推奨する仕様を
入れたくないのは分かる気がするんだけどなあ
可読性そのままで再帰を最適化する仕様ってないだろうか
可読性そのままで再帰を最適化する例を紹介してください
そんなのあったらもうすでに実装が検討されてるだろ…… 継続渡しスタイルで末尾再帰以外も最適化できるという話もあるが、 継続そのものが可読性損なうので難しいね。 継続のサブセットとしてジェネレータ(*)があるけど、ジェネレータは可読性がいいから、 最適化目的だけなら可読性損なわない仕様を作れるのかもしれない。 ただ、そういうのは聞いたことがないな (*)Pythonのジェネレータは継続じゃないけど……
python信者ならeditraのソースコードは読めて当然
>>707 深さ制限のデフォルトがあるだけだから
それを増やせばOSが許す限りは逝けたような
generator最強
'-'.join(a);
話になっているのは 末尾再帰じゃなくてただの再帰
末尾再帰ってなんぞ
>>719 再帰的な関数を作って深い再帰をするとRuntimeエラーが起こる
これを関数の最後に再帰部分が来るようにすると
コンパイラが自動的にループに変換して
Runtimeエラー起こさないようにするのが末尾再帰最適化
ただ末尾再帰にして可読性を落とすんなら
手動でループに変換しても可読性のメリットないし、って話
>>701 URLにphpが入ってるから冗談だと思った。
723 :
デフォルトの名無しさん :2009/06/21(日) 02:05:24
tkinterってなんて読むの?
チンコキッター とは読めないな流石に
てぃーけー・いんたー
tkinterはこう読む / イ / / ヽ ヽ. ', レ / ′ ィ ⌒!ヽ | ⌒ヽ ヽ ト..! (⌒⌒) ∧│ ∧ ハ ハ. l i |:. : :\ \/ ┏┓┏━━┓ ./∧ | レ/⌒ \ | ゝ´⌒ヽ i |: V: : :ヽ ┏━┓┏━┓ ┏┛┗┫┏┓┃ .': : : Nヽ イ rハ ヽ| rハ V'′ |: :i:l: : : : ', ┃ ┃┃ ┃ ┗┓┏┫┗┛┃┏━ l: : : : :イ ゝ__ ゝ ヒン ヒV / , |: : :l: : : : :!━━━┓┃ ┃┃ ┃ ┏┛┗┫┏┓┃┃ l: : / / ハ///// __’__ //// / / ∧: :' : : : / ┃┃ ┃┃ ┃ ┗┓┏┻┛┃┃┗━ V { 人l l/ | /イ ハ::V: : / ━━━┛┗━┛┗━┛ ┃┃ ┃┃ (⌒⌒) V ゝ. | │ ー 'イ , '_ノ /イ ┏━┓┏━┓ ┗┛ ┗┛ \/ ゝ.__\ ゝ ____ノ / / :::::::::::ハ (⌒⌒) ┗━┛┗━┛ r'ーr ⌒- ⌒ヽ r、_ _イイ:::::::::::::::::: i ', \/ r フ' ⌒ _ iヽ |ー┐__ _ :::::::: i ヽ
AAうざ
Tcl/Tk Interfaceと分かっていれば、自ずと答えは出るはずだな?
PyQtは
糞
ピクティー
732 :
デフォルトの名無しさん :2009/06/21(日) 16:40:28
パンティー
PyQtが糞だからwxWidgetsが出来たんでしょ?
えっ
下衆の勘繰りとはよく言ったものだ
Qt -> wxWidget PyQt -> wxPython みたいな位置付けだと思うのですが どうなんでしょう?
矢印は不適切だった Qt - wxWidget - Tcl/Tk PyQt - wxPython - tkinter こんな感じ?
wxPythonのi18nってどうやんの?
PyQtって糞なん?
多分、733は「Qtが糞だからwxWidgetsが出来たんでしょ?」 と書きたかったのではと思われます。
Qt wxWidget Tcl/Tk ↑ ↑ ↑ ↓ ↓ ↓ PyQt wxPython tkinter って書きたかったんじゃないのか?
結局どれ使えばいいんスか? 簡単なのお願いします。 GUIデザイナーとかは無いっスか?
NetBeansでおk
>>742 PyQt も wxPython もデザイナ使えるよ。
Pythonって標準で定数ってないの?? constクラスを自作するってのは無しで。
ない
747 :
デフォルトの名無しさん :2009/06/23(火) 12:16:55
editraを改造するためにpythonを学んでいるものです editraってguiライブラリとか使われてますかね? ソース見てもよくわからないもので・・
標準の定数ってなんだろう。TrueとFalseか? math.piとかか。
名前が大文字で始める変数の書き換えがエラーになるとかそういうのを期待しているんじゃ。
>>> import math >>> math.pi 3.1415926535897931 >>> math.pi=0 >>> math.pi 0 >>> True True >>> True=False >>> True False >>> 定数じゃないらしいw
なんか変なバグの温床になりそうだなぁ
おまいらユニットテストしっかり書いてる?
書いてない しっかり書いてる人は尊敬するわ
書き方知らん。 教えてくれろ。
DocTestでコメント内に埋め込んで書いておくだけ…ではカバレージが低いんだよな。 申し訳ありません。
pythonってOSまで作れる? デバイス操作とかは無理だよね?
作ってどうすんの?
>デバイス操作 そういうライブラリを作ればできないこともないだろうけど 相当うまく作らないとタイミングやパフォーマンスが問題になるだろうし まさに誰得。 だいたいCだって単体でOS作れないよ。
Pythonで書いたOSって、もっさり遅いけどソースコードが読みやすく 拡張しやすいOSになりそうな予感。将来きっと出現すると個人的には 楽しみにしてる。 ちなみにC#のOSは現存するよ。日本人が作ったやつが。
>>760 linuxはCで書かれてませんでしたっけ・・・?
アセンブラがいるだろ
アセンブラ?w お前linuxのソース読んだことないだろ
>>764 ん?
アセンブラじゃなくてアセンブリ言語だって言いたいのか?
>>762 以前に比べるとほんのわずかになったが、Cのmain()を呼ぶために
スタックやbssを設定するのにアセンブリコードが必要
x86ならarch/x86/boot/header.Sを読んでみ
540個もソースがあるみたいだけど
540個もソース読めないのか
アセンブリ云々をおいといても、 OS書くにはコンパイラ型言語じゃなきゃダメじゃね? インタプリタだと、まずインタプリタを読み込まなきゃならないが それをスクリプトでやるのは無理がある。
じゃあFreeDOSは何で書かれてるんだ
DOSへの執念
>>770 アセンブラがいっぱい、Cも沢山。だったと記憶。
そもそも、Pythonに限らず高級言語に対してこれOS書ける?と言われても困るなw
なんなんだよ やりたいら自分でしろよ
よーし パパがんばって Python で BrainFuck の OS つくっちゃうぞー
>>762-766 bootloaderをlinuxのソースと呼べるのかどうかは甚だ疑問
せめてカーネルソースからだろ
commonlispでいうところのmovitzみたいな話ならわかんないでもないけど pythonマシン的な movitz自体はC+アセンブラでかかれてんじゃないのかな
OS作れる?って言ってるやつって デスクトップさえ作れば満足な悪寒
Pythonで開発のエッセンスを学んで、Cで実践してOSを作るのが王道。
>>780 つシステムコール、コンテキストスイッチ、アトミック操作・・・
いちいちあげたらきりがなさ過ぎる。
まずは自分でlinuxのソース読もうぜ。
PythonのPVMしか動いてないぜ!! ってコンピュータはちょっと欲しいw
なんとなくSmallTalkを思い出しますな
UCSD p-Systemでしょう。 リアルタイムで知ってる俺は、なんとなく死にぞこなってる気がするけど。
タブでインデントしてるのですが、 Pydevである行をコメントにしてから、 改行キーでその下に行を追加しtabキーを押すと、 先頭がスペースでインデントされてエラーが表示されとても使いにくいのです。 Insert spaces for tabsのチェックははずしています。 Preferencesを見ても他にそれらしきものが見つからないのです。 どっかの設定で変えられるのでしょうか?
>>788 早速のご回答ありがとうございます。
やっぱりスペースインデントが普通なんですかね。
エディタではいつもホワイトスペースを表示しているので、
スペースインデントだと半角スペースがいっぱい表示されて見づらくなるので
タブインデントにしてました。
半角スペースって表示するのが普通? 全角とタブだけ表示で半角スペースはなにも表示しないのが一般的かと思っていた
タブは4だったり8だったりするから、スペースでインデントしましょうや という風潮なのではないかな
>>792 むしろ、タブなら単位が「タブ1個」だから統一されてるんだがな。
スペースだと人によってバラバラになっちゃうじゃん。
今時タブ8なんて
795 :
790 :2009/06/24(水) 12:35:19
Show whitespace charactersのチェックはあるのですが、 全角スペースとタブだけ表示するいうような設定が見当たらないので、 ホワイトスペースは全部表示されてしまいます。
http://www.python.org/dev/peps/pep-0008/ PEP 8 -- Style Guide for Python Code
Code lay-out
Indentation
Use 4 spaces per indentation level.
[...]
Tabs or Spaces?
Never mix tabs and spaces.
The most popular way of indenting Python is with spaces only.
私は権威主義者ではない。
タブ2とタブ4なら解るが、タブ8は変態だろ
メモ帳信者だって主張したいんだろ
モメ帳
妹デスクトップをpythonでお願いします
>>798 set ts=8 sw=4して、
ctrl+tでインデント、ctrl+dでアンインデントするのが基本。
タブとスペースを混在するなって指針とは真っ向から対立するので、
pythonではおすすめできない。
>>803 俺も昔はその設定だったが、今ではexpandtabにしている。
括弧の位置でそろえたいときなんかタブだと結局スペースと混在になるからキライ
絶対トラブルの元になる。スペースにしたほうがいい。
トラブルの元になる意味が分からない件
S:space1 T:tab4 for i in range(3): Tprint i SSSSprint i for i in range(3): SSSSprint i Tprint i さて Python でどのようなインデントとみなされるでしょうか
タブ幅4というお子様設定で さてPythonでどのような……とかバッカじゃなかろうか
漢なら、TAB=1。
俺のキーボードにはTABキーなんてないぞ。 買った時はついてたけど、邪魔なんで外して捨てた。
TABキー跡地はどうしているのか気になる
スペースインデントキーになりました
お花を植えました
妖精さんが出入り口に使ってるに決まってるだろ。
懐かしい感じのギャグ・・・
pythonってawk見たくunixコマンドで パイプラインの中に繋げて書けないの?
一行直書きPythonでござるか。 それは無いかな。
●for は使える python -c 'for x in range(2): print x*2' ●import も出来る python -c 'import math; print math.pi' ●import した後に for を使えない? cat /etc/passwd | python -c 'import sys; for line in sys.stdin: print line' File "<string>", line 1 import sys; for line in sys.stdin: print line ^ SyntaxError: invalid syntax
普通に引用符の途中で改行すればいいじゃない
ワンライナーの話はするな メンドクサイから
pythonで計算時間の測定ってどうやるの?
ちっちゃいならtimeit、 マジならcProfileかな
pylabで作ったepsがubuntuから印刷できない 表示はできる gnuplotが作ったグラフは印刷できる 何がおかしいのでしょうか?
pythonでunicodeの文字列を扱うのって大変なことですか?
2.5以上なら問題無し 慣れてないと躓く場所はあると思う 理由が判れば次から躓かない 決して大変なことではない
pythonでunittestってどうやるの?
Pythonのコルーチン・マイクロスレッドの実装って、Stackless Pythonかuthreadsしかないの? IronPythonで使えるのがあるといいんだけどな。
>>831 コルーチン、マイクロスレッドが何かを理解していれば、
CPython用の実装がIronPythonで動く訳がないと判ると
思うんだけど・・・
>>829 Editraの日本語問題を直したいんですけど何がおかしいですかね?
>>832 動く訳がないのが判ってるから
あればいいなっていう希望なんだろ
>>830 import unittest
help(unittest)
Pythonのジェネレータの仕組みはほぼコルーチンだから コルーチンの挙動をするクラスを1つ定義すればなんとかなりそうなんだけど、 マイクロスレッドの場合、底となるメソッドから複数段階深くなった呼び出しから一度に底の外側から抜け、 再び実行するタイミングができたら中断した箇所まで戻れないといけない。 これが底で中断でき、再開できればいいというならコルーチンと何も変わらないよね。 例外をつければ一気に抜けられるだろうけど、おそらく元に戻れない。 たぶん、インタプリタ本体をいじりながら動かすような挙動を用意しないと実装できないんじゃないかなぁ。 一番いいのはコールスタック自体を退避できる設計をすることだろうけど。
pythonで美しいコードを見せてください
おれが、おれそのものが美だ!!
サンプルを入力していたところ、 from xml import xpath で ImportErrorが発生します。 CentOS5のPython2.4での現象なのですが、なにか必要なライブラリがあるのでしょうか?
スペースの直後から小文字で始まる単語を削除を 正規表現で書きたいんですが ß が絡むとうまく動きません。 re.sub(" [a-zß]+", "", text) これだと ß が残ってしまいます。 どうすれば ß も消せるでしょうか?
unicode文字列にしないと。
>>843 ありがとうございます。うまくいきました。
847 :
842 :2009/06/26(金) 17:32:28
すいません、うまく行ったと思ったのですがダメでした。 import re text = u"abc123äöüß" for c in text: if re.match("[^a-zA-Z0-9]", c.encode('utf8')): print c.encode('utf8') これでäöüßが出力されるのはOKなのですが re.match("[^a-zA-Z0-9ä]", c.encode('utf8')) のようにウムラウトを一つ加えただけで4つ全てがマッチしてしまいます。 指定した物だけにマッチさせるにはどうすれば良いのでしょうか?
>>847 ちょww match の中でunicodeじゃなくなってるじゃん!
re.match(u"[^a-zA-Z0-9]", c)
if re.match("[^a-zA-Z0-9]", c.encode('utf8')): よく見るんだ。
re.sub(" [a-zß]+", "", text)
851 :
842 :2009/06/26(金) 17:53:01
852 :
デフォルトの名無しさん :2009/06/27(土) 05:36:50
a = [1, 3, 2] a.sort() for i in a: print i これならOKなのに a = [1, 3, 2] for i in a.sort(): print i これは下のエラーになってしまうのは何故ですか? TypeError: 'NoneType' object is not iterable for 文のこの要素は自動的に NoneType に変換されてしまうんでしょうか?
a.sort()の戻り値がNoneだから
sort()メソッドの戻り値がリストじゃないんじゃないの? Python知らんけど。
855 :
854 :2009/06/27(土) 05:50:20
かぶった。 上がってるからって無理に反応するもんじゃないなw
sorted(a)ならよい。 話は変わるけど、 str.join(lst)のが気持ちいいのは、少数派なのかなあ。
>>856 少数派ということはない。
単にJava厨やRuby厨という馬鹿どもが騒いでるだけ。
>>856 >>858 え? どういうこと?
joinメソッドがstringクラスにあろうがlistクラスにあろうが、
そんなの処理系の勝手だと思うんだけど。
で、.NETでリストやArrayを名乗るのになんでjoinを定義することが必須ってinterfaceに書いとかへんねん!
テンプレート使って外付けてjoin実装するのめんどくさいわ!
ってスレに関係ない愚痴を買いとこう。
あ、IronPython好きよ。
早うマイクロスレッド実装して!
860 :
デフォルトの名無しさん :2009/06/27(土) 08:58:08
ウザイル
>>858 Javaはそもそもjoinが無いから関係ないだろ。
Ruby厨が、「Python気持ち悪い、Ruby気持ちいい」って言えるようなRubyとPythonの
違いを見つけてはPythonをたたこうとしてるだけ。
結局、スクリプト言語にとどまらない本物のプログラミング言語として見た場合は
Pythonの仕様の方が合理的なんだけどね。
本物のプログラミング言語(笑)
>>862 本物が嫌なら汎用と言い換えようか?
文字列処理とか正規表現とか、勝手に「よく使う」と判断した機能は
特別扱いして専用の記号を入れたりグローバルの名前空間を汚したり、
マイナーバージョンアップで下位互換性を持たない仕様変更が入ったり、
配列クラスがなぜか文字列処理をできたりする言語は、文字列処理
やWebアプリの表面でしか使いたくない。
Python はスクリプティングにも使えるが、GUIアプリも
Webサーバーやオンラインゲームのサーバーも、
ゲームやCGアプリのスピードが求められない部分でも
使われているのは、汎用のプログラミング言語だから。
アセンブラ、C、Python、この3つがあれば、たいていのプログラミングの
需要に応えられる。
本物のプログラマはパスカルを使わない
本物のプログラマにコメントは不要である
>>865 Pythonのコードは読みやすいから、コードの中にはコメントじゃなくて
ドキュメントしか書かないな。
別に自分だけが読むプログラムなら好きにすればいいさ
昨日の自分は他人だから、自分で何考えてたのかさっぱり分からないことが有る。 マジ本当に困る。固まる。書いた人が何をしたいのか全く理解出来ない。 ので懇切丁寧にコメントを入れる俺は他人思いというわけじゃないんだ後輩よ
コメントは細かいことより概要を書いてもらえているとうれしい ただし、それもクラスやら関数がちゃんと分けられている場合。 それが出来てないと・・・
Rubyは日本人が作ったから、単に日本語処理ウマーなだけで信者が多いだけだったような。 あと、中の人が(r
とくに日本語処理優れてないし
3.1きてるね
>>870 > あと、中の人が(r
これはどういう意味?
Rubyは開発の中心人物が日本語で議論しているのが嫌い
>>873 別に英語の議論を受け入れてないわけじゃないんだから、別にいいんじゃね?
日本人が母国語でプログラミングしたって別に問題ない。
(国際的な開発を行う場合も)英語で併記されていれば。
ただ、ソースコードに埋め込むコメントはどうにもならないよね。
複数言語入力してかさばったら読みづらいし。
そういうことが解決できる仕組みがあるといいんだけど。
おまえら儲が乱入してきて荒れるからやめれww
受けて 立つm9(・∀・)ビシッ!!
>>874 別に是非のともかくを言ってるわけではなくて個人的な感想だから。
PythonについてGuidoがオランダ語で色々議論していたらここまで
広まっていなかっただろうなと思っただけでね。
こういう部分もPythonが好きな理由の一つ。
>>877 まあね。スレチなレスもこれで最後にするとして。
PHPのソース読んでたらところどころコメントがヘブライ語で萎えるんだぜ……。
複数コメント /* */ 欲しくね?
できるだろ
>>877 人口の9割以上がトリリンガルのあの国なら
英語で議論するのは関西人が標準語で話す程度のもんだ。
日本人が英語で議論するのとは
もはや別のレベルの問題だろうさ。
この流れでこんな質問書き込むと ruby 厨だと叩かれそうで怖いのですが print "foo = #{foo}, bar = #{bar}" みたいに 文字列内部に変数を入れるのはどうやれば良いんでしょうか...
>>> foo = "FOO" >>> bar = "BAR" >>> "foo = %(foo)s; bar = %(bar)s" % vars() 'foo = FOO; bar = BAR'
print "foo = %s, bar = %s" % (foo, bar)
py2exe を使おうとすると以下のエラーが出てしまいます。
>ImportError: DLL load failed: このアプリケーションの構成が正しくないため、アプリ
>ケーションを開始できませんでした。アプリケーションを再度インストールすることによ
>り問題が解決する場合があります。
実際に試したのは
#setup.py
from distutils.core import setup
import py2exe
setup(name="test",scripts=["test.py"],)
#test.py
print "test"
この2つのファイルを作成してカレントディレクトリにて
python setup.py py2exe を実行。
http://blog.loadlimits.info/2009/04/importerror-memoryloadlibraryの対処法/ を参考にmsvcp71.dll を python.exe があるディレクトリに置いてみましたがダメでした。
環境は以下です。
Portable Python 1.1 based on Python 2.6.1
Py2exe-0.6.9
WinXP Pro SP3
何の DLL が読み込めなかったか調べる方法は無いでしょうか?
>>887 がエラーメッセージ全体です。
C:\Python26\App\lib\site-packages\py2exe\build_exe.py:16: DeprecationWarning: the sets module is deprecated import sets running py2exe running build_scripts *** searching for required modules *** *** parsing results *** creating python loader for extension '_ctypes' (C:\Python26\App\DLLs\_ctypes.pyd -> _ctypes.pyd) creating python loader for extension 'select' (C:\Python26\App\DLLs\select.pyd -> select.pyd) creating python loader for extension '_socket' (C:\Python26\App\DLLs\_socket.pyd -> _socket.pyd) creating python loader for extension 'unicodedata' (C:\Python26\App\DLLs\unicodedata.pyd -> unicodedata.pyd) creating python loader for extension '_ssl' (C:\Python26\App\DLLs\_ssl.pyd -> _ssl.pyd) creating python loader for extension 'bz2' (C:\Python26\App\DLLs\bz2.pyd -> bz2.pyd) *** finding dlls needed *** Traceback (most recent call last): File "setup.py", line 5, in <module> setup(name="test",scripts=["test.py"],) File "c:\python26\app\lib\distutils\core.py", line 152, in setup dist.run_commands() File "c:\python26\app\lib\distutils\dist.py", line 975, in run_commands self.run_command(cmd) File "c:\python26\app\lib\distutils\dist.py", line 995, in run_command cmd_obj.run() File "c:\python26\app\lib\site-packages\py2exe\build_exe.py", line 243, in run self._run() File "c:\python26\app\lib\site-packages\py2exe\build_exe.py", line 305, in _run dlls = self.find_dlls(extensions) File "c:\python26\app\lib\site-packages\py2exe\build_exe.py", line 389, in find_dlls self.dll_excludes) File "c:\python26\app\lib\site-packages\py2exe\build_exe.py", line 1021, in find_dependend_dlls import py2exe_util
ImportError: DLL load failed: このアプリケーションの構成が正しくないため、 アプリケーションを開始できませんでした。アプリケーションを再度インストールす ることにより問題が解決する場合があります。 -------------------------------------------------------------------- 以上です。文字数制限に引っかかったので2回に分けました。
Python 2.6.2ベースのはないの? 2.6.1はdll loadに問題あるからそこかも
890 :
デフォルトの名無しさん :2009/06/27(土) 18:43:05
もりあがりすぎ
>>886 Python 2.6 からは、コンパイラが VC 2009 になったんだけど、このバージョンの
vcrtって WinSxS とかいうおじゃま機能があって、exeと同じディレクトリに
dll おいてもダメなんだよな。
ちゃんと、MSから再頒布パッケージをダウンロードして、実行環境に
インストールしてもらわないといけない。
>>886 Pythonインストールしたとこにあるpython.exe.manifestみたいな感じで
マニフェストファイル作って、py2exeのother_resourcesに登録し、
実行ファイル作成。
でVC2008の再頒布可能ファイルのmsvcp90.dllやら
Microsoft.VC90.CRT.manifestなにやらを
アプリケーションのローカルフォルダに同梱。
でサイドバイサイドは何とかなるんじゃないかなかな
以前のようなインストール無しでは使えなくなりました、 ってのはそれが原因だったのね…
ふーむ。 このスレで書いてもスレ違いかもしれないが、 一般的なプログラムに指定を与えるのが exe.manifest、 .NETプログラムに指定を与えるのが exe.configでいいんだろうか?
>>889 なさそうです
>>891 [Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)]
をインストールしたら上記のエラーはなくなりました、ありがとうございます。
ですが、exeファイルはそれでも生成されません…。
以下の警告が恐らく問題ではないかと思います。
The following modules appear to be missing
['IronPythonConsole', 'System', 'System.Windows.Forms.Clipboard', 'clr', 'modes.
editingmodes', 'startup']
特定のmodule を読み込むためにはどこで設定すれば良いのでしょうか?
検索しても py2exe が自動で行うという記述しか見つけられませんでした。
>>892 マニフェストファイルを作成する方法がわからないのですが
VCで生成するのであれば環境が無いので無理そうです。
>>892 1.VS2008をインストールする(ExpressEditionでも可)。
2.VS2008の再頒布可能ファイルの中から、
msvcp90.dll
msvcr90.dll
Microsoft.VC90.CRT.manifest
を探してアプリのローカルフォルダにコピーする。
3.Pythonのインストールフォルダにある
python.exe.manifestを開いて、Microsoft.VC90.CRTの
versionとpublicKeyTokenを2.のMicrosoft.VC90.CRT.manifestと
同じになるように修正して、適当な名前で保存する。
4.py2exeのsetup.pyでother_resourcesに
(24, 1, manifest)みたいな感じで3.で作った
マニフェストファイルを設定して、実行ファイルを作成する。
5.起動。
これで駄目なら知らぬ。
あ、
>>896 は
>マニフェストファイルを作成する方法がわからないのですが
に対するレスね。
[Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)]
を毎回インストールするんだったら、別にする必要ない作業だわ。
読み飛ばしてほしい。
ていうか一連の問題の原因はPortable Python使ってるからじゃね?
まず普通のやつインストールして試した方がいいと思うが。
>>896-897 色々ありがとうございます。
環境を再構築するときにまた見させてもらいます。
pytyon2.6.2 とそれようの py2exe をインストールして
サンプルを見たところsetup.py の書式が違ったので
それを参考に下のように書き換えると動作しました。
# setup(name="test",scripts=["test.py"],)
setup(name="test",console=["test.py"],)
これでやっとexe で持ち運びができそうです。
Pythonで既存クラスにメソッド追加ってできないんでしょうか?
PyCUDA。ほーーー。へーーーー。 誰か使ってみた人おられる? すごいなら、GTX285を買わないといけないでしょうこれは。
901 :
899 :2009/06/28(日) 10:45:03
メソッド追加はjavascriptとかと同じ?
組み込みオブジェクト(Cで定義されたクラス)以外はそう
Pythonで、あるクラスの親クラスを実行時に変更する、あるいは実行時に親クラスを追加する、ということは可能でしょうか。 Rubyでいうところの include を実現したいのですが。
__bases__ って勝手に置き換えて正しく動くんだろうか?
rubyのincludeは多重継承もどきの実現手段だけど、 Pythonには本物の多重継承があるから、それ使ったら?
908 :
デフォルトの名無しさん :2009/06/29(月) 15:37:14
>>904 importを自分でゴニョゴニョすることは可能だから
あなたのやりたいことも出来ると思う
>>905-908 ありがとうございます。
Pythonに多重継承があることはわかってるんですけど、クラス定義時にしか指定できないですよね。
これを動的に変更したいというわけです。
さきにクラス定義をしたあと、あとから親クラスを動的に追加するということが可能でしょうか。
Ruby の include だとこれが簡単にできて便利なので、同じことをPythonでもしたいなというわけです。
正規表現の re.MULTILINE のオプションを コンパイル無しで指定することはできますか? text = re.sub("aaa", "bbb", text) こんな感じで一行で書きたい時に指定できると嬉しいんですが。
text = re.compile("aaa", re.M).sub("bbb", text)
>>909 動的にクラス定義を変えたいなんてキモイです
>>909 help(type)
あまりオススメしない
>>909 Foo に Bar を混ぜたいなら、
class Baz(Foo, Bar):
pass
でおk
>>909 Ruby の include とやらは本当に
クラス定義をしたあと、あとから親クラスを動的に追加するということ
なのか?
909 の人気に sit it up!
>>915 help(type) してみましたが、よくわかりません。
__base__ を書き換えろってことでしょうか。readonly だから変更できないというエラーになりました。
>>916 それはBazに混ぜただけで、Fooに混ぜたことにはならないですよね。
FooのかわりにBazを使える場合ならそれでもいいんでしょうけど。
>>917 厳密にいうと親クラスを変更するわけではなくて、クラスの継承関係に
あとから別のクラス(みたいなもの)を割り込ませることができます。
たとえば設定ファイルを読み込んで、その設定次第であとから動的に
親クラスを追加したりしなかったりとかができます。
typeで動的にクラス作るのって面倒くさくね?
>>919 class Name(A, B, C, ):
bar = None
foo = None
は以下と同等
type('Name', (A, B, C, ), {'bar': None, 'foo': None, })
>>920 type使うと一部のプラグイン可能なシステムはすげー簡単に書ける
922 :
921 :2009/06/29(月) 20:13:55
ああでもやっぱりオススメしない それなりに分かってないとハマるばっかりだろうし
>>919 詳細がわからないけど、俺ならコンポジション(集約)でやると思う
Strategyじゃまずいのか?
Rubyじゃまずいのか?
そもそも、そういうのってそれじゃなくちゃダメな理由ってか、 メリットあるん?
やっぱり javascript に似てるなぁ それなりにメリットはあると思う
>>919 何が嬉しいのかわからん
具体的な例を出してみて
>>921 >type('Name', (A, B, C, ), {'bar': None, 'foo': None, })
だからそれは既存のクラスに親クラスを追加するのとは違いますよね。。。わかってもらえない。。。
新しくクラスを作成したいんじゃないんですよーーーーー
Ruby はできるの? どうやるの?
__bases__ 使えばいいじゃん
やりたいことはMixInじゃないかと思うんだが
設計ミスじゃね?
>>931 できました!__base__は変更できなそうですが__bases__は変更できるんですね。
>>> class A(object):
... def m1(self):
... print 'hello'
...
>>> class B(A):
... pass
...
>>> class X(object):
... def m2(self):
... print 'world'
...
>>> B.__bases__
(<class '__main__.A'>,)
>>> B.__bases__ = B.__bases__ + (X, )
>>> B.__bases__
(<class '__main__.A'>, <class '__main__.X'>)
>>> B().m2()
world
すごい。やっぱりPythonは出来る子。
>>931 あざーっす!
>>930 たとえば
class A
end
module Hello
def m1(); print "Hello"; end
end
A.class_eval { include Hello }
A.new.m1() #=> Hello
Ruby厨寄ってくんな
>>936 重要なのは名前解決の順序だから大丈夫だと思う
そんなことしなくても、候補になるべきクラスを複数つくっておいたほうがいいって。
Ruby厨きもいです
class P(Python): pass P.__bases__ = Ruby
reportlabというPDF生成ライブラリを使ってまして、かなり神っぽいと思うんですが、 日本的なのは無いですか?表を書くのがつおいとか。
PyExcelerator
チュートリアル読み終えたー。
urllib2を用いたサイトへのアクセスでブラウザ(IEとかFirefox)に保存してあるクッキーを送信してアクセスすることはできないでしょうか?
ブラウザの保存しているファイルからクッキーを読み取って自分でつければできるんじゃない
>>946 そんなツールが世の中に出回ってたら、
セキュリティ的にどれくらい危険なことか考えたことはあるかい?
ま、PythonのUser-Agentでクッキーを保存して処理すればいいんじゃね?
今時 Lynx, Netscape なんか使ってる人間いるのか?
>>949 お勉強スレなので釣りは自重してください
アドバイスありがとございます。 あとcookielibなんてのもあってpython動作中に取得したcookieは保存、送信できそうですね。 すでにブラウザにあるのもクッキーファイルにアクセスできるかは試してみます。
>>949 他人のブラウザのクッキーをpythonで盗むの?
949だが、なぜ煽られるのかが分からん。
技術者としてごく普通の考え方だと思うんだが……。
>>954 ポータブルなPythonインタプリタを入れたUSBメモリを
他人のマシンに差し込んで実行すればできる罠。
というか、盗むどころかそのPCのブラウザに成りすましてウェブサイトにアクセスするんだよね?
949では単にそういうツールは危険なものじゃないの?
と警告しただけ。個人的に使うなら別にかまわないだろうけど。
他人のマシンにそのユーザがログオンした状態で? 技術者としてはその状態で任意のプログラムの実行を許す時点で 何がおこっても不思議じゃないもう終わってるというのが普通の考え方だろ。 ましてクッキーを保存したファイルが他のユーザにも読める状態だったとしたら何をかいわんや。 ツールの有無で判断するなんてスクリプトキディーとしては普通の考え方だが、 技術者としてはどうかといわざるを得ない。
他のブラウザのクッキー情報を使ってアクセスするブラウザなら普通に存在してるが。
USB刺して実行できるなら、既に何でもやり放題なんだが。わけわからん。
Pythonでデータベースから取り出してExcelを作ってeMailに添付して送る、というのを、
元のVB.NET(121行)からどれだけ縮まるか作ってみました。
import _mssql #pymssql
import pyExcelerator
import smtplib
import base64
結果、101行であんまり変わらんのですよ。原因はAttachmentで、
VB.NET
Dim attachment = New System.Web.Mail.MailAttachment(SomeFileName, Web.Mail.MailEncoding.Base64)
msg.Attachments.Add(attachment)
なんですが、Pythonだとfileをread()してbase64.b64encode()してbody、marker、MIMEpartを作って繋げて
:(40行)
message = part1 + part2 + part3
とやっています。
http://www.tutorialspoint.com/python/python_sending_email.htm です。
mailAttachmentオブジェクトみたいなものは無いッスかね。
ばかじゃね 自分で書けば 1 行で済むぜ
>>965 こんな感じみたいですわ。name=filename を入れないと、添付が(noname)になりました。
msgのFrom、Toはメールクライアントで表示されるもので、smtpObjのsender,receiverとは別に指定ですな。
16行か。VB.NETでも16行で互角でした。でもExcel生成とデータベース部分はさすがにPythonの勝ちです。
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.mime.application import MIMEApplication
body = """ multi line text """
msg = MIMEMultipart()
msg['Subject'] = 'This is subject'
msg['From'] = sender #single email address
msg['To'] = ', '.join(receivers) # list of email address
content = MIMEText(body)
msg.attach(content)
excel = MIMEApplication(open(filename,'rb').read(), name=filename)
msg.attach(excel)
smtpObj = smtplib.SMTP()
smtpObj.connect(host, 25)
smtpObj.login(user, pass)
smtpObj.sendmail(sender, receivers, msg.as_string())
gj
msg.attach(MIMEText(body)) msg.attach(MIMEApplication(open(filename,'rb').read(), name=filename)) こうすると2行縮まる!ww かなりなGJです、MIMEApplicationのサンプルが見当たらなかったので参考にします。
969 :
デフォルトの名無しさん :2009/07/03(金) 06:55:59
ウノウさんですかw? MIMEApplication、ですよ。 Multipart,Text,Imageまでは本家に載ってるんどす。 そしてサンプルは短くないと意味無いのにごちゃごちゃしている。
おはよう諸君。とりあえずさらに一行縮まるぞ smtpObj = smtplib.SMTP(host, 25) そしてどうせ一回しか呼ばないなら、 import email : msg = email.mime.multipart.MIMEMultipart() : msg.attach(email.mime.text.MIMEText(body)) msg.attach(email.mime.application.MIMEApplication(open(filename,'rb').read(), name=filename)) これでいい。ていうか俺がfrom好きじゃないだけかな。
from email import MIMEText.MIMEText as MIMEText, MIMEMultipart.MIMEMultipart as MIMEMultipart, mime.application.MIMEApplication as MIMEApplication
>>972 ちょww
「Limit all lines to a maximum of 79 characters.」ですお?
そんな糞エディタ使うなボケ
SyntaxError: invalid syntax
>>976 自分で書くときの規約としてはそんなのは願い下げだが、
PyPIに載せるようなコードを書くときにはそうするべきだろうな。
外国では一神教なので神の言葉は絶対だが、 日本では多神教なので神の言葉も数ある言葉の一つにすぎぬ。
だから日本人のプログラマは 大規模なプログラムを開発できないんだろう。
980
もともとPCの画面は 横スクロールが見辛く 縦スクロールに向いてるからな どこぞのIDEは平気で横スクロールしてかなわん
それはPCの画面の問題ではなく、言語が横書きだからだ。
日本語は縦でも横でもいけるぜ!
でおうでもいいが、縦書きのプログラミング言語はないのか?
モニタを右90度倒せば良かろうもん
986 :
デフォルトの名無しさん :2009/07/03(金) 17:11:00
986
988 :
デフォルトの名無しさん :2009/07/04(土) 00:17:52
>>984 縦書きエディタでひまわり使えばいいんじゃない
初心者用のサイトに載ってた問題です。 「テキストファイルを行末から行頭へ向かって表示するようなスクリプトを書きましょう。」 (例) 1.Albatross 5.Bogey 2.Eagle 4.Par 3.Birdie → 3.Birdie 4.Par 2.Eagle 5.Bogey 1.Albatross どうやればいいですか。
ああ、、なんかずれまくった。 1.Albatross 2.Eagle 3.Birdie 4.Par 5..Bogey を 5..Bogey からはじめたいということです。
>>993 そりゃあここはお勉強スレだから誰かが答えるだろうけどさ。
初心者用問題くらいは自分の力で解こうよ。
まあヒントくらいは出してやろう。
行ごとに読む、リスト、リバース。
for line in reversed(open('file.txt').readlines()): print line,
行末と末行
for i in open('a.txt'): print i.strip()[::-1]
いやらしいお茶目さん
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。