Pythonのお勉強 Part33

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2009/04/26(日) 02:03:24
  _  ∩
( ゚∀゚)彡 おっぱいそん!おっぱいそん!
 ⊂彡
3デフォルトの名無しさん:2009/04/26(日) 03:40:09
ぱいちんこ
4デフォルトの名無しさん:2009/04/26(日) 05:48:04
ぱいぱい! ぱいぱい!
5デフォルトの名無しさん:2009/04/28(火) 00:28:12
10分前にPython 3.0.1インタプリタをダウンロードしたものですが
>>> "hello world"
'hello world'
>>> print "hello world"
File "<stdin>", line 1
print "hello world"
^
SyntaxError: invalid syntax
これはどういうことでしょうか?
いきなり挫折しそうです
6デフォルトの名無しさん:2009/04/28(火) 00:31:56
print ("hello world")
自己解決すますま
7デフォルトの名無しさん:2009/04/28(火) 00:32:46
Python3はprintが関数に変わったんで
print("hoge")
ってやらなきゃ駄目なんじゃね
8デフォルトの名無しさん:2009/04/28(火) 00:37:20
>>6
Python 3.0 はまだαだから開発者以外手を出すな。
Python 3.1 はまだβだから一般人は手を出すな。
Python 3.2 はまだRCだから初心者なら手を出すな。
Python 3.3 から初心者もOK。

今、「環境変数取得APIをUnicodeにしちゃったけど、ちゃんとデコードできない
バイナリ列どう扱えばいいと思う?」とか議論しながらAPIを整備中。
9デフォルトの名無しさん:2009/04/28(火) 00:44:12
3.4になったら本気出す。
10デフォルトの名無しさん:2009/04/28(火) 01:18:55
11デフォルトの名無しさん:2009/04/28(火) 12:43:20
うちのはPython 2.4だけど
俺がPythonを覚えられない原因がわかったよ
12デフォルトの名無しさん:2009/04/28(火) 13:56:03
3.4に手を出すと色々対応してくれるまで待つのが長いね
13デフォルトの名無しさん:2009/04/28(火) 17:03:15
なんだ、ABCでもダックタイピングできるんじゃねえか
ABCMeta.registerとかってなんのためにあるんだよ

import collections

class Con():
    def __contains__(self):
        pass
    
class NotCon():
    pass

print(issubclass(Con,collections.Container))
print(issubclass(NotCon,collections.Container))
14デフォルトの名無しさん:2009/04/28(火) 17:04:27
>>13
うっかり結果を書くのを忘れた
print(issubclass(Con,collections.Container)) # ==>True
print(issubclass(NotCon,collections.Container)) # ==> False
15デフォルトの名無しさん:2009/04/28(火) 17:35:35
>ABCMeta.registerとかってなんのためにあるんだよ
自己解決。collectionのABC実装を見たところ、
ダックタイピングしてもissubclassで型チェックできる
=issubclassの結果を変える__subclasshook__があるのは
実装のないBaseClassのみだったんだよね。

つまり実装のあるBaseClassに関してはするか
手動でメソッドチェックしてregisterしないといけない。うーん……
16デフォルトの名無しさん:2009/04/28(火) 19:16:30
と、思ったけどregisterって動的継承するわけじゃないのか
isinstanceやissubclassが通るようになるだけで、
MutableMappingをregisterしてもpopを自動的に実装してくれるわけではない……
CのクラスをABCに登録するとき用と考えたほうがいいのかなあ……
17デフォルトの名無しさん:2009/04/28(火) 19:53:35
と、いうわけで、未知のクラスに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")
18デフォルトの名無しさん:2009/04/28(火) 19:59:40
連投すまん。
これは関数内部でダックタイピング的なチェックを行い、チェックが通ったら動的継承を行う。
委譲ラッパーを使うので関数の外部に影響を及ぼさない。

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
19デフォルトの名無しさん:2009/04/28(火) 20:00:04
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 ...>
20デフォルトの名無しさん:2009/04/29(水) 15:48:36
numpy.arrayじゃなくて
素のlistで行列計算をやってくれるlibraryはないのでしょうか

cのshard libなど(lapack.soなど)を読み込めない環境で数値計算したいのです
21デフォルトの名無しさん:2009/04/29(水) 16:53:07
pythonのコードが2chでは潰れてしまうから、勉強がてら変換コマンドをつくってみようと思ったら、>>1のまとめサイトにあったw
やっぱりみんな考えることは同じだぬ・・
22デフォルトの名無しさん:2009/04/29(水) 19:47:14
3.1は全角でも実行可能
23デフォルトの名無しさん:2009/04/29(水) 22:28:31
まじで?
24デフォルトの名無しさん:2009/04/29(水) 23:51:19
コードの半角スペースはそのまま書き込んでいいから自己アンカー付けるようにしてくれよ。そうすりゃ專ブラのポップアップでちゃんと表示できるから。
レス番選択→右クリック(Janeのバヤイ)でもポップアップできるけどメンドい。
25デフォルトの名無しさん:2009/05/02(土) 11:25:07
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はじめました
27デフォルトの名無しさん:2009/05/02(土) 22:57:42
がんばって
28デフォルトの名無しさん:2009/05/04(月) 09:12:35
Pythonの並列計算用のppっていうのって、Core2Duoとか同じマシン上のマルチコアでも並列化してくれるの?
29デフォルトの名無しさん:2009/05/04(月) 09:31:11
解答まだ?
30デフォルトの名無しさん:2009/05/04(月) 09:40:52
がんばって
31デフォルトの名無しさん:2009/05/04(月) 11:28:19
Pythonに限った話じゃないかもしれませんが、2つの整数が与えられたとき異なるビットの数を求めるよい方法はないでしょうか?たとえば、1111(=15)と1001(=9)が与えられたら真ん中の2つのビットが異なるので2を返したいのです。
32デフォルトの名無しさん:2009/05/04(月) 11:34:30
釣りだとおもうけど
ヒント:XOR
33デフォルトの名無しさん:2009/05/04(月) 11:40:56
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にならない値をカウントとか
39デフォルトの名無しさん:2009/05/04(月) 12:08:12
>>32
2で割る
40デフォルトの名無しさん:2009/05/04(月) 12:09:36
アンカ間違えた >>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
ゴメン、”てにをは”がおかしかった…
43デフォルトの名無しさん:2009/05/04(月) 19:46:51
1bitずつ右シフトして1とandとった方がよっぽどマシだろ。
何がどう汎用なのか小一時間
44デフォルトの名無しさん:2009/05/04(月) 22:33:50
初心者スレにまでPython叩きに来る信者って
惨めだな
45デフォルトの名無しさん:2009/05/05(火) 00:54:31
右シフトとかアセンブラじゃないんだから
よく知らないけどCとかJAVAはできるの?
46デフォルトの名無しさん:2009/05/05(火) 00:58:39
CでもJavaでもPythonでも右シフト演算子はあるよ。
シフト演算子が無くても整数型を2で割るだけだから、できない言語の方が少ない。
47デフォルトの名無しさん:2009/05/05(火) 03:15:49
というか、とりあえずhamming distanceでぐぐれ。
48デフォルトの名無しさん:2009/05/05(火) 04:11:47
ググった。
 unsigned dist = 0, val = x ^ y;
  while(val) {
    ++dist;
    val &= val - 1;
  }
   return dist;

クヌースさん、歪みねぇな。
49デフォルトの名無しさん:2009/05/05(火) 12:47:03
それってクヌースが考えたの?

http://gurmeetsingh.wordpress.com/2008/08/05/fast-bit-counting-routines/
の 2a) 2b) は Peter Wegner となってる
50デフォルトの名無しさん:2009/05/05(火) 15:28:39
WikipediaにはKnuth's Algorithmって書いてあったけど、
本の初出が1968みたいだからPeter Wegnerのほうが先なのかな。
先にペーパー出してるかもしれないし、よく分からん。
51デフォルトの名無しさん:2009/05/06(水) 18:35:12
>>46
整数型に対する右シフトは、Cだと結果が未定義だぞ。
符号無し整数型ならOKだが。
52デフォルトの名無しさん:2009/05/06(水) 19:04:20
仕様厨か?
53デフォルトの名無しさん:2009/05/06(水) 19:57:46
違う。右シフトするときにMSBがどう処理されるかの、現実的な問題だ。
gccで試したら、-2を右1ビットシフトすると-1になった。
処理系によっては、INT_MAXになるはず。
で、前者だと>>46の通り整数型を2で割ったのと等しいが、今回の目的には使えない。
後者だと今回の目的に使えるが、整数型を2で割るのと結果が異なる。
54デフォルトの名無しさん:2009/05/06(水) 20:01:06
1になってるbit数数えるのが目的の用途に符号なし整数使わず
わざわざ整数型持ってくる香具師が馬鹿でFA?
55デフォルトの名無しさん:2009/05/06(水) 20:06:04
いや、>>51=>>53は仕様厨ではなく、指摘が回りくどくて揚げ足取りになってるでFAだ。
(おれがその>>51=>>53本人だが)
56デフォルトの名無しさん:2009/05/06(水) 20:58:26
1ビット2ビット帰れない〜
57デフォルトの名無しさん:2009/05/06(水) 21:41:21
うーん、あまりにも小さなネタ過ぎるのか、アルゴリズムの本やそれこそKnuth本を当ってもHamming Distanceの計算方法が見付からないな...
誰かKnuth本の出てる場所知ってたら教えてくれろ。
58デフォルトの名無しさん:2009/05/06(水) 22:22:00
差分をとるのはXORで明白だから、
調べるなら>>49みたいに"bit count"のほうがいいんじゃない?
59デフォルトの名無しさん:2009/05/06(水) 23:07:27
あーーーーーーがらっとるーーーーーーーーーーーーーーーー
なにがったんじゃーーーーーーーーーーーーーーーーーーーーーーー
60デフォルトの名無しさん:2009/05/08(金) 08:26:19
ubuntuを最近の9.04にして
何かアプリいれると勝手にpython2.6が入るぞ
61デフォルトの名無しさん:2009/05/08(金) 08:33:11
別にUbuntuじゃなくても
62デフォルトの名無しさん:2009/05/08(金) 11:58:45
debianとか誰に必要とされてるんですか?
osにお金も払えない貧乏ニンですよね
63デフォルトの名無しさん:2009/05/08(金) 12:13:35
貧乏人でもいいじゃない。
心が貧しくて卑しい >>62 より
64デフォルトの名無しさん:2009/05/08(金) 16:18:22
実際、フリーソフト教って怪しいよね
65デフォルトの名無しさん:2009/05/08(金) 16:35:20
ソース公開されてなきゃ気持ち悪くて使えないって人とか?
使うソフトいちいちソース調べてるんか
66デフォルトの名無しさん:2009/05/08(金) 17:07:33
x = [1, 2]
x += [9, 8]
x == [10, 10]
True

みたいな事ができる、メソッドか関数か計算式ってありませんか?
67デフォルトの名無しさん:2009/05/08(金) 17:30:00
マッピー
68デフォルトの名無しさん:2009/05/08(金) 17:30:07
map(lambda x, y: x + y, [1, 2], [9, 8])
69デフォルトの名無しさん:2009/05/08(金) 17:35:12
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]
70デフォルトの名無しさん:2009/05/08(金) 19:23:41
>>65
何か悪いことが起きたら、ソースを読むw
71デフォルトの名無しさん:2009/05/08(金) 20:03:57
import numpy
x = [1, 2]
x = numpy.add(x, [9, 8])
72デフォルトの名無しさん:2009/05/09(土) 00:38:22
>>68-71
どれが一番速いですか?
どれが一番メモリ効率良いですか?
73デフォルトの名無しさん:2009/05/09(土) 01:17:55
キー・タイプ数の点で早いのは>>69

モジュールをインポートする必要がないという点で
メモリ効率が良いのは>>68
74デフォルトの名無しさん:2009/05/09(土) 02:43:36
>>73
>>69のリスト内包は>>68より効率が悪いの?
75デフォルトの名無しさん:2009/05/09(土) 03:39:16
>>70
俺は直す知識が無いからパッチ書いたりとか出来ないけど
ハードコーディングされてて使い難いと思ったところを
ちょこちょこっと書き換えて自分ライクにしたりとかはある。
76デフォルトの名無しさん:2009/05/09(土) 05:34:00
zipの中身ってyieldだっけ?
77デフォルトの名無しさん:2009/05/09(土) 05:35:49
3.0
78デフォルトの名無しさん:2009/05/09(土) 15:42:04
>>68-69,71の中では>>71が一番処理速度は早いですよね?
79デフォルトの名無しさん:2009/05/09(土) 16:35:37
>>78
自分で測定しろや
80デフォルトの名無しさん:2009/05/09(土) 16:52:02
天下のnumpy様に
標準ライブラリや組み込み関数が勝てるわけないだろう。
81デフォルトの名無しさん:2009/05/09(土) 17:07:07
>>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に変換しておく必要あり。
これをやらないと逆に一番遅い。
82デフォルトの名無しさん:2009/05/09(土) 17:45:19
>>78-80
numpyは中身がlapackかなんかじゃなかった?
どっちにしても一部cで書かれてるから場合によってはnumpyが早いかもね

正直言うと全部pythonのlistのまま処理してくれないとめんどくさくて嫌なんだけどね
arrayってなんだよ
83デフォルトの名無しさん:2009/05/09(土) 18:10:57
numpyとscipyとpylabとmatplotlibの関係が良く分かんないんだけど。
84デフォルトの名無しさん:2009/05/09(土) 18:28:23
>>> _lambda.repeat(1,100000);_operator.repeat(1,100000);_numpy.repeat(1,100000)
[0.5832531788257711]
[0.43510585842614091]
[1.2607769981939327]
85デフォルトの名無しさん:2009/05/09(土) 19:10:13
>>84
なにこれ
86デフォルトの名無しさん:2009/05/09(土) 19:59:17
>>83
おまい使ったことないだろ。使えばすぐに分かるぞ。

おおざっぱに言うと、numpyで効率的なn次元配列及びそれらに対する
基本的な演算が与えられ、それを使ってscipyで計算をし、
結果をプロットするのがmatlabplotだ。
87デフォルトの名無しさん:2009/05/09(土) 21:28:07
スクリプト系は結局こうなるよな。
アルゴリズムの知識じゃなくて、モジュールの知識。
88デフォルトの名無しさん:2009/05/09(土) 21:32:43
最近の言語はそうじゃない?
今C#やってるけど、ひたすら.NETFrameworkの使い方調べてるぞ。
89デフォルトの名無しさん:2009/05/09(土) 21:34:30
>>87
ある程度ライブラリが揃っていれば、スクリプト言語かどうかに関係なく
どの言語も似たようなものだろ。
90デフォルトの名無しさん:2009/05/09(土) 23:05:14
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の両方で動かしたいです。
91デフォルトの名無しさん:2009/05/10(日) 00:20:09
from __future__ import exec
exec('.....', globals, locals)

とかすればできるのかな。
future文使ったことないから知らん。
92デフォルトの名無しさん:2009/05/10(日) 00:50:52
pythonで動画扱いたいのですが
どのライブラリがお勧めですか?
93デフォルトの名無しさん:2009/05/10(日) 01:28:57
速さは分かったけど
メモリ効率って
どうやって調べられるん?
94デフォルトの名無しさん:2009/05/10(日) 02:39:10
topでresident sizeでも見れば?大雑把な指標にはなる。
95デフォルトの名無しさん:2009/05/10(日) 02:50:22
resourceモジュールだっけな、もう忘れた
96デフォルトの名無しさん:2009/05/10(日) 07:22:06
resourceモジュールってgetrusage()呼んでるだけだよな。
ということはtopを見れば十分という話だな。
WindowsでもProcess Explorer使えば同様にモニタリング出来るし。
97デフォルトの名無しさん:2009/05/10(日) 07:24:00
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以外の方法で。
98デフォルトの名無しさん:2009/05/10(日) 10:59:04
>¥xab

\が全角だから
99デフォルトの名無しさん:2009/05/10(日) 11:03:21
円マークじゃなくて、\x5c の文字である必要があるから、環境によってはバックスラッシュかもね。
100デフォルトの名無しさん:2009/05/10(日) 11:47:29
import math
print math.e ** (1j * math.pi) がOKで
print math.exp(1j * math.pi) がNGなんだけど

expがcomplex を受け取らないのは何か理由があるの?
101デフォルトの名無しさん:2009/05/10(日) 12:20:21
>>101
複素数用にcmathが用意されてるから。cmath.exp()を使え。
102デフォルトの名無しさん:2009/05/10(日) 12:57:53
expがcomplex を受け取らないのは何か理由があるの?
103デフォルトの名無しさん:2009/05/10(日) 13:03:17
ソース読んで自分で調べろボケ
104デフォルトの名無しさん:2009/05/10(日) 13:54:36
>>103
お前初めてかここは、力抜けよ
105デフォルトの名無しさん:2009/05/10(日) 13:57:09
みんなのPython 改訂版 が出たと思いますが
初心者にはおすすめでしょうか?
まったくの初心者です。
106デフォルトの名無しさん:2009/05/10(日) 14:00:47
プログラム初心者ならみんパイ
Python初心者ならはじパイって感じじゃね?
amazonのレビューとかは気にすんな
107デフォルトの名無しさん:2009/05/10(日) 14:15:06
ありがとうございます。参考になりました。
108デフォルトの名無しさん:2009/05/10(日) 14:26:20
http://docs.python.org/3.0/whatsnew/3.0.html
>It is not recommended to try to write source code that runs unchanged under both Python 2.6 and 3.0;
訳) 2.6と3.0の両方で動くように書いたらダメってGuidoが言ってた
109デフォルトの名無しさん:2009/05/10(日) 14:50:35
>>104
>>101で答えてやったのに、補足もせずに全く同じ質問をぶつけてきたら
頭に来るだろ。
110デフォルトの名無しさん:2009/05/10(日) 15:06:22
裏でなにが行われてるか知らないとキモチワルイ!
ってタイプの人なんだろう。
でもそういう人はソースくらい自分で読めないとね
111デフォルトの名無しさん:2009/05/10(日) 15:48:31
どうせいつものなりすまし厨だろ。
112デフォルトの名無しさん:2009/05/11(月) 00:23:14
おっぱいそん初心者です。

固定長データの中に16進コードで日本語の地名が入っているのですが、
それを日本語で出力するにはどうしたらいいのでしょうか。
(例えば、「東京」ならデータ中には 「93 8C 8B 9E」 とshift jisで入っています)

固定長のデータを変数に入れたとして、
b='93'
c='8C'
d = '\x' + b + '\x'+ c
として「東」 を表示しようとしましたが、dに代入するところですでにエラーが。
どなたかお助けを…
113デフォルトの名無しさん:2009/05/11(月) 00:48:07
とりあえず
d = r'\x' + b + r'\x'+ c
114デフォルトの名無しさん:2009/05/11(月) 00:59:12
あ、それだと駄目なのか
115デフォルトの名無しさん:2009/05/11(月) 01:10:38
>>> s = ["93", "8c", "8b", "9e"]
>>> print "".join(chr(int(x, 16)) for x in s)
東京
116デフォルトの名無しさん:2009/05/11(月) 03:12:10
>>109
>104 が答えになってないだろ
117デフォルトの名無しさん:2009/05/11(月) 03:22:47
頭に血が登ってアンカー間違えたか?
くだらん言いがかりつける暇あるなら調べろよカスが
118100:2009/05/11(月) 06:17:42
python に慣習、主義があって
それにしたがってんのかと思い聞いてみたんだが
この感じだとそんなんじゃ、なさそうやね。
単に処理速度の問題かな。

自分のコピペんのせいで荒れるの嫌だから
一応念のためにいうけど>>100 とこのレス以外は別人なんで、よろしく。
119デフォルトの名無しさん:2009/05/11(月) 08:45:22
2.6用
3.0用
のコードをブランチで分けて
darcsで同じパッチ当てながら開発って

クエン酸いれたらどうっすかなみのアイデアですか
120デフォルトの名無しさん:2009/05/11(月) 09:26:32
>>117
血が昇る
では?
121デフォルトの名無しさん:2009/05/12(火) 00:52:01
2.x系と3.0とを判定するよい方法はありますか。
現在は sys.version.startswith('3') で調べていますが、もっといい方法はありますか。
122デフォルトの名無しさん:2009/05/12(火) 00:54:26
>>108
>訳) 2.6と3.0の両方で動くように書いたらダメってGuidoが言ってた

原文は It is not recommended だから、ダメじゃなくて おススメしないというだけだよね。
123デフォルトの名無しさん:2009/05/12(火) 01:10:46
>現在は sys.version.startswith('3')で
それでいいんじゃないかと思うけど


適当に考えついた他の例
def is_python3_or_later():
 return range(0) != list(range(0))
124デフォルトの名無しさん:2009/05/12(火) 06:32:31
>>121
sys.version_info >= (3, 0, 0)じゃだめ?
125デフォルトの名無しさん:2009/05/12(火) 14:19:30
ttp://www.amazon.co.jp/dp/4798118753

激しいクソ本臭がするんだが気のせいかな?
126デフォルトの名無しさん:2009/05/12(火) 16:07:35
合格です
おめでとう
127デフォルトの名無しさん:2009/05/12(火) 16:10:09
('3')が顔文字に見えてきた
128デフォルトの名無しさん:2009/05/12(火) 16:33:12
>>125
ググってみたら、著者はzope、ploneな人たちっぽい...orz...。
129デフォルトの名無しさん:2009/05/12(火) 16:55:34
>>124
sys.version_info なるものがあるのか! これは助かりました。ありがとうございます。
130デフォルトの名無しさん:2009/05/12(火) 18:06:52
>>125
いつのまにかこんな本も出てたんだね
ttp://www.amazon.co.jp/dp/477413760X
131デフォルトの名無しさん:2009/05/12(火) 18:12:57
>>130
それちょっと気になってる。
132デフォルトの名無しさん:2009/05/12(火) 18:15:13
>>130
その本はひどく読みづらい日本語で書いてあったなあ
あと、著者はPython分かってないと思う(w
133デフォルトの名無しさん:2009/05/12(火) 18:28:37
10日で〜シリーズはそういう層がターゲットだからあんまり期待してもしょうがないでしょ。
それにしてもそんな本でなんでそんなに著者が多いのか・・・
134デフォルトの名無しさん:2009/05/12(火) 18:32:16
束になってウンチ本を書いたんですね。ご苦労様です。
135デフォルトの名無しさん:2009/05/12(火) 23:21:24
>>130のは少なくとも入門書てしては失敗してると思う・・・
Python云々ではなく
136デフォルトの名無しさん:2009/05/12(火) 23:21:35
>>115
ありがとーん。
配列なめるあたりも分かりやすいですね。

いつもどおりにawkで書いたのですが、ユーザー関数つくらないとダメでした。
真剣にぱいてん(他言語からPythonへ転向)を考えております…
137デフォルトの名無しさん:2009/05/12(火) 23:57:05
>>130
この本は、著者タソの才能が著しく低いか、やっつけで書いたのかどっちかだとおもう。
内容については1万歩譲るとしても、書籍として成り立ってない。
138デフォルトの名無しさん:2009/05/13(水) 00:19:34
DRYが説明なしにでてきた気がするんだが説明されてた?
Pythonエクスプローラのときはちゃんと説明あったが
139デフォルトの名無しさん:2009/05/13(水) 00:33:23
ドジャンゴってゾープと似てね?
使ってる人たちが。
140デフォルトの名無しさん:2009/05/13(水) 00:58:22
>>132 >>135
ありがとう
Amazonのレビューにだまされるとこだったw
141デフォルトの名無しさん:2009/05/13(水) 01:01:55
>>137
そういうのは編集者の方でなんとかすることは出来なかったんだろうか?
142デフォルトの名無しさん:2009/05/13(水) 01:05:06
ploneってゾープと似てね?
使ってる人たちが。
143デフォルトの名無しさん:2009/05/13(水) 03:29:28
てか、PloneってZopeの直系っしょ?
144デフォルトの名無しさん:2009/05/13(水) 04:04:13
pythonってrubyと似てね?
使ってる人たちが。
145デフォルトの名無しさん:2009/05/13(水) 06:51:49
そりゃねーわ
146デフォルトの名無しさん:2009/05/13(水) 07:50:57
ダンジョーはこんなもの。
それが感想。大勢で書いた割にはgdgdだったし。
147デフォルトの名無しさん:2009/05/13(水) 08:42:12
勘のいい奴はみんPyを買うということか...?

http://www.amazon.co.jp/dp/4774138053/
23%のカスタマーが
みんなのPython 改訂版を購入しています

http://www.amazon.co.jp/dp/4873113938/
15%のカスタマーが
みんなのPython 改訂版を購入しています

http://www.amazon.co.jp/dp/477413760X/
12%のカスタマーが
みんなのPython 改訂版を購入しています
148デフォルトの名無しさん:2009/05/13(水) 08:57:46
はじめてのPythonをやってから
リファレンスとか見れば良いだけのような。

はじめてのPythonやってないと
細かな罠にひっかかりまくると思うぞ。
149デフォルトの名無しさん:2009/05/13(水) 09:50:36
>>148
>細かな罠にひっかかりまくると思うぞ。

やっぱり勘の悪い人が買うんだ(笑)。
150デフォルトの名無しさん:2009/05/13(水) 10:51:17
>>149
えっ??
151デフォルトの名無しさん:2009/05/13(水) 12:47:55
恥ぱいで身につくとは思えない
152デフォルトの名無しさん:2009/05/13(水) 12:49:55
パイチュー
153デフォルトの名無しさん:2009/05/13(水) 13:28:21
>>151
身についたと思っているカンの悪い人が上に居るみたいだ。
154デフォルトの名無しさん:2009/05/13(水) 13:46:09
rubyの%記法の文字列リテラルみたいな物ありますか?

%w[foo bar baz] 

['foo', 'bar', 'baz']と等価になる物です。
155デフォルトの名無しさん:2009/05/13(水) 14:12:09
>>154
よく使われるのは "foo bar baz".split()
.split() を省略するためだけにそんな特殊な表記を導入したくないな。
156デフォルトの名無しさん:2009/05/13(水) 15:28:37
どこのpearl
157デフォルトの名無しさん:2009/05/13(水) 15:49:06
Rubyも結構変なことやってんだな
158デフォルトの名無しさん:2009/05/13(水) 16:07:13
>>155
なるほど、ありがとうございます
159デフォルトの名無しさん:2009/05/13(水) 16:10:41
{'foo':'foo', 'bar':'bar', 'baz':'baz'}
print '%(foo)s %(bar)s %(baz)s'%x
160デフォルトの名無しさん:2009/05/14(木) 00:50:57
みんpyとか・・・・ ワロスw

あんな本意味なし。ゴミくずだ。
161デフォルトの名無しさん:2009/05/14(木) 00:55:25
初版は産廃だったけど改訂版はだいぶ持ち直してるみたいだぞ
162デフォルトの名無しさん:2009/05/14(木) 00:56:22
>>160
あ?

今から勉強しようと思ったら急遽PHPでいろいろ作業することになってみんpy読むひまがない俺にけんか売ってんお?
163デフォルトの名無しさん:2009/05/14(木) 01:09:48
ttp://sugaya.otaden.jp/e35093.html

そうだな。みんpyを選んだ早稲田の教官はクズで
それを使ってプログラミングを学んでいる学生はウンコだよな。
164デフォルトの名無しさん:2009/05/14(木) 01:17:22
グロ注意
165デフォルトの名無しさん:2009/05/14(木) 01:22:39
[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]
このリストがちゃんとヒープになっているか調べるのが面倒くさいので
スクリプトで解決してください
166165:2009/05/14(木) 01:23:48
すみません、なってないですね。四つ目で気付けますよね・・・
自己解決しました・・・
167デフォルトの名無しさん:2009/05/14(木) 01:33:06
激しくデジャブ。

>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: ???
>グロ注意
168デフォルトの名無しさん:2009/05/14(木) 01:42:12
>>165
L1 = [ (中略) ]
L2 = list(L1)
heapq.heapify(L2)
print L1 == L2
169165:2009/05/14(木) 02:09:54
>>168
ありがとうございます
自分で書く必要なんてないんですね
170デフォルトの名無しさん:2009/05/14(木) 05:05:38
171デフォルトの名無しさん:2009/05/14(木) 09:20:31
ここで聞くと参考になる答えは返ってこないかと・・・
172デフォルトの名無しさん:2009/05/14(木) 12:18:24
pythonのコードをreadableなcに変換する方法はないのでしょうか
readableなら完全な変換でなくて、多少の手で書きなおす部分があってもいいです
173デフォルトの名無しさん:2009/05/14(木) 16:36:48
readableの定義は?
174デフォルトの名無しさん:2009/05/14(木) 16:50:52
めんどくせw
175デフォルトの名無しさん:2009/05/14(木) 20:54:21
ちょっとまって、ヒープは一意に決まるのかな?
176デフォルトの名無しさん:2009/05/14(木) 21:08:09
>>171
もちろん参考にはしませんので教えれ
177デフォルトの名無しさん:2009/05/14(木) 22:53:53
>172 pythonのコードをreadableなcに変換する方法はないのでしょうか
無理だ
178デフォルトの名無しさん:2009/05/14(木) 23:20:24
lambdaが使われているソースがキモすぎて理解できません
誰か親切丁寧かつほのかなエロさで教えろ
179デフォルトの名無しさん:2009/05/14(木) 23:27:54
ラムダ計算を勉強してこい
180デフォルトの名無しさん:2009/05/14(木) 23:35:45
pythonのlambdaを使うだけならλ計算の勉強はしなくていいです。

lambda a, b: a + b ってのは、

def foo(a, b): return a + b という関数定義がその場にあって、
その場で foo と参照するのと同じ。

以上。難しくないでしょ?
181デフォルトの名無しさん:2009/05/14(木) 23:39:43
>>180
簡潔。俺のような低能の長年の疑問が…。
182デフォルトの名無しさん:2009/05/15(金) 03:27:15
>>178
死ね
183デフォルトの名無しさん:2009/05/15(金) 03:49:17
f = lambda: f()
f()
184デフォルトの名無しさん:2009/05/15(金) 06:36:46
lambdaの中で使う変数のnamespaceってどうなってんの?
185デフォルトの名無しさん:2009/05/15(金) 22:35:09
クロージャの話をしろということだろうか
186デフォルトの名無しさん:2009/05/16(土) 00:16:34
n = []
foo = lambda: n.append("unko")
bar = lambda: n
bar()
foo()
bar()
n = 123
bar()
187デフォルトの名無しさん:2009/05/17(日) 11:23:38
各オブジェクトのメモリ使用量とか分かるモジュールありますか?
188デフォルトの名無しさん:2009/05/17(日) 12:30:28
>>187
guppy の heapy

でも、もし手元にある Python プログラムがメモリを食っているのなら、
http://d.hatena.ne.jp/methane/20090517/1242531011
189デフォルトの名無しさん:2009/05/17(日) 13:03:14
2009-05-17
■[Python] Pythonプログラムがメモリを大量に使っているとき
もし想定以上のメモリを Python プログラムが消費しているのであれば、ループの中で循環参照が生まれていることや、回収不能オブジェクト(循環参照なうえに __del__ メソッドが存在するためにgcがどこから循環を切っていいのか判らないオブジェクト)が存在しないかを疑う。

import gc
gc.set_debug(gc.DEBUG_LEAK)
gc.disable()
# 問題の処理
gc.collect() # 回収された循環参照や回収不能オブジェクトが表示される

190188:2009/05/17(日) 20:09:57
ありがとう。heapy試して見ます。
191デフォルトの名無しさん:2009/05/21(木) 00:52:35
Python3.0 changes に

> dict methods dict.keys(), dict.items() and dict.values() return "views" instead of lists.

とあるんですけど、views とはなんですか。iteratorとはまた違うんでしょうか。
192デフォルトの名無しさん:2009/05/21(木) 01:11:26
>>> d = {"abc":2, "def": 0}
>>> d.keys() == {"abc", "def"}
True
>>> "abc" in d.keys()
True
>>> len(d.keys())
2
193デフォルトの名無しさん:2009/05/21(木) 03:59:30
>>192
データベース用語じゃないかな。

デリヘルだったのが業態変更で覗き部屋に変わりました
みたいな感じ。

194デフォルトの名無しさん:2009/05/21(木) 20:08:13
195デフォルトの名無しさん:2009/05/22(金) 19:20:38
プログラミング初心者です。
ちっちゃいツールを作れたら…と勉強開始しました。
最初のうちって数字を抜き出したり、表示させたりばっかりですが
なんかプログラミングって感じないんですよね。
最終的にはそれなりなツールが作れるといいんですが…

ちなみにスライスとかインデックスを指定とかって実際のプログラミングで使ったりするんですか?
196デフォルトの名無しさん:2009/05/22(金) 19:22:43
つRails
197デフォルトの名無しさん:2009/05/22(金) 19:45:51
windowsな人はブビでもやるよろし
198デフォルトの名無しさん:2009/05/22(金) 20:53:42
linuxも勉強中ですので、頑張って続けてみます。
ありがとうございました。失礼します。。。
199デフォルトの名無しさん:2009/05/22(金) 21:06:59
ひでw
お勉強スレでなんで違う言語に誘導すんだよw
200デフォルトの名無しさん:2009/05/22(金) 22:12:27
質問には答えようぜ

>195

> ちなみにスライスとかインデックスを指定とかって実際のプログラミングで
> 使ったりするんですか?

超使います。例えば掲示板ソフトを作ったとして、メッセージの195番っつた
ら、 messages[195] とか書けるように作るのが単純なやりかた。

(もちろん、凝ろうと思えばいくらでも凝れます)


201デフォルトの名無しさん:2009/05/22(金) 22:16:40
messages[194]がいいです
202デフォルトの名無しさん:2009/05/22(金) 22:18:02
203デフォルトの名無しさん:2009/05/22(金) 22:22:01
>メッセージの195番っつた
>ら、 messages[195] とか書けるように

ちょうウケる(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
204デフォルトの名無しさん:2009/05/22(金) 22:28:51
”とか”って書いてるからいいじゃん
民主党みたいなことすんなや
205デフォルトの名無しさん:2009/05/22(金) 22:34:20
       ,..--‐‐‐‐‐‐‐‐---..  
     /::::ヽ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;)   
     |::::::::::/        ヽヽ  
    .|::::::::::ヽ ........    ..... |:|  
     |::::::::/     )  (.  .||  
    i⌒ヽ;;|.  -=・=‐  .‐・=-.|   党首辞任”とか”してみたりなんかしちゃったりして
    |.(    'ー-‐'  ヽ. ー' |  
    ヽ.      /(_,、_,)ヽ  |  
    ._|.    /  ___   .|  
  _/:|ヽ     ノエェェエ>  |  
  :::::::::::::ヽヽ     ー--‐  /  
  ::::::::::::::::ヽ \  ___/
206デフォルトの名無しさん:2009/05/22(金) 22:35:41
うわー
ところでmessages[0]はNone?空文字?
207デフォルトの名無しさん:2009/05/22(金) 22:38:28
好きな人の名前に決まっているだろ!
208デフォルトの名無しさん:2009/05/22(金) 22:43:08
messages[0]は0番だろ
209デフォルトの名無しさん:2009/05/22(金) 22:47:40
thebbsはたしか0番から始まってた…と思ったらthebbs閉鎖したのね。
210デフォルトの名無しさん:2009/05/22(金) 23:52:03
こうして今日もPythonの話題から脱線していくのだったとさ・・・
211デフォルトの名無しさん:2009/05/22(金) 23:59:16
>>200
すごくわかり易かったです!
ありがとうございます。
基礎は重要ってことですね!
しっかり学びます。(みんなのPython改訂版使用)
図々しいですが、わからない事がありましたらまたお願いします。
212デフォルトの名無しさん:2009/05/23(土) 02:27:13
もしかしてPythonが初めてのプログラミングなのかしら・・・
213デフォルトの名無しさん:2009/05/23(土) 07:42:04
プログラミングに向いてない
別のことに時間使え
214200:2009/05/23(土) 14:12:12
こんなにウケるとは思わなかったwwww

>201
わかってんならいいよ。でもoff-by-oneバグには気をつけて。
>203
そんな面白い?テヘ(´▽`)
>205
鳩山って一応工学部出てんだけど、なんであんなにデムパなのかね‥‥‥
>206
Noneでも空文字でもいいけど、俺が作るならスレッドタイトル入れとくかなぁ。
>207
おかーちゃんの名前を入れておけ!
>211
がんばれ。
215デフォルトの名無しさん:2009/05/23(土) 14:36:27
>>212
俺、Pythonは2番目
最初に覚えたのはbashプログラミング
216デフォルトの名無しさん:2009/05/23(土) 18:13:46
Perlから鞍替え組しかいなかったころがなつかしい
217デフォルトの名無しさん:2009/05/23(土) 21:27:53
順番
Ruby->Pythonと
Python->Rubyのひとは
どっちが多いですか
218デフォルトの名無しさん:2009/05/23(土) 21:34:02
Ruby->Pythonの方が多そうな気がする。主に実行速度の面で。
219デフォルトの名無しさん:2009/05/24(日) 00:08:33
>>218
実行速度もそうですが
Rubyのプログラムの書き方が合わないっていう人はいないんですかね。
自分は関数定義(def)の時のブロックにbeginをつけない所と、
lambda式の記述の仕方がどうも合わなかったんですが…自分だけか…
220デフォルトの名無しさん:2009/05/24(日) 00:45:43
perlのせいでLLを毛嫌いしてたけど、
pythonが出てきてからは何にでも使うようになった。
221デフォルトの名無しさん:2009/05/24(日) 01:07:55
Perlを知ってからは何にでも使うようになったら
後で酷いことになった。
222デフォルトの名無しさん:2009/05/24(日) 01:19:16
>>219
俺は end が嫌だったのと、関数が名前空間違う部分が無理だったな。
Rubistにしては書くときに楽しいのかもしれんが、読みやすさは圧倒的に
Pythonの方が上。Pythonを知らない人にも読める executable pseudocode
223デフォルトの名無しさん:2009/05/24(日) 04:16:30
まじで!?
基本的にpython大好きだけど
ブロック終端記号がないのだけは好きになれない。
224デフォルトの名無しさん:2009/05/24(日) 06:17:22
Pascalのcase-endですらいらついたしRubyもbeginなしendだし
うっとうしいだけ
225デフォルトの名無しさん:2009/05/24(日) 06:18:24
インデント守ってないコードで終端記号なかったら訳分からんけど
Pythonの場合無くても問題にならないだろ
226デフォルトの名無しさん:2009/05/24(日) 07:46:08
Pythonで唯一面倒なのは、テストで途中でブロック追加したり取ったりする場合だな。
まぁ、エディタでブロックごとインデント付けたり消したりできればいいだけなんだけど。
227デフォルトの名無しさん:2009/05/24(日) 07:49:30
>>226
それはEmacsで楽に出来るから問題ないな。
228デフォルトの名無しさん:2009/05/24(日) 07:53:11
Emacsで、ある範囲を指定してインデントを増やす/減らすのはどうしたらいいの?
いまは C-x r t としてスペースを4つ指定しているんだけど、かっこわるすぎる
229デフォルトの名無しさん:2009/05/24(日) 07:56:13
>>228
リージョンを指定して、C-c > で右 C-c < で左インデント
230デフォルトの名無しさん:2009/05/24(日) 09:50:00
>>227
それvimでも簡単だよ!
231デフォルトの名無しさん:2009/05/24(日) 10:25:48
Pythonは読みやすいけどインデントが嫌だ
232デフォルトの名無しさん:2009/05/24(日) 10:28:59
>>231
読みやすさ > 個人の趣味
233デフォルトの名無しさん:2009/05/24(日) 10:31:59
>>232
書きやすさ>読みやすさ>個人の趣味
234デフォルトの名無しさん:2009/05/24(日) 11:11:44
Pythonは基本読みやすいですが、
書籍に載ってるプログラムで次のページにまたいでるとき、
インデントがどうなったのか分かりにくい時があるのがたまにきずですかね。
235デフォルトの名無しさん:2009/05/24(日) 11:19:39
>>233
読む方が多いからそれはないわ
236デフォルトの名無しさん:2009/05/24(日) 11:30:08
ぶっちゃけ、インデントは慣れればそれほど問題じゃないって感じだな。
おまえインデントブロック初めてか?みたいな人にはインパクトはかなりあるがw

結局俺の場合、何で書いてもだいたい同じような見た目になるしw
構造自体が全然違うってのは、関数系言語だな。
237デフォルトの名無しさん:2009/05/24(日) 11:39:43
頼むからインデントに最低スペース4つは使ってくれ
238デフォルトの名無しさん:2009/05/24(日) 12:03:23
GoogleAppEngineでは2つが標準みたいだよ
239デフォルトの名無しさん:2009/05/24(日) 12:11:22
そういう議論はこっちで

Pythonに見られるインデントによる制御構造の是非
http://pc12.2ch.net/test/read.cgi/tech/1169473442/l50
240デフォルトの名無しさん:2009/05/24(日) 12:59:48
ブロックのインデント表現は流行らないと思うわ
括弧とか改行とか、もっと積極的な表現の方が人間が認識しやすいもの
241デフォルトの名無しさん:2009/05/24(日) 13:13:20
>>237
それにこだわるひといるみたいだけど
なんか意味あるのか?
242デフォルトの名無しさん:2009/05/24(日) 13:17:36
>>240
気のせいです
243デフォルトの名無しさん:2009/05/24(日) 13:24:52
>>241
インデントが深くなったときパッと見で判別しづらいからとか?
244デフォルトの名無しさん:2009/05/24(日) 13:36:09
dict1 = {'a':1}
dict2 = {'b':2}

とあったときに、2つをマージした新しい辞書dict3を一発でつくるにはどうしたらいいですか。
dict3 = dict1.copy()
dict3.update(dict2)
とするしかないのでしょうか。
dict3 = dict1 + dict2
とかできませんか?
245デフォルトの名無しさん:2009/05/24(日) 13:39:47
>>244
D1.update(D2)
246デフォルトの名無しさん:2009/05/24(日) 14:00:03
>>241
それにこだわる人と同じ理由ではないと思うけど、個人的には読み難いし、綺麗じゃない
まぁおれがいつも4つ使ってるから慣れてないだけなのかもしれんけど。
247デフォルトの名無しさん:2009/05/24(日) 14:34:01
ところで皆さんインデントはスペース派?タブ派?
作者はスペースを推しているけど。
248デフォルトの名無しさん:2009/05/24(日) 15:00:17
タブ4。
249デフォルトの名無しさん:2009/05/24(日) 15:18:22
vimでSpace4
250デフォルトの名無しさん:2009/05/24(日) 15:45:22
スペース4だな
251デフォルトの名無しさん:2009/05/24(日) 16:03:13
pythonだけでも十分?
252デフォルトの名無しさん:2009/05/24(日) 16:04:21
タブ2だな
みんなけっこう違うんだな
253デフォルトの名無しさん:2009/05/24(日) 16:11:55
スペース2にきまっとる
254デフォルトの名無しさん:2009/05/24(日) 16:15:05
pep8 では4スペースだから、新規に標準ライブラリにはいるコードは全部4スペース。
255デフォルトの名無しさん:2009/05/24(日) 17:54:26
1段目:Space6
2段目:Space5
3段目:Space4
4段目:Space3
5段目:Space2
256デフォルトの名無しさん:2009/05/24(日) 19:39:22
途中で改行したばあいの2行目以降の字下げも推奨値あるの?
257デフォルトの名無しさん:2009/05/24(日) 20:40:31
>>256
それ気になる。配列や辞書を途中で改行している場合、かっこを閉じる位置をどこにするか迷う。
258デフォルトの名無しさん:2009/05/24(日) 20:47:58
>>249
同じく
259デフォルトの名無しさん:2009/05/24(日) 21:00:23
辞書や配列の閉じカッコって、使ってるテキストエディタによって
微妙に位置が違ってなんか痒いところだよな。
260デフォルトの名無しさん:2009/05/24(日) 22:09:09
>>245
>D1.update(D2)
これだと D1 が変更されますよね。
やりたいのはD1もD2も変更せずに、かつD1とD2をマージした辞書を一発で新たに作りたいということなんですけど。
261デフォルトの名無しさん:2009/05/24(日) 23:06:14
むりぽ
262デフォルトの名無しさん:2009/05/24(日) 23:09:38
>>257
突然Cみたいになっちゃう俺。
263デフォルトの名無しさん:2009/05/24(日) 23:19:11
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}

普通すぎてスマソ
264デフォルトの名無しさん:2009/05/24(日) 23:25:14
>>> dict(list(dict1.iteritems()) + list(dict2.iteritems()))
{'a': 1, 'b': 2}
あんまり変わらんか orz
265デフォルトの名無しさん:2009/05/24(日) 23:34:48
eval(",".join((str(dict1)[:-1],str(dict2)[1:])))
気持ち悪い
266デフォルトの名無しさん:2009/05/24(日) 23:37:08
>>264
その方式ならこうじゃね?
>>> d1 = {'a':1}
>>> d2 = {'b':2}
>>> dict(d1.items() + d2.items())
{'a': 1, 'b': 2}
267デフォルトの名無しさん:2009/05/24(日) 23:47:42
>>256
PEP8では「適切にインデントすること」としか書かれていないけど、サンプルコードを見ると
改行前の要素に合わせてるな。

foo(bar,
    baz)
268デフォルトの名無しさん:2009/05/25(月) 00:05:27
どっちかというとそういう関数作った方がキレイだな。
269デフォルトの名無しさん:2009/05/25(月) 00:19:23
setと違って+演算子を割り当てなかったのは、足す前の辞書の要素のうち足す辞書に
重複するキーがあった場合値を上書きしてしまうと言う動作が、+演算子の
「追加する」というイメージに合わなかったからだろうな。
あくまでも更新(update)であって、追加(add)じゃない。

clone() して update() するのが正解だと思うよ。別に面倒でも汚くもないし。
270デフォルトの名無しさん:2009/05/25(月) 00:43:34
d3 = d1 || d2
271デフォルトの名無しさん:2009/05/25(月) 00:52:22
>>270
Pythonにそんな演算子ねーよw
それに、 d3 = d1 | d2 にしても、やっぱりd1にある要素が「消える」ということを考えると
bitwise or とは違うよね。set ならそれでも意味通るけど。
272デフォルトの名無しさん:2009/05/25(月) 01:26:27
エディタのタブ記号のお世話になっているのでタブ4
※タブが推薦されない理由って何?
273デフォルトの名無しさん:2009/05/25(月) 01:40:11
環境によって深さが変わるし
274デフォルトの名無しさん:2009/05/25(月) 01:43:48
いまどきのエディタ使ってりゃ2でも4でもどうでもいいんだけどな
それより深くなり過ぎそうならその前に関数にするとかモジュールにするとか
なんか工夫するはずだからな
タブにこだわってる香具師とかインデントにこだわる香具師は
机上の空論
畳の水練
275デフォルトの名無しさん:2009/05/25(月) 02:28:43
Perlでも使ってろ
276デフォルトの名無しさん:2009/05/25(月) 02:38:28
>※タブが推薦されない理由って何?
関数の括弧でそろえたいときとかにスペースと混在するしか無くて、
そうすると環境によって見た目がめちゃくちゃになることかなあ。

どの環境もタブ=スペース4つ分とかで統一してくれればいいのに。
何でタブ=スペース8つ&スペース混在をデフォルト設定にしたんだ。>アレ

277デフォルトの名無しさん:2009/05/25(月) 02:42:37
アレって何だ?IBM?ゼロックス?
278デフォルトの名無しさん:2009/05/25(月) 07:47:22
おひざもとのコーディングルールが 8タブ& 4インデントのアレとか?
279デフォルトの名無しさん:2009/05/25(月) 17:02:18
昔はタブ8桁だったからしょうがないね。
スペースだけにするのが一番問題無い。
280デフォルトの名無しさん:2009/05/25(月) 18:14:44
それ、別に昔の話でもない
端末(エミュレータ)やウェブブラウザなど、多くのソフトウェアは今でも
普通は8タブのはずだよ
281デフォルトの名無しさん:2009/05/25(月) 19:46:04
TAB
八画
282デフォルトの名無しさん:2009/05/25(月) 22:23:14
みんなのPythonすごく読みやすい。超面白いんですけど、毎日ガンガン読んでます。
283デフォルトの名無しさん:2009/05/25(月) 22:40:47
日本語でおk
284デフォルトの名無しさん:2009/05/25(月) 22:42:07
みんなのPythonすごく読みやすい。超面白いんですので、毎日ガンガン読んでます。
285デフォルトの名無しさん:2009/05/25(月) 22:44:01
ガンガンってまだあったのか
286デフォルトの名無しさん:2009/05/25(月) 22:46:48
みんなのPythonすごく読みやすい。超面白いんですので、毎日ボンボン読んでます。
287デフォルトの名無しさん:2009/05/25(月) 22:57:50
殴って人が殺せそうな厚さのコミック雑誌名列挙禁止なw
先月付けの号でガンガン超えてたのあったな…。1000Pとかマジ基地
288デフォルトの名無しさん:2009/05/25(月) 23:29:13
みんなのPythonすごく読みやすい。超面白いんですので、毎日京極夏彦読んでます。
289デフォルトの名無しさん:2009/05/26(火) 09:04:46
みんなのPythonすごく読みやすい。超面白いんですので、毎日時刻表読んでます。
290デフォルトの名無しさん:2009/05/26(火) 12:05:15
誰かが面白いこと言うまで続くの?
291デフォルトの名無しさん:2009/05/26(火) 16:09:10
ちんこ
292デフォルトの名無しさん:2009/05/26(火) 16:31:11
乳輪大納言
293デフォルトの名無しさん:2009/05/26(火) 16:44:50
久しぶりに7巻読んでみた
294デフォルトの名無しさん:2009/05/26(火) 16:48:33
またruby厨の荒らしが来てるのか
295デフォルトの名無しさん:2009/05/26(火) 18:01:16
デコレータって気持ち悪いね・・・
296デフォルトの名無しさん:2009/05/26(火) 22:13:54
むしろ気持ちいい
297デフォルトの名無しさん:2009/05/26(火) 23:44:16
デコレータイイ
メタクラスヘン
298デフォルトの名無しさん:2009/05/27(水) 01:08:06
>>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
>>299
勉強しなおしてこい
301デフォルトの名無しさん:2009/05/27(水) 09:27:34
dict3 = dict(dict1.items() + dict2.items())
>>298
ナイス。なるほどね。
>>299
動かん。

調べたらstackoverflowにあった。
http://stackoverflow.com/questions/38987/how-can-i-merge-two-python-dictionaries-as-a-single-expression

298がいいみたいね。
302デフォルトの名無しさん:2009/05/27(水) 16:54:40
>>301
>dict3 = dict(dict1.items() + dict2.items())
やりたいことを明示的に示しているという意味ではこっちの方が分かりやすいと思うけどな。
効率はおいとくとして。
303デフォルトの名無しさん:2009/05/27(水) 17:22:25
>>302
それは py3k ではエラーになるという面で >>298 の勝ち。
304デフォルトの名無しさん:2009/05/27(水) 17:55:41
結局copyしてupdateの方が明示的のような。
305デフォルトの名無しさん:2009/05/27(水) 18:14:39
2回updateでいいじゃんよ
1行で済ませようとするとろくなことにならんぞ
306デフォルトの名無しさん:2009/05/27(水) 18:45:27
dict3 = dict().update(dict1).update(dict2)
307デフォルトの名無しさん:2009/05/27(水) 18:47:51
あら素敵
308デフォルトの名無しさん:2009/05/27(水) 21:14:51
頭良いな。
309デフォルトの名無しさん:2009/05/27(水) 21:33:51
>>306
update() は inplaceに処理する関数でupdate後のdictを返す訳じゃないから
それじゃダメ。

dict3 = dict1.copy()
dict3.update(dict2)

素直だし読みやすいし何も問題なし。
310デフォルトの名無しさん:2009/05/27(水) 22:02:44
Pythonはsortにはsorted、reverseにはreversedみたいな値を返すタイプがもれなくあるから
updateみたいにinplaceのみで値を返す選択肢がないメソッドは意外
311デフォルトの名無しさん:2009/05/27(水) 22:38:00
青年よ、PEPを書け
312デフォルトの名無しさん:2009/05/27(水) 23:59:45
彼は書いた。
日本語で。
313デフォルトの名無しさん:2009/05/28(木) 00:33:19
>>309
Java みたいでやだ
314デフォルトの名無しさん:2009/05/28(木) 00:35:33
dict object に updated メソッドを追加するにはどうすればよいですか?
315デフォルトの名無しさん:2009/05/28(木) 00:39:16
適当にdictを継承すれば
316デフォルトの名無しさん:2009/05/28(木) 00:53:15
これでいいだろ
なんでメソッドにしたいんだ

def marged(*dicts):
    marged_dict = {}
    for d in dicts:
         marged_dict.update(d)
    return marged_dict
317デフォルトの名無しさん:2009/05/28(木) 01:13:14
mergeな
318デフォルトの名無しさん:2009/05/28(木) 02:31:58
>>316
ネ申!!!
319デフォルトの名無しさん:2009/05/28(木) 04:30:15
辞書をマルゲッドする方法を教えてください
320デフォルトの名無しさん:2009/05/28(木) 09:37:15
>>303
それは盲点だった。
なら>>304だな。
321デフォルトの名無しさん:2009/05/28(木) 11:20:47
>>313
複雑な式よりもシンプルな文を選ぶと言う点では、Pythonの文化は
Javaに近いと思うよ。
もちろんスクリプト言語の利点や動的型付けの利点があるから、
Javaよりも圧倒的にアジャイルに開発できるけど。
322デフォルトの名無しさん:2009/05/28(木) 12:39:27
なんでイテレータどうしを足したらだめなんだろう?
itertools.chainの動作をしてくれれば良いだけだと思うんだけど。
323デフォルトの名無しさん:2009/05/28(木) 16:15:24
list ならそれでいいんじゃね?
324デフォルトの名無しさん:2009/05/30(土) 10:52:36
今更だが、Pythonってインデントによるブロック表現とかリスト内包とか
Miranda譲りの部分があるんだな。
325デフォルトの名無しさん:2009/05/30(土) 11:13:40
ミランダつーか関数型言語方面からの影響ね。
326デフォルトの名無しさん:2009/05/30(土) 11:16:41
Miranda以外にインデントでブロック表現をする関数型言語あったっけ?
327デフォルトの名無しさん:2009/05/30(土) 11:33:35
Cyan
328デフォルトの名無しさん:2009/05/30(土) 11:46:30
>>327
初めて聞いた言語だな。
ググってもウェブサイトが出てこないが、相当マイナーな言語なのか?
329デフォルトの名無しさん:2009/05/30(土) 12:05:43
インデント > Haskell
Pythonの内包表記はHaskell譲り。
330デフォルトの名無しさん:2009/05/30(土) 12:08:09
MirandaもHaskellもMLからの影響だな
331デフォルトの名無しさん:2009/05/30(土) 12:15:42
>>330
そう。系譜的にはML->Miranda->Haskell。
ただしリスト内包の導入ははMirandaから。
だから、Pythonのインデントやリスト内包はMiranda譲りと言うべき所だな。
332デフォルトの名無しさん:2009/05/30(土) 12:52:03
<丶`∀´>インデントと内包表記の起源は韓国ニダ!
333デフォルトの名無しさん:2009/05/30(土) 16:09:04
PythonのインデントはABCからだろ
334デフォルトの名無しさん:2009/05/30(土) 19:32:50
本人が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
※すみません、インデントがなくなっちゃってますが(汗
337デフォルトの名無しさん:2009/05/31(日) 14:35:38
>>335
いやーんなコードだな・・・
それはともかくrssitem.keys()とvalidattrsの出力を比べてみたらいいかも
338デフォルトの名無しさん:2009/05/31(日) 14:37:51
rsskeys = rssitem.key()でエラーになるんですけど、どういうことですかね?
339デフォルトの名無しさん:2009/05/31(日) 14:39:31
keys()が正しいから
340デフォルトの名無しさん:2009/05/31(日) 14:42:48
まさか、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
そこはわかるんですけど(汗
その次が…
343デフォルトの名無しさん:2009/05/31(日) 14:48:42
http://www.python.jp/doc/release/tut/node7.html

5.2 del 文

ぐぐればすぐ出てくるのに・・・
344デフォルトの名無しさん:2009/05/31(日) 14:49:54
del文は■■■.del[]で引数にはインデント番号や辞書で言うキーを入れると思いますが、
上記のコードでは[key]となっています。keyってキーはなかったので
この文で、「comment」が消えた意味がわかりません。
私変な質問してますかね?(滝汗
345デフォルトの名無しさん:2009/05/31(日) 14:52:28
>>344
おまいマジで言ってるのかよ
keyは変数だろ?中身に何が入ってるかprintしてみろよ
346デフォルトの名無しさん:2009/05/31(日) 14:52:41
とりあえずfor〜in〜を勉強し直すと良いと思うよ
347デフォルトの名無しさん:2009/05/31(日) 14:53:16
>>343
ありがとうございます。
del rssitem[key]のような使い方がないんですよ(涙
引数の[key]ってどこからきたのーーーーー?
348デフォルトの名無しさん:2009/05/31(日) 14:54:26
>>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]をやると、全てのキーが消えてしまうように思えますが…
351デフォルトの名無しさん:2009/05/31(日) 16:59:50
>>350
for の次の行で key を print してみろ。
352デフォルトの名無しさん:2009/05/31(日) 17:41:29
配列に対してインデックスでアクセスしないことで
操作イメージが掴みにくくなることもあるんだな

いい勉強になった
353デフォルトの名無しさん:2009/05/31(日) 17:51:05
漏れもPerlのforeachを理解するのに丸一日かかったことがある

いい思い出だ
354デフォルトの名無しさん:2009/05/31(日) 18:22:00
痛レータ
355デフォルトの名無しさん:2009/05/31(日) 18:36:36
>>350

>>342

プログラム以前に、国語とか算数とかからやり直してくれよ。
356デフォルトの名無しさん:2009/05/31(日) 18:50:55
答えたくないなら初心者スレに誘導するなりしろよ。
http://pc12.2ch.net/test/read.cgi/tech/1243160751/

あとカルシウム取れよ
357デフォルトの名無しさん:2009/05/31(日) 18:58:23
と思った俺が悪かった。
彼はどこに誘導してやればいいのだろう・・・
358デフォルトの名無しさん:2009/05/31(日) 20:14:20
>>335
みんなのPythonってサンプルソースでもこんなに誤字脱字だらけなの?
359デフォルトの名無しさん:2009/05/31(日) 20:16:54
# 元々のデータ(型:ディクショナリ)
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割近く減らせたそうです(自己解決したということ)。
360デフォルトの名無しさん:2009/05/31(日) 20:25:49
能力があっても
人を傷つけるのに使うってのがアイタタタタ
361デフォルトの名無しさん:2009/05/31(日) 20:38:55
誤植を抜きにしても
このコードで勉強する初心者かわいそす
362デフォルトの名無しさん:2009/05/31(日) 20:46:37
こんな簡単なコードで悩むやつはプログラミング向いてないから他のことやったほうがいいよね。
人生みじかいんだから自分の得意な分野でがんばったほうがいいよ。
363デフォルトの名無しさん:2009/05/31(日) 20:51:29
えっと、
スレ違いですので
こちらへどうぞ
http://pc12.2ch.net/test/read.cgi/tech/1243160751
364デフォルトの名無しさん:2009/05/31(日) 20:59:22
>>359
わかりました。ありがとうございます。
del rssitem[key]ちょっとわかり難かったですが、359さんの説明でわかりました。
365デフォルトの名無しさん:2009/06/01(月) 09:03:16
>>359
GJ
よくやった
366デフォルトの名無しさん:2009/06/01(月) 10:05:56
みんPyを見てみたけど、リストにはちゃんと説明書きがついてるのな。
日曜にやることがない奴らが盛り上がるネタとしては最適だったかもな(爆笑)。
367デフォルトの名無しさん:2009/06/01(月) 10:13:38
釣りだったってこと?
368デフォルトの名無しさん:2009/06/01(月) 10:20:59
釣りかどうかは知らないけど
カルシウム足りなそうな奴は友達いないな確実に(wwWwwWwwWW
369デフォルトの名無しさん:2009/06/01(月) 11:05:03
理由も示さず誹謗中傷してる人がいるけど、病院に行くことをオヌヌメしる。分裂症の疑いが強い。
分裂症患者は普通の会話ができないので、日曜に時間がたっぷりあるのももっともなわけだが。
370デフォルトの名無しさん:2009/06/01(月) 11:32:19
ちょっとまて
 そのかきこみは
   あさひかも
371デフォルトの名無しさん:2009/06/01(月) 12:25:25
>>369
キチガイには正しいモノが間違って見えるらしいよ
372デフォルトの名無しさん:2009/06/01(月) 13:17:40
>>370 ウヨ乙。巣に帰ってね。
373デフォルトの名無しさん:2009/06/01(月) 15:18:01
またruby厨の荒らしですか
374デフォルトの名無しさん:2009/06/01(月) 22:09:23
なんでこんな突っ込みどころのない簡単なコードで盛り上がってるんだ?
釣りってかんじでもなさそうだったけど。
375デフォルトの名無しさん:2009/06/01(月) 22:33:57
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自体は消えますか?
376デフォルトの名無しさん:2009/06/01(月) 22:35:41
rssitemって命名からして嫌な悪寒がしますた
377デフォルトの名無しさん:2009/06/01(月) 22:36:26
rssitem.clear() やっときゃ完璧。
378デフォルトの名無しさん:2009/06/01(月) 22:38:45
RSS処理するならfeedparserだろ
379デフォルトの名無しさん:2009/06/01(月) 22:59:22
次の患者さんどうぞ。
380デフォルトの名無しさん:2009/06/01(月) 23:29:42
>>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個になることはありますか?とかは愚問です。)
381デフォルトの名無しさん:2009/06/02(火) 02:52:52
先生、次の患者さんです。

ttp://d.hatena.ne.jp/perezvon/20090601/1243872974
382デフォルトの名無しさん:2009/06/02(火) 03:49:09
2chは宣伝禁止ですよ
383デフォルトの名無しさん:2009/06/02(火) 10:22:41
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
384デフォルトの名無しさん:2009/06/02(火) 11:02:01
pyqt4.5の開発版は既に3.0に対応してるのか
もしかして今後主流になるのか?
385デフォルトの名無しさん:2009/06/02(火) 12:11:17
>>384
pyqt4.5はもうそろそろリリースされそうだね。
でも、Py3k が主流になるのにはまだまだ時間がかかるよ。
Python 3.0 が出た後にも py3k には後方互換性を失う変更が入ってくるし。
386デフォルトの名無しさん:2009/06/02(火) 15:23:58
>>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
超初心者スレのほうで聞いてみることにします。
ご迷惑おかけしました;;
390デフォルトの名無しさん:2009/06/02(火) 18:32:42
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
391デフォルトの名無しさん:2009/06/02(火) 22:32:33
>> 387
…釣りじゃなかったのか…
392デフォルトの名無しさん:2009/06/02(火) 22:34:01
アンインストールしろも嘘じゃなかったんだがな!
半分だけど
393デフォルトの名無しさん:2009/06/04(木) 00:44:01
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
395デフォルトの名無しさん:2009/06/04(木) 02:31:25
>>389
どこで聞いても同じだろ
アホかお前
396デフォルトの名無しさん:2009/06/04(木) 02:35:31
ruby厨の荒らしがいるのはここだけです
397デフォルトの名無しさん:2009/06/04(木) 16:27:29
python の help(..) 結果の文字列をコンソールではなく、str 文字列に簡便に取り出す
方法がないでしょうか。

--------------

python の help(..) 関数は、文字列を返すのではなく、コンソールに直接出力していま
す。でも、その文字列が多すぎると読みきれません。例えば help(scipy) などとすると、
二万行を超える結果が返ってきます。

この多すぎる文字列を正規表現で絞り込もうとしています。自前の help 関数を作り、組
み込みの help が返す結果の文字列から正規表現にマッチする行を抜き出して表示しよう
と思います。

でも help(..) 関数がコンソールに直接出力しているので困っています。pydoc のソース
も追ったのですが、help(..) 結果を str に変更する上手い手が見つかりません。

上手い手段を御存知の方、教えてもらえますでしょうか。ヒントだけでも助かります
398デフォルトの名無しさん:2009/06/04(木) 16:30:07
399デフォルトの名無しさん:2009/06/04(木) 20:48:27
>>398 ありがとうございます。397 です。

リダイレクトを使ったコマンド・ラインで実行でテキストに落とさせ、そのテキストに正規表現を働かせます。

プログラム内だけで処理をしようとして、リダイレクトを忘れていました。ありがとうございました。
400デフォルトの名無しさん:2009/06/04(木) 21:11:35
import sys
from StringIO import StringIO
sys.stdout = StringIO()
help(dir)
content = sys.stdout.getvalue()
401デフォルトの名無しさん:2009/06/04(木) 21:22:48
>>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 も生成されますが
ファイルに何も書き込まれていません。
どこが間違えているのでしょうしょうか?
403デフォルトの名無しさん:2009/06/05(金) 13:51:56
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)
としているんですけど、もっとかっこいい方法があれば教えてください。

404デフォルトの名無しさん:2009/06/05(金) 14:08:09
g = gen().next
おすすめはしないが
405デフォルトの名無しさん:2009/06/05(金) 14:09:06
g = g.next
どういう場面か知らんけどジェネレータをそのまま扱った方がいいんじゃないの
406デフォルトの名無しさん:2009/06/05(金) 14:13:33
>>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」 と戻すことを忘れて、少し悩んでしまいました。でも助かりました。
408デフォルトの名無しさん:2009/06/05(金) 16:25:53
>>407
ちょw >>401 は無視かよw
409デフォルトの名無しさん:2009/06/05(金) 16:49:49
>>401 御指摘ありがとうございます。397 です。

pydoc.getdoc(..) は個別の関数などに限定されるので使えませんでした。でも、それでも良いときは単純で便利ですね。

>>408 すいません。無視したわけではないのですが、連続書き込みで撥ねられて、別のことをしていたら今になってしまいました。
410デフォルトの名無しさん:2009/06/05(金) 20:29:35
連続書き込み規制意味ないよなぁ
411デフォルトの名無しさん:2009/06/05(金) 22:35:19
>>404,405
なるほど。nextを直接使えば良くて、lambdaは不要でしたね。
感謝感謝です。
412デフォルトの名無しさん:2009/06/06(土) 01:53:29
for とか while に else があるの最近知ったわ。
何気に便利だな。
413デフォルトの名無しさん:2009/06/06(土) 01:58:28
みんなの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です。
414デフォルトの名無しさん:2009/06/06(土) 02:02:41
>>413
その本ひどいな。捨てた方がいいんじゃないか?

dir(set)すれば分かるが、appendなんてものはないぞ。
s.add(5)とすれば期待する結果が得られるはず。
415デフォルトの名無しさん:2009/06/06(土) 02:03:00
>>> 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.
(以下略)
416デフォルトの名無しさん:2009/06/06(土) 02:08:26
>>414
素早い回答ありがとう。
俺の勉強してる本はとんでもない本なのかよ! >>1のまとめwikiにも載ってる本なのに・・・。
417デフォルトの名無しさん:2009/06/06(土) 02:09:06
>>413
"改訂版"なのに・・・

実はPython3.0系だとあるとか?
やったことないけど
418デフォルトの名無しさん:2009/06/06(土) 02:13:09
>>417
3.0でも無いよ。っていうか、集合にappendなんて演算がある方がおかしい。
419デフォルトの名無しさん:2009/06/06(土) 02:21:14
>415さんもどうも。

やれやれ。ソフトバンクの本だから嫌な気はしてたんだ。
でももう一冊候補だった「実践Python」も誤植が多いらしいから避けてこっちにしたのに。なかなか安心して勉強できないなあ。
これからもちょくちょくこのスレで質問すると思うので、よろしくお願いします。
420デフォルトの名無しさん:2009/06/06(土) 02:24:52
ttp://www.python.jp/doc/release/index.html
ここのチュートリアルとライブラリリファレンスを読め。
下手な書籍より分かりやすい。
421デフォルトの名無しさん:2009/06/06(土) 03:24:31
そう、チュートリアルやるべし。
読み終わったらあれもこれもとモリモリ書きたくなる。
422デフォルトの名無しさん:2009/06/06(土) 03:55:16
やっと初めてのPython読み終えたぜ
とりあえず誤植はそんなにないと思う(数個はあったが)
ただ、やはりいちいちまわりくどい印象
あと重い
423デフォルトの名無しさん:2009/06/06(土) 04:02:42
界王星で本を読むからだよ
424デフォルトの名無しさん:2009/06/06(土) 04:08:12
>>406
ありがとうございます
425デフォルトの名無しさん:2009/06/06(土) 09:57:36
>>415
help(set)
426デフォルトの名無しさん:2009/06/06(土) 09:58:49
IPython なら set? だ。
427デフォルトの名無しさん:2009/06/06(土) 10:39:29
最近出たPython本のアマゾンの順位を出た順に並べてみたんだけど。

初めてのPython 第3版 48,513位
Django×Python 23,790位
Python ポケットリファレンス 29,175位
みんなのPython 改訂版 2,799位
10日でおぼえる Python 入門教室 48,289位

クソ本なのにみんな買うんだよな。なんとかならないのかね。
順位から見ると、他の本の10倍売れてるってことか?
Python 入門教室は新刊なのに売れてなさすぎて笑う(ww
428デフォルトの名無しさん:2009/06/06(土) 10:58:18
Django本は俺も買った。
どこやったかな
429デフォルトの名無しさん:2009/06/06(土) 11:24:35
>>418
append と add の意味の違いがまじでわからんです
だれかおしえてくれまいか
430デフォルトの名無しさん:2009/06/06(土) 11:28:02
C#とかVBだと定番だけどな>append
431デフォルトの名無しさん:2009/06/06(土) 11:37:08
C#VBこそAddばっかりじゃないか
StringBuilderはAppend?
432デフォルトの名無しさん:2009/06/06(土) 11:39:10
StringBuilderは新しいインスタンス作らない
既存のChar配列を書き換えてるから速いしメモリ食わない
433デフォルトの名無しさん:2009/06/06(土) 11:41:21
>>429
計算機科学ではappendには末尾に追加するという意味で使われることが多い。
例えばリストやレコード構造など。それに対して順序関係の無い集合には
末尾という概念は無く、要素の追加を表すのはaddが最も適切、という意味で
Pythonのsetもaddが使われていると思われる。
434デフォルトの名無しさん:2009/06/06(土) 11:43:12
push_backなんで論外だ、ということですね(>_<)
435デフォルトの名無しさん:2009/06/06(土) 11:49:24
>>434
push_back()ってSTLのことじゃないの?
STLのsetへの要素の追加はinsert()であってpush_back()は無いけど。
それはそうと、STLのsetには順序関係があるんだよな。順序関係を持たない
unordered_setがやっと標準化されたけどね。
436429:2009/06/06(土) 11:50:44
>>433 ありがとうエロい人!よくわかりました
437デフォルトの名無しさん:2009/06/06(土) 11:51:45
>>429
appendは「末尾に付け加える」という意味。でも集合の要素には順序がないから
末尾がそもそもない。だから単純に「加える」という意味のaddを使う。
438デフォルトの名無しさん:2009/06/06(土) 11:52:57
書き込む前に更新し忘れたorz
439429:2009/06/06(土) 11:54:04
>>437 ありがとう亀な人!無駄な時間を使わせてごめんなさい
440デフォルトの名無しさん:2009/06/06(土) 12:11:36
dictにもaddはないよね。
辞書の要素には順序がない。
441デフォルトの名無しさん:2009/06/06(土) 12:18:43
>>440
dictにはd[key]=valueという形で要素を追加出来るから
わざわざ必要ないってだけでしょ。
442デフォルトの名無しさん:2009/06/06(土) 12:22:11
関係ないけど、PHPでは、
$ar = array(); //の配列に対して。
$ar[] = 'A';
$ar[] = 'B';
$ar[] = 'C';
こんな風に、append していく。
443デフォルトの名無しさん:2009/06/06(土) 12:39:33
うん関係ない
444デフォルトの名無しさん:2009/06/06(土) 12:42:24
うん関係ない
445デフォルトの名無しさん:2009/06/06(土) 12:57:34
>>441
関数渡しみたいなのはdict.__setattr__使えばいいしね。
446デフォルトの名無しさん:2009/06/06(土) 12:58:15
>>442
PHPなんかどうでもいい
447デフォルトの名無しさん:2009/06/06(土) 13:04:04
>初めてのPython 第3版 48,513位
>Django×Python 23,790位
>Python ポケットリファレンス 29,175位
>みんなのPython 改訂版 2,799位
>10日でおぼえる Python 入門教室 48,289位

残酷な現実だな><
448デフォルトの名無しさん:2009/06/06(土) 14:20:30
みんなのPythonはわりと普通じゃね?
449デフォルトの名無しさん:2009/06/06(土) 14:51:05
合コンでPythonの話ししてもだれも食いつかないんだけど
450デフォルトの名無しさん:2009/06/06(土) 14:52:16
釣り乙
451デフォルトの名無しさん:2009/06/06(土) 15:30:50
>>449
魅力のないヤツはどんな話してもダメだよ
452デフォルトの名無しさん:2009/06/06(土) 15:35:28
俺、女の人と話すの苦手だから合コン行ったことない
453デフォルトの名無しさん:2009/06/06(土) 15:37:38
PyPyの話でもしてろよ
454デフォルトの名無しさん:2009/06/06(土) 15:39:41
そこでpychinkoの出番です。
455デフォルトの名無しさん:2009/06/06(土) 15:42:21
>>453
個人的にツボった
座布団一枚。
456デフォルトの名無しさん:2009/06/06(土) 15:43:13
合コンなんて行かなくても彼女は出きるさ。
・・・できた彼女がメンヘラだったりするがなorz
457デフォルトの名無しさん:2009/06/06(土) 16:51:08
pyqt4.5がリリースされたな。
ライセンスはGPLのまま。
python3.0に正式対応。
458デフォルトの名無しさん:2009/06/06(土) 18:24:02
pypy
pypi
pychinko
ooo.py
459デフォルトの名無しさん:2009/06/06(土) 18:56:43
初めてのPython第3版いつの間に出てたんだ
第2版持ってるけど買いかなあ?
460デフォルトの名無しさん:2009/06/06(土) 20:24:15
みんパイ(改)は何気に嘘・間違いがコマゴマとあるね。
上のsetもそうだけど、載せるコードは必ず確認するような慎重さというか誠実さはないんだろうね。
461デフォルトの名無しさん:2009/06/06(土) 20:28:36
とくに書いてあること鵜呑みにせざるおえない初心者へ向けてるんだからなおのことなw
462デフォルトの名無しさん:2009/06/06(土) 20:54:26
みんパイは何故か布教する奴がいるからなおさらなぁ…
463デフォルトの名無しさん:2009/06/06(土) 21:22:29
このスレではアンチの必死ぶりばかりが目立つのは気のせいか?
464デフォルトの名無しさん:2009/06/06(土) 21:30:40
>>463
こんなところで毒吐いたってなにも変わらないのにご苦労なことだな(w
しょせんその程度の小さい人間なんだろうが(wWwwwWWwww
465デフォルトの名無しさん:2009/06/06(土) 21:32:17
>>463
アンチっていうかしっかりした公式ドキュメントがあるんだから勧める理由がないんだよ
466デフォルトの名無しさん:2009/06/06(土) 21:34:02
初心者にはとっつき難いんだろ
自己中オタ根性丸出しだと普及しないぞ
467デフォルトの名無しさん:2009/06/06(土) 21:46:46
しっかりしてるから、とっつき難くないよ。
とっつきの悪さというのも「しっかりしてなさ」の一つだと俺は考えるし、
それを含めた上で、しっかりしていると言える。

少なくとも、馬鹿を「わかったような気にさせる」ことに特化したような
不出来な書籍を薦めなきゃいけないほどのとっつきの悪さは、どこにも見出せない。

「手っ取り早くわかった気になりたいです。何を読むのがオススメですか?」
という質問なら、まぁ、みんPyを薦めるかもしれないけど、
「Pythonを身につけたいです。何を読むのがオススメですか?」
という質問なら、俺の回答は公式のドキュメントだな。
468デフォルトの名無しさん:2009/06/06(土) 21:48:56
自己中オタに他人の意見を聞く心の余裕がないのは至極もっともな話だと思った。
469デフォルトの名無しさん:2009/06/06(土) 21:52:36
確かに、公式のドキュメントから目をそらして
みんパイがいいみんパイがいいとうるさい自己中は
余裕がまったく感じられないよね。
470デフォルトの名無しさん:2009/06/06(土) 21:52:38
>>466
金使わせないだけ良心的だろ…
471デフォルトの名無しさん:2009/06/06(土) 21:58:34
ttp://sugaya.otaden.jp/e35093.html

早稲田では手っ取り早く分かった気にさせるような書籍を選んで学生に読ませているのか!
まったくけしからんな!!
472デフォルトの名無しさん:2009/06/06(土) 22:05:30
「初めてのPerl」とか「初めてのPython」は著者が
その言語が好きだと分かる所がいいと思う。

好きで語れる人が書いてるから、こっちもなんか熱くなるw
473デフォルトの名無しさん:2009/06/06(土) 22:07:09
こんどは観念論か。オナって寝ろ(wwwWWwww
474デフォルトの名無しさん:2009/06/06(土) 22:08:22
>>471
間違ってるのは早稲田だよ!
自己中キモオタアンチじゃないよ!!!
475デフォルトの名無しさん:2009/06/06(土) 22:09:44
初めてのPerlは別格だろう
476デフォルトの名無しさん:2009/06/06(土) 22:16:00
>>474
二度目の!マークを増やす書き癖、直したほうがいいと思うよ。

色々バレちゃうし。
477デフォルトの名無しさん:2009/06/06(土) 22:18:36
C、Java、Haskellと一通りやったあとに始めたスクリプト言語だから
初心者の視点が全くわからないんだが、
公式ドキュメント読むだけじゃ理解できないんだろうか?
まぁ俺もJavaやってた頃は分厚い本買って安心したがってたところあるけど
478デフォルトの名無しさん:2009/06/06(土) 22:28:40
>>460-461
初心者にありがちな間違いを敢えて混ぜ込むことで
理解を深めさせるという教育的配慮でございます
479デフォルトの名無しさん:2009/06/06(土) 22:32:24
>>477
Java本はなぜかぶ厚い割に中身がスカスカの本が多いよね
480デフォルトの名無しさん:2009/06/06(土) 22:33:13
キモオタの理論はオリジナリティが高すぎて難解だな!
キモオタ呼ばわりされるのも当然だ!!!
481デフォルトの名無しさん:2009/06/06(土) 22:36:44
>>427 >>447
この辺とくらべて順位の変動はどうなんだろ
http://pc12.2ch.net/test/read.cgi/tech/1153585095/742-745
http://pc12.2ch.net/test/read.cgi/tech/1153585095/773
半年も経ってないからあんまり変わってないかな
482デフォルトの名無しさん:2009/06/07(日) 00:28:52
友達のいない自己中キモオタは終日スレに粘着。
一方著者タソは。

ttp://coreblog.org/ats/joshi-py
483デフォルトの名無しさん:2009/06/07(日) 00:54:46
顔が映ってないってことは不細工なんだろ
なんて嫌味しか言うことができない・・・
負けたよ大負けだ
484デフォルトの名無しさん:2009/06/07(日) 03:07:30
そういえば顔が映ってるひとは
いつも一方からしか撮らせない
ところが池田大作に似てる
485デフォルトの名無しさん:2009/06/07(日) 03:36:34
本の話は他でやれよ
いっつも話の展開が同じだし
486デフォルトの名無しさん:2009/06/07(日) 06:46:23
聞きたいことがあったんだけど
何だったか忘れちゃったので
思い出したらまた来ますね
487デフォルトの名無しさん:2009/06/07(日) 07:32:05
お前らも書籍を書いたり、勉強会を主催したりすれば
Pythonスキーな女性が寄ってくるんじゃないのか?

※ただしイケメンに限る
488デフォルトの名無しさん:2009/06/07(日) 12:52:23
489デフォルトの名無しさん:2009/06/07(日) 22:05:05
勉強会 : ×(自己中だから人が集まらない)
書籍執筆 : ×(書籍を書くほどの脳力と知識がない)
イケメン : ×(骨格からしてダメなので整形不可能。一度死んで生き返るしかない)

キモオタには高いハードル過ぎるな.
490デフォルトの名無しさん:2009/06/07(日) 22:30:45
>>483
本気で勝負しようと思っているところがキモさ倍増ですね。
491デフォルトの名無しさん:2009/06/07(日) 22:47:59
Jython2.5はそろそろ正式版?
ここではα以来スルーされつつ、rc3まで行ってるようだが・・・
492デフォルトの名無しさん:2009/06/08(月) 00:28:40
>>483
勝ち負けの前に同じ土俵にすら乗ってないから(wwWwWWwwwwwwwWwwwWwwwwwwwwwWwwwwwwwww
493デフォルトの名無しさん:2009/06/09(火) 05:26:53
>>489
自己紹介は他でやれ
494デフォルトの名無しさん:2009/06/09(火) 05:53:07
みんパイを批判すると、筋道だった反論は一切来ないけど
批判した人間に対する人格批判がすごいよね、いつも。
495デフォルトの名無しさん:2009/06/09(火) 06:08:53
それが楽しみで巡回してる奴が殆どだろ。
強者には徹底的に媚びへつらい、弱者を探しては煽ったりして楽しむ。
これが2chに出来上がった文化。便所の落書サイトの運命
496デフォルトの名無しさん:2009/06/09(火) 06:46:50
WSGIの質問はここでいいですか?
497デフォルトの名無しさん:2009/06/09(火) 07:40:16
>>495
それは2chの文化を勘違いしてるなぁ。
都合が悪くなったらいつでも「無かったことにして逃げられる」点を利用して、
弱者が強者にデタラメに噛み付くのが2chの文化だよ。
それこそが「こういう所でしか出来ないこと」だからね。
(強者が弱者を攻撃したり搾取したりするのは、実生活でもやれることだから、
そんなのは2chならではの文化になったりはしない)
498デフォルトの名無しさん:2009/06/09(火) 07:56:08
弱者に逃げ道を用意しておくのは大事だろ
それこそ弱者なんだから
どうせ行動力無いんだから言いたいだけ言わせとけよ
499デフォルトの名無しさん:2009/06/09(火) 08:12:50
>>496
どうぞ
500デフォルトの名無しさん:2009/06/09(火) 08:47:00
キモオタはなんでも人格攻撃ということにしたがるよね。
501デフォルトの名無しさん:2009/06/09(火) 09:11:20
もう本の話はどうでもいいだろ。
チュートリアルとリファレンスを読むのが嫌な奴等が買えばいいだけ。
502デフォルトの名無しさん:2009/06/09(火) 12:17:22
むしろ全部読め
503デフォルトの名無しさん:2009/06/09(火) 15:25:53
本の話ではなくてキモオタの話ですよ。
504デフォルトの名無しさん:2009/06/09(火) 15:27:14
>>500
そうでもない。
505デフォルトの名無しさん:2009/06/10(水) 01:11:24
肝を多が全てロリコンじゃないのと同じ理屈なんだよな
たとえ一般人から見れば全てロリコンに見えても。
506デフォルトの名無しさん:2009/06/10(水) 01:34:03
かくいう私もロリコンでね
507デフォルトの名無しさん:2009/06/10(水) 02:59:51
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
508デフォルトの名無しさん:2009/06/10(水) 07:37:19
変数や関数の命名規則に camel, pascal, underbar がありますよね。

言語仕様的にはどれでも良いみたいですが
慣習的に推奨されているものありますか?
509デフォルトの名無しさん:2009/06/10(水) 07:45:26
>>508
PEP 8
Style Guide for Python Code
510デフォルトの名無しさん:2009/06/10(水) 07:45:58
perliament
511デフォルトの名無しさん:2009/06/10(水) 20:14:32
wxPythonのサイトが繋がらない
何でこんな見たいときにかぎって…
512デフォルトの名無しさん:2009/06/10(水) 22:55:58
後で見るかもってページは根こそぎwgetしとくのが基本だぜ?
そんなこんなで俺の「あとで見るかも」フォルダは1TBを超えました
513デフォルトの名無しさん:2009/06/10(水) 23:16:07
デジタル積読か
514デフォルトの名無しさん:2009/06/11(木) 08:49:10
>>511-512
あるよねぇ〜

昼しか繋がらないサイトとか
515デフォルトの名無しさん:2009/06/11(木) 10:15:59
http://www.atmarkit.co.jp/news/200906/09/ase.html

androidでおっぱいできるよ。
516デフォルトの名無しさん:2009/06/11(木) 12:32:54
>>497
そのおかげで誰もあえて指摘しない
明らかにおかしい矛盾点に気がつけるからいいんだけどね
俺もいろいろ洗脳されてた点に気がつけた
517デフォルトの名無しさん:2009/06/11(木) 13:24:39
>>512
そんな基本聞いたこと無いけど(ww
キモオタは自分を基準にしたがるの?
518デフォルトの名無しさん:2009/06/11(木) 13:33:50
>>512
自宅鯖たててsquidキャッシュをつねに串として使えばOK
519デフォルトの名無しさん:2009/06/11(木) 13:36:29
そのフォルダをぜひどこかにアップしてほしい
特にニュース系は消えたり、加工されたり頻繁にあるからなあ
520デフォルトの名無しさん:2009/06/11(木) 15:03:14
yahooのニュースサイトで翌日には見れなくなってるのとか大杉w
きっと過去にさかのぼって読まれたくないんだろうなww
521デフォルトの名無しさん:2009/06/11(木) 15:16:09
>>515
2.6.2は嬉しいですね


スクリプトで実現可能な処理の例として、

インテントの処理
アクティビティの開始
テキストメッセージの送信
バーコードのスキャン
ロケーションやセンサー入力の読み取り
テキスト読み上げ
522デフォルトの名無しさん:2009/06/11(木) 18:25:45
>>520
あれは新聞社から記事をいついつまで掲載していいって条件で借りて載せてるから
523デフォルトの名無しさん:2009/06/12(金) 03:22:43
なんか板違いが多いな
web板逝けよ
http://pc11.2ch.net/test/read.cgi/php/1163513344
524デフォルトの名無しさん:2009/06/12(金) 07:26:38
それコピペ
525デフォルトの名無しさん:2009/06/12(金) 12:56:23
>>497
「ハッカーになろう」とか希望的観測書きまくりな文章をそのまま信じないで
なんか一部変なんじゃねと思えるようになるよ
526デフォルトの名無しさん:2009/06/12(金) 13:05:09
うそをうそと見抜けないひとは
2chを利用しようと思わない方がいい
527デフォルトの名無しさん:2009/06/12(金) 14:40:51
↑うそです
528デフォルトの名無しさん:2009/06/12(金) 14:49:37
クレタ人「クレタ人はうそつきである」
529デフォルトの名無しさん:2009/06/12(金) 15:13:24
クレタ人はうそつきではありません。
うそつきは僕です。
530デフォルトの名無しさん:2009/06/12(金) 15:22:52
>>525
希望的観測書きまくりな文章をそのまま信じるような人間は、
2chに来たら2ch信者になってるよ。
「2chは社会に大きな影響を与えている」「強権によって隠された真実が書いてある」
「世論を動かしている」「あの人はこのスレを見てる」「2chねらは強いんだぞぅ!」etc。
531デフォルトの名無しさん:2009/06/12(金) 15:24:55
>>530
2chのネタをマジで書いてると信じちゃってる人乙
532デフォルトの名無しさん:2009/06/12(金) 15:50:16
それって論理的にいって、2chのレスに向かっては書けないよね。
533デフォルトの名無しさん:2009/06/12(金) 16:14:20
2ちゃんねるに書いてあることをマジで信じてる奴は実際いろいろ見られるけどなw
534デフォルトの名無しさん:2009/06/12(金) 16:24:41
言えてる
535デフォルトの名無しさん:2009/06/12(金) 16:42:33
日本語とロシア語しか分からないのでロシアのサイトを使って勉強をしたいのですが
Pythonはロシアでも人気ですか?
536デフォルトの名無しさん:2009/06/12(金) 17:16:59
ブッシュが下院で弾劾決議されてるのは2chで初めて知った
もちろんマスゴミは一切そういうことは報道しない
まあ情報収集の大事なツールの1つさ
537デフォルトの名無しさん:2009/06/12(金) 17:30:33
アメリカの政治についてのニュースが本当に知りたい人は、
普通アメリカのニュースサイトを巡回しない?
自分で勝手にアンテナ低くしてる人の有り難がり方で、たまの一発をアピールされても・・・。
538デフォルトの名無しさん:2009/06/12(金) 17:35:23
おまいらスレ違いもいい加減にしろ
539デフォルトの名無しさん:2009/06/12(金) 17:39:58
Pythonにはスレ違いをやめさせるライブラリって無いんですか?
540デフォルトの名無しさん:2009/06/12(金) 18:09:06
>>537
いつも外国の情報は日本では報道しないならそうだが、
マスゴミに都合の良いニュースだけ取捨選択して垂れ流すのが問題なんだよ。
その外国だって偏向だろうし。

まぁ、TV見てる奴信じてる奴がアホなんだが。
541デフォルトの名無しさん:2009/06/12(金) 18:13:48
>>539
import this
542デフォルトの名無しさん:2009/06/12(金) 18:15:05
>>541
つまんねーよ
543デフォルトの名無しさん:2009/06/12(金) 18:15:17
>>535
ttp://www.python.ru

Linux入れてru_RU.UTF-8かru_RU.KOI8-Rで使うのをお薦め
GNOMEでキーボードレイアウトもロシア語、日本語、英語等
システムトレイで簡単に切り替えが出来る。
544デフォルトの名無しさん:2009/06/12(金) 18:31:23
>>542
SyntaxError
545デフォルトの名無しさん:2009/06/12(金) 18:52:39
>>544
馬鹿?
546デフォルトの名無しさん:2009/06/12(金) 19:50:58
ファイル読み込みで
text = unicode(open('hoge.txt','Ur').read(),'utf-8')
と書くと
IOError: invalid mode: Ur
になってしまいます。

Ur の意味は 下のサイトによると Unicode の読み込みだとわかりました。
http://www.logos.ic.i.u-tokyo.ac.jp/~yunabe/pukiwiki/index.php?Development%2Fpython
r だけにすれば読み込めることもOKです。

ですが何故エラーになってしまうのかがわかりません。
何を間違えているのでしょうか?
バージョンは2.6です。
547デフォルトの名無しさん:2009/06/12(金) 20:02:50
悪いがエラーを再現できない
548デフォルトの名無しさん:2009/06/12(金) 20:07:08
ほんとに2.6を使っているかを確かめてみたら?
python -V だっけ?
549デフォルトの名無しさん:2009/06/12(金) 20:17:07
>>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を読みに行ってました…。
551デフォルトの名無しさん:2009/06/12(金) 21:12:32
焦って調べた。
U は universal newline じゃねーか。 Unicode じゃないよ。
552デフォルトの名無しさん:2009/06/12(金) 21:42:30
>>545
5点。
553デフォルトの名無しさん:2009/06/12(金) 21:44:00
>>552
クソレスばかりしてんじゃねーぞ
554デフォルトの名無しさん:2009/06/12(金) 22:36:02
>>553
クソレス
555デフォルトの名無しさん:2009/06/12(金) 22:44:49
PyPyでどんな面白いことが出来るの?
556デフォルトの名無しさん:2009/06/12(金) 23:04:38
>>555
電信柱をぶん投げてそれに乗って海外へ行けるようになる。
557デフォルトの名無しさん:2009/06/12(金) 23:50:57
スレ違いの話題を最初に振る人は覚悟して振りましょう
本のアンチをやめさせるなど何か意図があったのかもしれませんが
その話題でどっちが正しいかの論争になりますので
当初の意図と違う方向にいってからスレ違いと騒がれても困ります
558デフォルトの名無しさん:2009/06/13(土) 00:01:59
>>557
>本のアンチをやめさせる

単著が欲しいなら日本語を勉強しような。
559デフォルトの名無しさん:2009/06/13(土) 00:28:54
誰が短小やねん!
560デフォルトの名無しさん:2009/06/13(土) 01:35:57
>>549
modeの't'って何?
561デフォルトの名無しさん:2009/06/13(土) 05:51:30
>>560
'text' という意味。デフォルトだから気にしなくていいよ。
逆に、バイナリファイルを読み込む時には 'b' を入れる必要がある。
初心者が Linux では動くけど Windows では動かないプログラムを書いて
しまう落とし穴の一つ。
562デフォルトの名無しさん:2009/06/13(土) 06:06:44
>>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'が追加されるし。
563デフォルトの名無しさん:2009/06/13(土) 13:43:19
pylabでグラフの縦横スケールを同じにするオプションと
グラフ描画範囲(xrange?)を指定するオプションを同時に使えない

他のプロットツール使ったほうがいいの?
他にいいの知らないのだけど
564デフォルトの名無しさん:2009/06/13(土) 14:52:53
まじかよ…pylab終わったな
565デフォルトの名無しさん:2009/06/13(土) 17:36:30
改行を含むような文字列を、正規表現を使って一行ずつに分解しようとしたのですがうまく行きません。
どなたかアドバイスを。

>>> input = "foo¥nbar¥nbaz¥n"
>>> rexp = re.compile(r'^', re.M)
>>> print rexp.split(input)
['foo¥nbar¥nbaz¥n']
566デフォルトの名無しさん:2009/06/13(土) 17:40:28
>>565
なんでそんなことにregexpが必要なんだよ
input.split('\n')でいいだろ
567デフォルトの名無しさん:2009/06/13(土) 17:41:31
言えない。.splitlines()なんて言えない
568デフォルトの名無しさん:2009/06/13(土) 17:41:36
>>> "abc\ndef\nxyz".split('\n')
['abc', 'def', 'xyz']
569デフォルトの名無しさん:2009/06/13(土) 17:42:59
無理にでも正規表現を使いたいなら
re.compile(r'\n', re.M)

ただし末尾に空白文字列が入る
570デフォルトの名無しさん:2009/06/13(土) 18:26:17
ppkdってどこかに落ちてない?
571デフォルトの名無しさん:2009/06/13(土) 20:04:31
>>566,568
正規表現で r'^' を使っていることからわかると思ったのですが、
改行文字を含めたまま行ごとに分解したかったのでsplit()は使ってません。

>>567
splitlines() というのがあるんですか。ありがとうございます。
でもできれば正規表現でできたほうが、いろいろ融通がきいてありがたいんですか。
ていうか、r'^' でなんで行ごとに分解できないんでしょうか。
572デフォルトの名無しさん:2009/06/13(土) 21:53:22
>>> re.findall(r'^.+\n?', 'foo\nbar\nbaz\n', re.M)
['foo\n', 'bar\n', 'baz\n']

573デフォルトの名無しさん:2009/06/14(日) 09:38:46
>>543
ruドメインのspam多いんだよなぁ
574デフォルトの名無しさん:2009/06/14(日) 09:44:39
>>571
正規表現は
文字列全体にではなく
行ごとに適用されるので
それを無効にするための
オプション指定が必要
575デフォルトの名無しさん:2009/06/14(日) 10:24:29
>>574
オプション指定というのがre.Mのことであれば、>>565に書いてますが、すでに指定しています。
576デフォルトの名無しさん:2009/06/14(日) 11:48:37
>>574はうそ。だまされるな。
577デフォルトの名無しさん:2009/06/14(日) 14:27:52
>>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']

こんなとか。
578デフォルトの名無しさん:2009/06/14(日) 17:25:39
>>577
代替案ありがとうございます。
でも結局、Pythonでは r'^' で split できないということなんですよね。
うーん、こんな落とし穴があろうとは。

>[currLine + "¥n" for currLine in rexp.findall(sample)]
これは sample の最後が¥nでない場合に違った結果に成りますよね。
まあsample[-1]を調べればいいだけなんですけど。

579デフォルトの名無しさん:2009/06/14(日) 17:35:37
from StringIO import StringIO
s = 'HOGE\nFUGA\nMOGA'
sio = StringIO(s)
L = sio.readlines()
print L
580デフォルトの名無しさん:2009/06/14(日) 17:39:22
579 は改行が CRLFとLFのときのうまくいく。
CRだけの時には分割されない。
readline は、LFで分割してるんだな。
581デフォルトの名無しさん:2009/06/14(日) 17:40:06
r'^'で改行で区切れないことが落とし穴なの?
582デフォルトの名無しさん:2009/06/14(日) 17:44:30
俺も最近悩んだんだが、改行コード混在のデータを
混在したまま編集・加工するってのは茨の道。
素直に改行コード統一するのが一番いい。
583デフォルトの名無しさん:2009/06/14(日) 17:45:55
>>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
どうやったら標準出力取得できますか?
585デフォルトの名無しさん:2009/06/14(日) 19:03:42
GetStdHandle
586デフォルトの名無しさん:2009/06/14(日) 21:58:31
>>578
>でも結局、Pythonでは r'^' で split できないということなんですよね。
>うーん、こんな落とし穴があろうとは。

^は行頭じゃなくて文字列の先頭にmatchする
587デフォルトの名無しさん:2009/06/14(日) 22:02:51
>>580
>CRだけの時には分割されない。

Macのファイル?無視無視
588デフォルトの名無しさん:2009/06/14(日) 22:13:33
>>582
改行コード混在(LF,CR,CR+LF)のものを
LFのみに統一するための
一発でできる正規表現ってありますか?
589デフォルトの名無しさん:2009/06/14(日) 22:16:22
正規表現ブームだなw
590デフォルトの名無しさん:2009/06/14(日) 22:19:16
591デフォルトの名無しさん:2009/06/14(日) 23:03:34
>>582
modeを'rU'にしてopenすればいいんじゃないの?
592デフォルトの名無しさん:2009/06/14(日) 23:24:57
>>582
混在って一個のテキストデータの中に
いろんな改行が混ざってんの?
なんだそれ
593デフォルトの名無しさん:2009/06/14(日) 23:26:24
>>592
たとえば、photoshopEPS/JPEGがそう。
594デフォルトの名無しさん:2009/06/15(月) 00:13:57
xincludeあたり使うと混ざったxml文書ができあがることもある
595デフォルトの名無しさん:2009/06/15(月) 01:14:06
>>588
の答えが無いね。
596デフォルトの名無しさん:2009/06/15(月) 02:44:17
>>588
'\r\n?' これでいけんじゃない?
597デフォルトの名無しさん:2009/06/15(月) 03:03:48
\r\n と \n と \r が混在してたら、

\r\n は一つの改行なのか、
\r + \n の2つの改行なのか
区別できないなw。
598デフォルトの名無しさん:2009/06/15(月) 03:11:31
よくわからんがもはや正規表現単独の話題のような・・・
599デフォルトの名無しさん:2009/06/15(月) 03:18:06
>>597
そんな時は前後の文章から話題が変わったか
どうかで判断すればいいんじゃない?
600デフォルトの名無しさん:2009/06/15(月) 04:25:29
>>592
引用符""付かないのに項目中に改行が入ってるcsvとか
601デフォルトの名無しさん:2009/06/15(月) 08:04:37
Python使いはみんな正規表現嫌いなのかと思ってたが
意外に食いつきがよかったでござるの巻
602デフォルトの名無しさん:2009/06/15(月) 08:09:05
Pythonじゃないけどnkfのソースでも見たほうが早いんじゃねぇの?
603デフォルトの名無しさん:2009/06/15(月) 08:19:13
途中で改行の表現が変わるために文脈の判断が必要だとしたら
一発で解く正規表現を求めるのなんて時間の無駄くさくないか
604デフォルトの名無しさん:2009/06/15(月) 09:29:15
任意の状況に対応するのは必要だが、元のデータの仕様を整備した方が簡単だし確実。
そもそもそこまで気にするなら、文字コード自体が(r
605デフォルトの名無しさん:2009/06/15(月) 10:23:04
マスゴミに都合の良いニュースだけ取捨選択して垂れ流すのが問題なんだよ。
606デフォルトの名無しさん:2009/06/15(月) 10:33:47
>>601
正規表現のキーワード、覚えられません><
どうして\beginじゃなくて^で、\endじゃなくて$なんでしょうか。
perl臭いです。
607デフォルトの名無しさん:2009/06/15(月) 11:01:01
perlは関係ない
608デフォルトの名無しさん:2009/06/15(月) 11:07:19
>>606
嫌ならオレオレ表現から正規表現へのトランスレータでも作ればいいだろ
609デフォルトの名無しさん:2009/06/15(月) 11:10:05
(*)とか(:)の性器表現ってのはどうだ
610デフォルトの名無しさん:2009/06/15(月) 11:10:06
ところで諸兄はエディタ・IDEは何をお使いですか。
とりあえずEclipse+pyDevでお勉強中なのですが、
なんかJava臭いwのでなんとかしたいのです。
The Eric Python IDE
Wing IDE Personal (有料ですが使いやすいなら$35くらいおk)
等どうかなぁと思うんですが。
611デフォルトの名無しさん:2009/06/15(月) 11:33:41
xyzzy
idle
612デフォルトの名無しさん:2009/06/15(月) 12:13:55
Emacsのpython-mode
613デフォルトの名無しさん:2009/06/15(月) 13:05:58
みんなストイックすぐる…
変数ウォッチとかオートコンプリートとか
組み込みのUnitテストとか無いとやだいやだい
614デフォルトの名無しさん:2009/06/15(月) 13:14:14
いまさらですが。

> 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'
615デフォルトの名無しさん:2009/06/15(月) 15:27:56
gedit
616デフォルトの名無しさん:2009/06/15(月) 15:29:10
osiri
kaikai
617デフォルトの名無しさん:2009/06/15(月) 15:56:08
emacsにpythonのリファクタリングツールあるけど、あれって便利なのかな
618デフォルトの名無しさん:2009/06/15(月) 19:52:07
Eclipseはpython専用エディタになってる
もとはjavaだったな
619デフォルトの名無しさん:2009/06/15(月) 21:00:06
komodo edit(komodo ideでもいいけど)はよくなってきたよなあ
620デフォルトの名無しさん:2009/06/15(月) 21:31:01
Aptana Studio なかなかいいよ。
rubyや、javascriptと比べると、もう一つpythonにはサポート薄いけど。
621デフォルトの名無しさん:2009/06/15(月) 22:15:32
流れきってすみません
SOAPとかWSDLとか詳しい方いたら教えてください。

ttp://wikipedia-lab.org/ja/index.php/Wikipedia_API
このサイトのWikipediaシソーラス検索APIをPythonで使いたいと思いSOAPpyをインストールして

from SOAPpy import WSDL
service = WSDL.Proxy("http://wikipedia-lab.org:8080/WikipediaOntologyAPIv3/Service.asmx?WSDL")
for x in service.methods.keys():
print x

というプログラムを書いてWSDL経由でメソッド名を取得するところまでできたのですが、この先がわかりません。上のサイトのサンプルコードと同じこと(Microsoftの類義語を検索)をPythonでどう書けばよいでしょうか。
622デフォルトの名無しさん:2009/06/16(火) 02:55:37
>>620
AptanaはEplipse+pydevだろ
623デフォルトの名無しさん:2009/06/16(火) 06:49:48
624デフォルトの名無しさん:2009/06/16(火) 08:37:18
Eric IDEと、wxPythonのプラグインを入れてみた… おお。SUGEEEE。
625デフォルトの名無しさん:2009/06/16(火) 09:06:49
ZUGOOOO
626デフォルトの名無しさん:2009/06/16(火) 09:07:33
いいね
627デフォルトの名無しさん:2009/06/16(火) 09:39:22
vim一択
628デフォルトの名無しさん:2009/06/16(火) 09:55:33
いやそれはエディターじゃないの
629デフォルトの名無しさん:2009/06/16(火) 11:19:14
emacs一択の馬鹿は結構いるんだよな
なんでもかんでもemacsで済まそうとする
630デフォルトの名無しさん:2009/06/16(火) 11:22:40
>>629
ごめんなさい
631デフォルトの名無しさん:2009/06/16(火) 11:27:06
>>629
おまえは何使ってるんだ?
632デフォルトの名無しさん:2009/06/16(火) 12:22:45
大規模に開発するには、やはりIDE、しかもPython専用のを使いたいな。
Ericよさそうですね。でも俺友達いないから、一人subversionやっても空しいだけだよね。
633デフォルトの名無しさん:2009/06/16(火) 12:34:07
>>632
昨日の自分は明日の他人だ
一人subversionには意味がある
634デフォルトの名無しさん:2009/06/16(火) 12:35:14
>>629
ブラウザまでemacsなんですね
わかります
635デフォルトの名無しさん:2009/06/16(火) 12:57:50
>>629
emacs儲は本当にうざいですよね、Lispに付いて語るの止めて欲しいです。
今やってるプロジェクトはPython/Zopeなんですから、もういいですから。
navi2chでニヨニヨしてるとか見てて恥ずかしいです。
636デフォルトの名無しさん:2009/06/16(火) 13:00:46
Zopeの人ってみんなこうなんだね。怖いね。
637デフォルトの名無しさん:2009/06/16(火) 13:24:56
厨二病的に「Zope最強だぜ!!!」なんです
638デフォルトの名無しさん:2009/06/16(火) 14:47:10
一人subversionしてる俺が通りますよ
639デフォルトの名無しさん:2009/06/16(火) 14:52:01
一人subversionとか、なんか、悲しすぎる…
640デフォルトの名無しさん:2009/06/16(火) 14:53:24
少なくともこのスレでemacs厨が暴走なんてしてないのに
あいつらキモ委よな、みんなそう思うだろ?な?な?
とか勝手に同意を押しつける方がよっぽど不快。



ところで、
みんなviこそ最強の開発環境だと思うだろ?な?な?


641デフォルトの名無しさん:2009/06/16(火) 14:55:16
netbeansはデフォルトでhg入ってたぞ
642デフォルトの名無しさん:2009/06/16(火) 14:58:24
ひとりHGなめんな
643デフォルトの名無しさん:2009/06/16(火) 14:59:32
>>640
VisualStudioが最強に決まっているじゃないか。
そして最強の言語はPython。つおい。
つまりIronPythonStudioが最強だと当然みんな思うだろ?な?なぁ?
644デフォルトの名無しさん:2009/06/16(火) 15:05:19
>>641
>netbeansはデフォルトでhg入ってたぞ
これってさ、mercurialがjavaに移植されたの?
それともJython上でmercurialを動かしてるの?
645デフォルトの名無しさん:2009/06/16(火) 15:58:18
IronPython Studio は document って変数名を使おうとすると
勝手に Document にするのがうざいから使うのをやめた
646デフォルトの名無しさん:2009/06/16(火) 16:55:16
PyScripter使ってる
他のも試してみたいけど、なかなかめんどくさい
647デフォルトの名無しさん:2009/06/16(火) 18:26:05
それどこの宿題
648デフォルトの名無しさん:2009/06/16(火) 20:59:37
>>617
ropeを使ってるやつかな
rope、リファクタリングに加えてideの補助ライブラリも含まれてて、
xyzzyから呼び出して補完に使ってみたりしてた
なんだけどあれプロジェクト作らないとダメで(まあ当たり前か)
ちょっと軽快さ減だしあんまでかいのはpythonでは作らないんで気にしないことにした
649デフォルトの名無しさん:2009/06/16(火) 21:54:04
>>623
トン、dive into pythonにSOAPの章なんてあったんだ!
読んでみます。
650デフォルトの名無しさん:2009/06/16(火) 22:35:28
pythonでテキストエディタ作るのとC++でテキストエディタ作るのはどっちが難しいですか?
651デフォルトの名無しさん:2009/06/17(水) 00:06:29
>>650
パイソンだと単独で配布できる実行ファイル形式にするのが面倒なので、
パイソンの方が難しい。
652デフォルトの名無しさん:2009/06/17(水) 01:39:43
そんなばかな
653デフォルトの名無しさん:2009/06/17(水) 02:02:08
「難しい」のと「面倒くさい」のは別だからなぁ
654デフォルトの名無しさん:2009/06/17(水) 03:41:52
Jython 2.5.0 final 来たね
655デフォルトの名無しさん:2009/06/17(水) 04:00:23
Jython 2.5.0 fatal にみえた orz
656デフォルトの名無しさん:2009/06/17(水) 23:43:26
JSONでいいよ
657デフォルトの名無しさん:2009/06/18(木) 05:51:32
Jython汚ね
658デフォルトの名無しさん:2009/06/18(木) 09:59:17
PythonでのSOAPライブラリってSOAP.py使えばいいんですか?
随分と更新されていないようですし、ドキュメント通りにインストールもできず、困っております。
Pythonは2.5で
659デフォルトの名無しさん:2009/06/18(木) 10:38:34
来たね
北ね
喜多ね
木田ね
着たね

>>657
馬鹿辞書
660デフォルトの名無しさん:2009/06/18(木) 11:50:04
Vimを使っている人いますか。
autoindentやsmartindentをonにしているときに、インデントを浅くする(一段戻る)方法が分かりません。
たとえば■がカーソルを表すとして

def f():
  return 1
  ■

カーソルがこの位置にある時に、インデントを戻す方法が分かりません。
BackspaceやC-hを押してもインデントに変化なし。
今はいちいちESCを押して'<<'を押して戻っているんですけど、バカすぎる。
誰か助けて。
661デフォルトの名無しさん:2009/06/18(木) 12:01:59
>>660
vim を使っているが、そんな症状にはならない。
return文の後に改行すると自動でインデントが元に戻るし、
自分でインデントを調整したい場合は C-h か BS でできる。
662 ◆y2Thaiwan2 :2009/06/18(木) 12:14:34
663デフォルトの名無しさん:2009/06/18(木) 12:17:15
^A
664デフォルトの名無しさん:2009/06/18(木) 12:33:13
python使いならeditraのソースコードぐらい読めるよな?
665デフォルトの名無しさん:2009/06/18(木) 12:42:34
>>660
Ctrl+D でインデントを減らす事ができました。またCtrl+Tで増やせます。
お騒がせしました。
666デフォルトの名無しさん:2009/06/18(木) 14:31:52
Ericイイ
667デフォルトの名無しさん:2009/06/18(木) 14:46:26
頭文字の話かよ
668デフォルトの名無しさん:2009/06/18(木) 14:49:38
python.elで
C-M-TAB
で補完しようとしたら1つ前の補完候補らしきものにジャンプしてから補完しやがった
669デフォルトの名無しさん:2009/06/18(木) 14:51:15
間違った
C-M-i
だった
670デフォルトの名無しさん:2009/06/18(木) 21:01:36
>>660
set backspace=indent
671デフォルトの名無しさん:2009/06/18(木) 21:06:54
editraはいつになったら実用に耐えうるレベルになるの?
672デフォルトの名無しさん:2009/06/18(木) 22:00:51
日本語さえ入力できるようになれば最強過ぎるeditraちゃん
ここのスレの住民でデバッグしたらええがな
673デフォルトの名無しさん:2009/06/18(木) 22:06:55
なんだそれ!ヨサゲじゃん
リポジトリに無いだろうと思って検索かけたらあった
ちと入れてくる
674デフォルトの名無しさん:2009/06/18(木) 22:08:42
wxGTKが要るのか
675デフォルトの名無しさん:2009/06/19(金) 00:29:33
editraはPythonシェル/クラスブラウザ付きエディターなのかな。デバッグ機能は無さそうだけど、
お手軽なスクリプトを書くには十分そう?
IDEはEric最強っぽいな。Eclipse+PyDevはいまいち弱い
676673:2009/06/19(金) 00:54:26
あ!インストールしたの忘れてた
自分のレス見て思いだした orz
677デフォルトの名無しさん:2009/06/19(金) 02:30:33
pyscriptor使ってるけど、ちょっともっさりだね。
機能的には不満ないんだが。もともと補完無しで書いてたし。
678デフォルトの名無しさん:2009/06/19(金) 03:47:20
Eric最強
679デフォルトの名無しさん:2009/06/19(金) 04:15:22
> Eclipse+PyDevはいまいち弱い

PyDevは、上位の商用版を売りたいためのものだから、弱いのは当然だなぁ。
Ericはかなり最強ですな… そもそもPythonで書かれてるからな。
自分で自分を開発するという変態IDEですね。わかります。
680デフォルトの名無しさん:2009/06/19(金) 04:17:50
emacsも変態なんですね。わかります。
681デフォルトの名無しさん:2009/06/19(金) 04:22:27
もちろんemacsは変態です。わかります。
682デフォルトの名無しさん:2009/06/19(金) 04:45:44
確認するまでもありません
683デフォルトの名無しさん:2009/06/19(金) 05:54:32
eric入れるとpythonの実行遅くなる?
684デフォルトの名無しさん:2009/06/19(金) 06:41:58
>>683
えっ  なぜに??
685デフォルトの名無しさん:2009/06/19(金) 10:43:17
Windows で Eric4 使ってるかたに質問です。
Plugins を追加するときに ZIP からしか選べないようなのですが、
wxPython の Plugin は tar.gz で提供されていて、
無理やり選んでも ZIP じゃないからって怒られてしまいます。
ZIP 版のもあるのでしょうか?
686デフォルトの名無しさん:2009/06/19(金) 11:15:40
ericってなんですか?
ググっても音楽関係とか教育機関がヒットしてしまいます
687デフォルトの名無しさん:2009/06/19(金) 11:20:27
688デフォルトの名無しさん:2009/06/19(金) 12:25:23
editraで日本語入力がおかしいのは何が原因か分かる人いませんか?
689デフォルトの名無しさん:2009/06/19(金) 14:07:37
エディタスレになったw
690デフォルトの名無しさん:2009/06/19(金) 14:37:25
691デフォルトの名無しさん:2009/06/19(金) 15:28:30
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.

692デフォルトの名無しさん:2009/06/19(金) 15:39:27
相互リンク

テキストエディタEditraを語ろう!
http://pc12.2ch.net/test/read.cgi/software/1240631227/
693デフォルトの名無しさん:2009/06/19(金) 16:13:17
694デフォルトの名無しさん:2009/06/19(金) 21:04:23
>>670
setlocal backspace=indent
でいけました。さんくす。
695デフォルトの名無しさん:2009/06/20(土) 12:30:47
Emacsってもう時代遅れなんですか?
先輩にエディタと言えばEmacsしかないっ!って言われてEmacs使ってんすけど・・・
696デフォルトの名無しさん:2009/06/20(土) 12:51:01
>>695
こうして変態文化は連綿と継承されていくのですね。わかります。
697デフォルトの名無しさん:2009/06/20(土) 13:16:40
俺もEmacs使ってるよ。
698デフォルトの名無しさん:2009/06/20(土) 13:23:12
VimとEmacsは不滅です
699デフォルトの名無しさん:2009/06/20(土) 15:12:11
>>695
Sony news800シリーズとか、縦長のキャラクターコンソールだったら、
Emacsがわりと使いやすいと思うよ。
700デフォルトの名無しさん:2009/06/20(土) 16:50:30
djangoの話題を扱ったスレってどっかにないでしょうか?
701デフォルトの名無しさん:2009/06/20(土) 16:56:16
702デフォルトの名無しさん:2009/06/20(土) 17:09:22
editraを日本仕様に改造しようプロジェクトやります
703デフォルトの名無しさん:2009/06/20(土) 17:09:58
>>701
なるほどWebProgって板があったのね
ありがとう!
704デフォルトの名無しさん:2009/06/20(土) 17:13:28
>>702
日本仕様って、例えば何すんの?
705デフォルトの名無しさん:2009/06/20(土) 17:17:44
editraってPythonで書かれてるのかすごいな
706デフォルトの名無しさん:2009/06/20(土) 17:22:44
だから起動が重いのか
707デフォルトの名無しさん:2009/06/20(土) 17:31:11
Pythonってちょっと深めの再帰をさせるとRuntimeErrorになるのが嫌だな。
Guidoも末尾再帰の最適化はしないって言ってるし。
関数型言語っぽい機能がそれなりにある分、期待してしまう。
708デフォルトの名無しさん:2009/06/20(土) 17:57:15
そーゆー人向けにスタックレスなアレがあるんじゃないのかな。707が評価報告してスレのみんなを幸せにしておくれ
709デフォルトの名無しさん:2009/06/20(土) 18:01:16
>>707
読みやすくなるわけでもない書き換えを推奨する仕様を
入れたくないのは分かる気がするんだけどなあ

可読性そのままで再帰を最適化する仕様ってないだろうか
710デフォルトの名無しさん:2009/06/20(土) 18:09:21
可読性そのままで再帰を最適化する例を紹介してください
711デフォルトの名無しさん:2009/06/20(土) 18:23:24
そんなのあったらもうすでに実装が検討されてるだろ……

継続渡しスタイルで末尾再帰以外も最適化できるという話もあるが、
継続そのものが可読性損なうので難しいね。

継続のサブセットとしてジェネレータ(*)があるけど、ジェネレータは可読性がいいから、
最適化目的だけなら可読性損なわない仕様を作れるのかもしれない。
ただ、そういうのは聞いたことがないな

(*)Pythonのジェネレータは継続じゃないけど……
712デフォルトの名無しさん:2009/06/20(土) 18:52:18
python信者ならeditraのソースコードは読めて当然
713デフォルトの名無しさん:2009/06/20(土) 19:43:44
>>707
深さ制限のデフォルトがあるだけだから
それを増やせばOSが許す限りは逝けたような
714デフォルトの名無しさん:2009/06/20(土) 19:54:19
generator最強
715デフォルトの名無しさん:2009/06/20(土) 20:34:35
'-'.join(a);
716デフォルトの名無しさん:2009/06/20(土) 20:52:36
>>704
ドジっ子なんたら機能
717デフォルトの名無しさん:2009/06/20(土) 21:01:14
末尾再帰を最適化するのは一応可能
ttp://code.activestate.com/recipes/474088/

でも、推奨されないから、言語にも含まれない。
末尾再帰は、同じくらいシンプルで読める人の多いループに書き直せる。
718デフォルトの名無しさん:2009/06/20(土) 21:18:37
話になっているのは
末尾再帰じゃなくてただの再帰
719デフォルトの名無しさん:2009/06/20(土) 21:28:43
末尾再帰ってなんぞ
720デフォルトの名無しさん:2009/06/20(土) 21:43:53
>>719
再帰的な関数を作って深い再帰をするとRuntimeエラーが起こる
これを関数の最後に再帰部分が来るようにすると
コンパイラが自動的にループに変換して
Runtimeエラー起こさないようにするのが末尾再帰最適化

ただ末尾再帰にして可読性を落とすんなら
手動でループに変換しても可読性のメリットないし、って話
721デフォルトの名無しさん:2009/06/20(土) 21:58:12
>>701
URLにphpが入ってるから冗談だと思った。
722デフォルトの名無しさん:2009/06/20(土) 23:11:07
>>720
ありがとん。初めて聞いた。
723デフォルトの名無しさん:2009/06/21(日) 02:05:24
tkinterってなんて読むの?
724デフォルトの名無しさん:2009/06/21(日) 02:22:02
チンコキッター

とは読めないな流石に
725デフォルトの名無しさん:2009/06/21(日) 02:36:30
てぃーけー・いんたー
726デフォルトの名無しさん:2009/06/21(日) 02:58:16
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   ヽ
727デフォルトの名無しさん:2009/06/21(日) 04:48:07
AAうざ
728デフォルトの名無しさん:2009/06/21(日) 05:48:54
Tcl/Tk Interfaceと分かっていれば、自ずと答えは出るはずだな?
729デフォルトの名無しさん:2009/06/21(日) 06:24:58
PyQtは
730デフォルトの名無しさん:2009/06/21(日) 07:16:57
731デフォルトの名無しさん:2009/06/21(日) 14:17:59
ピクティー
732デフォルトの名無しさん:2009/06/21(日) 16:40:28
パンティー
733デフォルトの名無しさん:2009/06/21(日) 17:07:37
PyQtが糞だからwxWidgetsが出来たんでしょ?
734デフォルトの名無しさん:2009/06/21(日) 18:49:14
えっ
735デフォルトの名無しさん:2009/06/21(日) 20:54:35
下衆の勘繰りとはよく言ったものだ
736デフォルトの名無しさん:2009/06/21(日) 20:56:00
Qt -> wxWidget

PyQt -> wxPython

みたいな位置付けだと思うのですが
どうなんでしょう?
737デフォルトの名無しさん:2009/06/21(日) 20:57:43
矢印は不適切だった

Qt - wxWidget - Tcl/Tk

PyQt - wxPython - tkinter

こんな感じ?

738デフォルトの名無しさん:2009/06/22(月) 07:06:23
wxPythonのi18nってどうやんの?
739デフォルトの名無しさん:2009/06/22(月) 08:00:30
PyQtって糞なん?
740デフォルトの名無しさん:2009/06/22(月) 10:51:13
多分、733は「Qtが糞だからwxWidgetsが出来たんでしょ?」
と書きたかったのではと思われます。
741デフォルトの名無しさん:2009/06/22(月) 10:54:11
  Qt   wxWidget    Tcl/Tk
  ↑    ↑       ↑
  ↓    ↓       ↓
PyQt   wxPython   tkinter

って書きたかったんじゃないのか?
742デフォルトの名無しさん:2009/06/22(月) 11:03:57
結局どれ使えばいいんスか?

簡単なのお願いします。
GUIデザイナーとかは無いっスか?
743デフォルトの名無しさん:2009/06/22(月) 16:41:52
NetBeansでおk
744デフォルトの名無しさん:2009/06/22(月) 16:51:28
>>742
PyQt も wxPython もデザイナ使えるよ。
745デフォルトの名無しさん:2009/06/23(火) 08:21:55
Pythonって標準で定数ってないの??
constクラスを自作するってのは無しで。
746デフォルトの名無しさん:2009/06/23(火) 08:27:08
ない
747デフォルトの名無しさん:2009/06/23(火) 12:16:55
editraを改造するためにpythonを学んでいるものです
editraってguiライブラリとか使われてますかね?
ソース見てもよくわからないもので・・
748デフォルトの名無しさん:2009/06/23(火) 12:19:36
標準の定数ってなんだろう。TrueとFalseか?
math.piとかか。
749デフォルトの名無しさん:2009/06/23(火) 12:27:29
名前が大文字で始める変数の書き換えがエラーになるとかそういうのを期待しているんじゃ。
750デフォルトの名無しさん:2009/06/23(火) 12:30:31
>>> import math
>>> math.pi
3.1415926535897931
>>> math.pi=0
>>> math.pi
0
>>> True
True
>>> True=False
>>> True
False
>>>

定数じゃないらしいw
751デフォルトの名無しさん:2009/06/23(火) 12:32:50
なんか変なバグの温床になりそうだなぁ
752デフォルトの名無しさん:2009/06/23(火) 14:09:31
おまいらユニットテストしっかり書いてる?
753デフォルトの名無しさん:2009/06/23(火) 14:49:14
書いてない
しっかり書いてる人は尊敬するわ
754デフォルトの名無しさん:2009/06/23(火) 15:14:44
書き方知らん。
教えてくれろ。
755デフォルトの名無しさん:2009/06/23(火) 15:39:09
DocTestでコメント内に埋め込んで書いておくだけ…ではカバレージが低いんだよな。
申し訳ありません。
756デフォルトの名無しさん:2009/06/23(火) 16:02:24
nose おすすめ。だけど、わざわざ追加パッケージ入れなくても
標準ライブラリにあるんだから、それを使った方が良いかな。
http://www.python.jp/doc/release/tut/node12.html#SECTION00121100000000000000000
757デフォルトの名無しさん:2009/06/23(火) 19:38:27
pythonってOSまで作れる?
デバイス操作とかは無理だよね?
758デフォルトの名無しさん:2009/06/23(火) 21:53:43
作ってどうすんの?
759デフォルトの名無しさん:2009/06/23(火) 22:13:18
>>758
プログラマの恥さらしが
760デフォルトの名無しさん:2009/06/23(火) 22:50:44
>デバイス操作
そういうライブラリを作ればできないこともないだろうけど
相当うまく作らないとタイミングやパフォーマンスが問題になるだろうし
まさに誰得。

だいたいCだって単体でOS作れないよ。
761デフォルトの名無しさん:2009/06/23(火) 22:55:37
Pythonで書いたOSって、もっさり遅いけどソースコードが読みやすく
拡張しやすいOSになりそうな予感。将来きっと出現すると個人的には
楽しみにしてる。

ちなみにC#のOSは現存するよ。日本人が作ったやつが。
762デフォルトの名無しさん:2009/06/23(火) 22:56:03
>>760
linuxはCで書かれてませんでしたっけ・・・?
763デフォルトの名無しさん:2009/06/23(火) 23:06:17
アセンブラがいるだろ
764デフォルトの名無しさん:2009/06/23(火) 23:09:33
アセンブラ?w
お前linuxのソース読んだことないだろ
765デフォルトの名無しさん:2009/06/23(火) 23:19:15
>>764
ん?
アセンブラじゃなくてアセンブリ言語だって言いたいのか?
766デフォルトの名無しさん:2009/06/23(火) 23:23:23
>>762
以前に比べるとほんのわずかになったが、Cのmain()を呼ぶために
スタックやbssを設定するのにアセンブリコードが必要
x86ならarch/x86/boot/header.Sを読んでみ
767デフォルトの名無しさん:2009/06/23(火) 23:26:42
540個もソースがあるみたいだけど
768デフォルトの名無しさん:2009/06/23(火) 23:27:21
540個もソース読めないのか
769デフォルトの名無しさん:2009/06/23(火) 23:30:21
アセンブリ云々をおいといても、
OS書くにはコンパイラ型言語じゃなきゃダメじゃね?
インタプリタだと、まずインタプリタを読み込まなきゃならないが
それをスクリプトでやるのは無理がある。
770デフォルトの名無しさん:2009/06/23(火) 23:32:01
じゃあFreeDOSは何で書かれてるんだ
771デフォルトの名無しさん:2009/06/23(火) 23:36:31
DOSへの執念
772デフォルトの名無しさん:2009/06/23(火) 23:37:23
>>770
何が言いたいのか教えてくれ。
773デフォルトの名無しさん:2009/06/23(火) 23:39:22
>>772
FeeDOS先生
774デフォルトの名無しさん:2009/06/23(火) 23:44:06
>>773
ますますわかんねーよ・・・
775デフォルトの名無しさん:2009/06/24(水) 00:06:55
>>770
アセンブラがいっぱい、Cも沢山。だったと記憶。
776デフォルトの名無しさん:2009/06/24(水) 00:14:45
そもそも、Pythonに限らず高級言語に対してこれOS書ける?と言われても困るなw
777デフォルトの名無しさん:2009/06/24(水) 00:24:54
>>776
わからんから試して欲しいのよ
778デフォルトの名無しさん:2009/06/24(水) 00:28:55
なんなんだよ
やりたいら自分でしろよ
779デフォルトの名無しさん:2009/06/24(水) 00:40:05
よーし
パパがんばって Python で
BrainFuck の OS つくっちゃうぞー
780デフォルトの名無しさん:2009/06/24(水) 00:42:30
>>762-766
bootloaderをlinuxのソースと呼べるのかどうかは甚だ疑問
せめてカーネルソースからだろ
781デフォルトの名無しさん:2009/06/24(水) 00:44:29
commonlispでいうところのmovitzみたいな話ならわかんないでもないけど
pythonマシン的な
movitz自体はC+アセンブラでかかれてんじゃないのかな
782デフォルトの名無しさん:2009/06/24(水) 00:47:10
OS作れる?って言ってるやつって
デスクトップさえ作れば満足な悪寒
783デフォルトの名無しさん:2009/06/24(水) 00:49:31
Pythonで開発のエッセンスを学んで、Cで実践してOSを作るのが王道。
784デフォルトの名無しさん:2009/06/24(水) 00:50:29
>>780
つシステムコール、コンテキストスイッチ、アトミック操作・・・
いちいちあげたらきりがなさ過ぎる。

まずは自分でlinuxのソース読もうぜ。
785デフォルトの名無しさん:2009/06/24(水) 01:04:07
PythonのPVMしか動いてないぜ!!
ってコンピュータはちょっと欲しいw
786デフォルトの名無しさん:2009/06/24(水) 02:37:04
なんとなくSmallTalkを思い出しますな
787デフォルトの名無しさん:2009/06/24(水) 07:58:15
UCSD p-Systemでしょう。
リアルタイムで知ってる俺は、なんとなく死にぞこなってる気がするけど。
788デフォルトの名無しさん:2009/06/24(水) 08:59:13
タブでインデントしてるのですが、
Pydevである行をコメントにしてから、
改行キーでその下に行を追加しtabキーを押すと、
先頭がスペースでインデントされてエラーが表示されとても使いにくいのです。
Insert spaces for tabsのチェックははずしています。
Preferencesを見ても他にそれらしきものが見つからないのです。
どっかの設定で変えられるのでしょうか?

789デフォルトの名無しさん:2009/06/24(水) 09:16:34
>>788
諦めてスペースインデントにするんだ。
790デフォルトの名無しさん:2009/06/24(水) 09:25:39
>>788
 早速のご回答ありがとうございます。
やっぱりスペースインデントが普通なんですかね。

 エディタではいつもホワイトスペースを表示しているので、
スペースインデントだと半角スペースがいっぱい表示されて見づらくなるので
タブインデントにしてました。 
791デフォルトの名無しさん:2009/06/24(水) 10:10:01
半角スペースって表示するのが普通?
全角とタブだけ表示で半角スペースはなにも表示しないのが一般的かと思っていた
792デフォルトの名無しさん:2009/06/24(水) 11:55:14
タブは4だったり8だったりするから、スペースでインデントしましょうや
という風潮なのではないかな
793デフォルトの名無しさん:2009/06/24(水) 12:00:08
>>792
むしろ、タブなら単位が「タブ1個」だから統一されてるんだがな。
スペースだと人によってバラバラになっちゃうじゃん。
794デフォルトの名無しさん:2009/06/24(水) 12:00:59
今時タブ8なんて
795790:2009/06/24(水) 12:35:19
Show whitespace charactersのチェックはあるのですが、
全角スペースとタブだけ表示するいうような設定が見当たらないので、
ホワイトスペースは全部表示されてしまいます。
796デフォルトの名無しさん:2009/06/24(水) 12:49:25
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.
797デフォルトの名無しさん:2009/06/24(水) 13:13:56
私は権威主義者ではない。
798デフォルトの名無しさん:2009/06/24(水) 13:31:04
タブ2とタブ4なら解るが、タブ8は変態だろ
799デフォルトの名無しさん:2009/06/24(水) 13:32:16
メモ帳信者だって主張したいんだろ
800デフォルトの名無しさん:2009/06/24(水) 13:48:46
モメ帳
801デフォルトの名無しさん:2009/06/24(水) 14:24:31
妹デスクトップをpythonでお願いします
802デフォルトの名無しさん:2009/06/24(水) 17:40:00
>>798
Ken Thompsonに謝れ
803デフォルトの名無しさん:2009/06/24(水) 19:04:41
>>798
set ts=8 sw=4して、
ctrl+tでインデント、ctrl+dでアンインデントするのが基本。
タブとスペースを混在するなって指針とは真っ向から対立するので、
pythonではおすすめできない。
804デフォルトの名無しさん:2009/06/24(水) 19:07:38
>>803
俺も昔はその設定だったが、今ではexpandtabにしている。
805デフォルトの名無しさん:2009/06/24(水) 20:01:35
括弧の位置でそろえたいときなんかタブだと結局スペースと混在になるからキライ
806デフォルトの名無しさん:2009/06/24(水) 20:50:00
絶対トラブルの元になる。スペースにしたほうがいい。
807デフォルトの名無しさん:2009/06/24(水) 21:54:03
トラブルの元になる意味が分からない件
808デフォルトの名無しさん:2009/06/24(水) 23:16:38
S:space1
T:tab4

for i in range(3):
Tprint i
SSSSprint i

for i in range(3):
SSSSprint i
Tprint i

さて Python でどのようなインデントとみなされるでしょうか
809デフォルトの名無しさん:2009/06/24(水) 23:17:57
810デフォルトの名無しさん:2009/06/25(木) 07:26:10
タブ幅4というお子様設定で
さてPythonでどのような……とかバッカじゃなかろうか
811デフォルトの名無しさん:2009/06/25(木) 07:30:31
漢なら、TAB=1。
812デフォルトの名無しさん:2009/06/25(木) 07:33:17
>>810
マジでわからん
kwsk
813デフォルトの名無しさん:2009/06/25(木) 07:39:26
俺のキーボードにはTABキーなんてないぞ。
買った時はついてたけど、邪魔なんで外して捨てた。
814デフォルトの名無しさん:2009/06/25(木) 08:29:32
>>813
なにそれこわい
815デフォルトの名無しさん:2009/06/25(木) 08:30:33
TABキー跡地はどうしているのか気になる
816デフォルトの名無しさん:2009/06/25(木) 09:29:17
スペースインデントキーになりました
817デフォルトの名無しさん:2009/06/25(木) 09:42:58
お花を植えました
818デフォルトの名無しさん:2009/06/25(木) 09:50:38
妖精さんが出入り口に使ってるに決まってるだろ。
819デフォルトの名無しさん:2009/06/25(木) 11:21:48
懐かしい感じのギャグ・・・
820デフォルトの名無しさん:2009/06/25(木) 11:55:56
pythonってawk見たくunixコマンドで
パイプラインの中に繋げて書けないの?
821デフォルトの名無しさん:2009/06/25(木) 12:31:55
一行直書きPythonでござるか。
それは無いかな。
822デフォルトの名無しさん:2009/06/25(木) 12:48:54
●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
823デフォルトの名無しさん:2009/06/25(木) 13:06:51
普通に引用符の途中で改行すればいいじゃない
824デフォルトの名無しさん:2009/06/25(木) 13:08:04
ワンライナーの話はするな
メンドクサイから
825デフォルトの名無しさん:2009/06/25(木) 13:37:43
pythonで計算時間の測定ってどうやるの?
826デフォルトの名無しさん:2009/06/25(木) 14:02:20
ちっちゃいならtimeit、
マジならcProfileかな
827デフォルトの名無しさん:2009/06/25(木) 14:35:39
pylabで作ったepsがubuntuから印刷できない
表示はできる
gnuplotが作ったグラフは印刷できる

何がおかしいのでしょうか?
828デフォルトの名無しさん:2009/06/25(木) 14:42:33
pythonでunicodeの文字列を扱うのって大変なことですか?
829デフォルトの名無しさん:2009/06/25(木) 15:01:15
2.5以上なら問題無し
慣れてないと躓く場所はあると思う
理由が判れば次から躓かない
決して大変なことではない
830デフォルトの名無しさん:2009/06/25(木) 15:02:22
pythonでunittestってどうやるの?
831デフォルトの名無しさん:2009/06/25(木) 22:16:58
Pythonのコルーチン・マイクロスレッドの実装って、Stackless Pythonかuthreadsしかないの?
IronPythonで使えるのがあるといいんだけどな。
832デフォルトの名無しさん:2009/06/25(木) 22:31:48
>>831
コルーチン、マイクロスレッドが何かを理解していれば、
CPython用の実装がIronPythonで動く訳がないと判ると
思うんだけど・・・
833デフォルトの名無しさん:2009/06/25(木) 22:43:00
>>829
Editraの日本語問題を直したいんですけど何がおかしいですかね?
834デフォルトの名無しさん:2009/06/25(木) 23:59:57
>>832
動く訳がないのが判ってるから
あればいいなっていう希望なんだろ
835デフォルトの名無しさん:2009/06/26(金) 00:03:32
836デフォルトの名無しさん:2009/06/26(金) 02:30:20
>>830

import unittest
help(unittest)
837デフォルトの名無しさん:2009/06/26(金) 13:07:34
Pythonのジェネレータの仕組みはほぼコルーチンだから
コルーチンの挙動をするクラスを1つ定義すればなんとかなりそうなんだけど、

マイクロスレッドの場合、底となるメソッドから複数段階深くなった呼び出しから一度に底の外側から抜け、
再び実行するタイミングができたら中断した箇所まで戻れないといけない。
これが底で中断でき、再開できればいいというならコルーチンと何も変わらないよね。

例外をつければ一気に抜けられるだろうけど、おそらく元に戻れない。
たぶん、インタプリタ本体をいじりながら動かすような挙動を用意しないと実装できないんじゃないかなぁ。
一番いいのはコールスタック自体を退避できる設計をすることだろうけど。
838デフォルトの名無しさん:2009/06/26(金) 13:30:50
バイトコード書き換えれば実装できる気がする
例外起きた箇所から再実行は前やったけど出来たし
でもこの辺でいいだろ。こだわりすぎるのは良くない
ttp://www.ibm.com/developerworks/jp/linux/library/l-pythrd/index.html
839デフォルトの名無しさん:2009/06/26(金) 13:31:51
pythonで美しいコードを見せてください
840デフォルトの名無しさん:2009/06/26(金) 13:45:03
おれが、おれそのものが美だ!!
841デフォルトの名無しさん:2009/06/26(金) 14:45:33
サンプルを入力していたところ、
from xml import xpath で ImportErrorが発生します。
CentOS5のPython2.4での現象なのですが、なにか必要なライブラリがあるのでしょうか?
842デフォルトの名無しさん:2009/06/26(金) 14:46:21
スペースの直後から小文字で始まる単語を削除を
正規表現で書きたいんですが ß が絡むとうまく動きません。

re.sub(" [a-zß]+", "", text)

これだと ß が残ってしまいます。
どうすれば ß も消せるでしょうか?
843デフォルトの名無しさん:2009/06/26(金) 14:55:31
unicode文字列にしないと。
844デフォルトの名無しさん:2009/06/26(金) 16:00:45
>>841
PyXML
845デフォルトの名無しさん:2009/06/26(金) 17:02:06
>>843
ありがとうございます。うまくいきました。
846デフォルトの名無しさん:2009/06/26(金) 17:03:24
>>844
あざっす
847842: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つ全てがマッチしてしまいます。
指定した物だけにマッチさせるにはどうすれば良いのでしょうか?
848デフォルトの名無しさん:2009/06/26(金) 17:42:05
>>847
ちょww match の中でunicodeじゃなくなってるじゃん!
re.match(u"[^a-zA-Z0-9]", c)
849デフォルトの名無しさん:2009/06/26(金) 17:42:30
if re.match("[^a-zA-Z0-9]", c.encode('utf8')):

よく見るんだ。
850デフォルトの名無しさん:2009/06/26(金) 17:45:21

re.sub(" [a-zß]+", "", text)
851842:2009/06/26(金) 17:53:01
>>848-850
レスありがとうございます。
根本的な所を間違えて覚えていました。
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 に変換されてしまうんでしょうか?
853デフォルトの名無しさん:2009/06/27(土) 05:46:07
a.sort()の戻り値がNoneだから
854デフォルトの名無しさん:2009/06/27(土) 05:49:25
sort()メソッドの戻り値がリストじゃないんじゃないの?

Python知らんけど。
855854:2009/06/27(土) 05:50:20
かぶった。
上がってるからって無理に反応するもんじゃないなw
856デフォルトの名無しさん:2009/06/27(土) 06:06:48
sorted(a)ならよい。

話は変わるけど、
str.join(lst)のが気持ちいいのは、少数派なのかなあ。
857デフォルトの名無しさん:2009/06/27(土) 06:17:50
>>853-856
ありがとうございます. m(_ _)m
858デフォルトの名無しさん:2009/06/27(土) 06:28:50
>>856
少数派ということはない。
単にJava厨やRuby厨という馬鹿どもが騒いでるだけ。
859デフォルトの名無しさん:2009/06/27(土) 06:35:29
>>856 >>858
え? どういうこと?
joinメソッドがstringクラスにあろうがlistクラスにあろうが、
そんなの処理系の勝手だと思うんだけど。

で、.NETでリストやArrayを名乗るのになんでjoinを定義することが必須ってinterfaceに書いとかへんねん!
テンプレート使って外付けてjoin実装するのめんどくさいわ!
ってスレに関係ない愚痴を買いとこう。

あ、IronPython好きよ。
早うマイクロスレッド実装して!
860デフォルトの名無しさん:2009/06/27(土) 08:58:08
ウザイル
861デフォルトの名無しさん:2009/06/27(土) 10:29:09
>>858
Javaはそもそもjoinが無いから関係ないだろ。

Ruby厨が、「Python気持ち悪い、Ruby気持ちいい」って言えるようなRubyとPythonの
違いを見つけてはPythonをたたこうとしてるだけ。
結局、スクリプト言語にとどまらない本物のプログラミング言語として見た場合は
Pythonの仕様の方が合理的なんだけどね。
862デフォルトの名無しさん:2009/06/27(土) 10:45:28
本物のプログラミング言語(笑)
863デフォルトの名無しさん:2009/06/27(土) 10:58:53
>>862
本物が嫌なら汎用と言い換えようか?

文字列処理とか正規表現とか、勝手に「よく使う」と判断した機能は
特別扱いして専用の記号を入れたりグローバルの名前空間を汚したり、
マイナーバージョンアップで下位互換性を持たない仕様変更が入ったり、
配列クラスがなぜか文字列処理をできたりする言語は、文字列処理
やWebアプリの表面でしか使いたくない。

Python はスクリプティングにも使えるが、GUIアプリも
Webサーバーやオンラインゲームのサーバーも、
ゲームやCGアプリのスピードが求められない部分でも
使われているのは、汎用のプログラミング言語だから。

アセンブラ、C、Python、この3つがあれば、たいていのプログラミングの
需要に応えられる。
864デフォルトの名無しさん:2009/06/27(土) 11:03:27
本物のプログラマはパスカルを使わない
865デフォルトの名無しさん:2009/06/27(土) 11:05:03
本物のプログラマにコメントは不要である
866デフォルトの名無しさん:2009/06/27(土) 11:11:27
>>865
Pythonのコードは読みやすいから、コードの中にはコメントじゃなくて
ドキュメントしか書かないな。
867デフォルトの名無しさん:2009/06/27(土) 11:21:34
別に自分だけが読むプログラムなら好きにすればいいさ
868デフォルトの名無しさん:2009/06/27(土) 11:52:28
昨日の自分は他人だから、自分で何考えてたのかさっぱり分からないことが有る。
マジ本当に困る。固まる。書いた人が何をしたいのか全く理解出来ない。
ので懇切丁寧にコメントを入れる俺は他人思いというわけじゃないんだ後輩よ
869デフォルトの名無しさん:2009/06/27(土) 12:12:25
コメントは細かいことより概要を書いてもらえているとうれしい
ただし、それもクラスやら関数がちゃんと分けられている場合。
それが出来てないと・・・
870デフォルトの名無しさん:2009/06/27(土) 12:17:52
Rubyは日本人が作ったから、単に日本語処理ウマーなだけで信者が多いだけだったような。
あと、中の人が(r
871デフォルトの名無しさん:2009/06/27(土) 12:23:35
とくに日本語処理優れてないし
872デフォルトの名無しさん:2009/06/27(土) 12:23:52
3.1きてるね
873デフォルトの名無しさん:2009/06/27(土) 12:54:59
>>870
> あと、中の人が(r
これはどういう意味?
Rubyは開発の中心人物が日本語で議論しているのが嫌い
874デフォルトの名無しさん:2009/06/27(土) 13:36:17
>>873
別に英語の議論を受け入れてないわけじゃないんだから、別にいいんじゃね?
日本人が母国語でプログラミングしたって別に問題ない。
(国際的な開発を行う場合も)英語で併記されていれば。

ただ、ソースコードに埋め込むコメントはどうにもならないよね。
複数言語入力してかさばったら読みづらいし。

そういうことが解決できる仕組みがあるといいんだけど。
875デフォルトの名無しさん:2009/06/27(土) 13:38:51
おまえら儲が乱入してきて荒れるからやめれww
876デフォルトの名無しさん:2009/06/27(土) 13:39:40
受けて
    立つm9(・∀・)ビシッ!!
877デフォルトの名無しさん:2009/06/27(土) 13:52:19
>>874
別に是非のともかくを言ってるわけではなくて個人的な感想だから。

PythonについてGuidoがオランダ語で色々議論していたらここまで
広まっていなかっただろうなと思っただけでね。
こういう部分もPythonが好きな理由の一つ。
878デフォルトの名無しさん:2009/06/27(土) 13:56:02
>>877
まあね。スレチなレスもこれで最後にするとして。
PHPのソース読んでたらところどころコメントがヘブライ語で萎えるんだぜ……。
879デフォルトの名無しさん:2009/06/27(土) 13:56:18
複数コメント /* */ 欲しくね?
880デフォルトの名無しさん:2009/06/27(土) 14:01:12
できるだろ
881デフォルトの名無しさん:2009/06/27(土) 14:01:48
>>877
人口の9割以上がトリリンガルのあの国なら
英語で議論するのは関西人が標準語で話す程度のもんだ。

日本人が英語で議論するのとは
もはや別のレベルの問題だろうさ。
882デフォルトの名無しさん:2009/06/27(土) 14:04:05
この流れでこんな質問書き込むと ruby 厨だと叩かれそうで怖いのですが
print "foo = #{foo}, bar = #{bar}" みたいに
文字列内部に変数を入れるのはどうやれば良いんでしょうか...
883デフォルトの名無しさん:2009/06/27(土) 14:11:49
>>> foo = "FOO"
>>> bar = "BAR"
>>> "foo = %(foo)s; bar = %(bar)s" % vars()
'foo = FOO; bar = BAR'
884デフォルトの名無しさん:2009/06/27(土) 14:13:35
print "foo = %s, bar = %s" % (foo, bar)
885デフォルトの名無しさん:2009/06/27(土) 14:53:33
>>883-884
ありがとうございます!!
886デフォルトの名無しさん:2009/06/27(土) 16:44:09
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 がエラーメッセージ全体です。
887デフォルトの名無しさん:2009/06/27(土) 16:46:58
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
888デフォルトの名無しさん:2009/06/27(土) 16:47:39
ImportError: DLL load failed: このアプリケーションの構成が正しくないため、
アプリケーションを開始できませんでした。アプリケーションを再度インストールす
ることにより問題が解決する場合があります。

--------------------------------------------------------------------
以上です。文字数制限に引っかかったので2回に分けました。
889デフォルトの名無しさん:2009/06/27(土) 17:45:45
Python 2.6.2ベースのはないの?
2.6.1はdll loadに問題あるからそこかも
890デフォルトの名無しさん:2009/06/27(土) 18:43:05
もりあがりすぎ
891デフォルトの名無しさん:2009/06/27(土) 22:36:56
>>886
Python 2.6 からは、コンパイラが VC 2009 になったんだけど、このバージョンの
vcrtって WinSxS とかいうおじゃま機能があって、exeと同じディレクトリに
dll おいてもダメなんだよな。
ちゃんと、MSから再頒布パッケージをダウンロードして、実行環境に
インストールしてもらわないといけない。
892デフォルトの名無しさん:2009/06/27(土) 23:49:47
>>886
Pythonインストールしたとこにあるpython.exe.manifestみたいな感じで
マニフェストファイル作って、py2exeのother_resourcesに登録し、
実行ファイル作成。

でVC2008の再頒布可能ファイルのmsvcp90.dllやら
Microsoft.VC90.CRT.manifestなにやらを
アプリケーションのローカルフォルダに同梱。

でサイドバイサイドは何とかなるんじゃないかなかな
893デフォルトの名無しさん:2009/06/28(日) 00:32:37
以前のようなインストール無しでは使えなくなりました、
ってのはそれが原因だったのね…
894デフォルトの名無しさん:2009/06/28(日) 00:53:17
ふーむ。
このスレで書いてもスレ違いかもしれないが、
一般的なプログラムに指定を与えるのが exe.manifest、
.NETプログラムに指定を与えるのが exe.configでいいんだろうか?
895デフォルトの名無しさん:2009/06/28(日) 04:56:27
>>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で生成するのであれば環境が無いので無理そうです。
896デフォルトの名無しさん:2009/06/28(日) 06:59:08
>>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.起動。

これで駄目なら知らぬ。
897デフォルトの名無しさん:2009/06/28(日) 07:12:36
あ、>>896
>マニフェストファイルを作成する方法がわからないのですが
に対するレスね。
[Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)]
を毎回インストールするんだったら、別にする必要ない作業だわ。
読み飛ばしてほしい。

ていうか一連の問題の原因はPortable Python使ってるからじゃね?
まず普通のやつインストールして試した方がいいと思うが。
898デフォルトの名無しさん:2009/06/28(日) 08:27:13
>>896-897
色々ありがとうございます。
環境を再構築するときにまた見させてもらいます。

pytyon2.6.2 とそれようの py2exe をインストールして
サンプルを見たところsetup.py の書式が違ったので
それを参考に下のように書き換えると動作しました。

# setup(name="test",scripts=["test.py"],)
setup(name="test",console=["test.py"],)

これでやっとexe で持ち運びができそうです。
899デフォルトの名無しさん:2009/06/28(日) 10:39:44
Pythonで既存クラスにメソッド追加ってできないんでしょうか?
900デフォルトの名無しさん:2009/06/28(日) 10:40:53
PyCUDA。ほーーー。へーーーー。
誰か使ってみた人おられる?
すごいなら、GTX285を買わないといけないでしょうこれは。
901899:2009/06/28(日) 10:45:03
できました. すれ汚し失礼しました.
http://d.hatena.ne.jp/pashango_p/20090610/1244612721
902デフォルトの名無しさん:2009/06/28(日) 11:46:59
メソッド追加はjavascriptとかと同じ?
903デフォルトの名無しさん:2009/06/28(日) 12:05:40
組み込みオブジェクト(Cで定義されたクラス)以外はそう
904デフォルトの名無しさん:2009/06/29(月) 13:52:26
Pythonで、あるクラスの親クラスを実行時に変更する、あるいは実行時に親クラスを追加する、ということは可能でしょうか。
Rubyでいうところの include を実現したいのですが。
905デフォルトの名無しさん:2009/06/29(月) 14:31:36
__bases__ って勝手に置き換えて正しく動くんだろうか?
906デフォルトの名無しさん:2009/06/29(月) 14:42:40
>>904
それで何がしたいの?
907デフォルトの名無しさん:2009/06/29(月) 15:04:27
rubyのincludeは多重継承もどきの実現手段だけど、
Pythonには本物の多重継承があるから、それ使ったら?
908デフォルトの名無しさん:2009/06/29(月) 15:37:14
>>904
importを自分でゴニョゴニョすることは可能だから
あなたのやりたいことも出来ると思う
909デフォルトの名無しさん:2009/06/29(月) 15:57:03
>>905-908
ありがとうございます。
Pythonに多重継承があることはわかってるんですけど、クラス定義時にしか指定できないですよね。
これを動的に変更したいというわけです。
さきにクラス定義をしたあと、あとから親クラスを動的に追加するということが可能でしょうか。
Ruby の include だとこれが簡単にできて便利なので、同じことをPythonでもしたいなというわけです。
910デフォルトの名無しさん:2009/06/29(月) 16:06:56
正規表現の re.MULTILINE のオプションを
コンパイル無しで指定することはできますか?

text = re.sub("aaa", "bbb", text)

こんな感じで一行で書きたい時に指定できると嬉しいんですが。
911デフォルトの名無しさん:2009/06/29(月) 16:48:22
text = re.compile("aaa", re.M).sub("bbb", text)
912デフォルトの名無しさん:2009/06/29(月) 17:08:48
>>911
ありがとうございます
913デフォルトの名無しさん:2009/06/29(月) 17:21:16
>>909
動的にクラス定義を変えたいなんてキモイです
914デフォルトの名無しさん:2009/06/29(月) 17:21:47
>>909
pyをクラス代わりにしたら?
915デフォルトの名無しさん:2009/06/29(月) 18:23:49
>>909
help(type)
あまりオススメしない
916デフォルトの名無しさん:2009/06/29(月) 18:36:01
>>909
Foo に Bar を混ぜたいなら、
class Baz(Foo, Bar):
    pass
でおk
917デフォルトの名無しさん:2009/06/29(月) 18:48:39
>>909
Ruby の include とやらは本当に
クラス定義をしたあと、あとから親クラスを動的に追加するということ
なのか?
918デフォルトの名無しさん:2009/06/29(月) 18:50:40
909 の人気に sit it up!
919デフォルトの名無しさん:2009/06/29(月) 19:48:20
>>915
help(type) してみましたが、よくわかりません。
__base__ を書き換えろってことでしょうか。readonly だから変更できないというエラーになりました。

>>916
それはBazに混ぜただけで、Fooに混ぜたことにはならないですよね。
FooのかわりにBazを使える場合ならそれでもいいんでしょうけど。

>>917
厳密にいうと親クラスを変更するわけではなくて、クラスの継承関係に
あとから別のクラス(みたいなもの)を割り込ませることができます。
たとえば設定ファイルを読み込んで、その設定次第であとから動的に
親クラスを追加したりしなかったりとかができます。
920デフォルトの名無しさん:2009/06/29(月) 19:56:06
typeで動的にクラス作るのって面倒くさくね?
921デフォルトの名無しさん:2009/06/29(月) 20:12:54
>>919
class Name(A, B, C, ):
    bar = None
    foo = None
は以下と同等
type('Name', (A, B, C, ), {'bar': None, 'foo': None, })

>>920
type使うと一部のプラグイン可能なシステムはすげー簡単に書ける
922921:2009/06/29(月) 20:13:55
ああでもやっぱりオススメしない
それなりに分かってないとハマるばっかりだろうし
923デフォルトの名無しさん:2009/06/29(月) 21:21:44
>>919
詳細がわからないけど、俺ならコンポジション(集約)でやると思う
924デフォルトの名無しさん:2009/06/29(月) 21:28:00
Strategyじゃまずいのか?
925デフォルトの名無しさん:2009/06/29(月) 21:30:20
Rubyじゃまずいのか?
926デフォルトの名無しさん:2009/06/29(月) 21:41:29
そもそも、そういうのってそれじゃなくちゃダメな理由ってか、
メリットあるん?
927デフォルトの名無しさん:2009/06/29(月) 22:44:56
やっぱり javascript に似てるなぁ
それなりにメリットはあると思う
928デフォルトの名無しさん:2009/06/29(月) 22:48:03
>>919
何が嬉しいのかわからん
具体的な例を出してみて
929デフォルトの名無しさん:2009/06/29(月) 23:30:18
>>921
>type('Name', (A, B, C, ), {'bar': None, 'foo': None, })
だからそれは既存のクラスに親クラスを追加するのとは違いますよね。。。わかってもらえない。。。
新しくクラスを作成したいんじゃないんですよーーーーー
930デフォルトの名無しさん:2009/06/29(月) 23:47:07
Ruby はできるの?
どうやるの?
931デフォルトの名無しさん:2009/06/30(火) 00:02:46
__bases__ 使えばいいじゃん
932デフォルトの名無しさん:2009/06/30(火) 00:08:05
やりたいことはMixInじゃないかと思うんだが
933デフォルトの名無しさん:2009/06/30(火) 00:16:36
設計ミスじゃね?
934デフォルトの名無しさん:2009/06/30(火) 01:00:02
>>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あざーっす!
935デフォルトの名無しさん:2009/06/30(火) 01:01:25
>>930
たとえば
class A
end
module Hello
 def m1(); print "Hello"; end
end
A.class_eval { include Hello }
A.new.m1() #=> Hello
936デフォルトの名無しさん:2009/06/30(火) 01:05:34
937デフォルトの名無しさん:2009/06/30(火) 01:26:12
Ruby厨寄ってくんな

>>936
重要なのは名前解決の順序だから大丈夫だと思う
938デフォルトの名無しさん:2009/06/30(火) 07:19:25
そんなことしなくても、候補になるべきクラスを複数つくっておいたほうがいいって。
939デフォルトの名無しさん:2009/06/30(火) 10:14:48
940デフォルトの名無しさん:2009/06/30(火) 10:54:49
Ruby厨きもいです
941デフォルトの名無しさん:2009/06/30(火) 11:05:08
class P(Python):
  pass

P.__bases__ = Ruby
942デフォルトの名無しさん:2009/06/30(火) 16:13:31
reportlabというPDF生成ライブラリを使ってまして、かなり神っぽいと思うんですが、
日本的なのは無いですか?表を書くのがつおいとか。
943デフォルトの名無しさん:2009/06/30(火) 21:45:09
PyExcelerator
944デフォルトの名無しさん:2009/07/01(水) 00:58:20
チュートリアル読み終えたー。
945デフォルトの名無しさん:2009/07/01(水) 10:08:55
>>942
どうせならtexを生成してほしいよね
946デフォルトの名無しさん:2009/07/01(水) 14:07:47
urllib2を用いたサイトへのアクセスでブラウザ(IEとかFirefox)に保存してあるクッキーを送信してアクセスすることはできないでしょうか?
947デフォルトの名無しさん:2009/07/01(水) 14:34:02
ブラウザの保存しているファイルからクッキーを読み取って自分でつければできるんじゃない
948デフォルトの名無しさん:2009/07/01(水) 14:35:09
949デフォルトの名無しさん:2009/07/01(水) 14:36:43
>>946
そんなツールが世の中に出回ってたら、
セキュリティ的にどれくらい危険なことか考えたことはあるかい?
ま、PythonのUser-Agentでクッキーを保存して処理すればいいんじゃね?
950デフォルトの名無しさん:2009/07/01(水) 14:36:48
今時 Lynx, Netscape なんか使ってる人間いるのか?
951デフォルトの名無しさん:2009/07/01(水) 14:42:12
とりあえず>>949は今スレのMVPだなw
952デフォルトの名無しさん:2009/07/01(水) 14:47:16
>>949
お勉強スレなので釣りは自重してください
953デフォルトの名無しさん:2009/07/01(水) 15:18:31
アドバイスありがとございます。
あとcookielibなんてのもあってpython動作中に取得したcookieは保存、送信できそうですね。
すでにブラウザにあるのもクッキーファイルにアクセスできるかは試してみます。
954デフォルトの名無しさん:2009/07/01(水) 18:08:01
>>949
他人のブラウザのクッキーをpythonで盗むの?
955デフォルトの名無しさん:2009/07/01(水) 18:51:11
949だが、なぜ煽られるのかが分からん。
技術者としてごく普通の考え方だと思うんだが……。

>>954
ポータブルなPythonインタプリタを入れたUSBメモリを
他人のマシンに差し込んで実行すればできる罠。
というか、盗むどころかそのPCのブラウザに成りすましてウェブサイトにアクセスするんだよね?

949では単にそういうツールは危険なものじゃないの?
と警告しただけ。個人的に使うなら別にかまわないだろうけど。
956デフォルトの名無しさん:2009/07/01(水) 19:07:59
他人のマシンにそのユーザがログオンした状態で?
技術者としてはその状態で任意のプログラムの実行を許す時点で
何がおこっても不思議じゃないもう終わってるというのが普通の考え方だろ。
ましてクッキーを保存したファイルが他のユーザにも読める状態だったとしたら何をかいわんや。

ツールの有無で判断するなんてスクリプトキディーとしては普通の考え方だが、
技術者としてはどうかといわざるを得ない。
957デフォルトの名無しさん:2009/07/01(水) 19:48:45
他のブラウザのクッキー情報を使ってアクセスするブラウザなら普通に存在してるが。
958デフォルトの名無しさん:2009/07/01(水) 20:07:33
USB刺して実行できるなら、既に何でもやり放題なんだが。わけわからん。
959デフォルトの名無しさん:2009/07/01(水) 20:09:00
>>949の人気に嫉妬しつつ

>>953
Reading Firefox 3.x cookies in Python
http://blog.mithis.net/archives/python/90-firefox3-cookies-in-python

sqlite3が標準添付されてなかった頃のコードっぽい
上手くいったら教えてちょ
960デフォルトの名無しさん:2009/07/01(水) 22:24:16
961デフォルトの名無しさん:2009/07/01(水) 22:47:52
>>959
上手くいった
962デフォルトの名無しさん:2009/07/02(木) 09:52:09
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オブジェクトみたいなものは無いッスかね。
963デフォルトの名無しさん:2009/07/02(木) 10:01:11
964デフォルトの名無しさん:2009/07/02(木) 10:02:03
ばかじゃね
自分で書けば 1 行で済むぜ
965デフォルトの名無しさん:2009/07/02(木) 10:09:17
>>962
http://www.python.jp/doc/release/lib/module-email.mime.text.html

やってないけど、
mp = MIMEMultipart()
mp.attach(MIMEText("message here"))
mp.attach(MIMEApplication(open('somefile','rb').read()))

こんな感じじゃね?
966デフォルトの名無しさん:2009/07/02(木) 11:13:55
>>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())
967デフォルトの名無しさん:2009/07/03(金) 05:29:53
gj
968デフォルトの名無しさん:2009/07/03(金) 06:36:01
msg.attach(MIMEText(body))
msg.attach(MIMEApplication(open(filename,'rb').read(), name=filename))

こうすると2行縮まる!ww
かなりなGJです、MIMEApplicationのサンプルが見当たらなかったので参考にします。
969デフォルトの名無しさん:2009/07/03(金) 06:55:59
970デフォルトの名無しさん:2009/07/03(金) 07:31:53
ウノウさんですかw?

MIMEApplication、ですよ。 Multipart,Text,Imageまでは本家に載ってるんどす。
そしてサンプルは短くないと意味無いのにごちゃごちゃしている。
971デフォルトの名無しさん:2009/07/03(金) 08:29:21
おはよう諸君。とりあえずさらに一行縮まるぞ
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好きじゃないだけかな。
972デフォルトの名無しさん:2009/07/03(金) 08:53:13
from email import MIMEText.MIMEText as MIMEText, MIMEMultipart.MIMEMultipart as MIMEMultipart, mime.application.MIMEApplication as MIMEApplication
973デフォルトの名無しさん:2009/07/03(金) 08:59:54
>>972
ちょww
「Limit all lines to a maximum of 79 characters.」ですお?
974デフォルトの名無しさん:2009/07/03(金) 09:16:54
そんな糞エディタ使うなボケ
975デフォルトの名無しさん:2009/07/03(金) 09:34:38
SyntaxError: invalid syntax
976デフォルトの名無しさん:2009/07/03(金) 09:46:50
>>974
それは神が語っているんだ。
ttp://www.python.org/dev/peps/pep-0008
977デフォルトの名無しさん:2009/07/03(金) 10:43:49
>>976
自分で書くときの規約としてはそんなのは願い下げだが、
PyPIに載せるようなコードを書くときにはそうするべきだろうな。
978デフォルトの名無しさん:2009/07/03(金) 10:59:41
外国では一神教なので神の言葉は絶対だが、
日本では多神教なので神の言葉も数ある言葉の一つにすぎぬ。
979デフォルトの名無しさん:2009/07/03(金) 11:35:28
だから日本人のプログラマは
大規模なプログラムを開発できないんだろう。
980デフォルトの名無しさん:2009/07/03(金) 12:24:22
980
981デフォルトの名無しさん:2009/07/03(金) 13:03:29
もともとPCの画面は
横スクロールが見辛く
縦スクロールに向いてるからな
どこぞのIDEは平気で横スクロールしてかなわん
982デフォルトの名無しさん:2009/07/03(金) 13:09:54
それはPCの画面の問題ではなく、言語が横書きだからだ。
983デフォルトの名無しさん:2009/07/03(金) 13:17:35
日本語は縦でも横でもいけるぜ!
984デフォルトの名無しさん:2009/07/03(金) 13:40:14
でおうでもいいが、縦書きのプログラミング言語はないのか?
985デフォルトの名無しさん:2009/07/03(金) 14:21:53
モニタを右90度倒せば良かろうもん
986デフォルトの名無しさん:2009/07/03(金) 17:11:00
986
987デフォルトの名無しさん:2009/07/03(金) 17:53:36
988デフォルトの名無しさん:2009/07/04(土) 00:17:52
989デフォルトの名無しさん:2009/07/04(土) 00:22:22
>>4
990デフォルトの名無しさん:2009/07/04(土) 00:24:33
>>960

次スレ

Pythonのお勉強 Part34
http://pc12.2ch.net/test/read.cgi/tech/1246454599/
991デフォルトの名無しさん:2009/07/04(土) 01:55:10
>>990
992デフォルトの名無しさん:2009/07/04(土) 10:23:05
>>984
縦書きエディタでひまわり使えばいいんじゃない
993デフォルトの名無しさん:2009/07/05(日) 02:22:28
初心者用のサイトに載ってた問題です。
「テキストファイルを行末から行頭へ向かって表示するようなスクリプトを書きましょう。」
(例)
 1.Albatross             5.Bogey
 2.Eagle 4.Par
 3.Birdie        →      3.Birdie
 4.Par 2.Eagle
 5.Bogey 1.Albatross

どうやればいいですか。
994デフォルトの名無しさん:2009/07/05(日) 02:25:19
ああ、、なんかずれまくった。
1.Albatross
2.Eagle
3.Birdie
4.Par
5..Bogey

5..Bogey からはじめたいということです。
995デフォルトの名無しさん:2009/07/05(日) 02:38:06
>>993
そりゃあここはお勉強スレだから誰かが答えるだろうけどさ。
初心者用問題くらいは自分の力で解こうよ。

まあヒントくらいは出してやろう。

行ごとに読む、リスト、リバース。
996デフォルトの名無しさん:2009/07/05(日) 02:38:55
for line in reversed(open('file.txt').readlines()):
    print line,
997デフォルトの名無しさん:2009/07/05(日) 03:17:40
行末と末行
998デフォルトの名無しさん:2009/07/05(日) 03:29:05
for i in open('a.txt'):
    print i.strip()[::-1]
999デフォルトの名無しさん:2009/07/05(日) 03:39:12
>>998
やらしいのかお茶目さんなのかどっちだ
1000デフォルトの名無しさん:2009/07/05(日) 03:41:53
いやらしいお茶目さん
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。