Pythonのお勉強 Part45

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2011/11/13(日) 22:10:34.96
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
3デフォルトの名無しさん:2011/11/13(日) 22:21:30.67
先輩方に質問させてください
RubyではなくなぜPythonを選んだのですか?
4デフォルトの名無しさん:2011/11/13(日) 22:41:59.31
>>2は古参
5デフォルトの名無しさん:2011/11/13(日) 22:45:05.03
Zen of Pythonに共感したから。
圧倒的にPythonの方がメジャーだから。

「国産」なんて売り文句を付けないと信者の勧誘もできない、という点に
ネガティブな印象を感じた事も否定できない。
6デフォルトの名無しさん:2011/11/13(日) 23:13:06.24
>>3
おっぱいそん
7デフォルトの名無しさん:2011/11/13(日) 23:14:52.39
RubyからPerl臭がしたから
8デフォルトの名無しさん:2011/11/13(日) 23:29:41.20
C(C++じゃなく)に慣れてるとRubyよりPythonの方が気持ち良い
9デフォルトの名無しさん:2011/11/14(月) 01:10:33.43
選ぶもなにも両方自然にできるでしょ
10デフォルトの名無しさん:2011/11/14(月) 01:11:58.99
俺も7と一緒だな。
Perlが嫌で別のを探したのに、RubyからはPerl臭がした。
11デフォルトの名無しさん:2011/11/14(月) 11:10:21.82
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
12デフォルトの名無しさん:2011/11/14(月) 13:25:27.53
PyScripterは不評みたいだけど
みんなエディタとかIDEとか何つかってんの?
13デフォルトの名無しさん:2011/11/14(月) 13:46:20.82
}やendを書く手間が省けるから
14デフォルトの名無しさん:2011/11/14(月) 13:50:08.45
windowsではnodepad、linuxではgedit使ってる
15デフォルトの名無しさん:2011/11/14(月) 13:50:55.35
間違えた。notepad++
16デフォルトの名無しさん:2011/11/14(月) 14:11:46.19
vim
17デフォルトの名無しさん:2011/11/14(月) 14:29:32.85
emacs
18デフォルトの名無しさん:2011/11/14(月) 14:33:10.66
操作がVi(Vim)方式で、モダンなエディタが登場したら、
それを使うわ。
19デフォルトの名無しさん:2011/11/14(月) 14:35:58.72
>>18
ideをカスタマイズすればいいんでね?
20デフォルトの名無しさん:2011/11/14(月) 14:39:54.87
超重いけどeclipse
21デフォルトの名無しさん:2011/11/14(月) 14:44:35.19
>>18
vi+tmuxで充分だったりする
22デフォルトの名無しさん:2011/11/14(月) 14:47:23.39
Eric4
23デフォルトの名無しさん:2011/11/14(月) 14:57:57.94
俺はPyScripter好きだよ。
軽いし、スクリプト実行した後やブレイクしたときに
内蔵のシェルに変数の値等が全部そのまま残ってるから
テストコードとか書かなくても色々確認できて便利だし。

単なるエディタには戻れないな。
24デフォルトの名無しさん:2011/11/14(月) 14:58:45.02
xyzzy
25デフォルトの名無しさん:2011/11/14(月) 14:59:20.96
>>1
ttp://python.rdy.jp/wiki.cgi?page=%B2%E1%B5%EE%A5%ED%A5%B0
ここって誰かメンテしてるの?
26デフォルトの名無しさん:2011/11/14(月) 15:03:44.32
RoR との対比で Python で言えば django って思ってるひとは多いみたいだけど
werkzeug とか Pyramid とかが今後の流れっぽい
27デフォルトの名無しさん:2011/11/14(月) 16:12:37.93
シンプルなものが流行るのは良い傾向
28デフォルトの名無しさん:2011/11/14(月) 16:48:35.33
komodo edit
29デフォルトの名無しさん:2011/11/14(月) 17:07:18.50
フレームワークとかDSLは規模がでかくなりすぎてコストに見合うか疑わしいレベルになってきてる
俺は自家製XMLテンプレートエンジンでシコシコやるわ
30デフォルトの名無しさん:2011/11/14(月) 19:42:54.96
>>12
秀丸
31デフォルトの名無しさん:2011/11/14(月) 20:50:06.97
>>30
オートインデントしてくれる?
ならWindowsでは秀丸使ってもいい。
32デフォルトの名無しさん:2011/11/14(月) 21:00:31.76
Tkinterの使い方を調べているのですが
αbrendでWindowを透過させる方法はありますか?
無ければregionでも結構です
あれば教えてください
33デフォルトの名無しさん:2011/11/14(月) 21:23:51.29
正解: tkを捨てる
34デフォルトの名無しさん:2011/11/14(月) 21:42:52.75
>>32
tkinterはよく知らんがこれのことか?
import Tkinter as tk

root = tk.Tk()
# use transparency level 0.1 to 1.0 (no transparency)
root.attributes("-alpha", 0.3)
root.mainloop()
35デフォルトの名無しさん:2011/11/14(月) 22:06:13.80
出来ました!!
ありがとうございます!!!
36デフォルトの名無しさん:2011/11/14(月) 22:23:34.55
ふと思い立って
math.exp(1+1j)
とか試したらダメだった

xyzzyはできるみたいだな
まさかテキストエディタで複素解析できるとは(何に使うのか知らないが……)
(exp (complex 0 pi)) -> #C(-1.0d0 1.224606353822377d-16)
(exp (complex 0 (* 2 pi))) -> #C(1.0d0 -2.449212707644755d-16)

37デフォルトの名無しさん:2011/11/14(月) 22:30:13.85
cmath.exp(1+1j)
38デフォルトの名無しさん:2011/11/14(月) 22:31:51.72
>>37
サンクス!別のモジュールとは盲点だったぜ……
39デフォルトの名無しさん:2011/11/15(火) 01:38:09.21
>>12
IDLEとかいうの使ってるわ
40デフォルトの名無しさん:2011/11/15(火) 09:02:32.83
構文が覚えられない
41デフォルトの名無しさん:2011/11/15(火) 11:08:54.90
考えるな、フォースを感じるんだ。
42デフォルトの名無しさん:2011/11/15(火) 12:00:06.84
IDLE最強他は糞
43デフォルトの名無しさん:2011/11/15(火) 12:10:41.63
pass
44初python:2011/11/15(火) 15:23:34.41
#!/usr/bin/python

import&ndsp;sys

if&ndsp;len(sys.argv)&ndsp;==&ndsp;2:
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;tab&ndsp;=&ndsp;int(sys.argv[1])
else:
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;tab&ndsp;=&ndsp;8&ndsp;

for&ndsp;c&ndsp;in&ndsp;sys.stdin.read():
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;space&ndsp;=&ndsp;'&ndsp'&ndsp;+&ndsp;';'
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;p&ndsp;=&ndsp;sys.stdout.write
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;if&ndsp;c&ndsp;==&ndsp;'&ndsp;':
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;p(space)
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;elif&ndsp;c&ndsp;==&ndsp;'\t':
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;for&ndsp;i&ndsp;in&ndsp;range(tab):
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;p(space)
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;else:
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;p(c)

45初'python:2011/11/15(火) 15:27:26.75
#!/usr/bin/python

import sys

if len(sys.argv) == 2:
        tab = int(sys.argv[1])
else:
        tab = 8 

for c in sys.stdin.read():
        space = ' ' + ';'
        p = sys.stdout.write
        
        if c == ' ':
                p(space)
        elif c == '\t':
                for i in range(tab):
                        p(space)
        else:
                p(c)

46デフォルトの名無しさん:2011/11/15(火) 20:00:54.24
文字化けについて質問させてください。

# -*- coding: utf-8 -*-
print "ㅇ"
print "ㄴ"

だと正常に出力されるのですが、

# -*- coding: utf-8 -*-
print "ㄴ"

だと文字化けしてしまいます。

"ㄴ".decode("utf-8") にすると
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3134' in position 0: ordinal not in range(128)

import sys
import codecs
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)

を追加すると
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

環境はWindows7, Python2.6.1で行なっています。
出力は
>python.exe hoge.py >hoge.txt
でテキストに出力して確認しています。

どうすれば文字化けをしないようにできるのでしょうか?
47デフォルトの名無しさん:2011/11/15(火) 20:15:55.77
pythonで、メモリ消費量を量りたい時はどうすればいい?
できれば
with memorychecker() as m:
 計測対象コード
 print m.check()
とかすればメモリ使用量が見れるとうれしい。
48デフォルトの名無しさん:2011/11/15(火) 20:27:25.48
>>46
Python 2.x系列のprintでは、次のように、unicodeではなく標準出力のエンコーディング(Windowsならcp932)に合わせたstrを渡す必要がある。

# coding: utf-8
print u'ほげ'.encode('cp932')

unicodeを渡せるようにするには、一度エンコーディングを指定したらあとは与えられたunicode文字列をデコードして出力してくれるcodecs.getwriterを使う。

# coding: utf-8
import sys
import codecs
sys.stdout = codecs.getwriter('cp932')(sys.stdout)
print u'ほげ'
49デフォルトの名無しさん:2011/11/15(火) 20:55:31.63
ねーねー、pipって、もしかしてバージョン番号を指定してインストールするのができない?
かなり困るんだけど・・・
50デフォルトの名無しさん:2011/11/15(火) 21:08:35.48
pip install hoge==3.14
51デフォルトの名無しさん:2011/11/15(火) 21:21:11.45
ド素人の質問で申し訳ありません。
↓のようにコードを実行するとエラーが出るのですが何ででしょうか…
クラスというものの仕組みがいまいち分かりません。。

class testSuperClass():
X = 5

class test(testSuperClass):
def printXvalue():
print X

test.printXvalue()
52デフォルトの名無しさん:2011/11/15(火) 21:27:56.69
>>51
分からないなら無理に使わなくてもよい。
53デフォルトの名無しさん:2011/11/15(火) 21:53:03.35
教えてください。
クックブックに「メソッドや関数の発行にディクショナリを使う」というのがあります。
if(多言語ではcase)の代わりに使える、との事ですが、関数を辞書に入れていくという
処理が、速度低下につながるという事はないのでしょうか。
54デフォルトの名無しさん:2011/11/15(火) 23:30:23.33
ちょーデカいライブラリファイルhoge.pyを
import hogeして、hogeの定数を使う(tempファイルに書き出す)んだけど
書き出した後は使わない。そういう時ってhoge.pyの為に使ったメモリ量を
解放?したいんだけど、どうやるものですか?
特に動作上気にする必要はないだろうけど
どうしても気になるのです。del hogeとかやればOK?
55デフォルトの名無しさん:2011/11/16(水) 00:29:55.96
>>53
可能性の話をしたら「ある」。
運悪くキーがことごとく衝突しまくるという可能性。
56デフォルトの名無しさん:2011/11/16(水) 00:39:23.39
>>51
class testSuperClass():
  X = 5

class test(testSuperClass):
  @classmethod
  def printXvalue(cls):
    print cls.X

test.printXvalue()
57デフォルトの名無しさん:2011/11/16(水) 00:42:54.82
>>54
sys.getrefcount(hoge)
とすると 3 と出る。
1つは sys.modules['hoge']
残り1つは何だ?
58デフォルトの名無しさん:2011/11/16(水) 02:09:08.92
>>52
自分が使わない分には良いですが他の人のソースコードが読めないのは困りますね…
>>56
ありがとうございます!!!
しかし何でこう書くとうまく行くのかワカラン。。。
オブジェクト思考ムズカシス

ネットで@classmethodを調べてみたら
↓こんなのがあったのですが
class Foo():
@classmethod
def add1(cls, n):
return n + 1
Foo.add1(2)

クラス内の関数を呼び出す場合は、@classmethodを使うってこと…????
59デフォルトの名無しさん:2011/11/16(水) 02:13:43.58
python3はいつになったらpythonになりますか?
easy_installでSyntaxErrorばかりなのは疲れたです
60名無しさん@いたづらはいやづら:2011/11/16(水) 02:21:13.72
>>58
> クラス内の関数を呼び出す場合
それはこう

class testSuperClass():
  X = 5

class test(testSuperClass):
  def printXvalue():
    print testSuperClass.X

test.printXvalue.im_func()
61デフォルトの名無しさん:2011/11/16(水) 02:32:03.86
何がどう違うのかワカラン
62デフォルトの名無しさん:2011/11/16(水) 03:53:09.00
>>53 みたいに、switch文の代わりに辞書使うっての、考えたことはあるんだけど
遅そうだなと思ってやったことはなかった。この際だから、やってみた。
http://ideone.com/pcgK3 単純にメソッド返しゃいいもの
http://ideone.com/X6TC3 式をlambdaでかこって関数化する必要があるもの
やっぱ遅いな。
けど、if文の場合、なんで前者のより後者の方が早いんだ? 処理増えてるはずなのに。
63デフォルトの名無しさん:2011/11/16(水) 04:03:02.83
>>58
まず、Pythonでクラス使うにおいて覚えておかなければいけないのは、
C++やJavaと違って、クラス内のメソッドであっても、メンバ変数やメソッドに直接アクセスできない。
直接アクセスするかわりに、第一引数にとるselfを介してアクセスする。

class Foo:
 # 略。
foo = Foo() となっているとき、 foo.method(arg) は、次のように解釈される。
Foo.method(foo, arg)
まずはその基本を叩き込め。 >>51 では、self.Xを呼び出すべきなのにXを呼び出したからエラーが出たのだろう(エラーメッセージはちゃんと書け)

@classmethod は、デコレータ表記といって、基本を分かっていないと難しいので、まだ理解しなくていいが、
class Foo:
 @classmethod
 def method(cls):
  pass
foo = Foo()
のようになっているとき、Foo.method(arg) も foo.method(arg) もどちらも
Foo.method(Foo, arg)と解釈される。
64デフォルトの名無しさん:2011/11/16(水) 05:49:00.61
急にレベル落ちたな
65デフォルトの名無しさん:2011/11/16(水) 07:24:16.28
>>62
辞書の定義を外に出したら速くなった気がする。
http://ideone.com/ORQxP
最初は例外が遅いのかと思ってtry-exceptの代わりに.get()を使うようにしてみたんだけど、そしたらさらに遅くなった。
66デフォルトの名無しさん:2011/11/16(水) 08:13:50.14
なんか速度にこだわってる奴よくいるけど読みやすさ優先じゃなかったらPython使う意味ないだろ
だいたいプログラム書いてからプロファイルとって最適化するのが正道だと思うんだが
67デフォルトの名無しさん:2011/11/16(水) 10:01:33.43
>>66
お前が正しい
68デフォルトの名無しさん:2011/11/16(水) 11:43:09.48
しかし放っておくとどんどんくっついて膨らんでいくからな
遅いと分かっているコードを書きたくない気持ちも分かる
69デフォルトの名無しさん:2011/11/16(水) 12:24:02.01
>>50
>pip install hoge==3.14
動作確認した。ありがとう。
でもヘルプメッセージには書いてなさそう。
70デフォルトの名無しさん:2011/11/16(水) 13:35:56.08
>>48
レスありがとうございます。

試したところ
UnicodeEncodeError: 'cp932' codec can't encode character u'\u3147' in position 0: illegal multibyte sequence
になってしまいました。
71デフォルトの名無しさん:2011/11/16(水) 14:09:33.59
>>46
結論から言うと、それはPythonの問題ではない。
出力したテキストを閲覧するときに使ったエディタの問題。

エディタが文字コードの自動判定を行いやすくなるよう
余計なBOMでも先頭に出力しておくといい。

# -*- coding: utf-8 -*-
import codecs
import sys
sys.stdout.write(codecs.BOM_UTF8)
#print "ㅇ"
print "ㄴ"
72デフォルトの名無しさん:2011/11/16(水) 14:31:40.71
>>71
ありがとうございます。

…こんな所を見落としてたなんて。
73デフォルトの名無しさん:2011/11/16(水) 14:49:40.11
rubyに %w(foo bar hoge) が ['foo', 'bar', 'hoge'] と等価になる記法があるのですが、
pythonにこれと同じ記法はありますか?
74デフォルトの名無しさん:2011/11/16(水) 15:01:54.37
>>73
ないよ。
書きやすさ重視の言語じゃないし。
'foo bar hoge'.split()
とするしかないね。
75デフォルトの名無しさん:2011/11/16(水) 15:09:10.58
>>74
ないのか、残念。
レスありがとうございました。
76デフォルトの名無しさん:2011/11/16(水) 15:23:50.88
>>73-75
'foo bar hoge'.split()
じゃだめなの?
77デフォルトの名無しさん:2011/11/16(水) 15:24:52.20
しまった、すでに74に書かれてた。
ちょっと埋まってくる。
78デフォルトの名無しさん:2011/11/16(水) 15:47:28.91
u'foo bar hoge'.split()
だと繋がる不思議
79デフォルトの名無しさん:2011/11/16(水) 18:25:19.75
%w(foo bar hoge)
なにこれ?こんな構文がいくつもあるの?
3日触れなきゃ完全に忘れそうだな
80デフォルトの名無しさん:2011/11/16(水) 18:29:05.36
繋がるとはどういう意味?
>>> u'foo bar hoge'.split()
[u'foo', u'bar', u'hoge']
81デフォルトの名無しさん:2011/11/16(水) 18:32:08.06
>>68
>しかし放っておくとどんどんくっついて膨らんでいくからな
非論理的すぎて失笑レベル
82デフォルトの名無しさん:2011/11/16(水) 19:41:59.86
>>79
Perlにあるからなあ
Rubyは名前もだが、中身もかなりPerlを意識してるから入れたんだろう
83デフォルトの名無しさん:2011/11/16(水) 22:01:12.70
>>81
まともなコードはどんどん使い回していくからなんのかんのとくっつく(依存していく)もんなんだよ
そのうち当初考えもしなかった使われ方をして妙なところでボトルネックになるよりは
そういう懸念を少しでも減らしておきたいと思うのも人情という意味
84デフォルトの名無しさん:2011/11/17(木) 00:43:27.22
最適化はあとでやればいい。
「早すぎる最適化」って言うでしょ。
85デフォルトの名無しさん:2011/11/17(木) 01:24:02.88
パフォーマンス気にする人が測らずに終わることはないよ大抵
直感的な分かりやすさだって気にすると思うけど伝わらないようだからもういいや
86デフォルトの名無しさん:2011/11/17(木) 06:01:40.04
小手先のテクニック頑張って覚えても実装やらバージョンやらプラットフォームが変わった程度で無駄になると思う
つまりお前のやってることはほぼ無駄な努力ってみんなあえて言わないだけ
87デフォルトの名無しさん:2011/11/17(木) 09:45:09.19
そんなに気になるならCで書け。
88デフォルトの名無しさん:2011/11/17(木) 13:36:56.65
>>87
最適化をコンパイラにおまかせしちゃうならCで書いた方が楽だけれども
命令ごとのスピードを気にして書くならアセンブラの方がいいかもね。
89デフォルトの名無しさん:2011/11/17(木) 14:17:58.25
Z80機械語ならまかせろ
90デフォルトの名無しさん:2011/11/17(木) 14:57:55.89
DJNZ と django が似てる件
91デフォルトの名無しさん:2011/11/17(木) 15:26:32.74
Pythonのはなしをしなさい。
92デフォルトの名無しさん:2011/11/17(木) 15:46:27.12
そういえば年末か年明けに出るね

ラクダ本の新版が
93デフォルトの名無しさん:2011/11/17(木) 16:07:38.18
Perlはオワコン
94デフォルトの名無しさん:2011/11/17(木) 20:11:23.36
unittestで、ある特定のテストだけを実行する方法は?
95デフォルトの名無しさん:2011/11/17(木) 20:25:15.51
プログラムの引数にテスト名を指定するだけ
96デフォルトの名無しさん:2011/11/17(木) 20:51:43.25
関数を変数に代入し、その変数を関数として使っているコードをチラホラを見かけます。
どんなメリットがあるのでしょうか?
97デフォルトの名無しさん:2011/11/17(木) 21:05:33.92
突き放すわけじゃないけどそのコード見て必要性が分からないうちは使う必要ないよ
9896:2011/11/17(木) 21:17:16.90
>使う必要ないよ

使いたい訳ではないのです。勉強中なので、色々なTipsやテクニックの趣旨や
メリットデメリットを知っておきたいのです。

99デフォルトの名無しさん:2011/11/17(木) 21:34:23.89
boost::python (2.x) で std::wstring の受け渡しってどうするの?
100デフォルトの名無しさん:2011/11/17(木) 21:39:09.33
>>96
op = {'add': lambda a, b: a + b, 'mul': lambda a, b: a * b}
[op[k](2, 3) for k in op]
101デフォルトの名無しさん:2011/11/17(木) 21:39:46.22
>>99
馬鹿には無理
102デフォルトの名無しさん:2011/11/18(金) 15:25:02.56
エイトクイーン問題をpythonで解きたいと思い、以下のコードを書きましたが、何も結果が返ってきません。
修正箇所を教えていただけないでしょうか。。

103デフォルトの名無しさん:2011/11/18(金) 15:25:34.08
確かに何も無いな
104デフォルトの名無しさん:2011/11/18(金) 15:27:42.63
改行が多くて書き込めないようです。。出直してきます。
105デフォルトの名無しさん:2011/11/18(金) 15:30:05.83
codepad.orgとかideone.comを使ってね
106デフォルトの名無しさん:2011/11/18(金) 15:30:14.18
codepadとかideoneとかに上げろよ
10799:2011/11/18(金) 16:11:59.44
うまくいきました
ほんとうにありがとうございました
python って boost と相性ばっちりじゃん
108デフォルトの名無しさん:2011/11/18(金) 17:02:33.05
釣れますか?
109デフォルトの名無しさん:2011/11/18(金) 19:09:37.64
boostを使うと人間性が穢れるってばっちゃが言ってた。
110デフォルトの名無しさん:2011/11/18(金) 19:33:49.42
Yes, we can.
111デフォルトの名無しさん:2011/11/18(金) 21:10:32.98
UnicodeEncodedError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
と、androidのSL4Aに言われてしうのですが、SL4Aは日本語が表示できないですか?
ちなみに同コードをLinuxのuxtermで実行するとエラーになりません。
112デフォルトの名無しさん:2011/11/18(金) 23:08:47.51
「同コード」が見たい
113デフォルトの名無しさん:2011/11/18(金) 23:20:56.92
そこは神通力で黙って座ればピタリと当てて貰いたい。
114デフォルトの名無しさん:2011/11/18(金) 23:23:05.21
ヒサヤ大黒堂的な
115デフォルトの名無しさん:2011/11/18(金) 23:31:13.08
>>111
Linux上で、ファイルにリダイレクト ($python hoge.py > aaa) したときに
エラーになるならおまえさんのコードが悪い。
11662:2011/11/19(土) 02:52:47.73
>>66,>>84
もしdict使った方がifより早いからそっち使うって言ったなら、そういう意見もあるかもしれんがねぇ。
通常は、switchのかわりはdictじゃなくif使うものだ。

普通のやり方をしないことに、どんな利点があるのかを知るために速度を測っておくことは決して間違ったことじゃないし、
「dict使うのはトリッキーな上に速度上のメリットもないからifを使う」というのは早すぎる最適化でもなんでもない。

それに、速度を気にするならC使えって言葉は、スクリプト言語でなら効率を気にしない愚かな処理を多様していいという意味ではない。
例えば、速度や効率の観点から、ループ回して何度も文字列を結合したいときは、+演算子での結合でなくlistに入れて後でjoinすることが推奨されているし、
まともなPython使いならそうしている。
117デフォルトの名無しさん:2011/11/19(土) 02:57:58.66
ほうほう。ほんなら、わざわざトリッキーで推奨されてないことをあえてする必要はないんじゃね
118デフォルトの名無しさん:2011/11/19(土) 04:01:31.72
いいから黙ってプロファイル取れよ
119111:2011/11/19(土) 05:16:16.03
>>115
ありがとうございます。
Linux上で $ python hoge.py > aaa とするとSL4Aと同じ UnicodeEncodeError が出たので
(1) print var_en, var_jp みたいのを
(2) print var_en, var_jp.encode('utf-8') にするとSL4Aでも日本語が出ました。よかったよかった。

それでは、と codecs.open("txt",r,"utf-8") で上(1)をやると同エラー。
難解すぐる。
120デフォルトの名無しさん:2011/11/19(土) 13:23:03.47
>>117
そうすることに明確なメリットがあるのなら、するだろうね。
121デフォルトの名無しさん:2011/11/19(土) 13:43:03.56
O(nlogn)のアルゴリズムがあるのにO(n^2)のアルゴリズムを使っちゃう
みたいなのを愚かだというのは分かるが、

文字列の結合をjoinで、みたいなのはしょせん
くだらないノウハウの類いだよね。
122デフォルトの名無しさん:2011/11/19(土) 14:00:14.56
うるせぇ。神は細部に宿るんだよ。
123デフォルトの名無しさん:2011/11/19(土) 14:07:24.63
pass
124デフォルトの名無しさん:2011/11/19(土) 15:28:10.19
piss
125デフォルトの名無しさん:2011/11/19(土) 15:29:47.02
try:
  insert(角電池)
126デフォルトの名無しさん:2011/11/19(土) 16:56:24.20
くだらないノウハウだと思うなら、使わないでいいんじゃない?
ま、joinを使わないで結合した場合の計算オーダくらいは調べてみても損はないよ。
127デフォルトの名無しさん:2011/11/19(土) 16:58:32.56
同じオーダーのアルゴリズムでも組み込む関数の方が速いよね(´・ω・`)
128デフォルトの名無しさん:2011/11/19(土) 17:00:16.04
文字列の置き換えで
replaceを使ってるんだけど置き換える場所を指定するいい方法ある?
2番目にマッチする文字だけをおきかえたいんだけど

例えば
'ABBBABBBBB'

'ABBBCBBBBB'
にしたい感じ

間にあるBは長さは不定(Aがはいることはない)
Aは実際は複数の文字


今は
s = 'ABBBABBBBB'

s = s.replace('A','C')
s = s.replace('C','A',1)

ってやってるんだけど無駄が多い気がする
129デフォルトの名無しさん:2011/11/19(土) 17:12:55.63
じゃあ一つ一つ辿って、二番目だけ置き換えればいいんじゃね
130デフォルトの名無しさん:2011/11/19(土) 17:20:11.37
>>128
いかにもオートマトン的な処理だから、
正規表現でやるのが無難だと思うけど、速度はどうなるか分からん。
131130:2011/11/19(土) 17:22:33.92
じゃなくて
pos0 = s.find("AAA")
pos1 = s.find("AAA", pos0 + len("AAA"))
でいいや。
132デフォルトの名無しさん:2011/11/19(土) 17:26:04.22
はい
133デフォルトの名無しさん:2011/11/19(土) 21:07:38.24
はいじゃないが
134デフォルトの名無しさん:2011/11/20(日) 01:38:17.00
いいえ
135デフォルトの名無しさん:2011/11/20(日) 01:43:18.48
bytes型についての質問です。

bytes型の変数から一部分を抽出(部分コピー)したいんですけど、
なかなか方法が見つかりません。

javaのarraycopyみたいな感じです!

どなたか、教えてください!

よろしくお願いします。
136デフォルトの名無しさん:2011/11/20(日) 01:45:43.68
普通にスライスするだけ
137デフォルトの名無しさん:2011/11/20(日) 01:46:33.77
buf = b'abcde'
buf[1:3] # b'bc'
138デフォルトの名無しさん:2011/11/20(日) 08:49:29.13
>>121
>文字列の結合をjoinで、みたいなのはしょせん
>くだらないノウハウの類いだよね。

さすがにこれはない。
これはO(nlogn)のアルゴリズムがあるのにO(n^2)のアルゴリズムを使っちゃうくらいに愚かなこと。
joinじゃなくてもいいのは、結合する文字列の数が2個とか3個程度の場合のみ。
139デフォルトの名無しさん:2011/11/20(日) 08:51:39.53
>>95
遅れたけど、さんくす。unittestで、あるテストだけを実行する方法がわからなくて、毎回全体をテストしてたから、すごい助かった。
できれば正規表現でフィルタとかできるとうれしいけど、そこまではunittestではできないよね。
140デフォルトの名無しさん:2011/11/20(日) 09:59:32.91
>>138
>joinじゃなくてもいいのは、結合する文字列の数が2個とか3個程度の場合のみ。

測定もせずに、「2個とか3個程度の場合のみ」なんて馬鹿としか思えない。
141デフォルトの名無しさん:2011/11/20(日) 10:49:51.20
長い文字列を構築するときに += を使ったらそりゃ遅いに決まってますよね。
Pythonの文字列はimmutableだから毎回copyが発生しますし。
まぁ、あたしはそういうときjoinじゃなくて、cStringIOを使いますケド。
☆(ゝω・)vキャピ
142デフォルトの名無しさん:2011/11/20(日) 11:06:38.81
StringIOだとunicode文字列がそのままじゃ連結できないよね。
143デフォルトの名無しさん:2011/11/20(日) 11:25:11.25
144デフォルトの名無しさん:2011/11/20(日) 13:21:26.89
>>141
cStringIOは遅いから、文字列結合のためにつかうのはよしたほうがいい。
145デフォルトの名無しさん:2011/11/20(日) 13:28:16.69
>>140
素直にすべての場合でjoinを使ったほうがいいって言えばいいのにね
146デフォルトの名無しさん:2011/11/20(日) 13:50:03.74
joinいいんだけどさ
アタマに付ける「''.」がキモいんだよねー
いっそsumとかでくっついてくれたほうがキモくないような気がしなくなくなくもない。
147デフォルトの名無しさん:2011/11/20(日) 13:51:46.70
> 気がしなくなくなくもない

どっちだよw
148デフォルトの名無しさん:2011/11/20(日) 14:19:53.59
join = ''.join
149デフォルトの名無しさん:2011/11/20(日) 14:53:16.96
array.join(delim) と delim.join(list) のどっちがいいかというのは定期的に話題になるな
150デフォルトの名無しさん:2011/11/20(日) 15:33:38.91
>>149
ま、Pythonの場合、イテレータが多用されるから、前者の形式は難しいわな。
join(iterator, delim='')
みたいな組み込み関数があっても悪くないが、組み込み関数も基本は削減の方針だしね。
151デフォルトの名無しさん:2011/11/20(日) 16:43:49.23
別にPythonでも書きたければ
str.join(':', ('foo', 'bar'))
と書けるよ
':'.join('foo', 'bar')
よりタイプ数増えるけど
152デフォルトの名無しさん:2011/11/20(日) 19:57:32.09
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
153デフォルトの名無しさん:2011/11/20(日) 19:58:09.30
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
154デフォルトの名無しさん:2011/11/20(日) 23:01:16.11
初めまして。
質問させてください。
テキストファイルが6000行あって,
偶数行だけ抜き出したいのですがどうすればよいでしょうか?
わかるかたがいらっしゃいましたら教えてください。
お願いします。
155デフォルトの名無しさん:2011/11/20(日) 23:06:21.01
>>154
改行コードは何?
156デフォルトの名無しさん:2011/11/20(日) 23:09:48.42
>>155
\nです。
お願いします。
157デフォルトの名無しさん:2011/11/20(日) 23:10:23.97
>>154
最初が1行目(奇数行)だとすれば
from itertools import islice
with open("unko.txt") as f:
    for even_line in islice(f, 1, None, 2):
        print even_line
158デフォルトの名無しさん:2011/11/20(日) 23:14:33.36
>>154
このスレに来ているということは勉強なんだよね?
なら、自分でどこまでできたか書いてくれ。
はなっからわからんと言うなら、まずは本屋に行って一番薄い Python の本を一通り読んできてくれ。
159デフォルトの名無しさん:2011/11/20(日) 23:14:51.03
怠惰版
print ''.join(open("unko.txt").readlines()[1::2])
160デフォルトの名無しさん:2011/11/20(日) 23:26:15.07
>>159
1行の長さ(バイト数)次第かな。
161デフォルトの名無しさん:2011/11/21(月) 01:01:16.76
>>157,159,160
ありがとうございます。
今回は159を使わせて頂きます。
>>158
すみませんでした。
以後気をつけます。
162デフォルトの名無しさん:2011/11/21(月) 04:11:31.89
リストをaとbのリストに分けたいんですが
例として
[文1,文2,文3,文4,文5,文6,文7,文8]があって
として文1と8にorangeが含まれてる
リストA[文1,文8]
リストB[文2,文3,文4,文5,文6,文7]
以下が自分の書いたプログラムです。
a = []
b = []

for list_a in list:
# print('orange' in list)
#プリントではきちんとTrueとFalseという結果が出ます。
if('orange' in list == True):
alist += list
print(alist)
で結果がでません。
何がいけないのでしょうか?
163デフォルトの名無しさん:2011/11/21(月) 04:13:21.79
記載間違いです。
a = []
b = []
ではなく
alist = []
blist = []
でした。
164デフォルトの名無しさん:2011/11/21(月) 04:13:49.60
('orange' in lst) == True
165デフォルトの名無しさん:2011/11/21(月) 04:17:30.46
>>> 'orange' in lst == lst
True
166デフォルトの名無しさん:2011/11/21(月) 04:22:23.97
>>164,165
ありがとうございます。
出力が出るようになりました。
ですがなぜか,文が1文字ずつリストに格納されてしまうのですがどうすればいいのでしょうか?
167デフォルトの名無しさん:2011/11/21(月) 04:33:49.59
alist += list じゃなくて alist.append(list_a)組み込み関数は一通り目を通せ
168デフォルトの名無しさん:2011/11/21(月) 04:43:01.05
>>167

助かりました、ありがとうございました。
169デフォルトの名無しさん:2011/11/21(月) 05:23:15.38
あと、どうでも良いけど、C言語初心者に言うみたいで気が引けるけど
if(('orange' in list) == True) は
if('orange' in list) でいいだろ
170デフォルトの名無しさん:2011/11/21(月) 10:04:38.62
ちょっと宿題の香りがする
171デフォルトの名無しさん:2011/11/21(月) 14:12:14.83
pythonで、classとtypeのどちらかを判定するのってどうするの?
>>> clas Foo(object): pass
>>> type(Foo)
<type 'type'>
>>> type(list)
<type 'type'>

type(Foo)もtype(list)も同じ結果になるので困ってる。
types.ClassTypeは違うようだし。
172デフォルトの名無しさん:2011/11/21(月) 15:03:45.74
>>169
カッコも要らない
173デフォルトの名無しさん:2011/11/21(月) 15:07:09.03
>>> clas Foo(): pass
>>> type(Foo)
<type 'classobj'>
>>> type(list)
<type 'type'>
174デフォルトの名無しさん:2011/11/21(月) 15:11:12.48
175デフォルトの名無しさん:2011/11/21(月) 15:34:08.03
>>171
何のために区別するかわからないし、そもそもPython3では区別がない。
必要なら、 issubclass とかで代用できないの?
176デフォルトの名無しさん:2011/11/21(月) 18:08:02.63
>>172
ソウデスネー(´-ω-`)
177デフォルトの名無しさん:2011/11/21(月) 19:27:45.94
windowsXP、2.7.2です。
変数名直前のアンダースコアについて質問です。
(下記は説明用の例です)
「book.py」の中に、下記の変数を作成。
 _BOOK_CODE = 'PB-001'
 _BOOK_NAME = 'Learning PYTHON'
 EDITION = 'THIRD'
「test.py」で、下記の様にインポート。
 from book import *

しかしtest.pyの中では BOOK_CODE,_BOOK_NAME が参照できません(not define)。
インポート自体はエラーも出ず、EDITION は参照可能なので成功しています。
アンダースコア2個は難読化されるとの事ですが、1個の場合は変更されたくない事を
示す「単なる慣習」で、挙動は一般的な変数と変わらないと理解していましたが違う様です。
アンダースコアを1個付けると、何が変わるのか教えて下さい。
178デフォルトの名無しさん:2011/11/21(月) 19:36:37.62
179デフォルトの名無しさん:2011/11/21(月) 20:14:41.34
プライベート変数はマングリングしたほうがいいの?
アンダースコア2つも付けるのキモいんだけど。
180177:2011/11/21(月) 20:25:27.99
>>178

ズバリ書いてありますね・・・
_* この識別子は from module import * で import されません。

書き換えないで、という意思表示以外に意味があるとは知りませんでした。
__all__で定義すればOKのようですが、余計な混乱を招きそうなので
アンダースコアを取ります。

ありがとうございました。
181デフォルトの名無しさん:2011/11/22(火) 16:33:48.04
Webページのコンテンツにpythonの実行結果をだしたいんですけど、どういう方法がありますか?
絵的にいうと
ヘッダー
サイドメニュー
pythonの結果 
フッター
こんな感じにしたいです。
182デフォルトの名無しさん:2011/11/22(火) 19:13:25.43
動的か性的かでぜんぜん違うダロ
183181:2011/11/22(火) 20:07:12.58
>>182
なるほど(^ω^;)
動的か静的かで言うと動的だと思います。
184デフォルトの名無しさん:2011/11/22(火) 20:18:15.76
昔なつかし SSI
185デフォルトの名無しさん:2011/11/22(火) 20:48:30.18
php-curl+wsgiとかどうですか?お勧めですか?
186デフォルトの名無しさん:2011/11/22(火) 21:49:56.36
>>183
がんばってJavaScript上で動くPythonを作る。
187デフォルトの名無しさん:2011/11/22(火) 21:57:20.85
最近やっとクラスとかインスタンスとか継承とか
オブジェクト指向的なことを覚え始めたんだ、1歩前進した気がするよ
188デフォルトの名無しさん:2011/11/22(火) 22:12:15.93
ロッコちゃん販売の一番の障害はカ○コンだな。
189デフォルトの名無しさん:2011/11/22(火) 22:13:01.75
なんでもないです。
190デフォルトの名無しさん:2011/11/22(火) 22:25:41.19
>>186
ttp://bellard.org/jslinux/
JavaScript で動くLinuxカーネルとCコンパイラは既にあるから、ゴールは近いぞ!
191デフォルトの名無しさん:2011/11/22(火) 22:27:00.57
>>188
大航海時代か。なついな
192デフォルトの名無しさん:2011/11/22(火) 23:40:10.03
>>187
そこまでなら特にPythonである必要はないな。
193デフォルトの名無しさん:2011/11/22(火) 23:43:31.20
ほんとだわ。そんなことにpython使わないでほしい。
194デフォルトの名無しさん:2011/11/23(水) 00:34:04.22
>>193
なにそれこわい
195デフォルトの名無しさん:2011/11/23(水) 00:46:10.12
pythonの関数の返り値の型って何をみたらわかるんですか?
たとえばdatetime.date.today()をライブラリでみると
http://www.python.jp/doc/nightly/library/datetime.html?highlight=today#datetime.date.today
ってあるんですけど、返り値わからないです。
196デフォルトの名無しさん:2011/11/23(水) 01:02:36.21
dateが日付って訳されてるから
わかんないよねー
197デフォルトの名無しさん:2011/11/23(水) 01:12:27.70
>>195
わかんなかったらtype()を使って調べる。
198デフォルトの名無しさん:2011/11/23(水) 01:26:23.22
>>196
日付で別にいいんじゃない?

http://docs.python.org/library/datetime.html#datetime.date.today
日付でなくdate objectとしてならdateの字体を変えるか
a date object corresponding toなんちゃらとか書くだろう
199デフォルトの名無しさん:2011/11/23(水) 04:53:48.00
>>181
一番簡単なのは、CGIでPythonを動かす。
ページへの埋め込みはJavaScriptなり、ヘッダから全てPythonで出力するなり。

ブラウザ上でJavaScriptのように動かしたいなら、SilverlightでIronPythonとか。
200デフォルトの名無しさん:2011/11/23(水) 04:56:35.12
Silverlightってどうなの
201デフォルトの名無しさん:2011/11/23(水) 05:45:17.98
>>200
何時消えさってもいいつもりで使うならおk.
202デフォルトの名無しさん:2011/11/23(水) 08:43:25.42
>>192
>>193
じゃあ何に使えっていうんだよ><
203デフォルトの名無しさん:2011/11/23(水) 08:47:42.54
あからさまに初心者だから煽られてるだけ
とりあえず無駄にageないでほしい
204デフォルトの名無しさん:2011/11/23(水) 09:46:21.01
俺は書き込みがあったらあげてほしいけどな。
205デフォルトの名無しさん:2011/11/23(水) 13:00:41.73
アゲ〜
206デフォルトの名無しさん:2011/11/23(水) 16:32:43.94
age嬢
207デフォルトの名無しさん:2011/11/23(水) 18:21:59.87
ども、171です

>>173
class Foo(object)
でためしてください。

>>174
classとtypeを区別する方法は書かれてないです

>>175
ためしたけど、できないですね。
>>> issubclass(Foo, object)
True
>>> issubclass(int, object)
True
>>> issubclass(Foo, type)
False
>>> issubclass(int, type)
False

結局、pythonではclassとtypeは区別できない、でFA?

208デフォルトの名無しさん:2011/11/23(水) 18:25:04.43
どういう状況で必要なのか、の方が気になる
209195:2011/11/23(水) 18:25:20.59
レスありがとうございます。
date自体が型というかクラスのタイプ?になるんですね。
インスタンスが作成されて、それの変数にアクセスするっていう形になるんでしょうか。

なんか、関数実行して日付を返すとしかみてなかったので
>>197
isinstance使うってあったからそっちでしらべたらdatetime.dateでした。


>>184
こんなのあるんですね。
ただ、鯖側の設定あまり変えないとだめっぽいのでやめときます。

>>199
IronPython面白そうですが難しそうです。一度素のpythonにほうでやってみようと思います。
JavaScriptで呼び出すのはたぶんよくあるやつですよね。php-curl+wsgiでつまづいたら試します。
210デフォルトの名無しさん:2011/11/23(水) 20:22:14.58
http://docs.python.org/release/2.7.2/library/urlparse.html#urlparse.parse_qsl
ここにData are returned as a list of name, value pairs.ってあるんですけど、これって辞書ではないんですか?


query = urlparse.parse_qsl(environ.get('QUERY_STRING'))
return str(query)
したら
[('param1', '3'), ('param2', '4')]

みたいなのがかえってきあmした。

list = [('param1','2','3'), ('param2','3' '4')]
return str(list)
したら
[('param1', '2', '3'), ('param2', '3', '4')]
が返ってきたました。よくわかりません。。辞書とかではなくてリストの各要素がtuppleなんですか?

211デフォルトの名無しさん:2011/11/23(水) 20:31:19.30
212デフォルトの名無しさん:2011/11/23(水) 20:31:21.51
要素がふたつのタプルをペアというとです
213デフォルトの名無しさん:2011/11/23(水) 20:52:55.64
>>211
ありがとうございます。スクリプトに渡すパラメータ扱うならこっちのが楽そうです。
>>212
なるほど。for文でリスト分解したあとにインデックス使ってるサンプルとかあったので、ずっと不思議に思ってました。
タプルだからインデックスとか使えてるんですね。


python勉強する人ってこの辺とか詰まらずにいけるもんなんですか。難しいです。マニュアルみてもわかんないことありますし。
214デフォルトの名無しさん:2011/11/23(水) 21:11:59.22
わからなければ対話型インタプリタで動作を確かめるとか

$ python
>>> from urlparse import parse_qsl
>>> parse_qsl("a=123&b=456")
[('a', '123'), ('b', '456')]

それでも手に負えなかったら質問すれば誰かしら答えてくれるよ
215デフォルトの名無しさん:2011/11/23(水) 21:24:14.36
>>213
同じパラメータが二つ以上あったら値がリストになるので気をつけろよ
>>> urlparse.parse_qs("a=1&a=2")
{'a': ['1', '2']}
216デフォルトの名無しさん:2011/11/24(木) 01:19:05.48
>>207
is_class = lambda typ: repr(typ).find("<class ") == 0
もっと真面目にするなら
def is_builtin_type(typ):
 if type(typ) is type:
  try:
   return getattr(__builtins__, typ.__name__) == typ
  except AttributeError:
   pass
 return False

動作例
http://codepad.org/boee6PL6
217デフォルトの名無しさん:2011/11/24(木) 01:22:13.85
関数を纏めて持ち運ぶのにclassを使うのは、使い方を間違っていますか?

def function1(arg):
 ・・・
 return ans
 
def function2(arg):
 ・・・
 return ans

class FuncPack(object):
 def func1(self, arg): return function1(arg)
 def func2(self, arg): return function2(arg)
218216:2011/11/24(木) 01:23:29.21
動作例の"Copied int"はただ別名つけただけで、コピーしたわけじゃないから不適切だな。
Aliased intとでも読み替えてくれ。
219デフォルトの名無しさん:2011/11/24(木) 01:25:42.25
>>217
間違ってないけど、classmethodかstaticmethodにしたほうがいい気がする。
220217:2011/11/24(木) 01:48:31.29
>>219
始めはClassの中にメソッド定義としてfunctionそのものを書いていたのですが、
長くなったので苦し紛れに分割したらああいう形になりました。

>classmethodかstaticmethod
初耳なので検索しましたが、手を出していないデコレータが出てきて難しそうです。
少し、調べてみます。
ありがとうございました。
221デフォルトの名無しさん:2011/11/24(木) 06:00:14.51
デコレータを自分で作る訳じゃなくて
使うだけなら難しくないよ
関数名の前の行に書いとけばいい
222デフォルトの名無しさん:2011/11/24(木) 08:00:12.62
やっぱり入門者用のスレを復活させたほうがいいんじゃ。
223デフォルトの名無しさん:2011/11/24(木) 09:35:54.44
>>222
せめて、なんでここじゃだめなのか書けよ。
それすら書けないなら、心の中にしまってろ。
224デフォルトの名無しさん:2011/11/24(木) 10:19:23.36
わかりにくいけど入門用ならこっち潰していけばいい
http://hibari.2ch.net/test/read.cgi/tech/1220604777/
225デフォルトの名無しさん:2011/11/24(木) 10:48:12.70
>>223
何でそんなに怒ってるのか分からなんだけど。
226デフォルトの名無しさん:2011/11/24(木) 11:00:31.92
>>223
住み分けしていた時のほうが、基本的な言語仕様とかの質問が気楽にできて
良かったのではないかと思った。

初心者を排除したり脅かしたりするつもりは一切なかった。
不快に思ったのなら謝る。
だがお前は死ね。
227デフォルトの名無しさん:2011/11/24(木) 11:16:44.55
そもそも入門スレは何で落ちたんだ?
結構な頻度でレスがあったと思うけど。
228デフォルトの名無しさん:2011/11/24(木) 11:35:14.33
みんな巣立っていったのさ。
229デフォルトの名無しさん:2011/11/24(木) 11:54:27.10
立てちゃえばいいじゃない
初心者スレよりこっちのほうが荒れやすくて問題あったと思う
230デフォルトの名無しさん:2011/11/24(木) 11:56:42.39
>>226
ずいぶん昔からいるんですね
初心者脱出したのになんでまだここにいるの?
231デフォルトの名無しさん:2011/11/24(木) 12:07:22.54
>>230
意味がわからん。何か勘違いしてない?
232デフォルトの名無しさん:2011/11/24(木) 12:13:52.56
>>230
>ずいぶん昔からいるんですね
「ずいぶん昔」じゃなくて、つい最近まで、このスレとは別に入門スレがあった。
>初心者脱出したのになんでまだここにいるの?
このスレは初心者専用のスレじゃないと思う。

この話題は迷惑をかけるのでもうやめます。
233デフォルトの名無しさん:2011/11/24(木) 12:33:15.26
>>230
「初心者脱出したのになんでまだここにいるの?」
↑ ここはPython総合スッドレだよ〜
234デフォルトの名無しさん:2011/11/24(木) 14:22:23.25
>>215
>辞書のキーは一意なクエリ変数名で、値は各変数名に対する値からなるリストです。
ってあるから、値は常にリストですよね??

urlparse.parse_qs("a=1&b=1")
{'a': ['1'], 'b': ['1']}
235デフォルトの名無しさん:2011/11/24(木) 15:29:52.91
くだスレPython(超初心者用) その12
http://hibari.2ch.net/test/read.cgi/tech/1322115727/
236デフォルトの名無しさん:2011/11/25(金) 12:36:22.83
>>234
そうですね。
237デフォルトの名無しさん:2011/11/25(金) 16:22:26.44
Python2.6 ですが、
re.split("<.*?>", text, re.S)

re1 = re.compile("<.*?>", re.S)
re1.split(text)
で、splitの結果が異なるのですが、なぜでしょうかね?
下段のcompileを使う方がうまくいく感じです。
238デフォルトの名無しさん:2011/11/25(金) 16:42:41.72
いろいろ間違ってる上に何を問題としているか説明も足りないからじゃね
239デフォルトの名無しさん:2011/11/25(金) 16:45:50.66
レベルダウン来た
240デフォルトの名無しさん:2011/11/25(金) 16:55:14.02
>>237
textの内容とかを書いてくれないと
241デフォルトの名無しさん:2011/11/25(金) 17:00:52.88
ちなみに間違ってるところは.とre.splitの使い方と?な
242デフォルトの名無しさん:2011/11/25(金) 17:10:49.09
>>> text="foo<hoge>bar"
>>> re.split("<.*?>", text, re.S)
['foo', 'bar']
>>> re.compile("<.*?>", re.S).split(text)
['foo', 'bar']
243デフォルトの名無しさん:2011/11/25(金) 17:27:07.71
>>> help(re.split)
split(pattern, string, maxsplit=0, flags=0)
だから、re.split("<.*?>", text, flags=re.S)
244243:2011/11/25(金) 17:34:10.41
2.6のre.splitにはflagsオプションなかった。243は無視して
245237:2011/11/25(金) 17:47:42.79
ありがとうございます。ご指摘理解しました。
re.splitを先入観で使っていました。
>>244 に書いていただいたように、split には flagsオプションが無いので、
これを使いたい場合は、compileを通さねばならないということで理解しました。
246デフォルトの名無しさん:2011/11/25(金) 17:57:17.18
>>238
わからないならレスしないでください

>>243
わろす
247デフォルトの名無しさん:2011/11/25(金) 20:14:33.92
その文が何について書かれているかを判定するプログラムを作っています.
文と単語のそれぞれのリストがあって,文にある単語(例えば'みかん')が出てきたら,'果物'を返してそれ以降のをみないようにしたいのですが.
単語のリストは上にあるものが優先

新しいリスト = []

for 文 in 文のリスト:
for 単語 in 単語のリスト:
if 単語[0](みかん) in 文:
新しいリスト.append(単語[1](果物))

これだと全部見てしまうんですよね・・・
決定した文はみないようにしたいのですがどうすればよいでしょうか?
248デフォルトの名無しさん:2011/11/25(金) 20:18:48.99
関数にするかフラグを使う
249デフォルトの名無しさん:2011/11/25(金) 20:30:09.74
顕著なレベルダウンだな
スレ分ける意味がない
250デフォルトの名無しさん:2011/11/25(金) 23:57:26.89
コンソール上に出した文字を消して、そこにまた文字を出すことってできる?
処理がどれくらい終わったかをprintしてるんだけど、コンソール上に文字が連続で出て見にくいんです
251デフォルトの名無しさん:2011/11/26(土) 00:12:46.61
これで足りるといいけど

>>> import sys, time
>>> for s in ('foo', 'bar', 'baz'):
...     sys.stdout.write('\r%s' % s)
...     sys.stdout.flush()
...     time.sleep(1)


252デフォルトの名無しさん:2011/11/26(土) 00:38:42.67
>>251
ありがとうございます!できました!
ちなみに、表示する文字の文字数が、前に表示した文字列よりすくないと文字が被ってしまうんですけど
これの対処方法は、先にスペースで消しておくくらいしかないですか?

スペースたくさん用意しておけば大丈夫なんだけど、
出てくる文字数が予想できないときはどうするのかなと思って
253デフォルトの名無しさん:2011/11/26(土) 00:59:11.48
>>252
画面消去してもいいなら
sys.stdout.write('¥033[2J¥r%s' % s)
254デフォルトの名無しさん:2011/11/26(土) 01:00:46.47
最初に出力した文字列の長さを覚えておいて、
次に出力する文字列がそれよりも短かければ不足分をスペースで消すとか

でも出力が複数の物理行にわたると'\r'出力しても論理行の左端には戻らないね
端末のエスケープシーケンスやライブラリ(curses等)使うしかないのかな
255デフォルトの名無しさん:2011/11/26(土) 01:03:59.13
この手のものは俺なら素直に諦めるかcursesを使ってしまう
256デフォルトの名無しさん:2011/11/26(土) 01:07:20.12
>>254
↓でやってみ。
print "quickbrownfoxjumpsoverthelazydog\r\033[Kchinko"
257デフォルトの名無しさん:2011/11/26(土) 01:09:56.39
まちがえた、>>252
258250:2011/11/26(土) 01:11:45.74
ありがとうございます!
とりあえず文字数カウント+スペース使ってみて、ダメなときはライブラリ使おうと思います
259デフォルトの名無しさん:2011/11/26(土) 01:14:32.27
Windowsは知らんが、ANSI端末なら
"\033[K" でLine Eraseだぞ。
260デフォルトの名無しさん:2011/11/26(土) 01:37:28.21
print "".join("\033[%sm\033[%sm(^o^)/おやすみ〜"%(a,b)for a in range(30,38) for b in range(40,48))
261デフォルトの名無しさん:2011/11/26(土) 01:44:24.60
>>260
どうせなら256色で
262デフォルトの名無しさん:2011/11/26(土) 02:57:44.10
263デフォルトの名無しさん:2011/11/26(土) 08:30:09.44
>>259
WindowsではESCシーケンスは使えない。
DOSなら使えたんだけどね。
264デフォルトの名無しさん:2011/11/26(土) 10:08:03.76
265デフォルトの名無しさん:2011/11/26(土) 12:32:46.76
>>258
2行に渡らないなら >>256 でいいと思うが。

>>263
http://support.microsoft.com/kb/100394/en-us
266デフォルトの名無しさん:2011/11/26(土) 12:37:51.57
>>265
APPLIES TO
Microsoft Windows NT Advanced Server 3.1
Microsoft Windows NT Workstation 3.1
Microsoft Windows NT Advanced Server 3.1

って書いてあるけどXPやWin7でもいける?

267デフォルトの名無しさん:2011/11/26(土) 13:00:05.91
そもそも c:\dos\command.com がもう内蔵
268デフォルトの名無しさん:2011/11/26(土) 13:06:05.30
Cygwinなら可能
269デフォルトの名無しさん:2011/11/26(土) 13:14:06.99
>>266-267
WindowsXP は C:\Windows\system32\command.com でいけた。
7 は、持ってないからわからん。
270デフォルトの名無しさん:2011/11/26(土) 14:13:03.32
いま 7 使ってるんだが
cygwin 試してみるわ
271デフォルトの名無しさん:2011/11/26(土) 14:40:57.71
7 + cygwin 1.7.9 で問題ないわ
272デフォルトの名無しさん:2011/11/26(土) 14:45:16.46
なぜエスケープシーケンスを直に使いたがるのか理解に苦しむな
273デフォルトの名無しさん:2011/11/26(土) 14:54:39.37
エスケープシーケンスのナウでヤングな使い方を教えてください!
274デフォルトの名無しさん:2011/11/26(土) 14:55:44.84
>>266
x64だと16bitプログラムが使えないからANSI.SYSは動かない。

>>271
Cygwinはcygwin1.dllの中で独自にESCシーケンスを解釈しているので、当然動く。
275デフォルトの名無しさん:2011/11/26(土) 15:41:16.90
>>273
slでもインストールしとけ。
276デフォルトの名無しさん:2011/11/26(土) 16:04:22.32
http://bugs.python.org/issue10570
これを見ると、ものすごく最近まで3のcursesはバグ持ちだったってことでいいのか
3のunicode化のせいで、terminfoやエスケープシークエンスまわりの扱いが
うまくいってなかったっぽいぞ

>>272
というわけで、↑のせいじゃね
277デフォルトの名無しさん:2011/11/26(土) 16:05:25.46
>>272
>>250 からのレス見てて、その理解力だと世間に出るのが辛いんじゃね?
278デフォルトの名無しさん:2011/11/26(土) 16:08:19.78
いまさらだけど漏れも久しぶりに新しいバージョンの cygwin 使ってみた
これいいじゃん
コンソールの UTF-8 の問題が一気に解決した
279デフォルトの名無しさん:2011/11/26(土) 16:11:40.39
エスケープシークエンスは環境依存性(端末の差を含む)が高い
Unixでは端末の差を吸収するためにtermcapやterminfoなどのデータベースが
導入され、それを使うのが作法となっており、
まともなプログラムでエスケープシークエンスが直接利用されることはまずない
(ただしシェルのプロンプトをちょっと弄ったりするのには今でも利用されるが)
Win32コンソールではどのみち使えないが

というのを踏まえたうえでの>>272じゃないの
280デフォルトの名無しさん:2011/11/26(土) 16:12:52.02
>>278
そのうちconfigureやmakeの遅さとfork問題に悩まされることになる
それでもまあWindows用のシェル環境として便利は便利だけどな、
まともなのが何も無いよりはマシという意味で
281デフォルトの名無しさん:2011/11/26(土) 16:16:30.11
>>279
今回のケースは、

>(ただしシェルのプロンプトをちょっと弄ったりするのには今でも利用されるが)

程度のもんでしょ。
282デフォルトの名無しさん:2011/11/26(土) 16:17:29.53
そうだね
どっちみち cmd.exe でも configure とか make とか fork とかしてた訳じゃないので
cmd.exe の代わりに mintty 使うことにした
configure とか make とか fork とかしたいときは普通に linux 使うし
これで完全に Windows の python で UTF-8 に一本化出来る
ありがとう
283デフォルトの名無しさん:2011/11/26(土) 16:20:59.93
>>281
まあね
284デフォルトの名無しさん:2011/11/26(土) 16:22:44.94
>>279
Linuxの起動スクリプトなんかはエスケープシーケンス結構出てくるよ
まったく読めないと困る
285デフォルトの名無しさん:2011/11/26(土) 16:30:22.24
>>282
fork()するプログラムを自分では書かないとしても
Linuxエミュレーションであるcygwinでは*あらゆる*プロセス生成はfork()経由で
行われるので、fork()に問題があるというのがどういうことか考えたほうがいいよ

たとえばシェルでlsとかタイプしたとして、その時点でシェルがfork()+exec()を
実行する
286デフォルトの名無しさん:2011/11/26(土) 16:30:22.65
色を付けたり行を消す程度のエスケープシーケンスなら、
どの端末も同じだから、
terminfoとか参照せずに、直書きするケースが多いんじゃないかな。
287デフォルトの名無しさん:2011/11/26(土) 16:32:31.43
個人的には色とかエスケープシーケンスなんかどうでもよくて
糞cmd.exeを使わずに済むのとUTF-8が普通に使えるのがありがたい
これでようやくsetdefaultencodingともおさらばだぜぃ
288デフォルトの名無しさん:2011/11/26(土) 16:37:23.10
そんな感じなら、
思いきってLinuxを使ったほうがずっと快適だぞ。
Cygwinは精神負担が大きい。
289デフォルトの名無しさん:2011/11/26(土) 16:44:24.49
まあWindowsから離れられない理由があるのなら仕方ないさ
サーバやビルド環境は仮想マシンにでもLinux入れてそっちでやったほうが
百倍マシだけど
"shell environment in win32 that sucks less"としてのcygwin需要は
なくならないだろう

ちなみにcygwinは32bitオンリーだし、Vista以降はASLRのせいでさらにfork問題の
根が深くなってるし、UACでの昇格実行がCreateProcessではなく
ShellExecuteのレイヤーに実装されているのでUACとも付き合いにくいけどな
290デフォルトの名無しさん:2011/11/26(土) 16:49:21.43
仮想マシンのファイルシステムにWindowsからシームレスにアクセスできれば
Cygwinを使う必要はないな。
291デフォルトの名無しさん:2011/11/26(土) 16:50:04.92
bashを管理者権限で実行
292デフォルトの名無しさん:2011/11/26(土) 16:50:41.31
>>290
smbで問題ないだろ
293デフォルトの名無しさん:2011/11/26(土) 16:51:46.68
>>290
ファイルアクセスだけなら大きな問題はないが
cygwinのシェルやツール群はただのwin32アプリケーションなので、
普通にwin32アプリケーションと連携できる(相互に起動したりパイプでつないだり)
win32上のシェルとしてはまさにそのようなものがほしいはずなので
こればかりはどうしようもない
294デフォルトの名無しさん:2011/11/26(土) 16:52:04.40
>>291
最悪だなw
295デフォルトの名無しさん:2011/11/26(土) 16:53:08.27
>>293
なるほど
296272:2011/11/26(土) 18:00:22.71
歴史的経緯くらい知ってるし意図くらい汲み取れないわけじゃない
ただただ理解に苦しむというだけ
297デフォルトの名無しさん:2011/11/26(土) 18:09:23.60
>>296
じゃあどういう方法を取ると良いの? 教えて。
298デフォルトの名無しさん:2011/11/26(土) 18:14:26.45
というか普通にinitscriptsのfunctionsとかで、
エスケープシーケンスそのままハードコードされてるわけで、
「まともなプログラムでエスケープシークエンスが直接利用されることはまずない 」
なんてことが事実誤認だと思うけど。

ANSI標準のエスケープシーケンスなら、わざわざtermcapとか見る必要なんてないし。
299デフォルトの名無しさん:2011/11/26(土) 18:31:18.96
>>297
理解に苦しむと言っただけ
>>255

>>298
理解に苦しむと言っただけ
linuxのinitスクリプトはシステムの初期化プロセスであり形態はどうあれ特殊
300デフォルトの名無しさん:2011/11/26(土) 18:37:41.61
>>279を書いた俺は>>272ではないわけだがw

>>288
そりゃはshell scriptだからだろう
shellからやるならtputコマンドだが、外部プロセスになるし
initスクリプトなんて環境依存の最たるものだからポータビリティに気をつかう
必要がない、そんな特殊な例だけ持ち出されてもね

それと「わざわざ」termcapを「自分で」見るなんてことは誰もしないし
する必要がないよ
ライブラリからたたくだけで、もちろんPythonでも利用できる
301デフォルトの名無しさん:2011/11/26(土) 18:39:23.87
ncursesって一行単位の操作もできるの?
全画面を支配するtopとかvimみたいなものを作るために使うんだと思っていた。
使ったことないから分からないや。
302デフォルトの名無しさん:2011/11/26(土) 18:39:46.96
もう秋田
エスケープシーケンス直に使うのが嫌なのは別にかまわないけど
だったら代替のコードを書いてくれ
303デフォルトの名無しさん:2011/11/26(土) 18:45:11.12
>>300
あ、もちろん「termcapを見る」という表現は自分で読んでparseするという
意味ではないです。ライブラリ経由で使うことを想定して書きました。

cursesで簡単にできるなら、今度からcurses使ってみます。
304300:2011/11/26(土) 18:47:19.34
なんかアンカー間違ってたっぽい、ごめんよw
305デフォルトの名無しさん:2011/11/26(土) 18:53:55.54
>>301
Window制御とかは使わずに、文字に色つけるだけ、みたいな処理にも使えるよ。
306デフォルトの名無しさん:2011/11/26(土) 19:12:35.66
cursesはcurses.initscr()した時点で画面がクリアされるので
以前の入力を端末に残しておきたい場合には適さないよ
307デフォルトの名無しさん:2011/11/26(土) 19:37:46.44
initscr()は必ずしも呼ぶ必要はないよ
ちょろっと字の色を変えたりといった低レベルの操作をしたいだけなら
setupterm()だけ呼べば十分で、あとはtigetstr()やtparm()のような
関数を使う
ただし>>276に注意
308デフォルトの名無しさん:2011/11/26(土) 19:54:24.42
Python 関係なくね?
309デフォルトの名無しさん:2011/11/26(土) 20:12:55.39
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
310デフォルトの名無しさん:2011/11/26(土) 20:21:36.98
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   いやよくねぇだろ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
311デフォルトの名無しさん:2011/11/26(土) 20:27:58.40
すべての道はPythonに通ず
312デフォルトの名無しさん:2011/11/26(土) 20:32:13.18
ああ、それはない。
313デフォルトの名無しさん:2011/11/26(土) 22:12:10.23
>>311
そんなものはじゃどうだ

お後がよろしいようで。
314デフォルトの名無しさん:2011/11/26(土) 22:49:52.40
蛇の道は蛇、ということか・・・理解するのに時間がかかった。
315デフォルトの名無しさん:2011/11/27(日) 18:22:46.29
Windows7(32bit)にpyInstaller(1.5)をインストールしようとして
python Configure.py すると、
print "ERROR: PyInstaller does not support Python 64-bit on Mac OSX"
SyntaxError: invalid syntax
となる。何故???
316デフォルトの名無しさん:2011/11/27(日) 18:29:21.59
なんで Mac ?
317デフォルトの名無しさん:2011/11/27(日) 18:34:06.91
>>316
そこが分からない。
PyInstallerのConfigure.pyの↓の判定でひっかかかってる。

if sys.platform == 'darwin' and Build.architecture() == '64bit':
print "ERROR: PyInstaller does not support Python 64-bit on Mac OSX"
print "Try using the 32-bit version of Python, by setting"
print "VERSIONER_PYTHON_PREFER_32_BIT=yes in the environment"
sys.exit(2)
318デフォルトの名無しさん:2011/11/27(日) 18:45:44.84
http://www.pyinstaller.org/#Downloads
ここの 1.5.1 (zip) で試した
Windows 7 (64bit) + Python 2.5 (32bit)
特に問題なし
exe も作れた
319デフォルトの名無しさん:2011/11/27(日) 19:32:16.31
>>318
サンクス。
Python3.2が原因か、pywin32を入れてなかったことが原因かのどちらか。
Python2.7に下げて、pywin32-216.win32-py2.7.exe入れたらexe作れた。
Python2.7だとint関数の挙動が変わるから作ったアプリが異常終了する。
Python3.2に戻して、pywin32-216.1.win32-py3.2.exe入れてみる。
320デフォルトの名無しさん:2011/11/27(日) 19:33:08.26
>>317
sys.platform == 'darwin' になる訳無いんじゃね?
321デフォルトの名無しさん:2011/11/27(日) 19:38:29.32
>>320
実際そうなってるからエラーの分岐に入ってるとしか言えない。
sys.platform == 'darwin'になったのは
python3.2環境なのにpywin32をインストールしてなかったことが原因と推測。
python2.6以上の環境ではpywin32をインストールする必要あり。
322デフォルトの名無しさん:2011/11/27(日) 19:49:00.52
これの結果はどうなってますか?

C:\>python -c "import sys; print sys.platform"
win32
323デフォルトの名無しさん:2011/11/27(日) 19:52:00.96
馬鹿には無理
324デフォルトの名無しさん:2011/11/27(日) 19:58:31.20
>>322
おかしい…

C:\>python -c "import sys; print sys.platform"
 File "<string>", line 1
  import sys; print sys.platform

環境は
Python3.2.2
pywin32-216.1.win32-py3.2.exe
325デフォルトの名無しさん:2011/11/27(日) 20:00:04.58
Python3はprint(...)ってカッコつけなきゃだめだお
326デフォルトの名無しさん:2011/11/27(日) 20:03:09.67
>>325
結果はwin32でした…
327デフォルトの名無しさん:2011/11/27(日) 20:07:51.24
Python3.2にpywin32インストールした環境でも
print "ERROR: PyInstaller does not support Python 64-bit on Mac OSX"
だったお…。

結論は
PyInstallerはPython2.2〜2.7までしかサポートしてないということで。
Python3.2で作ったアプリがPython2.7で動かない場合はPyInstallerでのexe化は不可能ということで。
なので、py2exeで試してみますわ…。
328デフォルトの名無しさん:2011/11/27(日) 20:09:00.91
329デフォルトの名無しさん:2011/11/27(日) 20:11:13.19
>>315
SyntaxErrorが出てるから単純に3.Xに対応してないだけでしょう
>>318のページにもworks under any version of Python from 2.2 up to 2.7って書いてある
330デフォルトの名無しさん:2011/11/27(日) 20:12:36.72
馬鹿には無理
331デフォルトの名無しさん:2011/11/27(日) 20:23:50.74
>>330
自己紹介乙
332315:2011/11/27(日) 22:52:10.91
py2exe(py3exe?)もpython3.xに対応してるっぽいけどpyqt4に未対応とか情報あり。
結局、cx-breeze使ってPython3.2をexe化した。
333デフォルトの名無しさん:2011/11/28(月) 20:46:36.70
久しぶりにJDKの1.6をインスコしたらglassfishとか良く判らんもんも一緒にインスコされたんだけどこいつがPythonで動いてるっぽい
334デフォルトの名無しさん:2011/11/29(火) 01:40:38.07
gnuplot使おうと思ったけどmatplotlibの方が簡単だった
どうでもいいけどガンプロットと読んでたよ
335デフォルトの名無しさん:2011/11/29(火) 04:38:11.34
馬鹿には無理
336デフォルトの名無しさん:2011/11/29(火) 11:45:12.07
>>335
自己紹介乙!
337デフォルトの名無しさん:2011/11/29(火) 15:13:36.27
338デフォルトの名無しさん:2011/11/29(火) 20:13:22.25
>>334
matplotlibはふつうのグラフを書くにはとても良いんだけど、
少しでも凝ったグラフを書こうとするとAPIの設計がキモくてイライラする。
339デフォルトの名無しさん:2011/11/29(火) 21:12:00.87
340デフォルトの名無しさん:2011/11/29(火) 23:08:32.96
興味ない
341デフォルトの名無しさん:2011/11/30(水) 02:10:37.56
CMSならWordPress、wikiならPukiWikiかMediaWiki、というような世の流れに逆らって
PloneとかMoinMoinとか使ってらっしゃるPythonicな先達の方々、もしいらっしゃったら
使い勝手や管理のしやすさなど一言アドバイスいただけると幸いです

Pythonベースのものを使って勉強の糧としたいのですが…
342デフォルトの名無しさん:2011/11/30(水) 02:27:01.42
WordPessはブログ
CMSならJoomlaとかDrupal

Python使える鯖が限られてるから金払って鯖借りてる奴か自宅鯖の奴くらいしか居ねぇだろうな。
343デフォルトの名無しさん:2011/11/30(水) 03:52:43.69
CMSはPHPの独壇場かな。
WordPressは、CMSとしての利用を意識して作られていて、
最近は、WordPressをカスタマイズして作られた中小企業のホームページが増殖している。
(たぶん、技術レベルの低いWeb製作会社でも簡単に動的ページが作れるから。)

Python製のCMSはあまり良いのが無い。
Ploneは、Zopeベースで複雑怪奇で精神がやられる(設置者にとっても複雑で、ユーザにとっても複雑)。
もっとシンプルで見通しの良いものがあれば良いのだが。
344デフォルトの名無しさん:2011/11/30(水) 05:09:24.53
自作せよ。
345デフォルトの名無しさん:2011/11/30(水) 06:07:01.81
データベースを利用しない簡単な物から作ればいいんでない?
Drupalはシンプルなのに機能的なのでお手本にするにはいいかも。

WordPress, WikiMedia, phpBBは複雑過ぎる。
346デフォルトの名無しさん:2011/11/30(水) 06:14:50.64
>>341
時代は Pyramid
347デフォルトの名無しさん:2011/11/30(水) 06:24:25.20
じゃぁおじさんが一つアイデアを授けよう。
python 2ch専ブラ 「Py2ch」
コンセプトはサーバー・クライアント型でrep2のように鯖に設置してcgiとして動作させる。
ここにはdatや設定、履歴、お気に入り、cookieなどを保管。
クライアントをGUIで設計して設置した鯖を選択、ログインしてデータを表示させる。
こちらは描画のみの担当でカスタマイズするテーマなどを置く。

利点は
* プラットフォームを選ばない
* PCを変えても同じログ、設定で使える
* 重くなりがちなデザインやレイアウトはクライアントで行うのでサクサク
348デフォルトの名無しさん:2011/11/30(水) 06:28:59.34
CMSっていってるのにおまえさんときたら
349デフォルトの名無しさん:2011/11/30(水) 07:41:17.21
>>348
厨房マネジメントシステム
350デフォルトの名無しさん:2011/11/30(水) 08:19:02.38
脳科学的に見た場合、脱税のクオリアは身体感覚を伴わない心的表象、
及び意識的思考としてのみ存在すると考えられる。
またうまく成功した場合アハ体験により脳が活性化する
351デフォルトの名無しさん:2011/11/30(水) 10:32:04.09
httplib2 vs urllib3
352デフォルトの名無しさん:2011/11/30(水) 11:04:59.51
>>347
公開proxyチェックに引っかかってすぐ焼かれて終わりだな
353デフォルトの名無しさん:2011/11/30(水) 11:24:32.38
>>352
共有鯖はそうだけど、自宅鯖ならおk
354デフォルトの名無しさん:2011/11/30(水) 12:36:18.58
>>341です。

書き漏らしてしまっておりましたが、自宅鯖での運用です。
Plone(というかZope)はやはり微妙ですか…。
取り敢えず、片っ端からVMに入れて試用してみようかと。
WordPress他PHP系を使ったら負けかなと思いつつ、良いのが無ければデファクトスタンダードで落ち着くと思います…。
355デフォルトの名無しさん:2011/11/30(水) 13:13:19.25
自宅鯖でも公開proxyと看做されたら終わりだよ
356デフォルトの名無しさん:2011/11/30(水) 14:09:20.17
>>354
やっぱCMSで行くのか。ガンがれ

>>355
で?
357デフォルトの名無しさん:2011/11/30(水) 15:58:36.06
馬鹿には無理
358デフォルトの名無しさん:2011/11/30(水) 17:25:16.99
規模にもよるが、
小規模なCMSなら自作するって手もある。
359デフォルトの名無しさん:2011/12/01(木) 21:31:03.87
なんでZope以降出てこないんだろうね
360デフォルトの名無しさん:2011/12/01(木) 22:31:36.50
「WordPressを使ったら負け」には同意するわ。
そういうことを言うと馬鹿にされるのは分かってるけど。
361デフォルトの名無しさん:2011/12/01(木) 23:18:04.39
よっしゃ
362デフォルトの名無しさん:2011/12/02(金) 11:24:41.09
werkzeug
363デフォルトの名無しさん:2011/12/03(土) 01:12:46.71
https://gist.github.com/1423782
複数ファイルを読み込んで、それぞれ同じ行を連結してひとつのファイルに書き出すプログラム書いてみました。
変数名のつけ方でも関数の使い方でもなんでもいいので、アドバイスもらえたら嬉しいです。
364デフォルトの名無しさん:2011/12/03(土) 01:40:35.89

   |                 /|
   |____|____|    / |
   | _     _   |三i  /    |
   |. 三シ   ヾ三  |三/     |
   |  .._     _,,..  .i/      |
   |でiンヽ ;'i"ィでン/       |
   |、 ‐' /  !、 /          |
   |   ,' :  /              |
   |  i ,、/  ___,--───-、|
   |  /_,一´
   | //  呼ばれてる気がするでおじゃる
   |/
365デフォルトの名無しさん:2011/12/03(土) 03:05:52.77
↓なんですかこれ
http://www.python.org/dev/peps/pep-0380/
366デフォルトの名無しさん:2011/12/03(土) 03:14:36.78
>>363
https://gist.github.com/1424224

書いてみた
同名の組み込み関数があるallは変数名に使わないほうが無難な気がする
367デフォルトの名無しさん:2011/12/03(土) 07:25:27.01
>>363
1.それぞれのファイルから1行づつreadして書きだした方が良いのでは?
ログファイルがデカくならない保証があれば一気に取り込んで処理
でもいいけど。

2.pasteってコマンドがありますけど、それじゃダメなん?

paste -d '' net_n.log net_10.log net_50.log > net_all.log

368デフォルトの名無しさん:2011/12/03(土) 08:16:04.22
>>363
import sys, itertools

with open(sys.argv[1]) as s1, open(sys.argv[2]) as s2, open(sys.argv[3]) as s3, open(sys.argv[4], 'w') as dest:
    for zipped in itertools.izip_longest(s1, s2, s3, fillvalue=""):
        dest.write(' '.join(map(lambda x: x.rstrip("\n"), zipped)) + "\n")

入力ファイルを何個でも受けつけるようにするとwithのあたりどうやって書くんだろう
すぐ思いつかなかった
369デフォルトの名無しさん:2011/12/03(土) 09:30:48.40
>>363
変数名がまったく意味不明。「all」ってなんだよ、「merged」でいいだろ。
44行目以下は33行目に持ってきて、ファイルをなるべく早めにクローズすべき。
if __name__ == '__main__': 以下も関数かクラスにして、if __name__ == '__main__': ではそれを呼び出すだけにしたほうがきれいだし、テストもしやすい。

>>366
13行目以下はwith文に含める必要なくない?
それともpython3だとそうかかないとダメになった?
あとそのループで「i」を使うのはよくないと思う。「lines」が妥当。

370デフォルトの名無しさん:2011/12/03(土) 11:28:41.45
>>368
質問した人じゃないが全入力ファイルの行数が揃わないとエラーにしないといけないんじゃないの?
371デフォルトの名無しさん:2011/12/03(土) 13:03:35.75
ここまでおれのじえん
372デフォルトの名無しさん:2011/12/03(土) 15:41:28.99
ワタシ、書き捨てスクリプトに本気になるおとこのひとってキライだな(ゝω・)vキャピ
373111:2011/12/03(土) 15:46:57.61
雑草という草や、書き捨てというスクリプトはない
374デフォルトの名無しさん:2011/12/03(土) 16:44:14.62
コマンドに直書きすると編集がつらい長さのはスクリプトファイルにするけど何回か使って用が済んだら消してるな
375デフォルトの名無しさん:2011/12/03(土) 16:49:54.90
(KeyboardInterruptでabort可能な) Producer-Consumer pattern を書いてみたのだが、
詳しい人いたら添削してくれ。

http://codepad.org/F1yGdPE6
376デフォルトの名無しさん:2011/12/03(土) 23:02:23.28
IT土方に聞いても無駄
377デフォルトの名無しさん:2011/12/04(日) 00:58:27.01
>>376
自己紹介乙
378デフォルトの名無しさん:2011/12/04(日) 01:00:51.67
馬鹿には無理
379デフォルトの名無しさん:2011/12/04(日) 01:19:05.15
土方はスクリプト言語は使えないイメージ
全てJavaで書きそう
380デフォルトの名無しさん:2011/12/04(日) 02:51:25.61
JavaいいよJava
C++もいいよC++
Pythonもいいけど速くできたらもっといいw
381デフォルトの名無しさん:2011/12/04(日) 02:55:07.00
JavaScriptに難渋。Pythonが素直でおとなしい子に思える。
382デフォルトの名無しさん:2011/12/04(日) 05:52:33.04
>>376
実際、producer-comsumer なんて言葉を知ってるのは、
ある程度教養のある奴だけだ。
383デフォルトの名無しさん:2011/12/04(日) 06:53:33.01
そんな例挙げなくてもrace conditionで通じるし
384デフォルトの名無しさん:2011/12/04(日) 16:53:19.79
Pythonのテンプレートエンジンで、簡易的なものはありませんか?
Cheetahなどはファイル数なども多くちょっとした、出力には大げさすぎるのでファイル数の少ない小さなものを探しています。
385デフォルトの名無しさん:2011/12/04(日) 17:00:08.97
tempita
386デフォルトの名無しさん:2011/12/04(日) 17:00:43.15
string.template()
387デフォルトの名無しさん:2011/12/04(日) 17:20:39.68
今作ってるからちょっと待って
388デフォルトの名無しさん:2011/12/04(日) 17:59:13.31
おおげさでもいいじゃない。Jinja2
389デフォルトの名無しさん:2011/12/04(日) 22:49:16.83
jinja2 か genshi で十分だわー
390デフォルトの名無しさん:2011/12/05(月) 00:52:23.20
>>384
Tenjin
ファイル1個だし、特にHTML以外の出力をしたい場合に重宝してる
391デフォルトの名無しさん:2011/12/05(月) 01:30:45.18
>>387
おれもERUBYのPython版つくろうとしたけど、Pythonの文法はコード自動生成に向いてないことが分かっただけだったww
TenjinはERUBYの作者が作ってるけどERUBYじゃなくてまんまPHPだな
ttp://www.google.co.jp/search?q=python+tenjin
392デフォルトの名無しさん:2011/12/05(月) 01:38:24.81
eRubyの作者はその人じゃないぞ
393デフォルトの名無しさん:2011/12/05(月) 02:00:23.28
Pythonは文字列の中にコード埋め込むの向いてないよ。

それより、特殊な文字列リテラルの形でできないのかなぁ。
<?py for x in nums: ?>
<?py if x > 0: ?>
<p>Positive.</p>
<?py elif x < 0: ?>
<p>Negative.</p>
<?py else: ?>
<p>Zero.</p>
<?py #endif ?>
<?py #endfor ?>
じゃなく
for x in nums:
 if x > 0:
  t'<p>Positive.</p>'
 elif x < 0:
  t'<p>Negative.</p>'
 else:
  t'<p>Zero.</p>'
みたいに。
394デフォルトの名無しさん:2011/12/05(月) 02:17:17.70
>>393
その程度であれば
buf = []
t = buf.append
t('<p>Positive.</p>')
t('<p>Negative.</p>')
print("".join(buf))
でいいような。
395デフォルトの名無しさん:2011/12/05(月) 02:30:02.13
馬鹿ですね
わかります
396デフォルトの名無しさん:2011/12/05(月) 02:34:17.01
>>392
じゃあ誰だよw
397デフォルトの名無しさん:2011/12/05(月) 02:37:02.38
私です
398デフォルトの名無しさん:2011/12/05(月) 02:42:28.08
>>394
実際、そうやった上で、最後の行を
print(''.join(buf).format(locals()))
に変えても事足りない場合って、どんなの?

Python程度に文字列リテラルの書きやすい言語で、PHPみたいに
文字列の中にコード埋め込めたらすごく便利になる事例ってのが思い浮かばない。
399デフォルトの名無しさん:2011/12/05(月) 03:08:13.66
>>398
俺も、Web関係はやらないから、そう思ってたけど、
テンプレートエンジンを使うと「アラ便利だわ」って心境になる。
400デフォルトの名無しさん:2011/12/05(月) 03:08:25.76
>>398
想像力が低いなー
PHPだと、コードとHTMLのインデントが独立してるから便利。
PHPならHTMLのインデントが深くなっても、問題ない。
<body>
  <div>
    <ul>
    <?php foreach .... { ?>
      <?php if ($var) { ?>
      <li><?= $var ?></li>
      <?php } ?>
    <?php } ?>
    </ul>
  </div>
</body>
Pythonだと、HTMLとコードのインデントが揃わないからたいへん見づらい
print("<body>")
print("  <div>")
print("    <ul>")
for var in list:
  if var:
    print("      <li>%s</li>" % item)
print("    </ul>")
print(" </div>")
print("</body>")
401デフォルトの名無しさん:2011/12/05(月) 03:12:23.58
>>398
Pythonって、Rubyのように式を文字列の中に埋め込むのってできないよね。
それができるだけでも、テンプレートエンジンは大いに便利。
402デフォルトの名無しさん:2011/12/05(月) 05:45:55.18
403デフォルトの名無しさん:2011/12/05(月) 07:58:30.61
>>375

ttp://codepad.org/QIRmX8JC

デザインパターンの練習であれば、もっと再利用しやすい部品にすべきだと思う。
現状だと、拡張する場合に Worker/Producer の中に手を入れないといけないし、サブクラス化してもコードが重複してしまう。
(例えば、Worker#run をオーバーライドする場合、サブクラスでもキューからメッセージ取り出しのコードを書かないといけない。等)

スレッドに関してはあまり詳しくないけど、自分の場合は
daemon=True, SIGINTハンドラ で後始末, python -i で実行
もしくは、適当なコマンドループ作ってメインスレッドをブロック(入力待ち)してます。
404デフォルトの名無しさん:2011/12/05(月) 12:29:16.93
>>400
PHPよくしらないけど、それって余分なインデントがHTMLにはいってこない? <?php の行のインデント

HTMLのインデントって、テンプレート等でHTML自体を手書きするときは適度にいれるけど、
Pythonで出力するような場合は気にしなくなった。
整形ツールがあるし、デバッグならDOMインスペクタみたいなツール使う。


405デフォルトの名無しさん:2011/12/05(月) 12:30:19.52
2chのhtmlとか見たら改行もなく詰め詰めだよな
406デフォルトの名無しさん:2011/12/05(月) 14:28:44.46
>>398
>Python程度に文字列リテラルの書きやすい言語で、PHPみたいに
>文字列の中にコード埋め込めたらすごく便利になる事例ってのが思い浮かばない。
DjangoもZopeも全否定な意見だなww
407デフォルトの名無しさん:2011/12/05(月) 14:33:40.38
mingw で __cdecl で定義した DLL(hoge.dll) 内の関数 fuga() がある場合
ctypes.cdll.hoge.fuga()
で呼べるはずですよね?
なぜか
AttributeError: function 'fuga' not found
になってしまいます
l = ctypes.LoadLibrary('hoge.dll')
は成功するので
hoge.dll 自体はロード出来るようですが
l.fuga()
とするとやっぱり失敗します
なにがおかしいのでしょう?
408デフォルトの名無しさん:2011/12/05(月) 14:35:29.59
>>402
その内容はeRubyとERBを混同してたり、かなり間違いが含まれている。
あと今のRailsではERB使ってなくて、Tenjin作者のほうを使ってる。
409デフォルトの名無しさん:2011/12/05(月) 14:35:46.35
typo がありました

l = ctypes.LoadLibrary('hoge.dll')

l = ctypes.cdll.LoadLibrary('hoge.dll')
です
410デフォルトの名無しさん:2011/12/05(月) 15:18:37.41
>>408
いや別に間違ってないと思うよ
eRubyは仕組みそのもので考案者の関さんの実装がRubyに添付してあるerb
でもって前田さんの実装もeRubyで桑田さんの実装はerubisだったか
アンカついたからレスしてるけどスレチでごめん
411デフォルトの名無しさん:2011/12/05(月) 15:35:15.88
>>407
__declspec(dllexport)を付けてないんじゃない?
あるいはC++でextern "C"が付いてないか
412デフォルトの名無しさん:2011/12/05(月) 16:49:00.71
>>411
どっちもつけてます
.c でやっても一緒です orz
413デフォルトの名無しさん:2011/12/05(月) 17:05:24.83
Dependency Walkerとかでexportの確認してみたら
414デフォルトの名無しさん:2011/12/05(月) 18:01:56.08
最小限で試してみましたが問題が再現するようです

hoge.h
#if defined(__cplusplus)
extern "C"{
#endif
__declspec(dllexport) int fuga(int);
#if defined(__cplusplus)
};
#endif

hoge.c
#include "hoge.h"
__declspec(dllexport) int fuga(int a)
{
return a;
}

コンパイラは
gcc --version
gcc.exe (GCC) 3.4.4 (mingw special)
Copyright (C) 2004 Free Software Foundation, Inc.
です
415デフォルトの名無しさん:2011/12/05(月) 18:09:10.38
Dependency Walker で確認してみたら
Function のところに何もありませんでした orz
416デフォルトの名無しさん:2011/12/05(月) 19:31:11.16
>>410
おまえwikipediaよんでないだろ
> 元々まつもとゆきひろの構想とePerlの実装を基にした議論から、関将俊が開発した
明らかにeRubyとERBを混同してる。
対して、ERBのページでは正しい説明がされている
http://www2a.biglobe.ne.jp/~seki/ruby/erb.html
> ERBはeRubyのRubyによる実装です。
417デフォルトの名無しさん:2011/12/05(月) 19:52:43.65
>>416
じゃあそういうことにしよう。この話はおしまい
418デフォルトの名無しさん:2011/12/05(月) 20:15:44.39
>>415
手元の環境 win32/vista CPython 2.6.5/3.2 MINGW32/MSYS1.0 で >>414 通ったよ。

> gcc --version
gcc.exe (GCC) 4.6.1

> gcc -shared hoge.c -o hoge.dll
> python -c "import ctypes;print(ctypes.cdll.hoge.fuga(10))"
10

g++ でリンクした場合、extern "C" がないと AttributeError になるのを確認。(g++ -E hoge.cでプリプロセス後のコード確認)
__declspec(dllexport) は、なしで作った DLL でも ctypes.cdll で呼べた。(上記の fuga関数でのみテスト)
419デフォルトの名無しさん:2011/12/05(月) 23:20:28.49
>>403
おお、ありがとうございます。
今体調が悪いので、あとで参考にしてみます。
説明不足でしたが、スレッディングモデルとかはどうでもよくて(なので再利用性のこととかは考えてない)、
KeyboardInterrupt(Ctrl+C)で、安全に(個々のworkを実行中にWorkerが停止しないように)、
Workerをabortさせる方法が知りたかったんです。
worker.join()するとメインスレッドがロックしてKeyboardInterruptが受信できなくなるようなので、
join(timeout=1)としたんですが、もっと良い方法は無いかなと...
(そもそも、なんでtimeoutなしだとKeyboardInterruptが発生せず、timeoutを設定すると
KeyboardInterruptが発生するんですかね。海外の掲示板にはPythonのバグとか書いてありましたが...)
420デフォルトの名無しさん:2011/12/06(火) 02:43:03.17
>>400
せめて、複数行の文字列リテラルくらい使ってくれよ。。。
インデントは、自動インデントしてくれる関数用意して出力段階で使えばいいだけだから、あんま本質じゃない。
421デフォルトの名無しさん:2011/12/06(火) 05:12:40.78
これpythonでやってるらしい、こういうセンスはどこで手に入りますか
http://www.youtube.com/watch?v=Cb70kMCsBV0
422デフォルトの名無しさん:2011/12/06(火) 06:04:07.97
423デフォルトの名無しさん:2011/12/06(火) 06:10:09.27
いいセンスだ
XBEEとarduinoの本が近々出るけどそれ関係かね
424403:2011/12/06(火) 08:24:13.80
>>419

正確には、KeyboardInterruptは発生するんだけど、実行されるのがメインスレッドに戻ってから・・
つまり join()に timeout を指定しないで呼んだ場合は、スレッドが終了してからになるので、スレッドの中断には使えない。

join() は中断処理をした後に、メインスレッドが終了してしまわないように呼ぶのが良さそうです。(daemonスレッドの場合)


> 個々のworkを実行中にWorkerが停止しないように

という事であれば、>>403のコードでは KeyboardInterrupt後に各workerをjoinしないといけないですね。

workerの安全な停止という点からは、他にもいろいろと不足がありました。
通常実行時は、シグナルハンドラが呼ばれる前に終了してしまい、後始末処理が呼ばれてなかった、等。

タスクの実行完了を保証するというロジックをコードで明示するなら、
queue の task_done(), join() を使うアプローチもあります。

http://codepad.org/vauz30xt # producerをメイン・スレッドで
http://codepad.org/yEoOczlE # producerをスレッドにして、停止を generator.close で行う


>>421
LEGOとかどう?
425デフォルトの名無しさん:2011/12/06(火) 09:45:59.13
KeyboardInterruptとかsignalはWindowsだと挙動が違った気がしたが
426403:2011/12/06(火) 12:27:46.88
>>403の修正 ttp://codepad.org/k0mRYT86

python -i の時、スレッド終了の処理を SIGINT 登録
通常実行時 KeyboardInterrupt 内でスレッド終了の処理(抜け落ちてた)
427デフォルトの名無しさん:2011/12/06(火) 13:35:14.03
http://www.h6.dion.ne.jp/~machan/tmdoc/index-ja.html

Pythonでこういうの作ってくれ
428デフォルトの名無しさん:2011/12/07(水) 01:36:22.64
>>427
pydocじゃダメですか?
429デフォルトの名無しさん:2011/12/07(水) 13:58:36.74
Python て OpenGL とか触ったりできる?音と同期したりとかやってみたいんだけど。
OpenFrameworks 的なの。
430デフォルトの名無しさん:2011/12/07(水) 15:09:57.44
>>418
できました
ありがとうございます

結論は

gcc -shared -o hoge.dll -Wl,--out-implib,hoge.lib

とやってたのが原因だったのですが
エラーも何も出なかったので全く気付きませんでした
431デフォルトの名無しさん:2011/12/07(水) 15:23:46.09
432デフォルトの名無しさん:2011/12/07(水) 20:18:58.44
馬鹿には無理
433デフォルトの名無しさん:2011/12/07(水) 23:29:35.84
>>432
自己紹介乙!
434デフォルトの名無しさん:2011/12/08(木) 04:57:21.31
pydocで>>394なコードみかけた

435デフォルトの名無しさん:2011/12/08(木) 11:16:27.77
>y_htm
>ところで住んでいる区の区報に「Pythonプログラミング講座」
>つー市民講座が掲載されていたんだけど、この区はどこに向か
>って行っているのでしょう。
>via: web

これどこの区や。
436デフォルトの名無しさん:2011/12/08(木) 13:09:33.26
>>435
ttp://www.city.ota.tokyo.jp/kuho/kuho_pdf/kuhou_111101.html

講座・講演
Python CGプログラミング(2日制)


かな?
437デフォルトの名無しさん:2011/12/08(木) 15:13:45.66
>>436
さすがヲタ区。
438デフォルトの名無しさん:2011/12/09(金) 01:25:40.06
ttp://www.city.ota.tokyo.jp/kuho/kuho_pdf/kuhou_111101.files/1101-3.pdf

Python CG プログラミング(2日制)
12月17・18日、午前10時〜午後4時
都立つばさ総合高等学校
1,000円 抽選で19名
はがき(記載例参照。性別も明記)。
都立つばさ総合高等学校( 〒1 4 4 −
8533)へ。11月21日必着
 ☎5737−0151
439デフォルトの名無しさん:2011/12/09(金) 01:27:34.94
募集おわってるじゃん
440デフォルトの名無しさん:2011/12/10(土) 06:06:31.56
string.findだと初めに見つかった一つしかかえしてくれないので
全部まとめて返してくれる関数書こうとしてたんですが、
途中で詰まってしまいました。

def string_indexes(string,s,indexes = []):
if string.count(s) <= 0:
print indexes
return indexes
else:
string_indexes(string[string.find(s)+len(s):], s, [string.find(s)] + indexes)

print string_indexes("i love you","o")

すると print indexes で [4,3] と出てるのに、 下の関数呼び出しでは None になってしまいます。
return indexes のかわりに return [4,3] としても同じくNoneのままでした。

何故これだと値が返ってこないんでしょうか?
441デフォルトの名無しさん:2011/12/10(土) 08:23:24.31
再帰したとこでもreturnしないとだめ
442デフォルトの名無しさん:2011/12/10(土) 09:34:29.89
re.search
443デフォルトの名無しさん:2011/12/10(土) 10:46:29.60
>>440
python3.2.2だとエラー
444デフォルトの名無しさん:2011/12/10(土) 11:29:48.73
>>440

再帰で文字列のスライスを渡してるけど、それだと前に見つかった位置からの距離になる。[4,3]は期待した結果通り?
関数宣言のデフォルト引数での変数の初期化リスト代入は落とし穴、関数を呼び出す度に結果が蓄積されてしまう。

再帰にしなくても、フラットなループで扱えるよ。findの第二引数を活用しよう。

http://codepad.org/kM434xuD

445デフォルトの名無しさん:2011/12/10(土) 16:15:58.58
>>440
>def string_indexes(string,s,indexes = []):
これはだめだろ。
def string_indices(string, s, indices=None):
 if indices is None: indices = []
にしないとだめ。
#Pythonのこの仕様は、めんどくさいし、間違いやすいので、きらい。
446デフォルトの名無しさん:2011/12/10(土) 21:51:35.33
コンソールで実行中の Python スクリプトから別のコンソールアプリを
別ウィンドウを開いて実行し、自分自身を終了する方法はありますか?
447デフォルトの名無しさん:2011/12/10(土) 22:13:56.39
>>445
>#Pythonのこの仕様は、めんどくさいし、間違いやすいので、きらい。

これか、

| 重要な警告: デフォルト値は 1 度だけしか評価されません。デフォルト値がリストや
| 辞書のような変更可能なオブジェクトの時にはその影響がでます。
| http://www.python.jp/doc/nightly/tutorial/controlflow.html#tut-defaultargs

確かに変だな。
単に呼び出し毎に評価するようにすればいいだけのような気がするが、なんか意図が
あるんだろうか。
448デフォルトの名無しさん:2011/12/10(土) 23:36:57.22
Pythonってさ、癖が非常に強いよね
多言語やって慣れてるとどうにも気持ちが悪いというか・・・
慣れなのかもしれないけれど
449デフォルトの名無しさん:2011/12/10(土) 23:44:40.92
まぁ、ワシのティンコも癖は非常に臭いみたいですけどね
450デフォルトの名無しさん:2011/12/11(日) 00:53:57.07
お前のは仕様
451デフォルトの名無しさん:2011/12/11(日) 01:04:37.48
>>448
癖が強くない言語ってどんなのがあるん?
452デフォルトの名無しさん:2011/12/11(日) 01:53:42.38
>>447
副作用ある場合を考えると、
1. 定義したときに一度だけ評価する
2. 引数が指定されなかったときのみ評価する
3. 引数が指定されようがされまいが、評価はする
のどれを選ぶべきだろうか。
453デフォルトの名無しさん:2011/12/11(日) 05:13:46.41
>>444
おおお、ありがとうございます!
2時間ぐらい調べながら読んでやっとわかりました。
(まだ、かなり理解が怪しいですが…。)

>>445>>447
こんな仕様があったんですね。
気をつけることにします。
454デフォルトの名無しさん:2011/12/11(日) 09:29:54.61
>>452
個人的には、

>2. 引数が指定されなかったときのみ評価する

かな。

今試してみたら、C++ も同じみたいだし。
455デフォルトの名無しさん:2011/12/11(日) 09:57:19.57
今日の一言。

エラーや情報メッセージはloggingモジュールで吐きましょう。print禁止。
ライブラリを作ってる場合は特に。
456デフォルトの名無しさん:2011/12/11(日) 10:04:17.86
>>446
python-daemonというのがあるみたい

あとはos.system('urxvt -e ncmcpp &!') # zsh
ただ行儀悪そう
457デフォルトの名無しさん:2011/12/11(日) 11:27:14.17
デフォルト引数の評価タイミングはバイトコード書き換えればできるけど
バイトコードいじるとジャンプのアドレスとかずれて面倒だしPyPyに期待する方が早いかも
458デフォルトの名無しさん:2011/12/11(日) 11:54:57.24
>>454
その場合、
def func(a=aa(), b=bb(), **kwargs): pass
func(c=cc(), b=bbb()) の引数の評価順序は?
現行版だと定義時に左からaa(), bb()の順で評価されて、呼び出し時にcc(), bbb()の順で評価されるけど。

C++だと引数の評価順序決まってないから単純だけど、
そのあたりが厳格が言語だと、仕様が複雑化すると思うんだよなぁ。
459デフォルトの名無しさん:2011/12/11(日) 12:16:43.07
>>458
>>454 だと、定義時には評価しないから、「呼び出し時に左から順に評価する」でいいと思う。

>>457
正直なに言ってるかよく理解できない。
460デフォルトの名無しさん:2011/12/11(日) 16:15:10.00
>>459
その「左から」の意味が曖昧になることを、わざわざ例を挙げてまで>>458では指摘しているわけだが。
461デフォルトの名無しさん:2011/12/11(日) 23:47:06.32
デフォルト引数を毎回評価とか、明らかにパフォーマンス改悪しそうなんだけど、何か他にメリットあるの?


def func(宣言時に実行される):
  呼び出し時に実行される


現状では、内部関数で宣言時に外の変数を束縛するのに使ったりする。


デコレータが導入されて宣言時に使えるフックが増えたが、どちらがいいというのとは別に、
処理系が採用すべき変更かというと、そうでもないだろう。(バージョン間の動作が異なる、テストが増える、等)

どうしても必要だって人は、自分でそういった振る舞いを提供するデコレータ等を書けばいい。
宣言時に評価して欲しくないというのは、デコレータに渡る時点で評価済なので、遅延評価等の他の方法も合わせて考えないといけないが、
毎回評価したり、デフォルト値はコピーで済まして欲しいといった場合等にもデコレータで対応できるはず。
462デフォルトの名無しさん:2011/12/11(日) 23:55:37.15
>>440のコードでは、末尾再帰で書こうとしてて、
リストに対する副作用のある変更はないので、一応、影響のない使い方ではあるけど。
pylint等の構文チェックでは警告出し、なるべくこういうコードは避ける傾向があるね。
463デフォルトの名無しさん:2011/12/12(月) 00:39:21.03
>>461
言語によっては、式を書いておくと
呼ばれたときにそれを計算出来るようなのもあるからなー
んで、デフォルト引数なので指定されたときは評価されない
464デフォルトの名無しさん:2011/12/12(月) 00:40:42.92
まあメリットで言えば空リストくらいかもねえ
465デフォルトの名無しさん:2011/12/12(月) 01:36:48.25
>>463
指定された時に評価されないのはどちらも同じなので、そこは問題じゃない。
デフォルト引数を〜と言ってるので、指定されなかった時に毎回評価される点。
466デフォルトの名無しさん:2011/12/12(月) 04:17:55.04
>>460
459じゃないけど、曖昧ではないよ。
458の例だと、実引数であるcc()とbbb()がまず評価されて、
そのあとデフォルト引数が必要になるaa()が評価される。
bb()はデフォルト引数として必要ないので評価されない。
なにも難しいことはない。
467デフォルトの名無しさん:2011/12/12(月) 04:57:43.85
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
468デフォルトの名無しさん:2011/12/12(月) 13:08:55.87
>>> def f(): print('foo',print('bar','A'),(yield 'B'),print('bar','C'),(yield 'D'))
...
>>> for k in f(): print('baz',k)
...
bar A
baz B
bar C
baz D
foo None None None None
>>>

この構文(括弧つきyield)って、どういうケースで使うんですか?
469デフォルトの名無しさん:2011/12/12(月) 13:12:21.09
>>468
なにこれ。Python3の新機能?
470デフォルトの名無しさん:2011/12/12(月) 13:17:24.91
あ、単なるコルーチンか。
471468:2011/12/12(月) 13:28:53.60
>>469
python3でやった結果貼ったけど、
from __future__ import print_function
すれば、2.7でも動作します。
>>470
yield文はいいとして、yield式って何のためにあるの?
lambdaでジェネレータ作るため?
472468:2011/12/12(月) 13:36:39.75
自己解決しました。
ttp://docs.python.org/reference/expressions.html#generator.send
知らんかったよこんな機能・・・
473デフォルトの名無しさん:2011/12/12(月) 13:41:31.43
コルーチンを作るにしても、何でこんな変な文法を許したんだろうね。
http://codepad.org/TZeVwwve
474デフォルトの名無しさん:2011/12/12(月) 14:47:46.80
「このPEPを書いたのは誰だぁ!!」
475デフォルトの名無しさん:2011/12/12(月) 18:47:30.54
>>473
「まともな」書式をどうぞ。
476デフォルトの名無しさん:2011/12/12(月) 20:53:44.01
馬鹿には無理
477デフォルトの名無しさん:2011/12/12(月) 21:02:29.86
restructuredTextを、なるべくシンプルなHTMLに変換するにはどうしたらいいですか。
rst2html.py hoge.rst > hoge.html
とすると、ごちゃごちゃしたHTMLになってしまいます。
478デフォルトの名無しさん:2011/12/13(火) 00:04:06.75
pythonでu'A'という文字からアスキーコード65を得るには、どうやればいいでしょうか?
479デフォルトの名無しさん:2011/12/13(火) 00:06:05.45
ord(u'A')
480デフォルトの名無しさん:2011/12/13(火) 00:12:54.90
なんだか芋虫のAAみたいに見える、カワイイ。











まぁ、ワシは45歳のおっさんだけどな。
481デフォルトの名無しさん:2011/12/13(火) 00:20:52.48
ウザ
482デフォルトの名無しさん:2011/12/13(火) 00:33:31.32
>>479
なんかへんです
483デフォルトの名無しさん:2011/12/13(火) 00:56:58.79
>>477
コードを流し読みしたとこ、フォーマット変換等の拡張性を考慮した設計になってるたので

* 自分でwriterを拡張する。
* XMLを出力してXSTLやDOMで整形。

って方法が取れそう。

docutils writer で検索すると、同じ問題に取り組んでる人いるみたいだよ

# Clean html writer for reSt
ttp://code.google.com/p/python-creole/wiki/rest2html
484デフォルトの名無しさん:2011/12/13(火) 04:12:16.53
print "Hello, World!" が通らなくて小一時間悩んだよ糞が
なぜ後発のLL言語はこうぽんぽん仕様を変えるんだよ氏ね

でもいいね楽しいよおっぱいそん
485デフォルトの名無しさん:2011/12/13(火) 14:47:18.65
>>484
Pythonが後方互換性を破壊したのはこの20年で1回だけだ。
運が悪かったな。
486デフォルトの名無しさん:2011/12/14(水) 03:12:13.68
>>484
ぱいちんくん楽しいよね
487デフォルトの名無しさん:2011/12/14(水) 03:18:42.19
20年て適当だろう、そんな頃にPython無ぇよ馬〜鹿!
と、煽ってやろうと思ったがPediaで確認してやめた。

ありがとうインターネット!
488いんたーねっと:2011/12/14(水) 08:29:30.54
いえいえどういたしまして
いやぁ〜そんなぁ〜照れるなぁ
489デフォルトの名無しさん:2011/12/14(水) 13:00:39.05
インターネットってDTM関連のソフト売ってるあの会社のこと?
490デフォルトの名無しさん:2011/12/14(水) 16:23:15.49
角電池
491デフォルトの名無しさん:2011/12/14(水) 18:59:41.03
pythonっていつマルチコア対応するの?
492デフォルトの名無しさん:2011/12/14(水) 21:27:08.60
multiprocessing
493デフォルトの名無しさん:2011/12/15(木) 16:52:42.95
それマルチコア対応って言わない
494デフォルトの名無しさん:2011/12/15(木) 16:59:18.85
「マルチコア対応」ってのは具体的にどういうこと?
495デフォルトの名無しさん:2011/12/15(木) 17:03:25.36
CPUが利用率が全部のコアで100%になるってことだよ
496デフォルトの名無しさん:2011/12/15(木) 17:04:00.55
これはひどい角電池
497デフォルトの名無しさん:2011/12/15(木) 17:30:21.86
python3ってどうなった?
498デフォルトの名無しさん:2011/12/15(木) 17:58:19.44
>>495
from multiprocessing import Pool, cpu_count

def loop(*args):
    while True:
        pass

if __name__ == '__main__':
    pool = Pool()
    pool.map(loop, range(cpu_count()))
499デフォルトの名無しさん:2011/12/15(木) 19:52:29.80
>>497
順調にリリースされてるよ
500デフォルトの名無しさん:2011/12/15(木) 21:42:40.35
PySideがはやくPython3に完全対応してくれんかな
501デフォルトの名無しさん:2011/12/15(木) 21:47:07.29
pythonでwebプログラミングするならコレっていうのある?
いまだとdjangoとか?
502デフォルトの名無しさん:2011/12/15(木) 23:31:03.58
werkzeug (wsgi)
503デフォルトの名無しさん:2011/12/15(木) 23:31:20.54
pyramid
504デフォルトの名無しさん:2011/12/16(金) 00:56:48.13
505デフォルトの名無しさん:2011/12/16(金) 00:57:34.93
「Python 2.8」案で議論 - 反対意見が大半
http://news.mynavi.jp/news/2011/12/14/058/
506デフォルトの名無しさん:2011/12/16(金) 01:09:59.99
507デフォルトの名無しさん:2011/12/16(金) 01:56:45.46
PEP 404 Python 2.8 Un-release Schedule
ttp://www.python.org/dev/peps/pep-0404/
508デフォルトの名無しさん:2011/12/16(金) 11:26:07.16
404 not found かと思ったぜ
509デフォルトの名無しさん:2011/12/16(金) 14:54:49.24
PythonはPerlみたいになってほしくないので、下手に2.xを残すべきでない
510デフォルトの名無しさん:2011/12/16(金) 15:39:24.67
どっちでもいいからメインラインを早く決めろ
511デフォルトの名無しさん:2011/12/16(金) 16:23:56.56
>>505
3.xが出なければPython人口はもっと増えていたのに
これ以上ユーザーを混乱させてなにが楽しいんだろう。。
2.8が出ればPython終わるな
512デフォルトの名無しさん:2011/12/16(金) 20:44:37.05
2系3系合体させて、みんな仲良く使える5シリーズの開発を始めよう。
513デフォルトの名無しさん:2011/12/16(金) 22:42:06.51
FedoraのPython3対応状況
http://fedoraproject.org/wiki/Python3
514デフォルトの名無しさん:2011/12/17(土) 00:01:59.71
Linuxを使っていて、Pythonのモジュールなどを
python setup.py install
等でインストールする時、MySQLなどと連携等の場合、yumではなくソースからインストールしていた場合、
そのパスを指定しないと連携できないと思うのですが、
どのようにして設定すればいいのでしょうか?
一般的には./configure時にパスを設定出来ますが、Pythonの場合はどのようにすればいいのでしょうか?
515デフォルトの名無しさん:2011/12/17(土) 00:42:27.04
$(prefix)/$(lib)/python$(version)/

とか。そういう事じゃなくて?
516デフォルトの名無しさん:2011/12/17(土) 01:48:22.32
>>514
pythonは自分自身の環境を把握しているから特に考えなくていいけど、
外部プログラムから利用するなら python-config がある。

そういう用途向けにPython以外でも {プログラム名}-config ってツールがよく用意されてる。
517デフォルトの名無しさん:2011/12/17(土) 02:50:11.79
gentooにpython-updaterってのがあるな。
(参照先が古いモジュールを洗いだして一括で入れ直す)
他の鳥向けに応用できるのかどうか知らんけど。
518デフォルトの名無しさん:2011/12/17(土) 03:00:21.93
日本においてはPythonの普及があまり進んでない現在のうちに、
3.x系のライブラリが出そろえば今後大きく普及する可能性だってあるのになー
519デフォルトの名無しさん:2011/12/17(土) 03:10:46.38
もうガラパゴス化はうんざり
520デフォルトの名無しさん:2011/12/17(土) 03:44:40.21
でも響きは強そうじゃん?

大怪獣ガラパゴス!
521デフォルトの名無しさん:2011/12/17(土) 04:03:36.27
ガラパイ
522デフォルトの名無しさん:2011/12/17(土) 05:58:12.70
肋骨が浮いてそう
523デフォルトの名無しさん:2011/12/17(土) 07:17:15.48
>>508
その為にわざわざ他のpepと番号をトレードしたらしい...
ttp://mail.python.org/pipermail/python-dev/2011-November/114427.html


>>512
互換性を吸収する six (2と3の公倍数)ってライブラリがある
524デフォルトの名無しさん:2011/12/17(土) 11:52:53.47
>>523
> その為にわざわざ他のpepと番号をトレードしたらしい

> 互換性を吸収する six (2と3の公倍数)ってライブラリがある

Pythonお洒落すぎるだろ
525デフォルトの名無しさん:2011/12/17(土) 13:59:11.71
そういえば 2.6.4 とかも
天安門で引っ掛かって中国でダウソ出来ないから
ずらしたとかなんとか事件あったな
526デフォルトの名無しさん:2011/12/17(土) 17:04:03.12
>>518
同意。djangoとかはこのまま2.x系専用ってことにして
3.x系用に誰か新しいの作れよ
527デフォルトの名無しさん:2011/12/17(土) 23:15:04.95
Pythonのデバッグって皆さんどうしてますか?
どんなソフトとか使っているのでしょうか?

PHPで言う、var_dump()のような、変数の中身、構造を知るような簡単なデバッグとしての関数すらないように思うのですが・・・
XDebugみたいなものはありますでしょうか?
528デフォルトの名無しさん:2011/12/17(土) 23:27:33.18
pdbとかtracebackとかcgitbとか
529デフォルトの名無しさん:2011/12/17(土) 23:38:55.57
>>527
>PHPで言う、var_dump()のような、変数の中身、構造を知るような簡単なデバッグとしての関数すらないように思うのですが・・・

何でそう思ったの?
530デフォルトの名無しさん:2011/12/18(日) 00:52:15.22
disとかsys._getframeとかast.parseで構文木にして変形してからcompileとか
531デフォルトの名無しさん:2011/12/18(日) 03:32:32.86
>>527
PHPはデバッグ云々の前にpycheckerのような標準の文法チェッカも無ければ、
pep8のような標準のコーディングスタイルチェッカも無いだろ。

そしてPHPはフリーダムなライブラリ。好き勝手な仕様に版数による挙動の違い。

なんと怖ろしい。PHP本体のバージョンアップ時のテストだけでなく
個々のライブラリもバージョンアップ毎に個々にテストしなきゃならん。



532デフォルトの名無しさん:2011/12/18(日) 03:38:26.48
>>527
上からPHPer~♪
533デフォルトの名無しさん:2011/12/18(日) 04:16:03.66
シーケンスからn個ずつ取り出す機能って標準ライブラリに無いよね?
結構使う操作だと思うんだがなぁ。

必ずループとセットで使う操作だから、itertoolsあたりに入れて欲しいな。
534デフォルトの名無しさん:2011/12/18(日) 06:06:23.00
>>> def niter(lst, n):
... i = iter(lst)
... while True:
... l = []
... for _ in xrange(n): l.append(i.next())
... yield l
...
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 2)]
[[2, 1], [3, 5], [4, 7], [8, 9]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 3)]
[[2, 1, 3], [5, 4, 7], [8, 9, 6]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 4)]
[[2, 1, 3, 5], [4, 7, 8, 9]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 1)]
[[2], [1], [3], [5], [4], [7], [8], [9], [6]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 5)]
[[2, 1, 3, 5, 4]]
535デフォルトの名無しさん:2011/12/18(日) 06:09:12.31
ああこれでいいのか
def niter(lst, n):
  i = iter(lst)
  while True: yield [i.next() for _ in xrange(n)]

>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 2)]
[[2, 1], [3, 5], [4, 7], [8, 9]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 3)]
[[2, 1, 3], [5, 4, 7], [8, 9, 6]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 4)]
[[2, 1, 3, 5], [4, 7, 8, 9]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 5)]
[[2, 1, 3, 5, 4]]
>>> [t for t in niter([2, 1, 3, 5, 4, 7, 8, 9, 6], 1)]
[[2], [1], [3], [5], [4], [7], [8], [9], [6]]
536デフォルトの名無しさん:2011/12/18(日) 06:41:45.37
>>533
型によって最適なコードが異なるので、率直な実装をitertoolsに含めるのは議論の余地ありだと思う。
でも一応、itertoolsのドキュメントにレシピが書いてるよ。groupter


# ファイルから n バイトずつ読み込む。
iter(lambda: stream.read(n), '')

# イテレータから nitems 要素ずつのリストで読み込む。takeはitertoolsのレシピより。
# 注意: xrangeを渡すときは、 iter(xrange(length)) とする。
iter(lambda: take(iterable, n), [])

# リストを 長さ n 毎の chunk に分解
[seq[i:i+n] for i in xrange(0, len(seq), n)]
537536:2011/12/18(日) 06:52:39.76
>>536
説明が不十分だったので訂正。

xrangeを渡すときは -> xrange以外でも同様、isliceへ渡すのでイテレータ を渡さないとだめ。
リストや文字列も iter() を呼び出してイテレータを渡す。
538デフォルトの名無しさん:2011/12/18(日) 08:33:14.37
expectを使わずにscpのパスワードを自動で入力できるように
したいのですが何かいい方法はないでしょうか?
539デフォルトの名無しさん:2011/12/18(日) 08:43:42.01
540デフォルトの名無しさん:2011/12/18(日) 08:44:31.19
paramiko
541デフォルトの名無しさん:2011/12/18(日) 16:00:48.63
pexpect でサーバー時リモートログインすることは出来たのですが、続けて su を実行して、各種の
コマンドを実行したいと思うのですが、それって技術的に可能でしょうか。うまくいかなくて。
リモートのサーバー(Linux)にはpythonはインストールされていません。
542デフォルトの名無しさん:2011/12/18(日) 16:02:30.26
馬鹿には無理
543デフォルトの名無しさん:2011/12/18(日) 16:10:10.52
>>541
Python関係ない
544デフォルトの名無しさん:2011/12/18(日) 16:19:32.89
>>542
自己紹介乙!
545デフォルトの名無しさん:2011/12/18(日) 19:02:35.69
>>541
fabric
546527:2011/12/18(日) 19:40:39.86
あぁ、別に上から目線で言ったつもりは無かったのですが・・・すみません

PHPのvar_dump()が個人的には非常に便利だと思い、そういうのがPythonでもあれば、またはライブラリなんかであれば使いたいなと思っただけです
ただ、検索したり、Docのインデックスからザッと全関数眺めてめぼしいものを確認したりしたのですが、無かったもので

pdbは変数や配列の内容を階層構造などで確認するような利用には、ちとめんどくさい(出来ないの)かなと思いまして
547デフォルトの名無しさん:2011/12/18(日) 19:46:31.79
vars python でぐぐった結果は試してみたの?
548デフォルトの名無しさん:2011/12/18(日) 19:47:43.10
じゃなくて var_dump python か
549デフォルトの名無しさん:2011/12/18(日) 19:50:37.54
まだやってません
550デフォルトの名無しさん:2011/12/18(日) 19:53:59.79
>>546
だったら最初から「PHPのvar_dump()のようなものはありますか」と聞けばいいだろ。
PHPやってた(やってる)奴なんてゴロゴロいるよ。
551デフォルトの名無しさん:2011/12/18(日) 19:59:56.86
552527:2011/12/18(日) 20:55:06.64
>>549は自分ではありません

Python var_dump()は検索しました
しかし、見た感じ近いことは出来ても、階層処理が上手くいっていないなどの状態でした

自分の他にもvar_dump()のようなものを欲しがっている人がいるのは分かったのですが、解決はしていないようだったのと、Pythonにそのような関数は無いというのは分かりました
553デフォルトの名無しさん:2011/12/18(日) 21:00:04.69
http://pypi.python.org/pypi/watchdog
WatchDogで再帰的に指定ディレクトリのサブ階層すべて監視しようとしたが、
scheduleをrecursive=Trueでセットしても、指定ディレクトリのサブディレクトリのみしか監視してくれないんだな。
こういうケースってどうするのがベストなんだろ。

554デフォルトの名無しさん:2011/12/18(日) 22:27:41.19
>>550
正論
555デフォルトの名無しさん:2011/12/18(日) 22:28:12.65
>>552
死ね
556デフォルトの名無しさん:2011/12/18(日) 22:35:58.69
パス
557デフォルトの名無しさん:2011/12/18(日) 22:37:27.54
ごめんなさい
558デフォルトの名無しさん:2011/12/19(月) 08:40:34.93
コメント書いてたらPHPer(?)向けPython入門になりそうだったので、要点だけ。

* pdbで階層表示
=> pp コマンド

* repr(obj) で <__main__.Hoge instance at 0xXXXXXXXX>。中身を表示して欲しい。
=> Pythonではrepr()の表示は各クラスの__repr__メソッドが受け持つんだけど、
とりあえず、vars(obj) でインスタンス変数をダンプした辞書を得られる。

Python場合、プロパティ参照に副作用を含めることも出来るので、
勝手に値を読まれたりすると困る場合がある。PHPで言うならリソース型みたいなものだと思うといい。

* repr(obj)だと日本語が16進表記される。日本語表示して欲しい。
=> 3.2を使う。2.xではunicodeに変換する必要あり。

# printデバッグでよく使うかもしれないsnippets

* repr(obj) # objの表現
* dir(obj) # objのメンバ一覧
* locals() # ローカル変数一覧
* vars(obj) # obj のメンバ変数のダンプ
559デフォルトの名無しさん:2011/12/19(月) 09:28:14.40
たぶん、527にはgui なデバッガの存在を教えてやるのが一番生産的なのでは。
ちなみに俺はeclipse にpydev積んでる。
560デフォルトの名無しさん:2011/12/19(月) 09:37:27.82
> * repr(obj)だと日本語が16進表記される。日本語表示して欲しい。
> => 3.2を使う。2.xではunicodeに変換する必要あり。

print repr(obj).decode('unicode-escape')
561デフォルトの名無しさん:2011/12/19(月) 12:07:20.08
>>553
デモのコードとwatchmedoコマンドを試してみたけど、深い階層でも期待通りに動いたよ @ win/linux
ドキュメントにも recursive引数の説明には sub-directories traversed recursively とあるので、
再帰的にサブディレクトリ以下のイベントも捕らえてくれるのが正しい動作のはず。

562デフォルトの名無しさん:2011/12/19(月) 14:47:15.07
漢は黙ってprintfデバッグ
563553:2011/12/19(月) 17:36:09.71
>>561
レスありがとう。
Ubunutu10.04で確認できました。

ただMacOSX10.7でうまくいかないんだよな・・
というか何パターンかやってわかったけど階層の深さというよりも監視ファイル数が多いと駄目みたい。
Macではkqueue使ってるみたいだけど、これってかなり重いの?
ライブラリのドキュメント中でもそういう記述みつけたけど。
他にファイルイベントをフックする手段があれば、どなたか教えてください。
564デフォルトの名無しさん:2011/12/19(月) 18:12:54.52
class UtcTzinfo(datetime.tzinfo):
  # Coordinated Universal
  def utcoffset(self, dt):
    return datetime.timedelta(0)
  def dst(self, dt):
    return datetime.timedelta(0)
  def tzname(self, dt):
    return 'UTC'
  def olsen_name(self):
    return 'UTC'

class JstTzinfo(datetime.tzinfo):
  # Japanese Standard Time
  def utcoffset(self, dt):
    return datetime.timedelta(hours=9)
  def dst(self, dt):
    return datetime.timedelta(0)
  def tzname(self, dt):
    return 'JST'
  def olsen_name(self):
    return 'Asia/Tokyo'

t = datetime.datetime.strptime("2011/1/1", "%Y/%m/%d")
t = t.replace(tzinfo=JstTzinfo()).astimezone(UtcTzinfo())
OK

t = datetime.date(year=2011, month=1, day=1)
t = t.replace(tzinfo=JstTzinfo()).astimezone(UtcTzinfo())
ERROR
'tzinfo' is an invalid keyword argument for this function

となります。エラーを回避して t.replace(tzinfo=JstTzinfo()).astimezone(UtcTzinfo())を成功させるにはどうしたらいいでしょうか?
565デフォルトの名無しさん:2011/12/19(月) 18:45:04.91
t = datetime.datetime(year=2011, month=1, day=1)

http://docs.python.org/library/datetime.html
date.replace(year, month, day)
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])

pytzを調べてみたほうがいい事例かも
566デフォルトの名無しさん:2011/12/19(月) 22:19:15.57
>>563

ファイル監視にはファイル・ディスクリプタを使うので、
プロセス辺りの開けるファイルのリソース制限に引っかかってる。(パフォーマンスとは別問題)
その辺はlinuxも似たような仕組みのはずだけど、osxでは開けるファイル数の初期値が低いのかな。

READMEに書かれてるとおり ulimit -n <largenum> で制限を緩和するのが簡単な対処方法。

>他のフック
FSEventsのオブザーバーがソースには含まれてるけど、修正待ちっぽいね。

ttps://github.com/gorakhargosh/watchdog/issues/36
>Perhaps, if someone can get the fsevents code fixed before I can get around to it, you wouldn't have this problem on OS X.
567553:2011/12/19(月) 23:37:53.90
>>566
ubuntuの場合はinotifyの限界値を調整していたのですが、
Mac(というかBSD系?)ではどうするのかな、と思っておりました。
また、ubuntuでは監視ファイルが多いと、OSError吐くんですが、
MacOSXでは単に監視されていないだけなんですよね。
値の調整とソース確認して対処します。

ご丁寧にありがとうございました。
568デフォルトの名無しさん:2011/12/20(火) 09:28:34.62
突然すまん
pythonは、2と3のどちらを使えば良いでしょう?
・仕事ある
・webに、情報多い
・使ってる人多い
この条件を満たしているのは、どちらでしょうか?
569デフォルトの名無しさん:2011/12/20(火) 09:29:26.80
圧倒的に2だと思われる
仕事は分からんが多分
570デフォルトの名無しさん:2011/12/20(火) 09:31:55.66
>>564
t = datetime.datetime(year=2011, month=1, day=1)
にするとあっさりエラーが出なくなりました。
時間情報がなかったのにreplace(tzinfo=)しようとしたのがエラーの元だったみたいですね
571デフォルトの名無しさん:2011/12/20(火) 09:51:26.08
[{"予定日": "2011/12/20 00:00:44", "本文": "てすとてすと", "コメント先": null, "消": false, "タイムスタンプ": "2011/12/20 00:00:44", "表題": "表題", "済": false, "予定終了日": "2011/12/20 00:00:44", "アクション": "来店"},
{"予定日": "2011/12/20 00:00:14", "本文": "てすとてすと", "コメント先": null, "消": false, "タイムスタンプ": "2011/12/20 00:00:14", "表題": "表題", "済": false, "予定終了日": "2011/12/20 00:00:14", "アクション": "電話あり"},
{"予定日": "2011/12/20 00:00:21", "本文": "てすとてすと", "コメント先": null, "消": false, "タイムスタンプ": "2011/12/20 00:00:21", "表題": "表題", "済": false, "予定終了日": "2011/12/20 00:00:21", "アクション": "電話あり"},
{"予定日": "2011/12/20 00:00:33", "本文": "てすとてすと", "コメント先": null, "消": false, "タイムスタンプ": "2011/12/20 00:00:33", "表題": "表題", "済": false, "予定終了日": "2011/12/20 00:00:33", "アクション": "来店"}]
このようなデータを予定日でソートするにはどうしたらいいでしょうか?
572571:2011/12/20(火) 10:10:58.97
あ、質問を間違えました。質問を取り消します。
お騒がせしました。
573デフォルトの名無しさん:2011/12/20(火) 10:47:05.18
>>568
ttp://wiki.python.org/moin/Python2orPython3

* ライブラリの問題がないなら 3.x 推奨。
* 2.x 系使うときは出来れば最新の2.7系で移植に備える。

2.xはもうメジャー・リリースでないので、(メンテナンスのみ)
2から始めるといずれは 3系 への移植が発生するってのを忘れずに。

ライブラリの都合で、実際には 2.x 使う事が多いと思うけど、
ある程度互換性のあるコードを書くことは可能なので、出来れば最新の2.7を使う。

利用者はコアな開発者程 3.x の割合増えると思う。(公式リリースがなくても、ブランチ等では3.x対応してるライブラリがある)
# ただし 2.x 捨てるまでは至らない。

仕事でも、安定版しか使わないって場合は、多くは大手の採用実績待ちじゃないかな。

>>571
sorted(data, key=operator.itemgetter("予定日"))

574デフォルトの名無しさん:2011/12/20(火) 14:55:36.52
>>569
>>573

ありがとう
今は、2が多くて、これからは3が多くなるようですね

どちらかまよう。勉強始める時期を間違った

575デフォルトの名無しさん:2011/12/20(火) 14:57:10.64
努力と情熱次第で自分の作りたいゲームが作れる!

ウディタの新バージョン「ウディタ2.00」が公開されました(2011年10月27日)
「WOLF RPGエディター」とは? 
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
 不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
 その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
 慣れた人やRPGツクールでは物足りないけどプログラミングはちょっとという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
 また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備!
576デフォルトの名無しさん:2011/12/20(火) 16:28:02.26
>>574 後押ししてあげよう

2.7 からはじめる、2.7で3.x互換のコードを書く、徐々に3.x系へ・・・

* 3to2 は事例が少ないけど、2to3は早い人なら3~4年前から移植に取り組んでるので、情報も多い。
* 2.6のサポートはまだ続いてる。2.6 終了してから3.x への取り組みを始めても、2.7が継続してる間の猶予がある。
* 3.x系の日本語ドキュメント翻訳がまだ。翻訳が公開されてから3.x系という判断もありだと思う。多分その頃には3.3でてる。
577デフォルトの名無しさん:2011/12/20(火) 16:57:50.27
PySideの3系対応早くしてくれー

ついてでにPyglet 1.2も早くきてくれー
578デフォルトの名無しさん:2011/12/20(火) 17:26:35.47
初めて Python 使うなら 2.x からをおすすめします
579デフォルトの名無しさん:2011/12/20(火) 19:53:59.45
MacのXcode4.2でPython書く環境をこの↓URLを参考にやってます。

http://stackoverflow.com/questions/5276967/python-in-xcode-4

それで、 "Arguments Passed On Launch"に現在選択中のファイル名(例えばa.py) の文字列を渡せるような、
$(SOURCE_ROOT)/ っぽい環境変数ってないでしょうか?
580デフォルトの名無しさん:2011/12/20(火) 19:56:56.63
チキン民族の日本人は2.xスタートが当然だよな。
これじゃあGoogleも誕生せんわ
581デフォルトの名無しさん:2011/12/20(火) 20:07:50.22
googleなんてバージョン選択すげー保守的やん
582デフォルトの名無しさん:2011/12/20(火) 20:11:30.29
自分はMacプリインストールの2.xから入ったけど、
2系は何となく気楽に書ける気がするなぁ。
3系に移行したいのは山々なんだけど、
常用パッケージが3対応してないのが実状。
583デフォルトの名無しさん:2011/12/20(火) 21:01:16.65
centOSに標準で入っているPythonを使っているのですが、
python setup.py install
などでモジュールなどを入れた場合、rootユーザで無ければ
importがエラーで弾かれます
/usr/lib/python/site-packages/を一般ユーザにパーミッションを与えてみたのですが駄目でした
どのようにすれば一般ユーザでもモジュールが使えるようになるのでしょうか?
584デフォルトの名無しさん:2011/12/20(火) 21:16:01.27
585デフォルトの名無しさん:2011/12/20(火) 21:34:43.32
>>584
なるほど
ありがとうございます

例えば、fooユーザであれば、
python setup.py install --foo
としなければいけなかったと言う事ですね?

となると、既にインストール済みである場合はどうなるのでしょうか?
今Windows環境にいるもので確認できないのですが、
何かパーミッション変更して可能になるような事は出来ないのでしょうか?
やはり再インストールすべきなのでしょうか?
586デフォルトの名無しさん:2011/12/20(火) 21:41:48.34
>>582
実際に3.x系を使うのは、ライブラリの対応を見ながら徐々に移行してけばいいと思う。

でも、準備は今からでも出来るよ。まずはこの辺りから始めよう。
* from __future__ import print_function, unicode_literals, division
* python -3 で実行

>>583
virtualenvでユーザ・ディレクトリ下にsandbox環境を作るのがお勧め。
587デフォルトの名無しさん:2011/12/20(火) 22:05:20.69
>>585
ああ、勘違いしてた。ごめん
てっきりホームディレクトリにライブラリを入れたいって質問かと

sudo python setup.py installでインストールしたライブラリが
一般ユーザでimportするとエラーになるのなら
依存しているライブラリが不足してるといったディストロの問題ではないか
588デフォルトの名無しさん:2011/12/20(火) 22:08:59.97
importしたときに出るエラー貼ってくれるといいかも
589デフォルトの名無しさん:2011/12/20(火) 22:12:58.98
>>586-587
レスありがとうございます

>依存しているライブラリが不足してるといったディストロの問題ではないか
すみません
ちょっと自分の知識がないせいか、理解が出来ないのですが、これはどのような意味なのでしょうか?

su にてpythonを起動するとimport XXXは読み込まれるのですが、
一般ユーザではXXXがエラーになります
と言う事で、自分の(Python以外の)経験上、パーミッションの問題だろうと思っていたのですが
590デフォルトの名無しさん:2011/12/20(火) 22:18:31.69
591デフォルトの名無しさん:2011/12/20(火) 22:35:37.60
すみません
今問題の32bit版の機器が手元にないため、別の64bit版の機器を使いに行っておりました
ザッとインストール処理など済ませて簡単に実験してみてやはり出たのですが、

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named _mysql
のようなエラーです
これはMySQLdbだけでなく、他のモジュールでも出たりします

rootユーザにてimportが可能というのは確認済です
592デフォルトの名無しさん:2011/12/21(水) 02:18:14.52
djangoで日本語urlを使ってアクセスすると
urlの正規表現でキャッチ出来ません。

内部でデコードされてるのが原因ぽい感じなんですが、
止めるにはどうしたらいいですかね?
593デフォルトの名無しさん:2011/12/21(水) 05:07:50.73
>>592
Punycode表記を考慮して正規表現書けばいいんじゃね?

http://日本語.jp/about/

と思っただけなので外してたらスマン。
594デフォルトの名無しさん:2011/12/21(水) 11:27:38.50
>>591
同じく、ホームディレクトリ以下へライブラリ入れたいって話だと思ってた。

rootでビルドとか、プリインストールの環境に外来ライブラリをいれるとか、
いろいろと好ましくないので、同じような問題で困ってる人ってあまりいないかも。


とりあえず、ユーザでpythonを起動したときに sys.path に _mysqlの場所は含まれてる?
パーミッションを疑ってるのなら、そのファイルのパーミッションは何になってる?

>/usr/lib/python/site-packages/を一般ユーザにパーミッションを与えてみた

この辺ちょっと要領を得ない、ディレクトリじゃなくて、
ファイルの読み込み権限が必要だけど、そこは大丈夫?
595592:2011/12/21(水) 21:04:57.09
済みません説明が悪かったです。

例えば、下のようなurlを受け取る場合
domain.com/path/%e4%bb%8a%e6%97%a5%e3%81%ae%e5%87%ba%e6%9d%a5%e4%ba%8b/
(ブラウザで domain.com/path/今日の出来事/ と表示)
url(r'^path/(?P<category>[%a-zA-Z0-9]+)/$', viewname)
だと取れないんですよね

どうやらデコードされた状態で渡るっぽいようで
url(r'^sitename/(?P<category>.+)/$', viewname)
なら取れるんですが、これはやりたくなくて。

エンコードされた文字列を含むurlの、
djangoでの受け取り方を教えて頂きたいんですが。
596デフォルトの名無しさん:2011/12/21(水) 23:17:53.20
>>591
selinux切ったら動く?
597デフォルトの名無しさん:2011/12/21(水) 23:45:26.87
CentOS標準のPythonは下手にいじらない方がいいと思う
普通にPython使うならepelにあるpython26を入れるなりしたほうがいいのでは

yum remove python だけはやるなよ、絶対だぞ
598デフォルトの名無しさん:2011/12/22(木) 00:07:18.35
>>597
やりました
599デフォルトの名無しさん:2011/12/22(木) 01:53:14.53

url(ur'^sitename/(?P<category>今日の出来事)/$', viewname)
 
600592:2011/12/22(木) 03:45:03.84
>>599
それだと汎用性がなくてちょっとキツイんですが


いい方法ないですかね
601デフォルトの名無しさん:2011/12/22(木) 06:51:36.84
url(r'^sitename/(?P<category>.+)/$', viewname)
602デフォルトの名無しさん:2011/12/22(木) 08:54:29.54
せめて [^\/]+

unicode(補助漢字は含まない)の場合、

[\u0800-\u0FFF\u1000-\uCFFF\uD000-\uD7FF\uF9000-\uFFFF]+

他の文字コードでも同様に \x00-\xff みたいに 16進で範囲指定可能なので、日本語の範囲を調べて。
603デフォルトの名無しさん:2011/12/22(木) 12:05:31.55
無料で「みんなのPython Webアプリ編」のPDFファイルがダウンロード可能に
http://gigazine.net/news/20111222-free-python-web-pdf/

待ってないからきたわー
604デフォルトの名無しさん:2011/12/22(木) 12:19:00.16
>>603
太っ腹すぎる
GJ
605デフォルトの名無しさん:2011/12/22(木) 12:37:02.46
http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in-coffeescript/
>The local isAir helper function uses the same parameters as the loop below.

shadowing って何なんだろう。浅いコピーとかそういうのを指して言ってるなら
for ループ中でこのケースだと同じパラメータが使われ続けるんだと思うんだが…
606デフォルトの名無しさん:2011/12/22(木) 12:57:27.87
Dive into Pythonもよろしく
http://diveintopython3-ja.rdy.jp/
607デフォルトの名無しさん:2011/12/22(木) 13:14:36.90
よほど売れてないんだな
608デフォルトの名無しさん:2011/12/22(木) 13:42:10.28
>>605
LLスレ向きな話題かも。

浅いコピー(shallow copy) とは違い、shadowingは変数のスコープについての用語です。

num = 0
def inner():
  num = 10 # numは新しい変数。外の変数 num は以降、隠れて見えなくなる(shadowing)
  ...
inner()
assert num == 0 # 値は元のまま

CoffeeScriptでは、不用意に外の変数を書き換えてしまうことが起こり得る。
JavaScript は var 付で変数に代入すると shadowing。
Python はデフォルトでshadowing。nonlocal付けることで外の変数を書き換え可能(3.x系)

for ループのコードは期待通りに動くコードとして提示されてるよ。
609デフォルトの名無しさん:2011/12/22(木) 14:05:24.60
日本人発の情報って正直全然参考にならない
みんPyも無料にするくらいなら廃刊にしてくれたほうがまだありがたいわ
610デフォルトの名無しさん:2011/12/22(木) 14:06:26.82
うわ……
611デフォルトの名無しさん:2011/12/22(木) 14:24:36.80
成る程、全然参考にならない609であった。
612デフォルトの名無しさん:2011/12/22(木) 16:58:58.61
廃刊になったから無料にしたんじゃないの
613デフォルトの名無しさん:2011/12/22(木) 18:45:54.05
ところで、こないだ「みんなのPython」をみつけたので立ち読みしてみたんだけど、ひどい本だった。
どこがひどいか書く必要もあまりないが、まず誤植がメチャクチャ多い。 Jython のサイトの URL が python.org になってたり、
「p.110 を参照」と書いてあるのに実際には 117ページだったり、こういう URL とかページ番号とか周囲から類推できない部分が
間違っている。5分ぐらいパラパラとめくっただけでコレだから、本全体ではトンでもない数のミスがあると思われる。
これだけを見ても「短時間で適当に書きました」ってのがバレバレ (そもそも、ちゃんと校正したのかどうかさえあやしい)。
おまけに説明もまずい。「Python はインデントが重要」ってことで、図を使ってコードを視覚的に見せようとしている…らしいが、
ちっともそれが生きていない (ただ変数名やメソッド名を四角で囲って矢印を書くだけではなんの意味もない)。
インデントのブロック構造なども絵になっているが、実際のコードを使わずに「ただの四角」を使って説明するものだから、
ひどくわかりにくい。そのくせ、本当に図で説明する必要があるような概念、たとえばイテレータなどは、抽象的にテキトーな
説明が書いてあるだけ。そもそもこの著者は図を使ってものを説明するのが得意でないように見える。レイアウトも基本的にサボって
いると思う。ライブラリの紹介もひどい。たとえば pickle の項には loads(string(文字列)) というふうにメソッドが紹介されている
が、これは string が文字列型だって言いたいんだろうけど、これじゃかえって見づらい (実際には、最初のカッコと2番目のカッコは
微妙に違うフォントだが、どっちにせよ誤解する)。コード部分のフォントも弱いし、用語索引も貧弱だし、紙メディアであることの
利点をぜんぜん生かしてない。
614デフォルトの名無しさん:2011/12/22(木) 18:47:05.34
いい所があるとすれば、それは日本語で書かれているということと、Python 2.3 (2.4?) に対応しようと
しているらしいということだけ。しかしそれも dive-in-pythonの翻訳と日本語リファレンスがあればすむ話で、そっちの翻訳を
やったほうがみんな幸せになれる。それでも、こういう本がどっかのページで (あきらかにまだ読んでもいない人から!)
持ち上げられているという有様をみるにつけ、「日本の Python ユーザは不幸だ!」という印象が強くなっただけだった。
まあ、でも、売れりゃなんでもいいのだろう。話題性さえあれば人は中身も見ずに買うわけだから。 Google 様様ですなあ。

結局のところ (ケッキョキ)、こういう本を欲しがる人ってのは Python を勉強したいわけではない。
参考書をいっぱい買って安心する受験生と同じようなもんですよ。
こういう「おまもり本」が売れるんなら、やっと日本の Python コミュニティも Ruby のそれらしくなってきたということか。
そしてこれこそが、一部の…いや、多数の? Python ユーザが望んでいることでもあるのだ。たぶn
615デフォルトの名無しさん:2011/12/22(木) 18:47:57.70
>>613
いいからお前がPython本書けよ!みんな待ってるんだよ!
616デフォルトの名無しさん:2011/12/22(木) 19:02:05.07
自分は C言語 → 色々なOO言語 → Python と
抽象化のステップを踏んで移行してきたからいいけど、

Pythonからプログラミングを始める初心者は、序盤からいきなり
イテレータみたいな抽象概念が出てきてどう感じるんだろうか。

と思いました。
617デフォルトの名無しさん:2011/12/22(木) 19:21:12.10
try:
    角電池
except:
618デフォルトの名無しさん:2011/12/22(木) 20:03:41.96
PythonとApacheを連携させようと思いました
で、昔Tracを入れる際に、mod_python、mod_wsgiを入れていたので
httpd.confにて設定を記述しました
以前、mod_wsgiの方が早いという事を学習していたので、mod_wsgiを使って書きました
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /NLP /{$PATH}/python/httpd-test.wsgi
だけで、httpd-test.wsgiをブラウザ上にHello,Worldは表示させることが出来ました

しかし、PythonとApacheの連携は出来ることは出来ましたが、
これではPHP等のように、/{$PATH}/php内に入っている.phpファイルを全部ブラウザにて表示させると言うことが出来ません
WSGIScriptAliasにてファイルのパスを毎回書く事になると思います
AddHandler cgi-script .py .wsgi
のようなものも書いてみましたがダメでした

/{$PATH}/python/内に入っているPythonファイルを、
わざわざhttpd.confにWSGIScriptAliasにて指定しなくても全てブラウザに表示させたい
と思うのですが、どのようにすれば宜しいのでしょうか?
619デフォルトの名無しさん:2011/12/22(木) 21:00:43.61
>>617
電極を舐めて見るのは例外処理か否か。
620592:2011/12/22(木) 21:55:12.57
>>602
うーん
そのパターンでもマッチ出来ないんですが、やり方間違えてるのかな

ちなみに
%e4%bb%8a%e6%97%a5%e3%81%ae%e5%87%ba%e6%9d%a5%e4%ba%8b(今日の出来事)
もマッチしますでしょうか?
621デフォルトの名無しさん:2011/12/22(木) 21:59:44.72
django知らんけど、URLエンコードがデコードされてるだけで
その例だとUTF8エンコーディングのただのバイト列なんじゃねーの
ならunicodeに変換してunicodeの正規表現で比較汁
622デフォルトの名無しさん:2011/12/22(木) 22:58:39.00
ヒント: djangoを捨てる
623デフォルトの名無しさん:2011/12/23(金) 02:47:04.82
そして Flaskを手に取る
624602:2011/12/23(金) 03:28:36.92
>>622
PATH_INFO の unquote は WSGI のハンドラで処理されるので、django以外でも同じ。

>>620

unicodeの例を出したのは一番簡単そうだったからで、
utf-8であればutf-8の日本語にマッチする正規表現を作る事になります。

でも、複雑な正規表現のコストを考えると、 [^\/]+ が一番手軽な対策

/今日の出来事/hoge みたいなURLを想定して .+ にしたくないのかなと思ったんだけど
他に理由があるなら、まずは [^\/]+ で駄目な理由を熟考してみて。


他は、別の方法だけど、RegexURLResolver等のサブクラスで pathを加工してから
正規表現とのパターンマッチへ渡すって手もある。
625デフォルトの名無しさん:2011/12/23(金) 07:15:19.90
>>623
Flaskでやってみた。何の問題もない。
http://codepad.org/ZLDGVaep
626デフォルトの名無しさん:2011/12/23(金) 07:18:29.03
もう環境変数から直接読めよ
627デフォルトの名無しさん:2011/12/23(金) 07:27:06.54
>>625
ちょっと変えた
http://codepad.org/pBbMuPwV
628デフォルトの名無しさん:2011/12/23(金) 07:38:32.59
>>618
WSGIはプロセス常駐型Webアプリケーションのための仕組みです。
古典的なCGIとはちがって、リクエスト毎にプロセスを起動するものではないので、
Webページ毎に.pyとか.wsgiとか.phpを用意するということはしませんし、できません。
629デフォルトの名無しさん:2011/12/23(金) 08:03:20.82
>>628
WSGIは・・・というより、アパッチ・モジュール(もしくは mod_wsgi) は・・・ではないかな。
630デフォルトの名無しさん:2011/12/23(金) 10:42:08.85
>>616
抽象化してるから覚えやすいでしょ
631デフォルトの名無しさん:2011/12/23(金) 10:43:03.18
みんパイ!
pdf読みずれ

電子書籍になるとコーディング捗るって言ったの誰だよ
632デフォルトの名無しさん:2011/12/23(金) 12:26:21.59
2chまとめのサイトでタイトル見てると
「捗る」が乱用されてる気がする
633592:2011/12/23(金) 12:41:55.40
>>621
>>624
ありがとうございます。

[\u0800-\u0FFF\u1000-\uCFFF\uD000-\uD7FF\uF9000-\uFFFF]+
はunicodeで、マッチするはずありませんですね失礼しました。
(ちゃんとunicodeって書いてありますよね)

.+を使いたくなかったのは、無闇にマッチする範囲を広げたく
無かったからなんですが、厳密な正規表現はコスト増なだけで
意味なさげですかね。

となれば[^\/]で問題ないので、これで行こうと思います。
634デフォルトの名無しさん:2011/12/23(金) 15:21:05.28
>>631
雑誌の連載レベルの量なら読みやすいんだがなぁ
635デフォルトの名無しさん:2011/12/23(金) 15:27:59.10
みんPyアップされてすぐ落としてきたんだけど、
見開きなのが地味に辛い。
せめて1ページずつに分けてほしかった。
636デフォルトの名無しさん:2011/12/23(金) 15:59:13.58
>>914
同意
Rubyの糞本乱立の真似はPythonにはして欲しくないのにそうなりつつあるのが残念
637デフォルトの名無しさん:2011/12/23(金) 16:04:18.79
>>635
最初のページ見て捨てた
638デフォルトの名無しさん:2011/12/23(金) 19:12:34.93
>>629
いや基本的には"WSGIは・・・"でOKだと思う。
WSGIをCGIとして実行することもできるけど、あれは本来の使い方じゃないし。
639デフォルトの名無しさん:2011/12/23(金) 21:06:01.17
from 松下電器 import 角電池
640デフォルトの名無しさん:2011/12/23(金) 22:32:16.96
DeprecationWarning: the 松下電器 module is deprecated; use パナソニック instead
641デフォルトの名無しさん:2011/12/24(土) 00:16:23.07
<p>hello</p>
こんなHTMLがあったとしてhelloだけを取り出したいのですが、どうすればいいですか。
642デフォルトの名無しさん:2011/12/24(土) 00:35:36.70
>>641
正規表現でいいなら
import re
src = "<p>hello</p>"
m = re.search(r"<p>(.*?)</p>", src)
if m: print m.group(1)

もっと複雑なことがしたいなら、XML/HTMLパーサを使う。
643デフォルトの名無しさん:2011/12/24(土) 00:36:06.41
BeautifulSoup or lxml
644デフォルトの名無しさん:2011/12/24(土) 00:49:26.92
lxml版

import lxml.html
src = """<body>
<h1>2ch</h1>
<div><p>hello</p><p>world</p></div>
</body>"""
root = lxml.html.fromstring(src)
for p in root.findall('.//p'):
    print p.text
645デフォルトの名無しさん:2011/12/24(土) 00:53:17.31
>>642-644
ありがとうございます。これで思い残すことはありません。
646デフォルトの名無しさん:2011/12/24(土) 02:08:10.81
647デフォルトの名無しさん:2011/12/24(土) 02:29:55.22
ガンダム00の同人リスト
http://doujinlist.info/gundam00
648デフォルトの名無しさん:2011/12/24(土) 04:33:02.49
最近ではガンダムもオブジェクト指向になったか
649デフォルトの名無しさん:2011/12/24(土) 05:02:51.74
「オブジェクトオリエンテッドガンダム発進します!」
650デフォルトの名無しさん:2011/12/24(土) 05:27:00.30
ガンダムUnsignedChar
651これか:2011/12/24(土) 05:46:11.41
おJava女どれみ プログラマー猿 カウボーイ・デバッグ JAVAン
人月を探して 超電磁ロボ コンパイラーVC++ パケットモンスター
機動戦士GNUDAM エリア8KB 新言語Javaンゲリオン あらいぐまオラクル
千と千尋のバグ隠し あずまんがI/O ゲットデバッカーズ デバッグNo.1
Bugって仕様 人月姫 エスイー(SE)魔美 あしたの仕様ー 外注遣いに大切なこと
ガンダムsed ガンダムOO(オブジェクト指向) ランダムSEED
ガンパレード・デスマーチ 〜新たなる行軍歌〜 アルプスの少女High-C
Cosmic DataBase COMMITさん☆ ARMs ハックしよう大魔王
魁!プロパティ高校 超時空要塞マクロ 湾岸MID$RIGHT$
ルパンSun製 グレートマシン語 逆襲のchar ウルトラマンZ80
バグひな 戦え!超OS生命体TRONスフォーマー gccさくら
キャプテンmalloc 金色のハッシュ! おねがいt_char typoしちゃうぞ
フォートラーン戦記 Excelサーガ getcharロボ 焼きたて!!JAVAん
データセンターあらし 忍者バグトリ君 ときめきメモリ枯渇 修羅のMON
ゴルゴ1B(バイト) Rubyポップは笑わない ELFを狩るものたち 迷宮組込
652デフォルトの名無しさん:2011/12/24(土) 07:15:13.72
gccさくらで根負けして笑った
653デフォルトの名無しさん:2011/12/24(土) 07:23:27.50
現実とかぶって切ないのがかなりあるなw
654デフォルトの名無しさん:2011/12/24(土) 07:26:43.07
続きがあるらしい

DataBaseZ Serial Interface Lain おねがいMySQL ストライクswich文
これはゾンビプロセスですか? NURUPO-ヌルポ- 疾風伝
最終納期彼女 クレームモア Angel Sheet1 Inherits Stratos ぬるりひょんの孫
二人はPrintf Max関数 DECODEギアス バグと単体テストと変換中 うる星顧客
07-HOST 攻殻機動隊 STAND ALONE SERVER .Cloneちゅるやさん 夢プロパティシエール
ヘッダリア しおんのI/O MS GOSICK ダンプーブレード フェアRetail
世紀末ヌルポ学院 11Is シナリオと単体A Tempファー 省略!以下無コメ
閃光のナイトRaid5 マクロフロンティア コンストラクターV 手書きバチ
東京ASP 継承ダイモス プロキシーエンジェル SQL・カザド 明日のプロシージャ
れじ☆すた 名探偵Common 俺の仕様書がこんなに見やすいわけがない 創聖のアQueryオン
戦場のVARCHAR Tryもん Catchアイ 神のみぞ知るDelphi Delay零 けいこく!
655デフォルトの名無しさん:2011/12/24(土) 08:36:27.46
何と言うか、執念のようなものを感じるな…
656629:2011/12/24(土) 09:44:26.20
>>638 ちょっと認識が違うなぁ
WSGIは webアプリを自由にスケールできる様にする為の仕組み。
実際に、従来の様な CGIスクリプトとして運用することが稀であるとしても
それをを WSGI 対応にする意味はあるよ。

まぁ、WSGIの説明として適切かどうかは、どうでもいいんだけど、
今回問題なのは、その常駐型アプリの為のアパッチモジュールを従来のCGIのように使おうとしてる点なので、
WSGIは・・・と言ってるのに違和感あった、mod_wsgiは・・・なら納得。後半は概ね同意です。
657デフォルトの名無しさん:2011/12/24(土) 10:10:46.57
>>618 はそのどっちの区別もついてないんでしょ
perl と CGI と mod_perl の違いも判ってない
658デフォルトの名無しさん:2011/12/24(土) 11:00:35.72
>>656
ああ確かに、WSGIの目的は
「インタフェースを標準化しておけば、いろんな組み合わせで運用できますよ」
ってことなので、wrapperで包んでCGI化するのもその一つと言えますね。
flupでFastCGIにする人もいるし。
659デフォルトの名無しさん:2011/12/24(土) 12:08:26.64
CGIから作り始めて、CGIの問題点を説明し、Flaskか何かでWSGIアプリを作り、
nginxで簡単デプロイ!みたいな本を書けば売れますかね。

みんPyは叩かれてるけど、
「みんなのPython Webアプリ編」はそういう感じの構成なので教育的で良いと思った。
今どきCGIから説明を始める本は貴重。だが例題はダサい。
660デフォルトの名無しさん:2011/12/24(土) 12:31:47.61
角電池 included
661デフォルトの名無しさん:2011/12/24(土) 12:55:32.12
みんpyといえばうろおぼえだけど
文字列になってる数値から実際の数値に変換するために
(日本語へたくそでごめん)

def value(s):
  try:
    return int(s)
  except ValueError, e:
    return float(s)

みたいな関数作って使えって書いてあったんだけど
みんなこんなことしてる?
662デフォルトの名無しさん:2011/12/24(土) 13:05:28.35
しない。intとfloatのどっちが返ってくるかわからない関数とか使いたくない
663デフォルトの名無しさん:2011/12/24(土) 14:50:52.01
PyJUGのサイトで質問

>日本語オンラインドキュメント
>Pythonドキュメント翻訳プロジェクトが翻訳した日本語ドキュメントをダウンロードできます
>Python日本語ドキュメントはこちらでダウンロードできます。 http://www.python.jp/doc/

tar玉どこ?
664デフォルトの名無しさん:2011/12/24(土) 15:22:52.13
>>633
>オンライン ドキュメント>ダウンロード (Sourceforge) - PDF, html, chm などのフォーマットでダウンロードできます。
ttp://sourceforge.jp/projects/pythonjp/releases/
665デフォルトの名無しさん:2011/12/24(土) 15:23:48.85
666663:2011/12/24(土) 15:25:07.49
>>664
そんなところに。
マジ感謝。ありがとう!
667663:2011/12/24(土) 15:27:32.54
>>665
更に感謝!
668デフォルトの名無しさん:2011/12/24(土) 18:48:36.41
えっ?トナカイより蛇が好きだって???

 ∩ .∩
 .い_cノ  / ̄>O
.c/・ ・っ (ニニニ)△△
.("●" ) .(・ω・`)[‖]  ここも悪い子ばかりだな
O┳Oノ)=[ ̄てノ ̄ ̄]      ルドルフ!次行こう!
◎┻し◎ ◎――◎=3
/ラジャー\
669デフォルトの名無しさん:2011/12/24(土) 19:29:22.14
TurboGearsの本(TurboGears×Python)がネットで送料込みの中古で350円だったから買ってみた
表紙に白いものが付いていた
精液ではないのは確か
何かお菓子のようなもの

で、中身を見て驚いた
350円でも損した気になった・・・
酷い内容
本も薄いが、中身はもっと薄い
よくもこの程度の本出す気になれたなと思う



ところで、上で出ているように、廃刊になったりしてウェブ上で無料公開しているようなプログラミング用のように、
コンピュータ用途の本って他にはないんですかね?
670デフォルトの名無しさん:2011/12/24(土) 19:35:57.09
>>669
Starting Forth
http://www.nicovideo.jp/watch/sm15282971

......まぁターゲットマシンがTRS80とかだったりする訳だが......
日本語訳はアマゾンで若干プレミア付いてる
671デフォルトの名無しさん:2011/12/24(土) 19:36:49.90
>>670
スマン。誤爆した。
http://www.forth.com/starting-forth/
672デフォルトの名無しさん:2011/12/24(土) 19:50:21.73
>>671
お前、鉄道マニアだな・・・ニヤリ
673デフォルトの名無しさん:2011/12/24(土) 19:52:28.64
>>672
ttp://code.google.com/p/getekikara/
まだバグバグだけどなー。
674デフォルトの名無しさん:2011/12/24(土) 22:48:51.85
sindobookさん...
675デフォルトの名無しさん:2011/12/24(土) 23:18:36.03
メリークリスマシュ!
676デフォルトの名無しさん:2011/12/24(土) 23:48:00.26
677デフォルトの名無しさん:2011/12/24(土) 23:51:50.95
>>669
やっぱりそうか
何度か立ち読みして何度も買うのを思い留まったんだけど
またうっかり立ち読みしてしまう
何度読んでも訳が判らなくて
自分の頭が悪いんだと思ってた
678デフォルトの名無しさん:2011/12/24(土) 23:53:36.46
>>670
今年一番ワロタ
679デフォルトの名無しさん:2011/12/25(日) 00:45:48.24
めりくり
680デフォルトの名無しさん:2011/12/25(日) 03:26:51.03
日めくり
681デフォルトの名無しさん:2011/12/25(日) 17:09:28.16
スカートめくり
682デフォルトの名無しさん:2011/12/25(日) 20:27:25.49
簡単な数式の入ったファイルを読み込んで
Pythonに計算させて出力する方法を教えてください。

フォーマットは、
100 + 100
10 * 20 - 5
みたいな感じです。

自主勉でやってみようかと思ったけど読み込んで正規表現でぶった切るぐらいしか思いつかなかった。
はじめる前は、そのまま計算式として読ませることが可能な気がしたんですが、使ったことないけどNumpyとかのモジュールに文字列渡すような形式にしかならない?
683デフォルトの名無しさん:2011/12/25(日) 20:36:32.69
エヴァる
684デフォルトの名無しさん:2011/12/25(日) 20:36:52.87
import sys
while True:
    line = sys.stdin.readline()
    if line == '': break
    print eval(line)
685デフォルトの名無しさん:2011/12/25(日) 20:43:58.68
>>683-684
サンキューそ〜マッチ。

よかったら基礎的な関数・メソッド等を多く学ぶ方法を教えてください。
Help読みでしょうか。いい方法ありますか?
686デフォルトの名無しさん:2011/12/25(日) 20:55:59.30
入門書を一冊読む
687デフォルトの名無しさん:2011/12/25(日) 20:58:52.09
>>685
0.http://www.python.jp/doc/release/ のチュートリアルを読む
1.pythonを起動して対話式にやってみる
2.なるべく簡単な目標を決め、チュートリアルを読みながら作ろうとする。
分からなかったらgoogle先生に聞く。

どのプログラム言語も目的なしにやると身につきにくい。

健闘を祈る。
688デフォルトの名無しさん:2011/12/25(日) 21:02:10.58
>>685
既に何か言語を知っている場合は
最初は簡単なことについて、知ってる言語でこうだけど
pythonではこうすると言うのを書きながら体験する。

そうすればイチから入門書を読み下すよりは早く習得可能。
ただし、知識が偏りやすいので慣れてからでも入門を一度
読み下して見ることをおすすめする。
689デフォルトの名無しさん:2011/12/25(日) 21:02:38.25
あざぁーっす。とりあえず精進あるのみっすね。
690デフォルトの名無しさん:2011/12/25(日) 21:22:50.19
pythonなんか勉強しないで英語しろ
691デフォルトの名無しさん:2011/12/25(日) 21:40:39.31
>>690
プログラミングは、コードを書き始めると過集中状態になれるんだけど、
英語の勉強はまったくやる気にならない...
692デフォルトの名無しさん:2011/12/25(日) 22:03:18.26
英文読む際はとりあえず自動翻訳にかけて、分かりにくい部分だけ元の英文を読みなおすといいよ
693デフォルトの名無しさん:2011/12/25(日) 22:28:32.86
機械翻訳はないわー。
694デフォルトの名無しさん:2011/12/25(日) 22:42:08.39
そうか?

最近結構まともになってきて、技術系の文章ならそれなりに言いたい
事がわかるようになったと思うが。
695デフォルトの名無しさん:2011/12/25(日) 22:47:43.53
そうか?

最近結構まともになってきて、技術系の文章ならそれなりに言いたい
事がわかるようになったと思うが。
696デフォルトの名無しさん:2011/12/25(日) 23:30:46.37
印欧言語どうし(仏英とか)なら機械翻訳もかなり精度高いけど、
英日だったら原文を読んだほうが楽かなぁ。
技術系文章はPlain Englishで書くことが是とされる世界なのでなおさら。
697デフォルトの名無しさん:2011/12/25(日) 23:46:53.08
from English import I, You, verbs, tense
i = I()
you = You()
if i.subjunctive(verbs.know(you.posessive['phone_number']):
  i.subjunctive(tense.will(verbs.call(you)))
698デフォルトの名無しさん:2011/12/26(月) 00:37:37.35
Python3でC拡張library書いてるんですが、
分けの分からない挙動をするのでちょっと助けて下さい。

telephone.Telephone('000-0000-0000')
print()

とすると、print()の箇所で以下のようなerrorが発生します。

Traceback (most recent call last):
File "telephone/test_init.py", line 4, in <module>
print()
SystemError: Objects/object.c:594: bad argument to internal function

print()を削除すると正常に終了します。
print()に影響する理由が分からず詰まっています。
699デフォルトの名無しさん:2011/12/26(月) 00:55:56.08
可能なら、Cモジュールのコードをcodepadか何かに貼ってくり
700デフォルトの名無しさん:2011/12/26(月) 03:24:24.95
ああ
おれも初めてのときやったわ
スタック潰してるんだよ
701デフォルトの名無しさん:2011/12/26(月) 05:35:55.82
関係ないけど、Cは関数だけ書いて、
Pythonでそれをwrapしてクラス化するのが吉。
702デフォルトの名無しさん:2011/12/26(月) 09:32:24.90
>>670
スレ関係ないが、今年最も素晴らしい動画らしいじゃないかそれ
観てないけど
703デフォルトの名無しさん:2011/12/26(月) 10:52:04.90
>>701
横からだけどありがとう
704698:2011/12/26(月) 14:09:55.60
PyObject_RichCompareBool(n, zero, Py_LE)

この様な行があるのですが、zeroにNULLを突っ込んだまま
比較をしていて>>700さんの言うstack破壊が起こっていたようでした。
助言を下さった皆様ありがとうです。
705デフォルトの名無しさん:2011/12/26(月) 14:57:18.26
object.cを読むと、それはスタック破壊ではなく、
NULLチェックに引っかかってるみたいだよ。
706デフォルトの名無しさん:2011/12/26(月) 15:55:11.53
ですね、よく読んでみたらそう書いてありました。
大体、stack破壊の挙動にしてはおかしいですね。
よく読まずにお礼を書いてしまっていたということで。。。
707デフォルトの名無しさん:2011/12/26(月) 16:46:39.92
モジュールからデータを一つだけ取り出す
効率の良い方法を教えて下さい

内容---400文字程度の日本語文字列を1500種類程

現状こんな感じにしてるんですが
def textRetarn(id):
text = {}
text['id_1'] = '日本語文字列1・・・'
text['id_2'] = '日本語文字列2・・・'
text['id_3'] = '日本語文字列3・・・'



text['id_1500'] = '日本語文字列1500・・・'
return text[id]

これだとアクセス毎に、全ての文字列が一旦メモリに読まれてしまいますよね?
文字列ごとにファイルをバラせば、無駄な読み込みを無くせそうですがそれは手間が掛かりすぎるので。

効率のいい方法があれば教えてもらえませんでしょうか?
708デフォルトの名無しさん:2011/12/26(月) 17:08:32.96
sqlite3
709デフォルトの名無しさん:2011/12/26(月) 17:10:58.35
sqlite3か、

class Foo:
def __init__(self):
self.dic[1] = '日本語文字列1'
self.dic[2] = '日本語文字列2'
self.dic[3] = '日本語文字列3'
def textReturn(self, id):
return self.dic[id]
710デフォルトの名無しさん:2011/12/26(月) 17:17:05.33
ありがとうございます。
sqlite3を利用するのはアリですよね。

ところで、>>709のようにクラスを利用すれば
効率が良くなるのは何故でしょうか?
711デフォルトの名無しさん:2011/12/26(月) 17:25:23.67
>>707
わざわざsql使わなくとも、dbmで永続化でいいと思う。
辞書ライクにアクセスできるし。

ところでgettextみたいなことやろうとしてない?
712デフォルトの名無しさん:2011/12/26(月) 17:27:39.22
>>709は、省メモリの点からいえば、キーが数値, 辞書=>リストになっただけで
データ自体はメモリ内。おそらく望んでる効率化ではないと思う。
713712:2011/12/26(月) 17:29:46.64
ごめん、辞書=>リスト ってのは間違いだったかな。
dicが何かわからないけど辞書っぽい
714デフォルトの名無しさん:2011/12/26(月) 17:40:41.29
>>712
707が求めているのは省メモリではなく、関数を呼ぶたびに辞書の生成/破棄をする無駄を
気にしてるんでしょ。
だから709の回答でいいかと。インデント崩れてて分かりにくいが。

他の回答としては、辞書をグローバル変数にする、クロージャを使う等。
715デフォルトの名無しさん:2011/12/26(月) 18:07:44.36
すみません

配列生成のムダも省きたいんですが、
現状主に考えていたのは、メモリ的なムダを省くことです。
文字数がかなり多いので。

dbmって知らなかったんですが、
なかりいい感じに思えたので調べてみます
クラスも勉強になりました。
ありがとうございます
716デフォルトの名無しさん:2011/12/26(月) 21:23:15.35
こんな感じでC拡張を書いているんですが、
static PyMethodDef Montgomery_methods[] = {
{"gcdext", montgomery_gcdext, METH_VARARGS, "gcdext()"},
{"mul", (PyCFunction )montgomery_mul, METH_VARARGS, "mul()"},
{"Fr", (PyCFunction )montgomery_Fr, METH_VARARGS, "mul()"},
{"Fr_inv", (PyCFunction )montgomery_Fr_inv, METH_VARARGS, "mul()"},
{"pow", (PyCFunction )montgomery_pow, METH_VARARGS, "pow()"},
{NULL, NULL, 0, NULL} /* sentinel */
};

powと組み込み関数のpow()の名前が被っています。

from _montgomery import *

とすると、組み込み関数のpow()がMontgomery_methods[]内の
powで上書きされてしまい、組み込み関数のpow()を呼び出せなくなってしまいます。
上書きしないためにはC拡張側にどのように手を入れたらどうしたら良いでしょうか?
717デフォルトの名無しさん:2011/12/26(月) 21:50:02.81
ライブラリなどのソースコードをハックしようと思ったのですが、Pythonに慣れていないためか構造がいまいちつかめません
PHPやJavaScriptの場合は楽だったのですが
特にPHPはindex.phpから見れば、その後のライブラリの構造は(includeしたファイルなど)順々に読めていけました

しかし、Pythonの場合はどのファイルから読めばいいのか、とかが全くつかめません
__init__.pyとかある場合と無い場合があり、しかもあってもversionしか書いて無かったりです
importも標準モジュールなどが沢山かかれており、PHPのようにPEAR/Pearinfo.phpなどのように「これは明らかに外部ファイルだ」というような判別も付きにくいです

皆さんはどのファイルから読み、また、どのように辿っていくのでしょうか?
注意している点とか、何かアドバイスを頂けたらと思います
718デフォルトの名無しさん:2011/12/26(月) 22:14:12.22
>>716
まず、名前空間を考慮するなら import * 自体すべきでないのだけど、
組み込み自体を上書きしてるのではなく、スコープ内で名前を隠してるだけなので、
組み込みのpowは __builtints__.pow で呼び出せるよ。(もしくは __builtin__モジュールからimport)

C拡張は弄る必要なく、呼び出す側で適切に名前を別の変数に入れるなどして回避する。

from __builtin__ import pow as builtin_pow
from _montgomery import pow as montgomery_pow
719デフォルトの名無しさん:2011/12/27(火) 03:28:21.61
>>717
「ライブラリなどのソースコードをハック」の前に、
まずはPythonチュートリアルに目を通すといいです。
720デフォルトの名無しさん:2011/12/27(火) 03:42:08.16
>>669
そのシリーズはweb系の技術書の中でもピカイチの悪評番
CakePHPはさらに悲惨
721デフォルトの名無しさん:2011/12/27(火) 03:55:38.61
amazon で見てもレビューすら付いてないな()
722デフォルトの名無しさん:2011/12/27(火) 04:24:00.64
Python×Djangoもひどいよ。
723デフォルトの名無しさん:2011/12/27(火) 04:31:25.86
出版社覚えておきたい
他の本も買わないようにする
724デフォルトの名無しさん:2011/12/27(火) 04:34:52.87
Ploneもひどいよ。
725デフォルトの名無しさん:2011/12/27(火) 04:37:52.74
ひどいのばっかじゃないか
著者も覚えておこう
726デフォルトの名無しさん:2011/12/27(火) 05:13:36.49
確かそのシリーズ
巻末の50ページくらいがAPIリファレンスだったと思う。
そんなもんネットで調べるっての。
727デフォルトの名無しさん:2011/12/27(火) 06:16:39.30
>>726
漏れの以前買ったPython本の巻末には
PEP8、10、20、257、387、3000、3003が計数十ページそのまま載ってた
内容もしょぼかったしそれ以降は原則的にApressの本は買わないようにしてる
728デフォルトの名無しさん:2011/12/27(火) 07:20:35.47
公式ドキュメントとチュートリアルと
その他ネットに無料で転がってる情報で十分である。
729デフォルトの名無しさん:2011/12/27(火) 12:21:23.74
メソッド名をプリントする方法教えてください
730デフォルトの名無しさん:2011/12/27(火) 13:04:01.67
pass
731デフォルトの名無しさん:2011/12/27(火) 13:36:25.55
>>729 どれをやりたいのかわからないが、

# Fooクラスのbarメソッド名をプリント
>>> print(Foo.bar.func_name)

# モジュールのクラス・メソッド・関数一覧
$ python -mpyclbr module_name

# メンバ一覧
>>> print(dir(obj))
732デフォルトの名無しさん:2011/12/27(火) 13:58:39.27
>>718
助言ありがとうです。
名前を別の変数にいれる方法でうまくいきました。
733デフォルトの名無しさん:2011/12/27(火) 15:13:55.86
>>717
起動するスクリプトの if __name__ == '__main__': から読み始める。

自分も経験あるんだけど、Python言語のコードというより、
オブジェクト指向のコードを読むのがはじめてだったりしないかな?
普通に手続きで書き下されたコードならPythonでも他の言語と大差ないはずなんだけど。
ある程度の規模のソースになると、拡張しやすいように柔軟に設計されてる半面、どこに何があるかわかりにくいって事がある。

クラスがたくさんあって構造を把握しにくいって場合は、IDE等についてるクラスブラウザを使うといいよ。
734デフォルトの名無しさん:2011/12/27(火) 19:51:35.29
>>733
いや、PHP、JavaScriptのソースコードはかなり読んでいます
ライブラリを使用する際もソースコードを見てから出ないと使わないタイプで

ただ、Pythonはコードにクセがあるせいか、まだ見慣れていないので自分には非常に分かりにくいです
自分の見た2、3のライブラリが構造が分かりにくいだけなのかもしれませんが

例えば、libとかincludeとかあれば「あぁ、これはライブラリを意味してるんだな」とか分かりますが、そういうディレクトリ構造から特に意味を読み取れないものがあり「う〜ん」となっております
まぁ、Pythonにたいする慣れがまだ伴っていないせいかもしれませんが

>起動するスクリプトの if __name__ == '__main__':
というのがすみませんが分かりません

今手元にあったので、初めてDjangoの解凍したものを見てみました
/djangoへ行き、__init__.pyはバージョン情報、フォルダ名から、coreがメインだろうと入ると__init__.pyは空ファイル
これは一体どこから始まっているのか?と思いました
PHPに慣れているせいですかね
関数郡、クラス郡というより、index.phpから始まる全体的な流れを追ってしまう事が原因かもしれません
Pythonとは思想が違うのかもしれないと今思い始めてきました
735デフォルトの名無しさん:2011/12/27(火) 20:36:58.68
平松邦夫/民主党
大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ
・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞
・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派

VS

橋下徹/維新の会
大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫
 様子見:公明
736デフォルトの名無しさん:2011/12/27(火) 21:21:28.60
>>734
「ソースコードを読む前にチュートリアルを読め」としかいえない。
737デフォルトの名無しさん:2011/12/27(火) 21:35:21.79
UMLみたいなファイルとかもあればいいんですけどね
READMEとか見たりするんですけど、チェンジログ化したものとかあって、読む意味のないものとかも多いですし
738デフォルトの名無しさん:2011/12/27(火) 21:47:20.88
>>737
いいからまずは言語仕様理解しようよ。Pythonに対するFUDでもしたいの?
739デフォルトの名無しさん:2011/12/27(火) 21:48:22.70
ライブラリを使い倒してからソースコード読んだほうがいいと思うよ
Pythonに限らず
740デフォルトの名無しさん:2011/12/27(火) 21:50:22.35
pythonの2次元listやdictをhtmlフォーマットの表として書き出す
お手軽な方法を教えて下さい!姉が死にそうなんです!!
741デフォルトの名無しさん:2011/12/27(火) 22:08:34.17
742デフォルトの名無しさん:2011/12/27(火) 22:19:48.88
>>741
ありがとうございます!!姉を差し上げます
743デフォルトの名無しさん:2011/12/27(火) 23:33:14.74
>>734
馬鹿には無理
744デフォルトの名無しさん:2011/12/27(火) 23:39:33.19
これは同意せざるを得ない
745デフォルトの名無しさん:2011/12/28(水) 00:31:30.44
746デフォルトの名無しさん:2011/12/28(水) 13:15:18.30
from SANYO import エネループ角電池
747デフォルトの名無しさん:2011/12/28(水) 23:31:42.46
だるい
748デフォルトの名無しさん:2011/12/29(木) 01:06:01.90
url = "http://www.example.com"
# リクエストオブジェクトを作成する
request = urllib2.Request(url)
# 実行する
response = urllib2.urlopen(request)

こんな感じでHTTPでHTMLを取得してるんですが、
送信してるリクエストヘッダーはどうやれば見れるんでしょう?
749デフォルトの名無しさん:2011/12/29(木) 01:10:50.72
proxyを使う
750デフォルトの名無しさん:2011/12/29(木) 01:54:14.32
urllib3を使う
751デフォルトの名無しさん:2011/12/29(木) 03:19:32.74
※ 3.x へ移植の際に、手間になるかもしれないので注意

# urllib の場合

ttp://www.diveintopython.net/http_web_services/debugging.html

# urllib2 の場合 (HTTPHandlerのdebuglevelを設定. httpsは HTTPSHandler)

urlopen = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1)).open
urlopen(request)

# urllib3 ... は
知らないけど、loggingモジュール使ってるのでそっちで設定可能?

# proxy経由する場合
送信したヘッダと実際にサーバが受け取るヘッダが異なる事があるので、サーバ側でも確認。
752デフォルトの名無しさん:2011/12/29(木) 03:27:49.34
サーバ側で確認できる環境とは限らないよ
753デフォルトの名無しさん:2011/12/29(木) 06:32:31.23
動詞の連結(?)をPythonで行うためのライブラリはありますか?

例えば

「作る」+「したい」→「作りたい」

のような処理をやりたいんです。

検索してて形態素解析をMeCabというライブラリを見つけたんですが、
高機能すぎてこれでできるかどうかわかりませんでした…。
754デフォルトの名無しさん:2011/12/29(木) 08:07:34.98
Pythonというか日本語文法の話じゃね?
「作る」+「たい」=「作り」「たい」
という各パーツを接続可能な活用形で繋げたいんでしょ?
形態素解析は、文を解析してパーツに分けるものだよ
755デフォルトの名無しさん:2011/12/29(木) 09:26:46.45
そういうライブラリは見たことないなぁ。

日本語の活用規則はシンプルだから、ルールセットとデータベースを作る
のは難しくないと思うけど。
756デフォルトの名無しさん:2011/12/29(木) 10:14:20.81
なんかスパマーな匂いがするので解決策を提示するのをためらう
757デフォルトの名無しさん:2011/12/29(木) 10:15:19.88
>>752
localhostで標準ライブラリにでもあるhttpサーバ起動すればいい
758デフォルトの名無しさん:2011/12/29(木) 11:12:06.64
梅干し食べてスッパマー
759デフォルトの名無しさん:2011/12/29(木) 11:21:31.69
さすがに古すぎると思います先生
760デフォルトの名無しさん:2011/12/29(木) 12:51:16.93
>>759
古すぎると判るという事は、御主...
761デフォルトの名無しさん:2011/12/29(木) 13:02:32.97
>>759
え、最近だろ?
762デフォルトの名無しさん:2011/12/29(木) 13:29:17.36
>>757
馬鹿ですねわかります
763757でないが :2011/12/29(木) 13:43:48.15
>>762
python http serverとのやりとりでは送信リクエスト・ヘッダを見られないてこと?
764デフォルトの名無しさん:2011/12/29(木) 14:19:37.34
ヘッダを見て何がしたいのかしら。
urllib2のデフォルトのヘッダラインは
HostとUser-Agentくらいだと思うけど。
765デフォルトの名無しさん:2011/12/29(木) 15:43:07.37
Pythonって本あった方がいいですか?
766デフォルトの名無しさん:2011/12/29(木) 16:17:30.72
>>765
ネットの情報だけで十分だと思いますよ。

プログラミングが初めてで、あえて本を読むとするなら
独断と偏見により「Pythonで学ぶプログラム作法」って本をおすすめする。
767デフォルトの名無しさん:2011/12/29(木) 16:54:30.72
>>766
プログラミングが初めてではないのでネットだけでしばらくやっていこうと思います。
ありがとうございました。
768753:2011/12/29(木) 20:02:21.70
>>754
解析してパーツに分けれるなら、
それを戻す機能も実装されてるかと思ったんですが、
また別の話なんですね。

>>755
自分で作るしかなさそうですね。
例外規則とかそれなりにありそうだったので
ライブラリがあれば使いたかったんです。

>>756
スパマーってこんなことするんですか?

自分は外国語の変化表を自動生成しようと思ってるんですが、
日本語訳に基本動詞入れるだけで
外国語の変化に対応させようと思って探してました。
769デフォルトの名無しさん:2011/12/29(木) 22:00:42.14

| ┏━━━┓   従軍慰安婦は反日朝日新聞の捏造でした。
| ┃借収安┃    デマだらけの報道に注意しよう
| ┃三三婦┃
| ┃○○大┃
| ┃○○募┃
| ┃○圓集┃
| ┃圓以  ┃
| ┃迄上  ┃_
\┃可   ┃ \
  ┗━━━┛  \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
http://img04.ti-da.net/usr/wishcomestrue/t02200190_0220019010786142693.jpg
770デフォルトの名無しさん:2011/12/29(木) 22:32:11.23
command lineから実行した時に、
こっちは0って表示されるんですが、
python3 -c 'print(0)'

こっちでは0が表示されない
python3 -mdecimal -c 'print(0)'
python3 -mdatetime -c 'print(0)'

なんかのbug?って思っていますが、良い解決方法ご存知じゃないですか?
771デフォルトの名無しさん:2011/12/29(木) 23:06:22.56
-mの正しい動作だよ
772デフォルトの名無しさん:2011/12/30(金) 00:02:59.65
-mは指定したライブラリをスクリプトとして実行する
なのでif __name__ == '__main__': ...も実行される

% cat hoge.py
print('(^o^)/')
if __name__ == '__main__':
import sys
print(sys.argv)

% python3 -m hoge -c 'print(0)'
(^o^)/
['/tmp/hoge.py', '-c', 'print(0)']
773デフォルトの名無しさん:2011/12/30(金) 00:47:02.75
python3 -c 'import decimal;'
で解決しました
774デフォルトの名無しさん:2011/12/30(金) 03:21:34.79
>>768
英語の処理をしたいなら日本語なんて経由しない方がいいんじゃないかな 複雑さが増す気がする
Pythonの自然言語処理ならNLTKという最強のライブラリがある
あとオライリーから出てる入門自然言語処理って本はあなたに最適な気がする

775753:2011/12/30(金) 05:18:11.36
>>774
経由ではなくて、こんな感じに表にして出力したいんですよね。

wait : 待つ
want to wait : 待ちたい
should wait : 待つべき
can wait : 待てる

本の紹介ありがとうございます。
入門自然言語処理見てみます。
776デフォルトの名無しさん:2011/12/30(金) 05:43:21.70
よくわからんが、日本語と対応させて覚えるのはよろしくないのでは?
modal verbは文脈によって意味合いが変わるし。
777デフォルトの名無しさん:2011/12/30(金) 14:28:34.32
Pythonでネットワークプログラミングをしていますが、よくわからないので教えて下さい。

### サーバ側のプログラム (server.py)

import socket

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind('/tmp/server.sock')
sock.listen(1)
try:
  while True:
    print("* waiting connection...")
    conn, addr = sock.accept()
    print("* connected")
    data = conn.recv(1024)
    if data:
      print("* received: %r" % data)
      conn.send("OK¥n")
    else:
      print("* break")
      break
finally:
  print("* close")
  conn.close()

つづく
778デフォルトの名無しさん:2011/12/30(金) 14:32:08.40
### クライアント側のプログラム (client.py)

import sys
import socket

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('/tmp/server.sock')
for arg in sys.argv[1:]:
  n = sock.send(arg)
  print("*** sent : %r (%s bytes)" % (arg, n))
  data = sock.recv(1024)
  print("*** received: %r" % data)
sock.close()


実行結果

$ python server.py  # サーバを起動
* waiting connection...
* connected
* received: 'foo'
* waiting connection...

$ python client.py foo # べつのコンソールでクライアントを実行
*** sent : 'foo' (3 bytes)
*** received: 'OK¥n'
779デフォルトの名無しさん:2011/12/30(金) 14:36:51.36
つづき
このプログラムは、client.pyの引数が1つのときはうまく動くのですが、2つ指定するとうまくいきません。

$ py client.py foo bar   # 引数が2つあると
*** sent : 'foo' (3 bytes) # 最初の引数は送れたうえで返事が返ってくるけど
*** received: 'OK¥n'
*** sent : 'bar' (3 bytes) # 2つめは送った後に返事がうけとれない

サーバ側の出力は

$ python server.py
* waiting connection...
* connected
* received: 'foo'    # 1つめは受け取れているけど
* waiting connection... # 2つめは受け取れていないみたい

どこをどう直したらいいでしょうか。教えて下さい。
780デフォルトの名無しさん:2011/12/30(金) 15:05:52.72
acceptをループの外側にもってくる
781デフォルトの名無しさん:2011/12/30(金) 15:42:38.17
>>780
ありがとうございます。そういうことですか。
今回は、サーバ側はこのままにして、クライアント側を変更し、
引数ごとにソケットを接続し直すことにしました。

import sys
import socket

for arg in sys.argv[1:]:
  sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
  sock.connect('/tmp/server.sock')
  n = sock.send(arg)
  print("*** sent : %r (%s bytes)" % (arg, n))
  data = sock.recv(1024)
  print("*** received: %r" % data)
  sock.close()

これでうまくうごきました。ありがとうございます。
782デフォルトの名無しさん:2011/12/30(金) 16:02:03.39
それは違うんじゃないか
783デフォルトの名無しさん:2011/12/30(金) 16:56:06.07
>>782
どういうことでしょうか。
784デフォルトの名無しさん:2011/12/30(金) 17:53:35.69
それコピペ
785デフォルトの名無しさん:2011/12/30(金) 19:31:18.74

朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。
捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。

Domain Information: [ドメイン情報]
a. [ドメイン名] ASAHI-NP.CO.JP
e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ
f. [組織名] 株式会社 朝日新聞社

−「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」−
これはおそらく週刊誌さえ書けない。
「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ 09.3

786デフォルトの名無しさん:2011/12/30(金) 21:29:51.83
てんさいです

【東京都渋谷区】 12/31(土) 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!
年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!

12時00分 渋谷駅ハチ公前広場 「街頭演説」(〜13時30分)
13時30分 移動
14時00分 渋谷公会堂前 「街頭演説」(〜14時45分)
15時00分 代々木公園・NHK横「イベント広場」
「年忘れしてはならない!紅白桜祭」
抗議集会・コンサート・炊き出し等々
盛りだくさんでお送りします!(〜21時00分)
787デフォルトの名無しさん:2011/12/30(金) 22:55:02.47
UbuntuでVimを愛し、Githubでソースを公開し、
気に入ったプロジェクトがあればPull Requestを送り、
Haskellを勉強し、Pythonのブログを書いていたとしても、
俺は依然として無職だし、WIndowsでメモ帳でPHPを書いていても仕事は貰える!!
788デフォルトの名無しさん:2011/12/30(金) 23:25:10.93
コピペ乙
789not 782:2011/12/31(土) 00:28:59.75
>>783
クライアントを毎回接続するのは無駄が多いので、
普通はサーバ側を accept の内側にループ作ってその中でデータを送受信するようにします。
790デフォルトの名無しさん:2011/12/31(土) 00:45:07.01
791デフォルトの名無しさん:2011/12/31(土) 00:52:18.44
>>790
何が言いたいのか知らんが
asyncore とか Twisted とか調べてごらん
792デフォルトの名無しさん:2011/12/31(土) 04:35:49.87
10回繰り返し行うけど、変数を使いたくない時に
「どう書くべきか?」といった推奨はありますか?

例えば

for i in range(10):
print "a"

とすると i が必要ないのに使われちゃう点です。

特に困ってはいないのですが、
もし推奨されてる方法があるなら
そっちを使おうかと思って質問させてもらいました。
793デフォルトの名無しさん:2011/12/31(土) 04:42:08.21
for _ in range(10):
print "a"
794デフォルトの名無しさん:2011/12/31(土) 04:43:12.51
print 'a' * 10
795デフォルトの名無しさん:2011/12/31(土) 04:48:58.55
print ''.join(reduce(operator.add, [['a']] * 10))
796デフォルトの名無しさん:2011/12/31(土) 05:53:46.76
print "aaaaaaaaaa"
797デフォルトの名無しさん:2011/12/31(土) 06:38:59.97
>>793
_ は普通の変数と何か違いがあるんでしょうか?
798デフォルトの名無しさん:2011/12/31(土) 07:02:43.46
>>791
その前に socket how to を読むのをおすすめする。

非同期/マルチスレッド選択判断の参考になることも書いてるし、
その前にバッファリングやブロッキングについて正しく理解しないと。
799デフォルトの名無しさん:2011/12/31(土) 07:05:49.13
for x in iter("a" * 10)
    print x
800デフォルトの名無しさん:2011/12/31(土) 08:48:21.41
>>799
節子
それx使っとる
801デフォルトの名無しさん:2011/12/31(土) 09:03:00.70
print "a"
print "a"
print "a"
print "a"
print "a"
print "a"
print "a"
print "a"
print "a"
print "a"
802デフォルトの名無しさん:2011/12/31(土) 09:06:03.43
from __future__ import print_function
map(print, "a" * 10)
803デフォルトの名無しさん:2011/12/31(土) 10:18:53.11
>>792
必要あるだろ
804デフォルトの名無しさん:2011/12/31(土) 10:20:13.35
_ 変数を使うとpycheckerに怒られない。詳しいことは知らない。
805デフォルトの名無しさん:2011/12/31(土) 10:35:59.54
don't-care variableでぐぐると小話が出てくる
あと対話型プロンプトでは最後に評価した値が入ってる
806デフォルトの名無しさん:2011/12/31(土) 10:57:33.44
>>751
亀レスすんません。自分はPython2.xでした。ありがとうごさいます!
それにしてもどうやってその方法を知ったのか気になるんですが。。
807デフォルトの名無しさん:2011/12/31(土) 11:54:53.05
常にアンテナを張れ
求めよさらば得られん
808デフォルトの名無しさん:2011/12/31(土) 12:03:44.47
与えられんだろ
809デフォルトの名無しさん:2011/12/31(土) 12:06:17.39
俺は得られんで習ったし
810デフォルトの名無しさん:2011/12/31(土) 12:08:07.98
>>808
ぐぐったら与えられんの方しか出てこない()
思い違いかもしれん
ありがとう
811デフォルトの名無しさん:2011/12/31(土) 12:11:45.81
求めよ、さらば与えられん。ぐぐれよ、さらば見出だせん。叩けよ、さらば開かれん。
812デフォルトの名無しさん:2011/12/31(土) 13:16:39.12
Ask and it will be given to you.
Seek and you will find.
Knock and the door will be opened to you.
813デフォルトの名無しさん:2011/12/31(土) 13:45:53.64
聖書って、布教するために平易な英語で書かれてるんだよな。
814デフォルトの名無しさん:2011/12/31(土) 13:46:58.58
Pythonとかけて三が日の食事と解く


その心は


どちらもヘビーでしょう
815デフォルトの名無しさん:2011/12/31(土) 14:33:58.29
>>812
ヘブライ語以外は原著と認めない
816デフォルトの名無しさん:2011/12/31(土) 14:38:34.16
>>814
           /\/\/\/\/\/\
       ./  ./| /| /| ./| ./| ./|
      ∴\/./ . /  /  / /  /
      ゚∵ |/∵|/; :|/:;;;|/.;. |/ ;.;|/
     _, ,_  _, ,_  _, ,_  _, ,_  _, ,_  _, ,_
   (ノ゚Д゚)ノ゚Д゚)ノ゚Д゚)ノ゚Д゚)ノ゚Д゚)ノ゚Д゚)ノ    こんなくだらねー案件
  /  / /  //  //  //  //  /    審議に回してくるな
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
817デフォルトの名無しさん:2011/12/31(土) 17:22:03.23
818 【凶】 【693円】 :2012/01/01(日) 02:24:29.12
あけおめー
819 【大吉】 :2012/01/01(日) 03:39:09.70
今年もよろしくお願いします。
820デフォルトの名無しさん:2012/01/01(日) 03:44:50.29
      ∧_∧
     ( ´Д` )  おまいら
     /     ヽ  新年あけまして
     し、__X__,ノJ

      /´⌒⌒ヽ
    l⌒    ⌒l   おめでとうございます
   ⊂ (   ) ⊃
      V ̄V
821デフォルトの名無しさん:2012/01/01(日) 04:14:05.80
   ∧_ 人
   (;´Д(__)
   ( つ (__)  イケメン風に
   ) 「( ・∀・)
     |/~~~~~~ヽ

         人
   ∧_....(   )
   ( ´∀(へ ノ)
   ( つ (  ´ 」` ) さすがプロですな!
   ) 「(  'ー  )
     |/~~~~~~~~~~ヽ
822デフォルトの名無しさん:2012/01/01(日) 05:09:12.66
メリークリスマス!
823デフォルトの名無しさん:2012/01/01(日) 06:10:58.25
8Pニューイヤー
824 【豚】 :2012/01/01(日) 10:16:46.25
あけおめ〜
おめぇ〜
826デフォルトの名無しさん:2012/01/01(日) 10:46:16.97

K-POPの真実
89 名前:名無しさん@12周年[sage] 投稿日:2011/12/27(火) 18:42:50.71 ID:oPBf/MSP0
12月23日、東京国際フォーラムホールAで大国男児、X−5 、C-REAL、チェ・スジョンらが出演した『K-POP LIVE for X'mas 2011』が開催された。
しかし、ふたを開けてみれば2階はすべてクローズド、1階も後列は空席だらけと、さんざんな結果に終わった。

http://news.infoseek.co.jp/article/cyzowoman_27Dec2011_17759
    ↓    ↓    ↓

395 名前:山師さん@トレード中[] 投稿日:2011/12/27(火) 15:21:13.95 ID:E5FNgBRR0
K-POP LIVE for X'mas 2011
公演日:2011年12月23日(金)
会場:東京国際フォーラムホールA(収容人数5000人)
出演:大国男児 / X−5 / C-REAL / Yoonji

開演前
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221655.jpg
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221654.jpg

開演中
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224222054.jpg
補助金が尽きてガラガーラ テレビは捏造演出装置
827 【大吉】 :2012/01/01(日) 12:19:02.62
ネトウヨのみなさんもおめ〜
828デフォルトの名無しさん:2012/01/01(日) 15:17:04.25
>>827
自己紹介乙
829デフォルトの名無しさん:2012/01/01(日) 22:14:22.51

           ______
          r〃〃〃 f7⌒ろ)
           l‖‖‖ ||   f灯
            |‖‖‖ ||   | |
            |儿儿儿._」⊥厶
           〔__o____o_≦ト、
.          i / ⌒  ⌒  ヽ )
          !゙ (・ )` ´( ・)   i/
          |  (_人__)    | \
          \  `ー'    /  / ー- 、
.          ,ィ(⊆≧リ≦⊇)〃   /     rク\
.       /   | ̄r少}¨ ̄〃   /    /′ ヽ
      〃 l   |  l| | l| 〃    /     /    └ヽ
     /    l  |l | |l/″   /      !  厂    \
    く,  Y   ! l」fレト!    /       | /        1
    丿  |   | 丿} じ’  /      | /         |
   /     l   | `¨      /      レ′        |

             真の思考停
    (在位 2009年9月16日〜2010年6月8日)

   民主朝の初代考停、言行不一致、虚言、脱税、
   そして外交において巨大な負の遺産を築いた。
830デフォルトの名無しさん:2012/01/02(月) 06:57:37.94
ネトウヨ
831デフォルトの名無しさん:2012/01/02(月) 08:53:18.04
網右翼
832デフォルトの名無しさん:2012/01/02(月) 09:48:15.34
Pythonは左翼言語だからな
833デフォルトの名無しさん:2012/01/02(月) 10:21:29.87
総括しろ!
834デフォルトの名無しさん:2012/01/02(月) 10:25:35.70
松前漬けおいしいです
835デフォルトの名無しさん:2012/01/02(月) 10:48:58.42
なるほど
836デフォルトの名無しさん:2012/01/02(月) 13:59:22.71
はい
837デフォルトの名無しさん:2012/01/04(水) 09:29:21.84
おっぱいそん
838デフォルトの名無しさん:2012/01/05(木) 12:30:35.43
loggingモジュールの親から子への伝搬が良くわからん
839デフォルトの名無しさん:2012/01/05(木) 13:24:57.76
馬鹿には無理
840デフォルトの名無しさん:2012/01/06(金) 08:58:37.92
loggingなんて使うなprintで十分
841デフォルトの名無しさん:2012/01/06(金) 09:55:03.63
それはない
842デフォルトの名無しさん:2012/01/06(金) 10:16:38.95
ライブラリがprintでメッセージ吐いてたら困る。
843デフォルトの名無しさん:2012/01/06(金) 22:48:35.55
bin(15)とか0b101011とかできるようにしたんだったら
ついでに "%08b" % 15 もできるようにしてくれたら良かったのにGuidoちん..
844デフォルトの名無しさん:2012/01/06(金) 22:54:33.96
"{:08b}".format(15)はできるよ
845デフォルトの名無しさん:2012/01/06(金) 23:17:44.09
ValueError: zero length field name in format
ってなっちまうだす
846デフォルトの名無しさん:2012/01/07(土) 00:33:24.53
2.6 でも "{0:08b}".format(15) で出来るはず、
フィールド名を省略できるのは 2.7以降らしい。
847デフォルトの名無しさん:2012/01/07(土) 00:49:03.31
22 名前:名無し募集中。。。[] 投稿日:2012/01/06(金) 23:40:34.39 0
AKB=金正恩

この意味わかるか
AKBという捏造ブームの裏に何があるか見えるか?


848デフォルトの名無しさん:2012/01/07(土) 11:46:55.05
位置インデックスの省略は3.1から可能。それが2.7にバックポートされた。
849デフォルトの名無しさん:2012/01/07(土) 12:01:57.26
C++からC99へ、みたいな。4.xマダァ?(・∀・ )っ/凵⌒☆チンチン
850デフォルトの名無しさん:2012/01/07(土) 12:23:05.35
Python 2.799999
851デフォルトの名無しさん:2012/01/09(月) 17:19:18.61
Pythonで意図的にブルースクリーンを発生させる方法は無いですか?
ネタとして仮想マシンで特定の自爆コマンドを打つと、ブルースクリーンが発生するプログラムを書こうと思っています。
意図的にブルースクリーンを引き起こすものとしてはNotmyfaultがありますが、あちらはC言語で書かれてます。
私としてはできる限りPythonで書きたいと思っているので、どなたか良い方法をご存じの方いらっしゃいませんでしょうか?
852デフォルトの名無しさん:2012/01/09(月) 17:56:13.73
>>851
ドライバいるから、python だけだとどの道無理。
853デフォルトの名無しさん:2012/01/10(火) 00:32:52.19
PythonのC拡張だったらPythonで書いたって言えると思うけど、
pure Python scriptだけで書きたいんだったら無理
854デフォルトの名無しさん:2012/01/10(火) 06:21:24.73
rootでも無いのにそれが出来たら言語設計とかOSの設計がおかしいんじゃね?

855デフォルトの名無しさん:2012/01/10(火) 10:52:23.76
ネタだったらスクリーンセーバーにしとけばいいじゃん
856デフォルトの名無しさん:2012/01/10(火) 12:00:11.15
857デフォルトの名無しさん:2012/01/10(火) 16:43:42.23
ネタでいいなら
http://codepad.org/Be9mPqvt
858デフォルトの名無しさん:2012/01/10(火) 16:53:09.36
PCが物故割れた
859デフォルトの名無しさん:2012/01/10(火) 18:05:09.92
Escapeが効果なくて一分ほど泣きそうになった
860デフォルトの名無しさん:2012/01/11(水) 00:05:35.50
>>854
>rootでも無いのにそれが出来たら言語設計とかOSの設計がおかしいんじゃね?

言語設計関係ないだろ。
そんな言語が設計できたら、のっとり放題じゃんか。
861857:2012/01/11(水) 00:28:57.72
grepで引っかからない程度に難読化しよーと思っただけなのに、
エディタ保存時の自動エンコードに依存したコードを投稿してしまった。
encoding: rot13 では、文字列リテラル内まではデコードされないみたい

# Hidden features of Python
ttp://stackoverflow.com/questions/101268/hidden-features-of-python#1024693
862デフォルトの名無しさん:2012/01/12(木) 16:12:37.00


2chやニコニコ動画に民主党から反日工作費が流れていることが知られるようになってきた。
民主党が用意した資金で工作員が2chを荒らしていることもだんだんと知られるようになってきた
863デフォルトの名無しさん:2012/01/13(金) 14:00:04.93
>>852-855
やはりpure Pythonだと無理ですか…ありがとうございます。
864デフォルトの名無しさん:2012/01/14(土) 18:22:03.28
>>851
WinNukeは?あれはPearlで書かれてたけど。ただ、撃ち落とせるマシン
(Win95やNTのSPが古いやつ)が手元にないだろうな。
865デフォルトの名無しさん:2012/01/15(日) 08:38:22.78
>>864
ピエール?
866デフォルトの名無しさん:2012/01/15(日) 08:50:03.65
>>865
pearl=真珠(パール) な。どうやって真珠で書くのかは知らんが
867デフォルトの名無しさん:2012/01/15(日) 14:51:38.33
有名なプログラム言語perlより先に、pearlという名前のプログラム言語があったらしいから、それのことだろ。
868デフォルトの名無しさん:2012/01/15(日) 20:12:28.48
peとrlの“間にa”、つまりマニア向けの言語だった模様
869デフォルトの名無しさん:2012/01/15(日) 20:54:02.74
        ____
        /     \    
     /   ⌒  ⌒ \   何言ってんだこいつ
   /    (●)  (●) \     
    |   、" ゙)(__人__)"  )    ___________
   \      。` ⌒゚:j´ ,/ j゙~~| | |             |
__/          \  |__| | |             |
| | /   ,              \n||  | |             |
| | /   /         r.  ( こ) | |             |
| | | ⌒ ーnnn        |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二  _|_|__|_
870デフォルトの名無しさん:2012/01/17(火) 13:02:14.43
poodledoってひょっとして最大1000件しかタスク取得できないのかな?
871デフォルトの名無しさん:2012/01/17(火) 16:49:58.64
>>870
http://www.toodledo.com/info/api_doc_tasks.php
> The maximum number of tasks that can be returned at a time is 1000
872デフォルトの名無しさん:2012/01/17(火) 21:50:59.35
Dive Into Python 3の日本語訳のpdfが欲しい
873デフォルトの名無しさん:2012/01/17(火) 22:48:29.67
Python太りさん
874デフォルトの名無しさん:2012/01/18(水) 00:32:36.16
872
各ページのhtmlを自動で落としてpdf化するツールをpythonで作ってみれ
875デフォルトの名無しさん:2012/01/18(水) 03:34:53.61
                     ___, - 、
                    /_____)
.                    | | /   ヽ ||   「パパな、2ちゃんねるに晒されてるんだ。」
                    |_|  ┃ ┃  ||
                   (/   ⊂⊃  ヽ)        /  ̄ ̄ ̄ \
                   !   \_/  !        ( ( (ヽ     ヽ
                   ,\ _____ /、       | −、ヽ\     !
   ゝ/  ̄ ̄ ̄ \     /. \/ ̄\/   .\     |   |─ |__   /
   / _____ヽ    |  |  _┌l⊂⊃l  |  |    ┌ - ′  )   /
   | | /  ─ 、−、!    |  |  / ∋ |__|  |  |    ヽ  /   ヽ <
   |__|─ |    |  |    |  /`, ──── 、 |  |     ` ─┐  h ̄
   (   ` ─ o−i    ヽ /         \ .ノ_      .j ̄ ̄ |
    ヽ、  ┬─┬ノ / ̄ ./            ヽ- 、\    /   ̄ ヽ\
  // /ヽ─| | ♯|  /   i              | ..) ) \  i  ./   |\\
  | |  /  `i'lノ))┘/ , ─│             !-l⊂⊃l┐__ヽ__/\ / |   | |
  | |  | ̄| / /| / ( (... .ヽ              / |____|∈  __./ .|   | |
  |_|/ヽ、_/  ./   ` ─ /\           /ヽ      ̄ \-──| \|_|
   | |  |───/____i  l=======l  |_____ __\  |\ | |
   |/ ヽ── |______\  l二|^|二二|^|二l 丿______ |_丿 \|
  l ̄ ̄ ̄ ̄ ̄ | |      | |.  | |   | |  | |         | |  ̄ ̄ ̄ l
   | ̄| ̄ ̄ ̄ ̄.| |────| |.  | |   | |  | |.──────| | ̄ ̄ ̄| ̄|
876デフォルトの名無しさん:2012/01/18(水) 07:29:27.45
関数名のつけ方で質問
PEP8に
" 更に、名前の最初や最後にアンダースコアをつけた特別な形式も、見受けら
る。(大文字・小文字の規則も一緒に適用される)

- _single_leading_underscore:弱い内部使用の識別子。たとえば、
"from M import *" は、アンダースコア1つで始まる名前のオブジェクト
を、importしない。"

ってあります。
これは、↓みたいにクラス内でのみ呼ばれる関数はわかりやすくアンダースコアつけられますよってことですか?
class a:
  def __init__(self):
    self.a = self._func()

  def _func(self):
    return "a"

    

877デフォルトの名無しさん:2012/01/18(水) 10:40:32.85
>>871
うわぁ、そうなのか。サンクス
878デフォルトの名無しさん:2012/01/18(水) 14:03:07.23
>>876
全然違う
879デフォルトの名無しさん:2012/01/18(水) 15:09:30.66
>>876
クラス内でのみ呼ばれる関数であることをプログラマに示すために
アンダースコアを前置してもいいんですかって質問ならyes

Pythonプログラマはアンダースコアで始まるメソッドを
外からは(呼べるけど)呼ばないのが慣習
880デフォルトの名無しさん:2012/01/18(水) 21:05:27.39
日本が誇る黒子と同じ。
丸見えだけど見えてないことにしてねってなもんよ。
881デフォルトの名無しさん:2012/01/19(木) 01:32:42.57
>diveintopython3 pdf

https://github.com/diveintomark/diveintopython3/blob/master/publish

オリジナルの方を見ると、prince (http://www.princexml.com/) でPDF生成してるらしい。
英語版・日本語版のリポジトリ双方から必要なファイルをチェックアウトして
同じ構成を作れば、日本語のPDFも作れるんじゃないかなと思うが、
日本語がそのまま通るかどうか等は未調査。やってみよぉ
882デフォルトの名無しさん:2012/01/19(木) 01:41:54.94
>>881
wktk
883デフォルトの名無しさん:2012/01/19(木) 10:17:07.70
pythonに外付けハードディスクが正常かどうか監視する事が出来るようなライブラリってありませんか?
884デフォルトの名無しさん:2012/01/19(木) 11:23:08.56
エクスプローラで表示されるファイルのサイズを実装したいのでアドバイスお願いします
1バイトのファイルでも1KBと表示されましたこれって
1024バイト未満は1KBと表示するように作ればいいのでしょうか?
そして1KB以上の場合は単純にファイルサイズを1024で割るだけで問題ないでしょうか?
1024っていう数字は1Mや1Gや1Tなど単位が変わるごとに変わったりしますか?
885デフォルトの名無しさん:2012/01/19(木) 12:30:55.16
>>884
端数は全て切り上げ。
1.1KBは2KBになる。
886デフォルトの名無しさん:2012/01/21(土) 00:27:48.46
アスキーファイルの数値データを読み込んで
リストに格納したいのですが、元ファイルの
フォーマットが曲者でちょっと困っています。

【スペース区切りの小数群】
【スペース区切りの小数群】
…(以下同様に数百万行)…
【スペース区切りの小数群】
【区切り文字列】
【スペース区切りの整数群】
【スペース区切りの整数群】
…(以下同様に数百万行)…
【スペース区切りの整数群】

前半の小数値と後半の整数値の個数は等しく、
小数値f[n]と対応する整数i[n]について
list[i[n]] = f[n]となるようなlistを生成したいのです。
小規模なデータであればとりあえずreadline()で
1行ずつ読んでsplit()後append()しつつ適当に
並べ替えるのですが、データ量が膨大なので、
なるべく効率よく処理したいと考えています。
なにかいい方法はありませんか?
887デフォルトの名無しさん:2012/01/21(土) 00:34:59.97
(◕ω◕) わけがわからないよ
888デフォルトの名無しさん:2012/01/21(土) 00:52:39.62
>>886
1.0 2.0 3.0
----
100 200 300

とかあって、L[200] が 2.0 となるような L ということ?
数百万とかあったらリスト作るだけでメモリ食いつぶしそうだけど
とりあえずreadline, split, appendでどうなるか試してみては
889デフォルトの名無しさん:2012/01/21(土) 01:31:08.26
>>886
pure pythonは諦めてC拡張を書いたら?
ってのは開発コストがかかって駄目?

ちょっと仕様を理解できない
数行の例を書いてみてよ
890デフォルトの名無しさん:2012/01/21(土) 02:25:46.05
二通り以上の解釈が出来る文章を書く人って
891デフォルトの名無しさん:2012/01/21(土) 02:28:46.90
>>886
SQLite とかの DB にぶち込んで処理した方がいいと思う。
892デフォルトの名無しさん:2012/01/21(土) 02:46:57.67
>>891
それは思ったけどどうなんだろう。
今回の問題の開発規模(行数)は比較的小さいから、
開発速度・実行速度の両面から考えてsqliteを持ち出す利点はないと思ったよ。

行数が多いってのは一考の余地が有りそう。
893デフォルトの名無しさん:2012/01/21(土) 02:51:56.91
(◕ω◕) わけがわからないよ
894デフォルトの名無しさん:2012/01/21(土) 03:09:29.59
わけがわからないよ
って流行ってんの?
分けが分からないよ
895デフォルトの名無しさん:2012/01/21(土) 03:17:17.15
『 この世界で最も理解しがたいことは、 この世界が理解できるということだ。』
って俺はずっと「理解できるとか言っちゃう奴は嘘つくな」って意味だと思ってけど
本当は「実際に理解できちゃっててすげー」って意味だったのな、オリジナルを読めば一発だが
896デフォルトの名無しさん:2012/01/21(土) 03:25:46.82
>>892
メモリだけで処理するにはきついからファイルも使ってってことかと
897デフォルトの名無しさん:2012/01/21(土) 06:59:55.82
>>895
不確定性原理
とか
不完全性定理
とか
898デフォルトの名無しさん:2012/01/21(土) 11:22:31.58
anydbmとか使うって話でいいんで内科医?
899886:2012/01/21(土) 11:23:34.55
色々アドバイスありがとうございます。
ファイルを2箇所から読み出したりして
うまく処理できないかなぁなどと考えたのですが
やっぱりRAMかドライブに蓄えてから
処理するのが王道ですかね…。

一応RedhatとXPの64bit環境で試したのですが、
1千万要素位のリストは問題なく作れました。
ただ、append()で継ぎ足していったら
10分弱掛かりましたが。
900デフォルトの名無しさん:2012/01/21(土) 11:31:50.31
numpyの出番じゃね?
901デフォルトの名無しさん:2012/01/21(土) 11:32:36.67
>>892
> 今回の問題の開発規模(行数)は比較的小さいから、
> 開発速度・実行速度の両面から考えてsqliteを持ち出す利点はないと思ったよ。

にちゃんに質問してる奴が開発速度とか、なに言ってるんだ?
この手の輩が SQLite を超える性能のプログラムを作れるとも思わないし。

一番の問題は自己の能力の見積もりができてないってことだな。

>>896
オンメモリーでもできるし、メモリー足りなきゃファイルも使える。
そもそも Python の大量データに対する実行性能ってあまり高くないと思うんだが。
※ 個人の意見です。
902デフォルトの名無しさん:2012/01/21(土) 12:02:08.92
>>899

ファイルを2か所から読みだすとしても、区切り記号がどこにあるか探すのに
結局時間がかかるのでは?
メモリを節約するだけなら同じファイルを2つオープンするとか。

整数データがどう分布しているかによるけれど、リストなら append していく
より、最初にまとめて確保して、ふつうに代入したほうが速くない?

データが分散しているなら、辞書に入れておいて、キーでソートとか。

903デフォルトの名無しさん:2012/01/21(土) 12:10:24.33
>>899
> ただ、append()で継ぎ足していったら
これやると計算量がO(n^2)になったはず
listappend(), list_resize()難しいです。
904886:2012/01/21(土) 12:30:12.03
>>900
numpyはかじった程度なので、loadtxt()の存在を
今知りました…。

>>902
区切り位置の検出は確かにネックです。
2つファイルを開くという発想がなかったので、
これはやってみる価値があるかもです。

>>903
append()も遅いし、list = list1 + list2とすると
もっと遅くなります。当たり前ですが。
うまく連結する方法があるといいんですけど…。

月曜までデータにアクセスできないのですが、
numpyと2つファイルを開くってのを
試してみようと思います。
905デフォルトの名無しさん:2012/01/21(土) 13:17:02.50
関係ないが、
自分のソフトに全文検索機能を入れようと思い、Pythonで実装しようとしたのだが、
逆インデクスをインメモリでソートするのはメモリ食いすぎてダメだろうし、
自前で外部ソートを実装するのはアホくさいので辞めた。

標準ライブラリに map-reduce モジュール (Cで実装) があったら良いなぁって思った。
いろいろと汎用的に使えるじゃーん。
906デフォルトの名無しさん:2012/01/21(土) 13:35:44.35
何を言ってるのか判らない
907デフォルトの名無しさん:2012/01/21(土) 16:33:15.70
ルートディレクトリにあるファイルを
複数ある各サブディレクトリに
shutil.copyfileでコピーするスクリプトを
作成しています。
実行すると

IOError: [Errno 13] Permission denied: 'H:\\hogehoe'

というエラーが出ました。
Windows上なのでパーミッションとか言われてもよくわからないのですが
何が原因なのでしょうか?
今までファイル移動などを行ったときにPermission云々といわれたことが
無かったもので困っています。
908デフォルトの名無しさん:2012/01/21(土) 16:48:21.33
パーミッションが原因
>>907
>Windows上なのでパーミッションとか言われてもよくわからないのですが

Windows 9x でも使ってるのか?
910デフォルトの名無しさん:2012/01/21(土) 18:10:11.45
shutil.copyfileではなく
shutil.copyにしたらすんなりいきました。
911デフォルトの名無しさん:2012/01/21(土) 18:19:22.91
Unix由来なツールをWindowsで使った時
例えばファイルが他でオープン中でロックされてる…みたいな
権限由来じゃない理由でも書き込めなければ
パーミッションって扱いでエラーになったりすることはあるね
912デフォルトの名無しさん:2012/01/21(土) 18:25:15.52
>>907 の個人的な環境なんぞ >>907 以外に判る訳ないやろ
913デフォルトの名無しさん:2012/01/21(土) 18:28:34.67
copyfileのdstがディレクトリだったんだろうか
914デフォルトの名無しさん:2012/01/21(土) 21:15:00.55
SICP taught in Python 3 - UC Berkeley online (berkeley.edu)
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/
http://news.ycombinator.com/item?id=3491142

MITがLispからPythonになったのは知ってたけど、バークレー校もそうなのか
915デフォルトの名無しさん:2012/01/21(土) 21:23:03.65
鯖復活の呪文

|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
916デフォルトの名無しさん:2012/01/21(土) 21:44:31.04
SICPをPythonでやってるの?
917デフォルトの名無しさん:2012/01/22(日) 01:01:21.38
>>914
自己レスだけど、Schemeは基本的な機能しかなかったから学習に向いていたのに…って意見はあるようだね
918デフォルトの名無しさん:2012/01/22(日) 03:11:04.05
PythonでSICPって、末尾再帰どうすんのよ。
919デフォルトの名無しさん:2012/01/22(日) 04:00:51.78
920デフォルトの名無しさん:2012/01/22(日) 04:04:06.67
基本的な機能しかないから学習に向いているっていうなら
アセンブラかCでやればいいってなるだろ
921デフォルトの名無しさん:2012/01/22(日) 10:12:01.25
Cは現実学習に使われてるだろ。

アセンブラは、アセンブラ自体は基本的な機能しかないとしても、
今時のCPUだと対象の命令語がムズすぎ。
922デフォルトの名無しさん:2012/01/22(日) 10:45:06.04
>>904
Cはライブラリ、プロセッサ一切無しだと確かに基本的な機能しか無いな。
923デフォルトの名無しさん:2012/01/22(日) 10:50:19.33
ここにいる皆さんは
たとえば大量のファイルをリネームとか
簡単なスクリプトなら数分でソラで書けてしまうのですか
924デフォルトの名無しさん:2012/01/22(日) 11:32:30.80
はい
925デフォルトの名無しさん:2012/01/22(日) 12:15:56.18
>>921
まさにその通り。うちの大学ではCやった後にアセンブラもやって結果として
プログラムがどういう構造で動いてるのか理解が深まったけど
初めからアセンブラをやっても学習効率悪いと思う
926デフォルトの名無しさん:2012/01/22(日) 12:37:09.67
>>923
いちいち暗記はしてないから、リファレンス見ながら書くよ。
ただ、ファイルを列挙するイテレータがあったなぁくらいは覚えている。
927デフォルトの名無しさん:2012/01/22(日) 15:24:46.43
>>926
そんなものですか。
プログラミング自体初めてみたいなもので
ちょっとしたスクリプトにすごい時間がかかるので
これじゃあ費用対効果が合わないなあとおもってるんですが
なれれば早くなりますかね。
928デフォルトの名無しさん:2012/01/22(日) 15:26:54.31
フリーソフト探したほうがコスパ良いよ
929デフォルトの名無しさん:2012/01/22(日) 15:43:59.35
>>927
> なれれば早くなりますかね。

多分。

いくつか作ってりゃ、似たようなルーチンは過去の奴を参考にしたりできるから、
効率は上がるよ。

ただ、費用対効果を言うなら、>>928 の言うようにフリーなり、製品買った方が
いいことが多い。
930デフォルトの名無しさん:2012/01/22(日) 17:30:15.25
今初めてのPython読んで勉強してるんだけど量多くて中々きつい
とりあえず16章までは読んだけど正直よくわかんないところとか忘れたことたくさんあると思う
一応ひと通り目を通してからなんか実際に書きつつわかんないところをまた見ながら頑張ればいいのかな
931デフォルトの名無しさん:2012/01/22(日) 17:39:31.36
簡単なクラスを自分で書けるようになるところまで頑張って読んだら一旦本を閉じ
ライブラリ一覧を眺めたらどんどん使っていくほうがいいんじゃないか
http://docs.python.org/library/
残りは時間が余ったときにでも

忘れたところが気になるなら本文を端から読みなおすのではなく
練習問題を解きなおすといいよ
932デフォルトの名無しさん:2012/01/22(日) 17:41:35.19
>>930
技術本は、通して2回読むといいよ。
2回目はものすごくよく分かる。
933デフォルトの名無しさん:2012/01/22(日) 18:31:46.11
いいかげんpythonプログミング改訂版でねーかな
934デフォルトの名無しさん:2012/01/22(日) 18:44:45.16
Cookbookは新刊でたよ
935デフォルトの名無しさん:2012/01/22(日) 18:48:38.19
>>933
あれは出さないのが正解
内容は10年前で止まってる
なにせTkinterに数百ページも使ってるような本だ

>>934
まだ出てないよ。もうすぐ
Safariはどうか知らないけど
936デフォルトの名無しさん:2012/01/22(日) 22:41:18.47
初めてのPython第4版日本語版はまだ出ないのか…
937デフォルトの名無しさん:2012/01/23(月) 06:15:18.91
今、C拡張を書いているのですが、
pure pythonで書いたFoo classをC拡張内で作成するclass Baaに
継承させれずに困っています。

C拡張で作っているPyTypeObjectの tp_base という変数に
Foo class の PyTypeObject を設定してやればいいのじゃないか?
と思っていますが、PyTypeObjectをどうやって引っ張ってくればいいのか分かりません。
python実行後にpure python側のmodule Foo classをimportした後、
C拡張内でFoo class のob_typeに触る方法があるでしょうか?

PyParser_SimpleParseString()が返すcode objectにFoo classの
PyTypeObjectが入っていますでしょうか?

それとも、Py_CompileString(), PyImport_ImportModule()側で
どうにかこうにかするんでしょうか?
938デフォルトの名無しさん:2012/01/23(月) 11:40:04.77
>>904
ボトルネックになる部分さえ正しく把握してれば
標準のarrayモジュールのみでも、それなりに省メモリで高パフォーマンスなコード書けるよ。
939デフォルトの名無しさん:2012/01/23(月) 15:56:34.22
pythonをconfigureするときにつける --with-threads --enable-sharedというオプションですが、
それぞれどんな意味なのでしょうか?
940デフォルトの名無しさん:2012/01/24(火) 06:32:49.72
知ってるけど教えない。
941デフォルトの名無しさん:2012/01/24(火) 06:55:10.52
>>939
PythonのソースツリーのREADMEに書いてあるよ
942デフォルトの名無しさん:2012/01/24(火) 06:57:46.18
configure --help
943937:2012/01/25(水) 09:54:23.24
しくしく>>937です。しくしく。
どなたにも相手にされず、しくしく、
どなたも助けて下さいませんでした。しくしく。
孤軍奮闘して頑張ってました。しくしく。

fprintf(stderr, "&Foo_Type = %p<<<<<<<<<<<<<<<<<<<\n", &Foo_Type);
PyObject_Print(&Foo_Type, stderr, 0);

&Foo_Type = 0x823120<<<<<<<<<<<<<<<<<<<
<class '_foo._Foo'>

fprintf(stderr, "Foo_new()\n");
fprintf(stderr, "Py_TYPE(self) = %p<<<<<<<<<<<<<<<<<<<<<\n", Py_TYPE(self));

Foo_new()
Py_TYPE(self) = 0x823120<<<<<<<<<<<<<<<<<<<<<

PyModule_AddObject(m, "_Foo", (PyObject *)&Foo_Type);

import_foo = PyImport_ImportModule("foo");
Foo_abstract_str = Py_BuildValue("s", "Foo_abstract");
Foo_abstract = PyObject_GetAttr(import_foo, Foo_abstract_str);
Foo_Type.tp_base = Foo_abstract;
Py_INCREF(Foo_Type.tp_base);

fprintf(stderr, "Foo_abstract = %p\n", Foo_abstract);
PyObject_Print(Foo_abstract, stderr, 0);

Foo_abstract = 0x8bed0f4
<class 'foo.Foo_abstract'>
944デフォルトの名無しさん:2012/01/25(水) 09:58:07.90
>>943の続き

&Foo_Type を表示するとどうなるか調べた所、
<class '_foo._Foo'>
というふうに <class ****> となりました。

また、
PyImport_ImportModule("foo");
とした後に、
Foo_abstract = PyObject_GetAttr(import_foo, Foo_abstract_str);
とした、Foo_abstractを
PyObject_Print(Foo_abstract, stderr, 0);
として表示してみると、
<class 'foo.Foo_abstract'>
という風に、<class ****>と表示されました。
ということで、
Foo_Type.tp_base = Foo_abstract;
Py_INCREF(Foo_Type.tp_base);

とすると、以下の実行結果が
print('isinstance(foo, Foo_abstract) =', isinstance(foo, Foo_abstract))
print('isinstance(foo, _Foo) =', isinstance(foo, _Foo))

以下のようでしたので、きちんと継承が行われているようでした。
isinstance(foo, Foo_abstract) = True
isinstance(foo, _Foo) = True

くっそー、たったこれだけのこと調べるのに丸々2日使ってしまった。
でもPythonの実装の勉強になったので良かったです。
>>943の実行結果は Python 3.2.2 でのものです。
945デフォルトの名無しさん:2012/01/25(水) 12:54:05.40
typedef struct {
PyObject_HEAD
/* Type-specific fields go here. */
char ss[100];
} FooObject;
{"ss", T_STRING, offsetof(FooObject, ss), READONLY, "ss"},

としている時に、Foo_init()内で
strcpy(self->ss, "ss");
は駄目な理由ってなんなんでしょうか?
駄目と言うかcore吐いて死んじゃいます。
{"ss", T_STRING_INPLACE, offsetof(FooObject, ss), READONLY, "ss"},
とすると大丈夫なんですが。。。

って書いてる間にここ見たら分かりました。
grepしてませんでした、失礼しました。
~/src/Python-3.2.2/Python/structmember.c [59/300行]
case T_STRING:
if (*(char**)addr == NULL) {
Py_INCREF(Py_None);
v = Py_None;
}
else
v = PyUnicode_FromString(*(char**)addr);
break;
case T_STRING_INPLACE:
v = PyUnicode_FromString((char*)addr);
break;
case T_CHAR:
v = PyUnicode_FromStringAndSize((char*)addr, 1);
break;
946デフォルトの名無しさん:2012/01/27(金) 02:47:13.59
このスレって死んだの?
947デフォルトの名無しさん:2012/01/27(金) 15:07:20.10
Python2.7日本語訳きてた

http://www.python.jp/doc/nightly/index.html
948デフォルトの名無しさん:2012/01/27(金) 17:26:14.48
オブジェクト指向の章はサッと見るだけでいいか
どうせ一人寂しくやるんだしモジュール組めれば充分だよね
949デフォルトの名無しさん:2012/01/27(金) 20:51:59.77
PDFうp
950デフォルトの名無しさん:2012/01/27(金) 20:58:36.56
951デフォルトの名無しさん:2012/01/28(土) 00:32:33.19
>>950
神様ありがとう
952デフォルトの名無しさん:2012/01/28(土) 14:21:32.35
>>950
CHMもある!ありがとう!

しかしメインで使っているのは3.2だったりする
953デフォルトの名無しさん:2012/01/28(土) 18:38:30.09
chmはキーワードや検索結果から対応する頁に飛ばないでしょ。
俺は初心者だから、目次から見つけきれない時がよくあって
結局、英語版を使うことになったりする。
954デフォルトの名無しさん:2012/01/28(土) 18:55:48.67
>>953
普通にキーワード検索や内容の検索もできるけど?

俺もメインは 3.2.2 だからあまり使わないけど、
会社では 2.7 使ってるから、会社で使ってみよう。

ありがとう >>950
955デフォルトの名無しさん:2012/01/28(土) 19:17:16.27
再確認してみたら検索はできましたが、キーワードはダメですね。
こんな問題があるみたい。

http://www.python.jp/pipermail/python-doc-jp/2012-January/005113.html
956954:2012/01/28(土) 19:41:22.81
スマン、よく見てみるとキーワードは確かにダメだね。
957952:2012/01/29(日) 15:08:11.81
>>953
それ俺だけじゃなかったんだな
俺は自分でCHMをデコンパイルして直してたわ。文字コードもCP932って指定されてて会社の環境だと文字化けするから
Shift_jisにしてた。
それでエディタにCHMを登録してキーワードを選択してF1キーで検索するのがマジ便利。
958デフォルトの名無しさん:2012/01/29(日) 18:16:32.00
おいちょっと待て
本当に感謝すべきは>>950じゃなくて>>947だろ?
959デフォルトの名無しさん:2012/01/30(月) 23:34:05.11
gdb 使用中に python2.7 使えることが分かって便利で助かるんだけど、
なんで使えるの?いつ、誰が設定しているの?

$PYTHON/Misc/gdbinit にも書いてなかったし、/etc/gdbinitにも書かれていない。
どうなってるのでしょうか?教えて〜教えて〜教えて!

(gdb) python
>import sys
>print(sys.version)
>sys.path
>end
2.7.2+ (default, Oct 4 2011, 20:29:37)

(gdb) python print("{:x}".format(0x848a & 0xaaaa))
808a

(gdb) python
>import sys
>print(sys.path)
>end
['/usr/share/gdb/python', '/usr/local/lib/python2.7/dist-packages/mercurial-1.9.
1-py2.7-linux-i686.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/
...
s/ubuntuone-storage-protocol']
960デフォルトの名無しさん:2012/01/30(月) 23:42:20.64
下手糞な教えて君だったかな。
猛省。
961デフォルトの名無しさん:2012/01/30(月) 23:43:34.92
(gdb) help python
962デフォルトの名無しさん:2012/01/30(月) 23:54:00.75
いえ、それくらいは試してましてですね。

(gdb) help python
Evaluate a Python command.

The command can be given as an argument, for instance:

python print 23

If no argument is given, the following lines are read and used
as the Python commands. Type a line containing "end" to indicate
the end of the command.

いつ、誰が設定しているのか分からなくてちょっと不気味なわけです。
更にいうと、本当はpython3.2を使いたいので、
どうやって設定しているか分かればpython2.7 -> python3.2と
変更できて嬉しいなーと思っているんです。

which python
/usr/bin/python

となっている /usr/bin 以下のpythonを python3.2と差し替えてみても
>import sys
>print(sys.version)
>end
2.7.2+ (default, Oct 4 2011, 20:29:37)

となって結局python2.7.2を使うことになってしまうので、
gdbの設定で何かやってるんだろうなーぐらいは思いますが、
どうやっているのか分からなくて気味が悪いという状態です。
963デフォルトの名無しさん:2012/01/31(火) 00:02:02.51
>>962
組み込み(configure --with-python)
バージョンを変えられるかどうかは知らん
964デフォルトの名無しさん:2012/01/31(火) 00:29:45.17
私の環境のpython, python2.7はどれもこれも20:03:08に作成されたようですが、
gdbのpythonは 2.7.2+ (default, Oct 4 2011, 20:29:37) となっているので、
私の環境のpythonを使っているのではなく、
別の環境でcompileされたもののようです。

gdbにbinary組み込みで入っているのかなーと思い始めました。

$ python2.7
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
'2.7.2+ (default, Oct 4 2011, 20:03:08) \n[GCC 4.6.1]'

gdb7.4をsourceから入れて --with-python を試してみます。
965デフォルトの名無しさん:2012/01/31(火) 01:01:58.66
試してみましたが、余計分からなくなりました。

timestampが2.7.2+ (default, Oct 4 2011, 20:29:37) の理由が分からん、
全く分からん、さっぱり分からん。
地物のgdbもubuntuにいつの間にか入っていたgdbの持つ
pythonのsys.versionと一致してしまいました・・・

configureのoption --with-python 有りなしで変えて
configure && makeしてみましたが、
--with-pythonを設定しない方でもpythonを使えてしまいました。

gdbにpythonを組み込んでいるのかな?とは思いますが
なんか、よく分からないです。

http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python
23.2 Scripting gdb using Python

You can script gdb using the Python programming language.
This feature is available only if gdb was configured using --with-python.

Python scripts used by gdb should be installed in data-directory/python,
where data-directory is the data directory as determined at gdb startup
(see Data Files). This directory, known as the python directory, is automatically
added to the Python Search Path in order to allow the Python interpreter to
locate all scripts installed at this location.

Additionally, gdb commands and convenience functions which are written in
Python and are located in the data-directory/python/gdb/command or
data-directory/python/gdb/function directories are automatically imported
when gdb starts.
966デフォルトの名無しさん:2012/01/31(火) 01:02:57.75
   *``・*。        。*・``*     *``・*。       。*・``*
もう|   `*。 `  。 *`    |☆  |    ` *。  `。*`    |
  ,。∩ ∧,,∧ *` ☆   ∧,,,/∩  ☆∩ ∧,,,∧   ☆ `* ∧,,/∩。,
  + ( ´・ω・)*。+゚ + (・ω・` )*。+゚+。*( ´・ω・) + ゚+。*(・ω・` ) +
  `*。ヽ   つ*゚*☆・+。⊂   ノ。+ ☆ +。ヽ   つ。+・☆*゚*⊂   ノ 。*` どうにでも
   `・+。*・`゚⊃+∩∧,,∧・+。*+・` ゚ `・+*。+・∧,,∧∩+ ⊂゚`・*。+・`
   ☆ ∪~ 。*゚ . (´・ω・`)∪ ☆    ∪(´・ω・`) . ゚*。. .~∪ ☆
   `・+。*・ ゚ ☆ `・+。  つ─*゚・ ☆・゚*─⊂  。+・`☆ ゚ ・*。+・`
           ⊂  `・+・*+・`゚  ゚`・+*・+・ `  ⊃
             ~∪    なーれ♪  ∪~
967デフォルトの名無しさん:2012/01/31(火) 05:39:46.15
Fixing the Python subprocess interface (github.com)
https://github.com/amoffat/pbs
968デフォルトの名無しさん:2012/01/31(火) 20:29:39.06
Python3.2の動作方法の全体像を掴みたいのですが、
以下の資料を参考にすればよいということで良いでしょうか?

Design of CPython’s Compiler
http://docs.python.org/devguide/compiler.html#introducing-new-bytecode

具体的には、どこの関数でa.pyを読み込んで、
どこの関数でa.pyの一行一行を読み込み、解析して、
どこの関数で実行するのかということを知りたいです。

C言語の段階でのCPythonの動作方法を把握したいです。
と言った方が良いでしょうか。

もし、日本語で解説している資料があるのであれば、そちらも知りたいです。
969デフォルトの名無しさん:2012/01/31(火) 20:46:03.15
投稿した後に、
5. Embedding Python in Another Application
python-3.2.2-docs-html/extending/embedding.html#very-high-level-embedding
この存在を思い出しまして、

#include <Python.h>

int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print('Today is', ctime(time()))\n");
Py_Finalize();
return 0;
}

ここに思いっきり、PyRun_SimpleString()ってのが出ていましたので、

Python/pythonrun.c を読んでいって
PyParser_ParseStringFlagsFilenameEx()
PyParser_ASTFromString()

やら、Python/ast.cの
PyAST_FromNode()

やらをふむふむすればいいのかな?と思っていますが、当たっていますか?
970デフォルトの名無しさん:2012/02/02(木) 19:03:15.81
ironpythonはスレ違い?
971デフォルトの名無しさん:2012/02/02(木) 19:06:23.16
その化石の名前を久しぶりに聞いた
972デフォルトの名無しさん:2012/02/02(木) 19:09:02.57
いいろん
973デフォルトの名無しさん:2012/02/02(木) 20:12:19.31
974デフォルトの名無しさん:2012/02/02(木) 20:20:20.47
>>973
人いないんだもん
975デフォルトの名無しさん:2012/02/03(金) 15:01:50.72
鉄器時代のPython
976デフォルトの名無しさん
というかMSはやる気あんのか?
Visual Pythonを単体で出せよ