2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Pythonのお勉強 Part45

1 :デフォルトの名無しさん:2011/11/13(日) 22:09:33.82
Pythonオフィシャルサイト
http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://hibari.2ch.net/test/read.cgi/tech/1315065159/

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
突き放すわけじゃないけどそのコード見て必要性が分からないうちは使う必要ないよ

98 :96: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とかに上げろよ

107 :99: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) したときに
エラーになるならおまえさんのコードが悪い。

116 :62: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
いいから黙ってプロファイル取れよ

119 :111: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
いかにもオートマトン的な処理だから、
正規表現でやるのが無難だと思うけど、速度はどうなるか分からん。

131 :130: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
http://wiki.python.org/moin/PythonSpeed/PerformanceTips#String_Concatenation

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
>>171
ttp://d.hatena.ne.jp/atsuoishimoto/20110213/1297560371

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
>>177
http://www.python.jp/doc/release/reference/lexical_analysis.html#reserved-classes-of-identifiers

179 :デフォルトの名無しさん:2011/11/21(月) 20:14:41.34
プライベート変数はマングリングしたほうがいいの?
アンダースコア2つも付けるのキモいんだけど。

180 :177: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
動的か性的かでぜんぜん違うダロ

183 :181: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
どういう状況で必要なのか、の方が気になる

209 :195: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
辞書ならこっちだが
http://www.python.jp/doc/release/library/urlparse.html#urlparse.parse_qs

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)


218 :216:2011/11/24(木) 01:23:29.21
動作例の"Copied int"はただ別名つけただけで、コピーしたわけじゃないから不適切だな。
Aliased intとでも読み替えてくれ。

219 :デフォルトの名無しさん:2011/11/24(木) 01:25:42.25
>>217
間違ってないけど、classmethodかstaticmethodにしたほうがいい気がする。

220 :217: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)

244 :243:2011/11/25(金) 17:34:10.41
2.6のre.splitにはflagsオプションなかった。243は無視して

245 :237: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

258 :250: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
>>250
progressbar
ttp://d.hatena.ne.jp/bellbind/20090407/1239105797
ttp://d.hatena.ne.jp/yatt/20090803/1249327534


263 :デフォルトの名無しさん:2011/11/26(土) 08:30:09.44
>>259
WindowsではESCシーケンスは使えない。
DOSなら使えたんだけどね。

264 :デフォルトの名無しさん:2011/11/26(土) 10:08:03.76
Windows用
ttp://code.activestate.com/recipes/496901-change-windows-console-character-attribute-color/

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
なるほど

296 :272: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使ってみます。

304 :300: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
>>325

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
自己紹介乙

332 :315: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
>>336


338 :デフォルトの名無しさん:2011/11/29(火) 20:13:22.25
>>334
matplotlibはふつうのグラフを書くにはとても良いんだけど、
少しでも凝ったグラフを書こうとするとAPIの設計がキモくてイライラする。

339 :デフォルトの名無しさん:2011/11/29(火) 21:12:00.87
Perl忍者の顔が晒されてる
http://img.pics.livedoor.com/011/7/b/7b93db5444cf92f7cc91-LL.JPG
http://img.pics.livedoor.com/011/3/7/37af7e092c96cad7b14f-LL.JPG
http://img.pics.livedoor.com/012/5/1/51bc3004b6b4ec99063a-LL.JPG
http://img.pics.livedoor.com/012/a/6/a6cf04c9fe815ad28228-LL.JPG

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キャピ

373 :111: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
>>396
http://ja.wikipedia.org/wiki/ERuby

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
>>421
http://www.google.com/adsense/

423 :デフォルトの名無しさん:2011/12/06(火) 06:10:09.27
いいセンスだ
XBEEとarduinoの本が近々出るけどそれ関係かね

424 :403: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だと挙動が違った気がしたが

426 :403: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
>>429
ttp://bit.ly/umZFBs

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
あ、単なるコルーチンか。

471 :468:2011/12/12(月) 13:28:53.60
>>469
python3でやった結果貼ったけど、
from __future__ import print_function
すれば、2.7でも動作します。
>>470
yield文はいいとして、yield式って何のためにあるの?
lambdaでジェネレータ作るため?

472 :468: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

116 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)