[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 13:11 / Filesize : 217 KB / Number-of Response : 937
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part22



1 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:49:38 ]
Python オフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
FrontPage - Pythonのお勉強
python.rdy.jp/
前スレ
pc11.2ch.net/test/read.cgi/tech/1192884897/

◆関連スレッド

Microsoft IronPython 1.0
pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

◆関連サイト

Python ドキュメント
www.python.jp/doc/release/
Index of Python Enhancement Proposals (PEPs)
www.python.org/dev/peps/
参考サイト - Pythonのお勉強
python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8
.

2 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:59:11 ]
人類は21才から22才になった

3 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:15:43 ]
関連書籍等

IronPython in Action
www.manning.com/foord/

wxPython
www.wxpython.org/
wxPython in Action
www.manning.com/rappin/
www.amazon.com/product/dp/1932394621/

Django
www.amazon.com/product/dp/1590597257/
TurboGears
www.amazon.com/product/dp/0132433885/
Pylons
www.amazon.com/product/dp/1590599349/


4 名前:デフォルトの名無しさん [2007/12/01(土) 09:19:48 ]
>>1
なまら乙

5 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:14:21 ]
>>1
>FrontPage - Pythonのお勉強
>python.rdy.jp/
百度に飛ばされる

6 名前:デフォルトの名無しさん [2007/12/01(土) 12:56:59 ]
部外者にはみんPy側が大人気ないように感じる

7 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:59:50 ]
へぇ・・・

8 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:04:16 ]
みんPy側なんていたのか・・・
荒らしさんは対立を作るのに忙しいな

9 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:45:20 ]
Python Challenge
ttp://www.pythonchallenge.com/


10 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:24:33 ]
>>1
乙Py



11 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:53:05 ]
Pythonオワタ・・・orz
俺もう乗り換えるわ

Running the snippets above, I got the following results:

Python 2.5.1:   31.507s
Ruby 1.9.0:    11.934s

The Ruby code:

def fib(n)
 if n == 0 || n == 1
  n
 else
  fib(n-1) + fib(n-2)
 end
end

36.times do |i|
 puts "n=#{i} => #{fib(i)}"
end

And the Python equivalent:

def fib(n):
  if n == 0 or n == 1:
   return n
  else:
   return fib(n-1) + fib(n-2)

for i in range(36):
  print "n=%d => %d" % (i, fib(i))

12 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:00:31 ]
なにかのデータをitervaluesで取り出したもの使ってるところで
keyerrorとかでてくるのだけど、これは対象が存在しない時出てくると考えていいの?

13 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:02:46 ]
>>11
てんさい
ttp://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29#smoking

14 名前:デフォルトの名無しさん [2007/12/01(土) 18:45:48 ]
Pythonオワタ・・・orz
俺もう乗り換えるわ

Running the snippets above, I got the following results:

Python 2.5.1:   31.507s
Ruby 1.9.0:    11.934s

The Ruby code:

def fib(n)
 if n == 0 || n == 1
  n
 else
  fib(n-1) + fib(n-2)
 end
end

36.times do |i|
 puts "n=#{i} => #{fib(i)}"
end

And the Python equivalent:

def fib(n):
  if n == 0 or n == 1:
   return n
  else:
   return fib(n-1) + fib(n-2)

for i in range(36):
  print "n=%d => %d" % (i, fib(i))

15 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:58:53 ]
Ruby (1.8.5) 64.26s
Python (2.4) 25.16s
Haskell (GHC 6.8) 0.48s
Parallel Haskell (GHC 6.8) 0.42s

16 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:14:33 ]
速度だけ比較してモナぁ

17 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:17:15 ]
Ruby 1.9ってRails動くんですか?

18 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:29:15 ]
Web板
Rubyスレ


19 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:47:55 ]
>>17
RubyってRailsで動いてるんじゃないのか?

20 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:20:18 ]
fib みたいな例だと psyco の効果が良くわかるな



21 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:38:42 ]
比較しようにもhaskellの実行ができない。
どうやったらいいの?今現在全然知らないのでコピペしただけ。
ghc
h.hs:6:7: Not in scope: `forM_'
h.hs:7:1: Not in scope: `printf'
hugs98
ERROR "h.hs":6 - Undefined variable "printf"

pythonはタブの整形が面倒だった。
rubyはそのまま実行できた。

ボロマシンなので閾値を30にまけておいた。
ruby h.rb 5.18s user 0.00s system 81% cpu 6.331 total
python h.py 2.42s user 0.01s system 72% cpu 3.347 total

ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux] (dev-lang/ruby-1.8.6_p110-r2)
Python 2.5.1 (dev-lang/python-2.5.1-r4)

22 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:06:21 ]
スレ違いだから
いい加減にして

23 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:14:09 ]
Part22 作り直すか


24 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:17:15 ]
>>23
潔癖すぎだろw

25 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:22:06 ]
>>5
ごめんなさい。
百度があまりにもうるさいので、それっぽいIPだと
向こうにお帰り願う設定になってますので、
その影響を受けているのかと。


26 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:22:19 ]
>>14
アンチRuby工作員乙

27 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:55:22 ]
すれ違いでごめんよ、解決したのでメモだけ置かして…。
これであってるか知らないけど、次のライブラリをインポートしないとダメだった模様だ、が小難しいな…
import Control.Monad (forM_)
import Text.Printf

結果
ruby h.rb 5.07s user 0.00s system 80% cpu 6.295 total /インタプリタ
python h.py 2.40s user 0.01s system 73% cpu 3.261 total /インタプリタ
runghc h.hs 6.21s user 0.07s system 82% cpu 7.652 total /インタプリタ
ghc h.hs 0.56s user 0.10s system 90% cpu 0.728 total /コンパイル
./a.out 0.40s user 0.00s system 49% cpu 0.817 total /ネイティブコード

The Glorious Glasgow Haskell Compilation System, version 6.6.1 (dev-lang/ghc-6.6.1)

俺は見やすいpythonが好きなので他は使わないと思うけど…

28 名前:デフォルトの名無しさん [2007/12/02(日) 00:03:03 ]
>>14
コードが糞すぎwww
ジェネレーターを使え。

29 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:04:05 ]
>>13の例だとRubyはともかくHaskellと比較する意味はない気がする。
よく知らんがHaskellだと↓くらいの計算量じゃないかと。

def fib(n):
 return fib2(n, 0, 1)
def fib2(n, a, b):
 if n == 0:
  return a
 else:
  return fib2(n-1, b, a+b)

ところでWindowsにPythonの新しいバージョンを入れようと思うんだけど
ActivePythonを公式+αという感覚で入れても問題ない?
それとも公式を入れておいたほうが無難?

30 名前:デフォルトの名無しさん [2007/12/02(日) 02:12:14 ]
>>11
Python 2.5.1
17.935

Python 2.5.1 + psyco
1.264



31 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:48:18 ]
こいつをpythonのプログラムに取り付けろ。すごいぞお、pythonの戦闘力は数倍に跳ね上がる!


32 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 10:09:11 ]
とうさん…

数倍っつーか一桁変わってますけど…

33 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 10:13:44 ]
単純なコードでは著しく高速化されても、
実用的なコードではほとんど高速化は期待できないのに・・・

父さん・・・酸素欠乏症にかかって・・・!

34 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:36:28 ]
ニートの僕はpythonで幸せになれますか?

35 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:52:28 ]
もちろん
Pythonは万能です

36 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:29:10 ]
\(^o^)/ニートソツギョー

37 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:31:40 ]
ニートが就職しても社内ニートになるだけです。

38 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:44:13 ]
\(^o^)/マドギワゾクー

39 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:13:13 ]
( ゚Д゚)っ缶詰


40 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:30:40 ]
 =================
  |---------------|
  |.;.:,          |
  |,.:.;     SOYLE|
  |.';.;          |
  |---------------|
 =================



41 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:34:00 ]
でかいタコ部屋ですね え、加工済m

42 名前:デフォルトの名無しさん [2007/12/02(日) 23:11:54 ]
SPAM SPAM SAPM and SPAM

43 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:27:29 ]
CentOSでyumで管理されてるPythonはちょっと前のものですが、
ソースビルドしてPython2.5.1を入れてみました。
元から入ってたのは /usr/bin/python
ビルドして出来たものは /usr/local/bin/python
で分かれています。
一応動いているみたいなのですが、
上書きして書き換えるのはやめておいたほうが良いのでしょうか?

CentOSのその他の管理ツールで内部的に
Pythonのスクリプトを使っているものがあるとかいう
話を聴いたことがあるのでそっちに影響出る可能性があるのかなと。

あとyumの方が最新のバージョンにならないのもそういう理由ですよね?


44 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:51:01 ]
上書きすると、パッケージ管理システムが管理してる情報と
実際に入ってるモノが食い違うことになるんじゃ…

45 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:16:30 ]
linuxあんま使わないけどyumとかapt-getとかのパッケージ管理システムってディストリビューション毎の管理・メンテナンスでしょ
アップデートしても最新にならないなら何か問題があるとか、単にテスト中だとかその辺だから大人しく待っとけ
というかpython25とか名前付ければ良いんじゃないかな。せっかくlnあるんだから

46 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:37:34 ]
まず、上書きを必要とする理由を書いて欲しい。

俺だったら、まず$HOMEに入れることを考える。
大抵はこれで事が済む。

/usr/localに入れるとしても、
/usr/local/bin/pythonは消して、/usr/local/bin/python2.5だけ残す。

(初期状態だと、/usr/local/binにはPATHが通ってないと思うが、念のため)
(あとPATHがゴチャゴチャしてきた時の防御にもなる)

/usrのは絶対さわらない。


47 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:21:55 ]
>>43
上書きは止めた方が良いです、というかRed Hat系では
>CentOSのその他の管理ツールで内部的にPythonのスクリプトを使っている
この理由で絶対駄目なのでは。

Debian不安定版では2.4と2.5が分かれてインストールされています。
/usr/lib/python2.4と/usr/bin/python2.4と
/usr/lib/python2.5と/usr/bin/python2.5。
/usr/bin/pythonは/usr/bin/python2.4。

それと、Pythonはマイナーバージョンの違いは無視されると記憶しています。
Python-2.5とPython-2.5.1はとちらも/usr/lib/python2.5になる。
なので危険ですよ。

48 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:19:49 ]
virtual-pythonじゃダメ?

49 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:28:57 ]
>>47
マイナーバージョンアップはバージョンアップすればいいんじゃないの?

50 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 06:36:55 ]
>>49
ファイル差分があってもパッケージ管理システムからはわからないから
ゴミが残ったりする。
まーsetup.pyやコピーで自前でライブラリ追加してもいっしょだし
ディレクトリが分散してるわけでもないから大事にはならないけど。



51 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 06:48:43 ]
>>46
おっしゃるとおりやっぱり危険ですよね。
/usr/local/bin には path が通っていないので助かっていますが
/usr/local/bin/python2.5 が /usr/local/bin/pyton に ln -s されているので
念のため /usr/local/bin/pyton を消した方が無難ですね。

上書きしたかった理由は、
このあと Django とかを最新版でインストールするつもりで
その辺の setup するときに旧バージョンの python が
自分の意図しないときに実行されると困ると思ったからです。
(CentOS x86-64 の Python 最新は 2.3.4 なんですよね orz)
きっと Django の方でも /usr/local/bin/python2.5 の方を使うように
設定する場所はあると思うのでそっちで探してみることにします。

みなさんありがとうございます


52 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:41:30 ]
前スレ974:
> # 自分で例外ちゃんと処理するしかない?

するしかない。CP932で表示できないものはいかんともしがたい。端末依存。
簡単なのはエラーハンドリングを "replace" 等にして自前でエンコードすること。
print (u'ほげ%sふが' % u'hogÉfuga').encode(sys.stdout.encoding, errors="replace")

別解は Unicode-aware な端末ソフトを使う。

53 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:42:44 ]
あ、ゴメス。
encode(sys.stdout.encoding, "replace")
の間違い。


54 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:05:10 ]
981
3. 以下のコードのような感じで、変数名をstringで取り出すにはどうすればいいでしょう。
>>> for val in foo bar:
>>> print val # <= ここで、変数の中身じゃなくて変数名を取り出したい。
"foo"
"bar"


>>> foo = 3
>>> bar = 'hoge'
>>> for val in (foo, bar):
...  print val
...
3
hoge
>>> locals()
{'bar': 'hoge', 'val': 'hoge', '__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'foo': 3, '__doc__': None}
>>> for val in (foo, bar):
...  print locals()
...
{'bar': 'hoge', 'val': 3, '__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'foo': 3, '__doc__': None}
{'bar': 'hoge', 'val': 'hoge', '__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'foo': 3, '__doc__': None}
>>>


55 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:03:17 ]
普通のやり方はないと思う
デバッグ目的ならもっと別なやり方を考えたほうがいいと思う

すごく無理やりなやり方だったら、

for val in (foo, bar):
  print filter(lambda x:x[1]==val,locals().items())[0][0]

とかは可能・・(値が同じものがある場合を考慮するともう少しちゃんとする必要がある

56 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:21:52 ]
import * from xxx

みたいに、一気に名前空間にimportすることはできないのでしょうか?


57 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:38:33 ]
from <MODULE> import *

↑でおけ。importした複数のモジュールで同じ名前が使われてた場合、
後にimportしたもので上書きされるから注意。

58 名前:デフォルトの名無しさん [2007/12/05(水) 18:44:02 ]
2chのログを保存しているサイト(みみずん、snapshot 2ch等)からログを引っ張ってきて、
dat形式に変換してローカルに保存したいのですが、
自分がうんこ野郎なので、webサイトから何かしらのデータを取得する方法が分かりません。
主にどのようなライブラリを使えば良いのでしょうか?

59 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:53:44 ]
urllibなど

60 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:54:31 ]
>>58
urllib2
ttp://www.python.jp/doc/2.4/lib/urllib2-examples.html
dat形式への変換はしらん



61 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:30:55 ]
シュザイム : 枕詞ってなに?   12/5 (Wed) 19:13:59

玉露入り : 「うはw」という枕詞に「おkwwwww」でしょ?   12/5 (Wed) 19:12:37

シュザイム : なにがおk?www   12/5 (Wed) 19:11:23
玉露入り : おkwwwwww   12/5 (Wed) 19:11:01

シュザイム : うはw   12/5 (Wed) 19:09:59

パンピーと二人面白いです^o^

62 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 20:04:58 ]
>>57
ありがとう!

63 名前:58 [2007/12/05(水) 22:05:12 ]
>>59,60
ありがとう!!
dat変換まで出来てjaneに不具合なく導入出来たら公開する!!

64 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 22:15:50 ]
いや・・・p2todatがもうあるので・・・

65 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 22:30:35 ]
>>63
がんばれ

66 名前:58 [2007/12/05(水) 22:55:32 ]
>>64
あれは使い勝手が悪いので自分で作ってみようかなと
うんこは考えたのです。

67 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 00:45:04 ]
使い勝手がいいのを作るのはムズかしいぞ、何事も。
特に他人に使ってもらおうと思ったら。
まあ頑張れ。若者よ。もしかしたらすごいのができるかもしれん。

68 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 00:49:55 ]
わたし待ってるわ

69 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 09:04:40 ]
いつまでも待ってるわ

70 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 10:12:58 ]
他の誰かがプログラムを作ってくれる日まで



71 名前:デフォルトの名無しさん [2007/12/06(木) 11:43:45 ]
かわいいふりして、うんこわりとやるもんだねと

72 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:00:31 ]
今、Python勉強し始めの超初心者です。
他の言語の知識は全くありません。

大量の写真(.img)を一括で同じサイズにリサイズする
ってな事Pythonで出来ますかね?

PILとか使うのでしょうか?


73 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 18:07:48 ]
・ファイルサイズを同じにする
・拡大縮小かけずにトリミングだけで同じサイズにカット
・拡大縮小かけるがアルゴリズムは適当で画像が劣化しても問題なし

どれにしますか


74 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 18:16:06 ]
www.yasuhisa.com/could/entries/000701.php
www.flickr.com/photos/w00kie/sets/180637/

75 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 18:46:08 ]
ttp://makunouchi.jp/zope3/3496598985


76 名前:72 mailto:sage [2007/12/06(木) 19:11:05 ]
>>73
カットは要らないと思います。
画像の劣化ですか…。そうですよね。

画像劣化せずに拡大縮小できたらいいなぁと思います。

大量のファイルをまとめてってのが一番の目的なんで
そこまで考えてませんでした(^^;

>>74 >>75
ありがとうございます
参考になります


77 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 19:57:08 ]
>>76
そういう用途ではImageMagickが適当かな。
Python用ライブラリもあるけど、単純に外部コマンドでconvertを呼んじゃえばおk。

78 名前:72 mailto:sage [2007/12/06(木) 21:19:04 ]
>>77
ありがとうございます!
調べてみたんですが、使うの難しそうですね…



79 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 21:46:21 ]
urllib2でCGIに対してPOSTしようと思ってるんですが、
向こうのCGIがShift_JISしか受け付けないそうです。
普通、ブラウザの文字コードをShift_JISにして
フォームから送ればShift_JISになるのですが、
Pythonで文字コードを指定して送るにはどうすればよいのでしょうか?
下のようにAccept-Charsetを指定したのですがShift_JISでないという
反応が返ってきます。他に何かありますか?
アドバイスお願いします。

params = urllib.urlencode({"key_type":"1".encode(), "key_info":"テスト".encode("Shift_JIS")})
request = urllib2.Request("aaa.jp/test.cgi")
request.add_header("Accept-Charset", "Shift_JIS")
request.add_header("Content-Type", "application/x-www-form-urlencoded")
request.add_data(params)
src = urllib2.urlopen(request).read()
print src


80 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 22:38:05 ]
u"テスト".encode("Shift_JIS")



81 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 22:45:23 ]
>>79
ファイルの1行目に
# -*- coding: shift_jis -*-
と書くとうまく行くかも。

82 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 22:47:08 ]
HTTP RequestとResponseの両方を表すクラスを作るとしたら、どんな名前にするのがいいでしょうか。
分けるべきという話は置いといて。

83 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 23:00:42 ]
Commandとか・・・
ついでにGoFコマンドパターンにしてしまえ。

84 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 13:15:04 ]
>>75
>ttp://makunouchi.jp/zope3/3496598985

なにこのデザイン。
1990年代かと思った。

85 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 13:23:33 ]
質問です。
素数が昇順に出てくる無限リストを使いたかったら自前で実装するしかないですか?

86 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 14:29:38 ]
p = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, ...]

87 名前:72 mailto:sage [2007/12/07(金) 14:31:40 ]
また質問なんですが
ImageMagickを入れたほうがよいのでしょうか?
それとも、PythonMagickの方がよいのでしょうか?



88 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:22:58 ]
>>87
やりたい内容による。
ものすごい単純なことやりたいだけなら、
ImageMagickのconvertを使ってshellから呼んだほうが楽。

Pythonから呼ぶことが重要なんであれば、
それ系のmoduleを入れるのが良い。

Pythonからexecするってのもありだけど。

89 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 18:38:13 ]
linuxでpythonの環境を自分のhomeの下に作ることって可能なんでしょうか?
./configure --prefix=/home/aaa/
だと
/home/bbb
のユーザーは使えないのですよね

90 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 18:40:37 ]
>>85
def primes():
 """Generates prime numbers.

 >>> import itertools
 >>> for p in itertools.islice(primes(), 15): print p,
 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
 """
 yield 2
 memo = [2]
 i = 1
 while True:
  i += 2
  for d in memo:
   if i % d == 0:
    break
  else:
   yield i
   memo.append(i)



91 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 19:24:37 ]
>>89
/home/aaaがbbbから見れるんなら、
必要な環境変数を設定すれば大丈夫でしょう。
PATHやら何やら。

92 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:25:48 ]
>>89
すれ違い、UNIXの勉強してこい


93 名前:デフォルトの名無しさん [2007/12/08(土) 17:21:47 ]
Python 3.0a2 リリース
ttp://www.python.org/download/releases/3.0/


94 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:37:22 ]
Python2.5.1でsqlite3を使いたいのですがimportでエラーが出てしまいます
標準ではないのでしょうか?
Python 2.5.1 (r251:54863, Dec 1 2007, 21:59:43)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sqlite
>>> from _sqlite3 import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named _sqlite3
>>>

95 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:58:03 ]
sqlite入ってないんじゃね?

[oppai@centos5 ~]$ yum list sqlite
Loading "installonlyn" plugin
Setting up repositories
Reading repository metadata in from local files
Installed Packages
sqlite.i386       3.3.6-2    installed

[oppai@centos5 ~]$ ls /usr/lib/libsqlite*
/usr/lib/libsqlite3.so
/usr/lib/libsqlite3.so.0
/usr/lib/libsqlite3.so.0.8.6

[oppai@centos5 ~]$ ls /usr/include/sqlite*
/usr/include/sqlite3.h


96 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 08:38:09 ]
ありがとうございます。
コマンドからは sqlite3 で実行出来て
dbも作れているので大丈夫だと思います。
あとPython2.3も入っているのですが、
こっちでは import sqlite しても問題なかったです。


97 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 08:46:28 ]
$ yum list sqlite
Loading "fastestmirror" plugin
Setting up repositories
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Determining fastest mirrors
Reading repository metadata in from local files
Excluding Packages in global exclude list
Finished
Installed Packages
sqlite.x86_64 3.3.6-2 installed
$ ls /usr/lib/libsqlite*
ls: /usr/lib/libsqlite*: No such file or directory
$ sudo find / -name '*libsqlite*' -print
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
/home/mae/work/Python-2.5.1.copied/Doc/lib/libsqlite3.tex
/home/mae/work/Python-2.5.1/Doc/lib/libsqlite3.tex
$ ls /usr/include/sqlite*
ls: /usr/include/sqlite*: No such file or directory

sqlite3.h が無いといけないんですよね orz

98 名前:デフォルトの名無しさん [2007/12/09(日) 14:54:16 ]
モジュールにも__init__や__del__のようなものを定義することができるのでしょうか?

99 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 16:23:53 ]
>>98
つ リファレンスマニュアル

100 名前:98 mailto:sage [2007/12/09(日) 19:09:38 ]
>>99
ttp://www.python.jp/doc/2.4/tut/node8.htmlにて
モジュールには、関数定義に加えて実行文を入れることができます。これらの実行文はモジュールを初期化するためのものです
という記述をみつけて__init__相当を実現できることを確認できたのですが__del__が分かりません
もうすこしヒントをいただけませんでしょうか



101 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:52:26 ]
>>100
if __name__ == "__main__":
__credits__, __author__, __copyright__

モージュール内で __**__ 形式で書く時は定数
C言語のconstの代わりにしか使わないような気がする…

__revision__ = "$Revision: 196 $"[11:-2]

こんなのもいま読んでるソースに出て来てたけど
これも定数だったり。面白そうなプロジェクト見つけて
ソース読んだほうが手っ取り早いような…

102 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 20:08:14 ]
というか無いだろ。

モジュールはオブジェクトじゃなくて
名前空間と考えるべき。

そもそもPythonエンジンは一度も__del__を呼び出さないで
終了してもいいことになっている。


103 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 20:36:14 ]
import sys

class ExitHandler(object):
    def __del__(self):
        print 'bye!'

if __name__ != '__main__':
    sys.modules[__name__] = ExitHandler()

これで呼ばれないので無理
ところでsys.exitfuncというものがあってだな

104 名前:98 mailto:sage [2007/12/09(日) 20:51:46 ]
ってゆーか こんなよくありそーな要求にすら こたえられない言語がNASAとかで使われてるってありえないだろ
そりゃスペースシャトルも事故るわwwww 探してみたんだけどrubyでもモジュール用の__del__みたいなのないみたいだしwwww
LLまだまだだなwwwwwwwww

105 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:13:07 ]
_exitfunc = ExitHandler()
これなら呼ばれるわ。当たり前の話だね

106 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:27:52 ]
モジュールすら理解できないのにプログラミングは無理だろ・・・

107 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:35:15 ]
衝撃の新事実発覚!スペースシャトルの事故はPythonのせいだった!

108 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:47:35 ]
モジュールのデストラクタが欲しいというのは初めて聞いた。
プログラム終了時に実行するコードを登録したいということなら、よくあるけど。
そもそもモジュールっていったんimportしたら廃棄できないんじゃないの?
なんでモジュールのデストラクタが必要なのか>>98に説明してほしいな.

109 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:52:37 ]
>>108
なんとなく必要だったんだと思うよ、なんとなく。

110 名前:98 mailto:sage [2007/12/09(日) 22:25:11 ]
なんかぬりっぽいのであきらめますプゲラッチョ...............



111 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 23:34:20 ]
ほらな。

112 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 03:18:45 ]
>>110
「釣りっぽい」の間違いだろ

113 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 06:25:24 ]
Python を誰かに教えるとしたら、
どういう順番で教えるのがいいかな?

114 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 06:51:25 ]
チュートリアルの最初の方コピペ

115 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 09:56:13 ]
>>113
なにはともあれ。
「初めてのPython」と「はじめてのPython」の違いについて教えた方がいい。

116 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 10:10:42 ]
>>113
全くプログラミング経験が無い相手なら『Pythonで学ぶプログラム作法』一択
プログラミング経験がある相手なら「チュートリアル読め」で以上

117 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 11:09:59 ]
俺も >116 に一票

118 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 18:07:53 ]
PIL.image.show()
がxv以外を使うようにできないでしょうか?

119 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:09:57 ]
Python3000a1からa2に上げてみました。
なーんか前、うちの環境でだけでる
utf-8関係でエラーが出たなぁと思っていじってて
また遭遇。

C:\> python
>> help()
help> modules sys

これでエラーが出ちゃった。
前はhelp(なんか)で出てたっぽいけど
今回、help(sys) はちゃんと動いている
XPなんだけど、他にも出る人いる?

120 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:35:03 ]
windowsで2.5と3.0って両立できるの?
怖くて試せない。



121 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:56:22 ]
両立?インストールパス変えるだけでいいんじゃないの?

122 名前:WinXP, 32bit, 2.5.1installed mailto:sage [2007/12/10(月) 20:05:39 ]
とりあえず入れてみた。

と、書きたいところだが、
そこに行き着く前にインストーラがこけた。

以上


123 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 20:12:11 ]
カクタス=サボテン

124 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 20:47:27 ]
>>123
僕の名前を知ってるかい?

125 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:14:40 ]
MinGW 5.0.2 のインストール
www.rouge.gr.jp/~fuku/tips/mingw/

C:\mercurial-0.9.5>dllwrap --driver-name gcc -dllname executer.dll example.o C:\Python25\libs\libpython25.a
dllwrap: no export definition file provided.
Creating one, but that may not be what you want

カレントディレクトリにexecuter.dllは作成できたけどインポートできないよ
そろそろ心が折れてしまいそうです…もうダメぽ

126 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:31:18 ]
TortoiseHG使えばいいのに。
あとマルチやめろ。

127 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:21:10 ]
>>126
webベースじゃないと嫌です


マルチポストの件は反省しています
もう二度とマルチポストしません…orz

128 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:31:31 ]
>>127
今回は諦めましょう

129 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:44:05 ]
>>128
諦められません!

片っ端から忘れていけばいいじゃない。 VistaにMinGWを入れる場合の参考資料
0xc000013a.blog96.fc2.com/blog-entry-11.html
K-na TechNotes | MinGW のインストール
www.knatech.info/dev-mingw-install.html

コンパイル通ってるのにPythonから呼び出せないのは
納得できません…

130 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 23:50:12 ]
www.python.org/download/releases/2.5.1/NEWS.txt
- On Windows, .DLL is not an accepted file name extension for
  extension modules anymore; extensions are only found if they
  end in .PYD.



131 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 00:17:24 ]
関数呼び出す時に

a=hogehoge(x=10,y=20,z=30)

なんつーふうにできるじゃないですか。
この引数一式を変数に入れとくって出来ないんですかね?

par1=("x=10","y=20","z=30")
a=hogehoge( par1 )

じゃもちろん駄目なんですが…

132 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 00:28:25 ]
kwargs = {'x':10, 'y':20, 'z':30}
a=hogehoge(**kwargs)

133 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 01:08:46 ]
なんたら代入とか名前あったなぁ

134 名前:デフォルトの名無しさん [2007/12/11(火) 08:17:02 ]
Perlでいう
$| = 1(出力バッファリングの停止)をやりたいんですが。
ググると、
起動オプションに-uを付ける、
あるいは環境変数PYTHONUNBUFFEREDに何らかの値を代入する。
という方法があるのは分かったのですが、
なんかやり方が美しくないように思います。
コードの中だけで完結しておきたいんですが、
そういう方法はないでしょうか?

135 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 08:57:21 ]
pythonプログラム中で環境変数を設定すればいいんじゃないかな

136 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 09:01:12 ]
バッファサイズを0にして開けばおk
sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0)


137 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:00:48 ]
ありがとう


138 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:15:29 ]
PythonでwxPythonを使いながら色々と勉強しているのですが
wxPythonのDemo等でイベント関連のところでBind関数を使って
いますが、詳細を知ろうと思いwxPythonのドキュメントでこの関数を
探しているのですが見つかりません。
どのあたりに書かれているかご存じの方いらっしゃいませんか?

139 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:30:34 ]
すいません。
自己解決しました。
ドキュメントの最初に
wxWidgets 2.8.4: A portable C++ and Python GUI toolkit
ってあるからてっきりこれがwxPythonのドキュメントかと思ってしまいました。
別の所に、 Package wxのドキュメントがあり、Bind関数の記述を
見つけることが出来ました。
お騒がせしました…

140 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 11:21:14 ]
Windowsのcmd上で使っています。
ファイルのパスに日本語が含まれているときに限ってなのですが、
sys.argv[0]を表示させようとすると

hoge.py と直接実行したときと
python hoge.py とコマンド指定して実行したときとで動作が違います。

後者はそのままうまく表示されるのですが
前者はunicode(path, 'mbcs')しないと例外が出てしまいます。

どこが違うのでしょう?




141 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:33:08 ]
誰かー。yahoo apiを使うならこれ使えってモジュール知らないか?

142 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:41:45 ]
>>141
ttp://developer.yahoo.com/python/
本家みてもurllib, httplib, xml.*でしこしこ書いてるから
スタンダードなRESTライブラリってないんだと思う。
通信自体は大したことないしAPI毎の解析は結局個別に実装が必要だし
単純にそういうのでいいんじゃないかな。

ttp://pysearch.sourceforge.net/
それかこれをJapan対応にするのも有意義かもだけど。

将来的にxmlrpclibみたいにrestlib?が標準でつくといいね。

143 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:19:58 ]
情報ありがとー

144 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 16:37:03 ]
Linuxでioctl使いたくて↓を読んだんですが、
www.python.jp/doc/2.4/lib/module-fcntl.html
termios関連のものしか引数に渡せないんでしょうか。

home.mag.cx/messenger/
にあるLogitechのwebcamのLinux用デバイスドライバーの動作を、
Pythonで呼び出したい、というのが目的です。

linux/videodev.hに定義されているVIDIOCGCAPなどを使って、
www.gelato.unsw.edu.au/lxr/source/include/linux/videodev.h

ioctl(fd, VIDIOCGCAP, &vidcap);
// fdはfile descriptor
// vidcapはvideo_capability構造体
のようなCから呼べる動作をPythonで出来ないものでしょうか。

CでモジュールをPython用に書くしかないですかね。

145 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 17:10:09 ]
>>140
再現しなかったよ。

C:\temp\テスト>pwd
c:/temp/テスト

C:\temp\テスト>type test.py
import sys
print sys.version
print sys.argv[0]

C:\temp\テスト>test.py
2.5 Stackless 3.1b3 060516 (release25-maint, Oct 4 2006, 12:32:12) [MSC v.1310
32 bit (Intel)]
C:\temp\テスト\test.py


146 名前:144 mailto:sage [2007/12/11(火) 17:16:06 ]
自己解決。
sourceforge.net/projects/pyv4l/
ここを参考にしたら出来そうです。
挫折したらまた来ます。

147 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:46:45 ]
>>140
複数の python が入ってるんじゃね?

148 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:59:07 ]
3p

149 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 23:08:15 ]
行頭で
#-*- coding: shift_jis -*-
というように記載しているcodingの指定って変数とかに
格納されていたりするのでしょうか?
二箇所もかいたりするのを省略したいのですが。


150 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 23:53:49 ]
行頭の一ヶ所に書いておけばいい



151 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:33:29 ]
そうじゃなくて、行頭で書いたコードをプログラム中でも使いたいってことじゃね?
変数に入ってるかどうかしらんけど、なんかの関数で取得することはできそうだな。

152 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:07:24 ]
以下のコードを使って独自の import を定義しようとしたんだけど:

import my_api # C によって実装した独自import関数を含むモジュール
def set_import():
 __builtins__.__import__ = my_api.my_import

実行すると __builtins__ に __import__ メンバが存在しないっておこられるんだけど
dir(__builtins__) してみたら、確かに __import__ だけが存在しない。
このコード、
Py_InitModule("my_api", APIの宣言テーブル)
PyObject* mo = Py_CompileStringFlags(上記コード, "hoge", Py_file_input, NULL);
PyObject* ret = PyObject_CallFunction(mo, "set_import", "()");
Py_DECREF(ret);
Py_DECREF(mo);

て感じで実行させてるんだけど、このやり方だと __builtins__.__import__ が定義されなかったりするのかな?



153 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:13:27 ]
出来たとしてもキモイものが出来そうだ。

・ASCII
・Shift_JIS
・euc-jp
・utf-8
・スウェーデンなキャラコード(よーわからんw)

5つあったとして、importした時とかは、
どういう動作を期待してるんだろ?

Shift_JISモジュールがShift_JISを吐き出して、
euc-jpモジュールがeuc-jpを吐き出すのか?

Shift_JISモジュールをimportしたeuc-jpモジュールは、
何を吐き出すんだ?両方混ざるのか?

俺は
  ソースが何語で書かれているか
  何語を入力・処理・出力するのか
この2つは、別のものだと考えているけどね。


154 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 06:39:40 ]
simplejsonのコンパイルって簡単にできないですか?win

155 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:22:34 ]
>>145
追試ありがとうございます。
確かにそのコードだと問題出ませんでした。
自分のところで書いてたコードを晒します。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
a = unicode(sys.argv[0], 'mbcs')
b = os.path.abspath(os.path.dirname(a))
print a
print b
print u'%s/ほげ' % (a)
try:
 print u'%s/ふが' % (b.decode('mbcs')) # testpath.py のときだけエラー
except UnicodeEncodeError, (e):
 print sys.exc_info()[0]
 print e
 print e.args
try:
 print u'%s/ふが' % (b) # python testpath.py のときだけエラー
except UnicodeDecodeError, (e):
 print sys.exc_info()[0]
 print e
 print e.args


156 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:23:08 ]

C:\日本語>testpath.py
C:\日本語\testpath.py
C:\日本語
C:\日本語\testpath.py/ほげ
<type 'exceptions.UnicodeEncodeError'>
'ascii' codec can't encode characters in position 3-5: ordinal not in range(128)
('ascii', u'C:\\\u65e5\u672c\u8a9e', 3, 6, 'ordinal not in range(128)')
C:\日本語/ふが

C:\日本語>python testpath.py
testpath.py
C:\日本語
testpath.py/ほげ
C:\日本語/ふが
<type 'exceptions.UnicodeDecodeError'>
'ascii' codec can't decode byte 0x93 in position 3: ordinal not in range(128)
('ascii', 'C:\\\x93\xfa\x96{\x8c\xea', 3, 4, 'ordinal not in range(128)')


157 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:24:21 ]
>>147
pythonは1つだけ(2.5.1)です

158 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:34:52 ]
Python3000で組み込み関数から file が削除されてるのはなぜ????????

159 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:38:51 ]
open()使いなさいよってことかと

160 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:38:57 ]
testpath.pyのみのときは元々実行ファイルのパスが判明しているが
(エクスプローラでダブルクリックするとさらに状況が違うかも知れない)
python testpath.pyのときは、実行ファイルがカレントディレクトリにいるため
プログラム中の
os.path.abspath
または
os.path.dirname
の内部でパスが補完されている

おそらく
C:\>python C:\日本語\testpath.py
を実行すれば前者(testpath.pyのみ)と同じ結果になるだろう

os.path.abspath
または
os.path.dirname
のUNICODEの取り扱いに問題があると思われ




161 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:47:28 ]
>>159
file は2.2か2.3で新しく追加された関数(というかコンストラクタ)で、
むしろ open の方が古い仕様で file のエイリアスって
扱いじゃなかったっけ。。。。。。

162 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 09:05:31 ]
整理)
b = os.path.abspath(os.path.dirname(unicode(sys.argv[0], 'mbcs')))
の状況で(この段階↑で既に変なことしてるように見えるが)
1) print u'%s/ふが' % (b.decode('mbcs')) # testpath.py のときだけエラー
2) print u'%s/ふが' % (b) # python testpath.py のときだけエラー

1)になるパターン
・C:\日本語>testpath.py
・エクスプローラからダブルクリック
・C:\>python 日本語\testpath.py
・C:\日本語>python ..\日本語\testpath.py
・C:\日本語>python C:\日本語\testpath.py

2)になるパターン
・C:\日本語>python testpath.py
のみ?

結論)
とりあえず
a = sys.argv[0]
b = unicode(os.path.abspath(os.path.dirname(a)), 'mbcs')
print u'%s/ふが' % (b)
という書き方なら(1)(2)共に問題ありませんでした

本当にありがとうございました


163 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 09:55:33 ]
WindowsXP+Python3.0a2でIDLE起動したんだが
プルダウンメニューとコンテキストメニューが派手にバグっててorz
一瞬何が起こったのか分からんかった

164 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:11:11 ]
こんな流れか?

(1). iterator導入。
(2). 新規にfile()作ったぜ。みんなコレ使え。
(3). iterator浸透。generator導入。
(4). なんだかもう、open()はfile()のエイリアスでいい気が……
(5). マニュアル『open()はfile()のエイリアス。過去互換です。』..._〆(゚▽゚*)
(6). file()いらねーだろ。統一感ないし。"みんな"使ってないし。←いまここ
(7). じゃあfile()は廃止ね。(5)をまじめに実行した奴m9(^Д^)プギャー


165 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:20:01 ]
変数名に file 使いたいから file() 使いにくいんだよね……

def f():
  file = file("/dev/null")  # ここで UnboundLocalError が飛ぶ


166 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:17:45 ]
>>160
>>162

解決しました。
ありがとうございました。


167 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 14:20:08 ]
なんだよマニュアルに open() は過去互換とかいうから
file() 使っていたのにヽ(`Д´)ノ

168 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 14:47:54 ]
import urllib

conn = urllib.urlopen("test.txt")
data = conn.read()
conn.close()

みたいなかんじでIO関連の処理はopen+closeでやる
ものだと何となく認識してた俺は大丈夫だったようだ…

169 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:46:30 ]
Python 2.4:
以前の関数名である open() は互換性のために残されており、 file() の別名となっています。

Python 2.5:
When opening a file, it's preferable to use open() instead of invoking this constructor directly.
ファイルを開くときは、このコンストラクタ(file)を直接実行するより、open()を使う方が望ましい。

170 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:25:58 ]
>167
オレモオレモ… orz



171 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:33:15 ]
Python 2.3でこの関数を呼ぶと、
def _IOC(dir, type, nr, size):
  return ( dir << _IOC_DIRSHIFT) | ¥
     (ord(type) << _IOC_TYPESHIFT) | ¥
     ( nr << _IOC_NRSHIFT) | ¥
     ( size << _IOC_SIZESHIFT)

/usr/lib/python2.3/site-packages/video4linux/__init__.py:112: FutureWarning: x<<y losing bits or changing sign will return a long in Python 2.4 and up
return ( dir << _IOC_DIRSHIFT)

って、出るんですけど、
何を修正すればこのwarningは消えますか?

172 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:40:54 ]
ttp://docs.python.org/lib/module-warnings.html
ttp://www.python.jp/doc/2.4/lib/module-warnings.html


173 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:11:07 ]
>>172
単にwarningが表示されないようにするのではなく、
warningの原因自体を取り除きたいです。

>>171の書き方のどこがまずいんでしょうか。

174 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:16:18 ]
def func(a, b):
pass

という関数があったとして、
func(1, 2)
と書くかわりに
tup = (1, 2)
func(tup)
みたいにしたいんですが、
どうやったらいいでしょうか。
func自体は修正できないものとします。

175 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:18:34 ]
tup = (1, 2)
func(*tup)

176 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:24:41 ]
>>175
ありがとうございました。

177 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:44:17 ]
>>175
これ便利だよね関数にタプル渡して処理してくの

def getSafeText(self, text):
  htmlFixes = [ ("&", "&"), ("<", "<"), (">", ">"), ]
  for fix in htmlFixes:
    text = text.replace(*fix)
  return text

178 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:52:00 ]
なんかと思ったら&amp;、&gt;、&lt;への変換か

179 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:09:58 ]
&amp;amp;と書かないと意味不明

180 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:01:57 ]
ターミナルからpythonインタプリタを呼び出して利用しているのですが、
バッファをクリアする方法はあるでしょうか。



181 名前:デフォルトの名無しさん [2007/12/13(木) 02:37:39 ]
指定された条件でファイルを検索し条件にマッチしたファイルがあるディレクトリ上のcallback.pyのimportを行い
その中で定義されてる関数on_matchを呼び出すというような実行可能ファイルをCで書きたいと思っています

ただPyImport_ImportModuleを呼び出すとファイルがあるディレクトリをPythonに伝えていないのでcallback.pyは
もちろんimportされません

$PYTHONPATHをプログラムの中でいじくればimport対象にディレクトリ上のcallback.pyを追加できるとは思うのですが
環境変数をいじらずに同等のことを行える関数はありますでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 03:49:36 ]
>>181
Python Programming Language :: PyImport_ImportModule/embeddin g: surprising behaviors
www.megasolutions.net/python/PyImport_ImportModule-embeddin-g_surprising-behaviors-38379.aspx

参考になるかわからないけどこんなの見つけた

183 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 05:08:04 ]
スレち気味ですみません

パイソンのdictが便利なんですが
初期化とかsetitemとかupdateのときに
type checkをしたいんです。

dictをサブクラスしてできるんですが
いちいちやるのがすごくめんどうくさい
なんかいまやってることにパイソンはあんまり向いてないような気がしてきました

なにかお勧めの言語はあるでしょうか?
javaとか?

当方perl/pythonとあとC++をすこしつかいます

184 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 05:48:29 ]
>>181
import hage.fuga.hoge.callback
じゃだめ?

185 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 07:13:13 ]
>>171
x << y を int((long(x) << y) & sys.maxint) と直せばよいかと。


186 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 07:18:10 ]
>>173
まずいということではなくて、2.3以前と2.4以降で << の結果が変わりますよーというお知らせ。


187 名前:181 mailto:sage [2007/12/13(木) 10:05:16 ]
>>184
それだと実行可能ファイルがあるディレクトリからの相対的な位置指定しかできなく
実行可能ファイルがあるディレクトリよりroot方向よりの指定もできないと思います

パスをなんらかの方法で指定し(最悪 環境変数PYTHONPATH
importにモジュール名のみを渡してimportというのがよいかと思っています

188 名前:デフォルトの名無しさん [2007/12/13(木) 10:19:45 ]
rubyとpythonって将来の有望性はどっちが上なんですか?
初心者なんでどっちか片方をスクリプトの基礎を勉強しながら取り組みたいのですが

189 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 10:24:45 ]
PHPだろ常考

190 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 10:27:41 ]
んだPHPでもやっとけ
そして二度とPythonスレには来るな



191 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:11:05 ]
>>188
マジレスすると、どっちも有望
WebプログラミングではRails人気もあってRubyが有望
でも企業内ではPythonのほうが広範囲に使われている(Google, Pixar, DreamWorks, Youtube, Sega, etc)


192 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:23:42 ]
>>181
/* 独自の import 関数を定義する */
PyObject* MyImport(const char* name, PyObject* globals, PyObject* locals, PyObject* fromlist) {
 /* 最初に標準でのインポートをこころみる */ 
 PyObject* module = PyImport_ImportModuleEx(name, globals, locals, fromlist);
 if (module && PyModule_Check(module))
  return module;
 PyErr_Clear(); /* Import エラーを破棄 */
 Py_XDECREF(module);
 /* 標準インポートに失敗した時だけ独自インポートを試みる */
 module = 独自にインポートするか、パスを変えてもう一度 PyImport_ImportModuleEx を呼び出す
 return module;
}

この API を、例えば "my" モジュールの "importhook" という名前で登録しておく.
そして、__builtins__['__import__'] を my.importhook で置き換えるようなコードを書く

const char* pysource = "\n\
def replace_import():\n\
 import my\n\
 __builtins__['__import__'] = my.importhook\n"

これを Py_CompileString でコードオブジェクト化してから PyObject_GetAttrString で
replace_import 関数オブジェクトを取り出し、PyObject_CallFunction で実行する。
もしかしたら PyRun_String でそのまま実行してOKかもしれんけど、その場合は globals 引数を
適切に設定しないとダメだと思う。

とりあえず、これで import を実行する度に MyImport が呼ばれるようになるから、あとは
自分でパスを補完するなり独自に取り込むなりすれば良い

193 名前:デフォルトの名無しさん [2007/12/13(木) 11:34:29 ]
独自 import を定義する時は、「独自インポートに失敗したら標準インポート」よりも
「標準インポートに失敗したら独自インポート」の方が無駄がなくていいよ。

__import__ は既に import されているかどうかに関わらず、
import 文が実行されたら必ず毎回呼び出されるから、もし独自 import の方を先に処理すると
インポート済みかどうかって事を毎回自分で調べる必要があるので無駄な処理時間が増える。



194 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:41:45 ]
>>191
>企業内ではPythonのほうが広範囲に使われている(Google, Pixar, DreamWorks, Youtube, Sega, etc)

こんなウソを信じちゃダメだ!!
PythonができればGoogleに入社できるなんて嘘っぱちだ!!!

195 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:59:34 ]
>>188
プログラマなら複数言語できてあたりまえだし
必要にせまられれば柔軟に吸収できるもんだよ。
だからとっかかりは将来性とかかんがえずに好みできめていいよ。
(イメージロゴがすきだとか興味あるアプリがあるとか)
あと最初に変なクセがつく危惧もあるけど意識して複数こなせば解消できる。

196 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:01:07 ]
マジレスすると

(C or Java or PHP) + (Python or Ruby)

これ最強。

197 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:02:55 ]
195のレスが情報量ゼロな件。

198 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:22:42 ]
197のレスが情報量ゼロな件。

199 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:46:40 ]
>>183
typecheckていうのをデコレータとして作って、

class mydict(dict):
   __init__=typecheck(dict.__init__)
   __setitem__=typecheck(dict.__setitem__)

200 名前:171 mailto:sage [2007/12/13(木) 13:24:39 ]
>>185-186
ありがとうございます。
module内で定義している定数全てに、
'L'をつけて対応しました。



201 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:05:50 ]
>196

(C or アセンブラ) and (Perl or Java or PHP or Python or Ruby)

の間違いじゃねーの?


202 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:09:35 ]
>>192 乙 しかしながら181は
"独自にインポートするか、パスを変えてもう一度 PyImport_ImportModuleEx を呼び出す "
という部分に関してPYTHONPATHを使う以外の方法が分からなくて質問してきてると思われる

というわけで
ttp://mail.python.org/pipermail/python-list/2001-October/108376.html とか
ttp://mail.python.org/pipermail/python-list/2001-October/108485.html を見てみることをお勧めする

203 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:23:45 ]
python unconference とかいうのに行ってきた。


204 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:51:12 ]
(C and C++ and (Java or C#)) and (((Perl or PHP) and (JavaScript) and (Python or Ruby or LISP)) or ((JavaScript) and (Python or Ruby or LISP)))


205 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:11:39 ]
素直に、「PerlとPHPは要らないと思うんだ」と言えんか。

206 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:36:57 ]
Unixをプラットホームに構えるならPerlはツールとして当面必要だろjk
PHPと同列にするセンスに違和感。

207 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:43:00 ]
誰にも必要とされない言語なんて悲しすぎるじゃないですかー

208 名前:デフォルトの名無しさん [2007/12/13(木) 18:27:22 ]
(C and (perl or python or ruby)) or Java

209 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:35:48 ]
Perl or Python でいいのにRuby絡ませたがる奴は誰だ

210 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:11:24 ]
>>204
Lisp みたいな括弧の数だな



211 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:14:43 ]
将来も考えてるならPHPとかPerlとかにどっぷりつかるのはやめたほうがいい

212 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:40:58 ]
関数内関数から、外側の関数のローカル変数を更新する方法はないでしょうか?

def f():
  def g():
    z = 3 # fのローカル変数zを更新したい
  z = 0
  g()
  return z # 3を返して欲しい

のようなコードでは、gのローカル変数zの更新になってしまいます。

かといってgの先頭にglobal zを加えると、fのスコープを飛ばしてglobalなスコープを見に行くので
エラーになります。

213 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:03:30 ]
def f(): 
    def g(): 
        f.z = 3
    f.z = 0 
    g() 
    return f.z


214 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:40:57 ]
>>> def f():
...  def g():
...   f.z = 3
...  f.z=0
...  g()
...  return f.z
...
>>> f()
3
>>> h=f
>>> f=0
>>> h()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in f
AttributeError: 'int' object has no attribute 'z'

215 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 01:20:34 ]
>>201
>(C or アセンブラ) and (Perl or Java or PHP or Python or Ruby)

オッサンは窓際で朽ち果てていてね。

216 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:10:40 ]
ああ、そういうもっと根本的なAPIの質問だったのか。なら
.py ファイルを fopen なりなんなりで開いて文字列読んで
Py_CompileString でコードオブジェクトにしてから
PyImport_ExecCodeModule に食べさせてインポート完了。

.pyc や .pyo の場合は先頭の4バイトから long を読んで、
その値を PyImport_GetMagicNumber と比較してマジックナンバーをチェック。(別にチェックしなくてもいいけど)
次の4バイトは完全無視。
残りのバイト列を PyMarshal_ReadObjectFromString か PyMarshal_ReadLastObjectFromFile に
食べさせればコードオブジェクトが出てくるから、
それを PyImport_ExecCodeModule に渡せばインポート完了。
Py_DECREF とか忘れないように。

217 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:11:28 ]
自分の職場は
(Fortran or C or C++) and (awk or Perl or Python or Ruby)
だな

218 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:13:48 ]
ていうか、ただでさえ Python 日本語サイト少ないのに、 C-API の話となるとほぼ皆無だよね。
標準ドキュメントが充実してるとはいえ、ちょっとした Tips が分からないのは苦労する。
ていうか、C実装の領域まで踏み込んで Python 使ってる人ってどれぐらいいるんだろうか。
みんなは CからPython使ってる?

219 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:25:53 ]
ところで、 PySys_SetPath とか Py_VaBuildValue とかってマニュアルに載ってないよね?
ソース見てて初めて気がついた。PySys_SetPath と同じ機能の関数つくっちゃった後だったよ。。。orz

__import__ 関数を自分定義の関数でオーバーライドできるという事は、
ローカルにライブラリファイルを全く持たないで、import 文を実行したときに
ネットワークから直接ファイルを読んでくるってのが可能だと思うんだ。
どっかのサーバに標準ライブラリその他をまるごと置いておけば、
インストール作業を全くすることなく、なおかつコンパクトなスタートアップスクリプトだけを
配布すればよい。これでなんか面白そうな事できないかな。。。。



220 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:36:58 ]
>>218
SWIG とかで楽できる領域を越えたくない…
標準ドキュメントでいろいろ調べられる点については JNI よりマシだと思った



221 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 03:08:47 ]
>>218
CからPythonを呼ぶのは、
Cで書くのマンドクセだから
本当にただ呼び出すだけだ。

PythonからCを使うのは、
Cのライブラリが目的だから
これも呼び出すだけだ。

CでPython関数をモリモリは使わんなぁ。


>>219
一般的な問題を話させてもらうと、
ローカルとネットワークはやっぱり違う。

ローカルとネットワークの抽象化をライブラリ層で図ろうとしても、(←やりがいのある作業だ)
必ず実装がアプリ層に漏れてきて、面倒ごとが増える。(←何故か作業が増えている)
上手くいきそうでも、中々うまくいかない。(←みんながイラついてくる)
そしてユーザー層まで漏れていく。(←どうしろというんだ)

例えばだけど、
たかが50行のソースを、
py2exe使って依存ファイルを詰め込んだ
巨大な10MBのexeファイルで配るのは非常に馬鹿馬鹿しいことだ。
つーか馬鹿にされる。

でも一番トラブルが少ない。←これ重要だと思うよ


222 名前:183 mailto:sage [2007/12/14(金) 04:01:51 ]
>>199
助言ありがとうございます
メタクラス、デコレータとかちょっと真剣に勉強してみます

223 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:08:06 ]
>>219
import hook したいだけならサポートモジュールを作ったことがあるよ

224 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:27:15 ]
何でeasy_installを標準パッケージに入れないんだろ?
入れてこそ真価を発揮すると思うんだけど……


225 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:41:51 ]
>>213
def f():
  z=[0]
  def g():
    z[0] = 3
  z[0] = 0
  g()
  return z[0]


226 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 13:11:15 ]
>>225
ポール・グレアムはそうやっているね。
practical-scheme.net/trans/icad-j.html
で、↓こういう反論が来たと。
practical-scheme.net/trans/IsPythonLisp-j.html


227 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:18:46 ]
Guidoはレキシカル変数が暗示的な変数に見えたんだろうな。
そして self と __アンダ_バ__ を用意したわけだ。


228 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:01:05 ]
つまり、こう言いたい訳ね。

>>> class F:
  def __call__(self):
    self.z = 0
    def g():
      self.z = 3
    self.z = 0
    g()
    return self.z

  
>>> f = F()
>>> f()
3
>>>


229 名前:デフォルトの名無しさん [2007/12/14(金) 16:08:05 ]
Guido van Rossumって
日本語の発音だとどうなるの?
ガイド・ヴァン・ロッサム?

230 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:32:20 ]
>>229
田中太郎です。



231 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:43:52 ]
ジード ファン ロスム

232 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:03:29 ]
slashdot.jp/developers/article.pl?sid=04/07/24/1020202
グイド・ヴァンロッサム氏

233 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:31:30 ]
ファンデルワールス力とかファンデルヴェルデンとか、オランダ人のvanはファンと読むのが慣例のような気がする

234 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:41:18 ]
ドイツ語だからな

235 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:12:42 ]
ふぁんでるわーるすか!


236 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:16:00 ]
ふるへっへんど

237 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:30:16 ]
ホィド・ファン・ロシューム

238 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:48:25 ]
ドイツ語はvon

239 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:43:54 ]
>>212
○global z
×nonlocal z

まぁ2.5にゃないんですけどね

240 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:35:56 ]
フォン•ノイマン Von Neuman



241 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:45:21 ]
ガイドさん治

242 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:49:58 ]
>>239
○と×、逆じゃない?

243 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:27:13 ]
初めてのPythonの古いほう(初版)を古本屋で買ってしまったんですが
第2版を買いなおした方が良いでしょうか?
2000〜2004の間にどれくらい、言語そのものの拡張と本そのものの
項目が追加されたのかが気になって…。

244 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:38:00 ]
基本を覚えちゃって、あとはマニュアルでも読めばいいんじゃね。
プログラム初めてなら新しい方がいいかもしれんね。

245 名前:243 mailto:sage [2007/12/15(土) 13:06:52 ]
>>244
ありがとうございます。言語の経験はC++ぐらいなんですが、
Sconsを使っているアプリがWindowsでビルドできなくて
困ってました。
とりあえず、まずは買ってしまった本を読み切るようにします。

246 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:17:33 ]
他言語の経験あるなら古い本を読みきろうとか思わずに
公式チュートリアルをバッと読むのがいいとおもう


247 名前:243 mailto:sage [2007/12/15(土) 14:45:53 ]
>>246
orz…。チュートリアルを先に見てればよかった…。
でもせっかくなんで両方見ながらやってきます。
どうもありがとうございます。

248 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:01:26 ]
チュートリアルには、
他言語との違いについてもっと書いてくれるとありがたかった。

249 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:06:27 ]
Python勉強する人って、他にどんな言語を知ってるんだろう?

Javaが嫌になって流れてきた人とか、Perlの汚なさが嫌になった人とか、PythonにLispに類似したものを
見出した人とか、何もバックグラウンドがない素人とか.... どんな人が多いんだろうね?


250 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:16:57 ]
AWK->Perl->Ruby->Python
Javascript
C
ABEL,AHDL,VHDL
ってとこでつね




251 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:33:39 ]
>>242
うんその通り
今気付いたorz

252 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:35:58 ]
MSX-BASIC → Python

かじってみた言語ならマシン語のハンドアッセンブルから
Smalltalk まで他にもたくさんあるけど
自分の目的で使うために習熟したのはこの2つだけ

253 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:07:29 ]
>>252
オッサン(wwwwwwwwwwww

254 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:29:09 ]
おっさんだからといって馬鹿にしてはいけない。
ゆとりの俺がいうんだから間違いない。


255 名前:デフォルトの名無しさん [2007/12/15(土) 22:31:26 ]
(´-`).。oO(hsp...→vb→python

256 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:44:25 ]
>>248 他言語との違い

を挙げる時、どの言語の例を挙げるのが妥当なのか知りたかったんだけど、簡単には決められない気がするよ。
そもそも、チュートリアルなら下手に内容を詰め込みすぎない方が混乱を防げるような気がするね。

Pythonを勉強する時って、他言語での経験って役に立ったりするのかな?Python自体、すごくシンプルな
言語なので、経験はあるに越したことはないのかも知れないけど、必要ないような気もするね。



257 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:45:33 ]
>>249
BASIC(高校の授業)->Fortran77(大学の講義)->C(卒研)->Java(趣味)->Python(生きる目的(ジョーク))
少し体験してみたもの:C++、C#、Scheme、OCaml、その他
色々弄ってきたけどPythonが一番使いやすいね。インデントでブロックを表現する所なんて最高だよ。

258 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:53:50 ]
>>248
ttp://pc11.2ch.net/test/read.cgi/tech/1192884897/379


259 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:56:18 ]
BASIC→VB(講習)→C++→JavaScript→(DSLいろいろ)
→PHP(CGIのため)→Perl(を覚えようとして逃げ帰る)→C++(再覚醒)
→Python(ついに見つけたユートピア)

って感じ。付き合った期間はC++が一番長いかな。
PrologやHaskellも興味はあるんだけど今の所使い道が無いので…

260 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:29:23 ]
>>249
C/C++に疲れたひとですが




261 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:31:07 ]
Ruby->D->Python

262 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:54:30 ]
Pascal(6ヶ月)→ブランク期間(4年半)→Perl(6ヶ月)→Python(2年弱)

263 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:04:00 ]
252は伯爵?

264 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:13:23 ]
C -> (Matlab) -> C++ and Python

265 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:22:04 ]
IronPythonStudioがインストールできん…。
VisualStudio 2008 Shell Isolated Redistributable がないって言われる。入ってるのに…。

266 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 02:35:32 ]
PL/I->MS-BASIC->アセンブラ(8086/68000)->C->C++->Perl->PHP->Java->Ruby->Python
おじさん(笑)です。

267 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 02:50:21 ]
辞書を値でソートした上で取り出したいのですが、どういう方法がありますか?

268 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 02:56:07 ]
>>263
誰?


269 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 03:11:20 ]
d = {'z':1, 'x':2, 'y': 3}
l = list(d.itervalues())
l.sort()
print l

l = d.items()
l.sort(key = lambda v: v[1])
print l


270 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 03:44:24 ]
>>> import operator
>>> d = {'z':1, 'x':2, 'y': 3}
>>> sorted(d.iteritems(), key=operator.itemgetter(1))
[('z', 1), ('x', 2), ('y', 3)]



271 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 05:01:34 ]
HyperTalk->awk,AppleScript->Perl->Ruby,JavaScript,VBA->Python
Pythonは独特だと思う。
Pythonから始めた人はスムーズに習得できたのか知りたい。

272 名前:デフォルトの名無しさん [2007/12/16(日) 06:17:53 ]
pythonのforなんでこんなんなの?
オライリー「pythonチュートリアル」にrangeで等差数列生成して回せって書いてるけど
どう考えてもメモリの無駄じゃないの?

273 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 06:53:17 ]
メソッドの中にselfってつけて変数かくと外からいじれるけれどこれはあんまり良くないことですか??

274 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 07:10:02 ]
>272
つxrange

まあpython3.0ではrangeもxrange相当になるけどな

275 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 07:26:08 ]
>>274
ああ、こんなのあるんだ
dd

276 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 14:07:31 ]
for i in range(start, end):
 print seq[i]



for i in seq[start:end]:
 print i

はどちらがいいのかな。スライス表記の方が
すっきり記述できるけど、これってコピー操作入ってるんでしょ?

277 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 14:19:56 ]
>>276
これはコードが簡素すぎるけど
実際ならindexを明示したいかどうかで変わるかな。
どちらもディープなコピーはないのでindexの生成分前者のが損だけど
わかりやすさの前には軽微な事。

278 名前:デフォルトの名無しさん [2007/12/16(日) 15:32:09 ]
>>> import __main__
>>> print "Hello"
Hello
>>> print dir(__main__)
['__builtins__', '__doc__', '__main__', '__name__']
を埋め込みで書くと
int main(int ac, char** av)
{
 shared_ptr<void> py(py_initialize(), py_finalize);

 shared_ptr<PyObject> main_(py_incref(PyImport_ImportModule("__main__")), py_decref);
 if(!main_) {
  std::cerr << "ERROR: module __main__ not found" << std::endl;
  PyErr_Clear();
  return 1;
 }

 shared_ptr<PyObject> tmp(
  py_incref( PyRun_String(
    "print \"Hello\"\n"
    "print dir(__main__)"
   , Py_file_input
   , main_.get()
   , main_.get() )),
  py_decref );
 return 0;
}
になると思うのですがうまくうがきません
Exception exceptions.NameError: "name '__main__' is not defined" in 'garbage collection' ignoredと表示されcore dumpしちゃいます
"print dir(__main__)"をコメントアウトするとHelloが表示され正常終了します

279 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:39:45 ]
>>276
seqがタプルで、タプルのスライスの実装が工夫されてたら後者が得かな。
工夫って言うのはスライス元の一部を共有するってことね。ソース見たことないから実際はどうか分からないけど。

280 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:49:24 ]
っ num*




281 名前:279 mailto:sage [2007/12/16(日) 16:11:01 ]
2.5のソース見てみた。一個一個コピーしてたよ。
特例として、スライス範囲がスライス元タプル全体と一致するならスライス元のタプルをそのまま返してた。

282 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:35:00 ]
リストだったらどうなの?

283 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:41:53 ]
スライスはコピーするとマニュアルに書いてある


284 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:44:03 ]
範囲指定ならseqスライス、ざっくり個数指定ならrangeしか知らなかったw
両方同じように使えるのに驚いて、初めてrange()の正書式読んだ…

xrangeなる省メモリ代替(代わりにDocによれば用途外だと重い?)も知れて、
まっこと有意義な一日

285 名前:デフォルトの名無しさん [2007/12/17(月) 01:06:45 ]
www.unixuser.org/~euske/doc/python/python-lisp-j.html
ここにpythonはlispの数十倍遅いって書いてるんですがマジですか?

286 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 01:36:28 ]
速度は実測が基本


287 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 02:05:35 ]
日本語訳の時点で5年前の記事だしな

288 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 04:14:28 ]
LispはCより速いらしいからしょうがないよね

289 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 04:43:24 ]
関数型だから十分ありえるんじゃね?
プログラム構造やメモリ操作の見通しがたち易いからコンパイル時も実行時も最適化がめっさ効く。
だてに何十年も研究されてないし。

290 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 04:59:02 ]
Lispってそんなスゲーの?
やってみようかな・・・



291 名前:デフォルトの名無しさん [2007/12/17(月) 05:39:55 ]
The Django Book
www.djangobook.com/en/1.0/


292 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 08:51:57 ]
>>285
あんまり参考にならないけど、それでも数十倍の開きは付いてるね。

shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=python&lang2=sbcl

Python を使うなら速度は気にしない方が良いよ。

293 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 09:19:10 ]
>>285
しんやまの書く記事を信用するなよボケ(wwwwwwww

294 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 09:46:41 ]
Lisp が速いというより Python が遅いだけなんだけどね

295 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:13:47 ]
ここに突っ込まないのはお約束ですか
>定性的にみれば、Python はインタプリタ型の Lisp と同じくらいの速度に見える。 だが Lisp をコンパイルしたものと比べると明らかに遅い。

296 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:30:40 ]
なんで今更lispなんだYO!
今じゃ相当なマニアしか使ってねーっつうの

297 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:52:35 ]
>>295
まぁ普通はコンパイルするものだし。


Pythonで速度を上げられないのは、
バイトコードを動かしていることと
名前解決の辺りかな。

仕様と強く結びついている部分だから
これ以上の向上の余地もないと思う。


もっとも他人から否定されるのは嫌なのだがw


298 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 12:43:14 ]
>>296
30年前よりはマイナーだが、10年前よりはメジャーだ。変な話だが。

299 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 14:28:42 ]
最近RubyからPythonに移ってきたのですが、初歩の初歩でつまづいています。
よくある正規表現を使った文字列置き換えで、置き換え対象がちょっと複雑な時には
どのように書けばいいんですかね。

import re

s = "jskljaksljaj\njslkajskja\n\n"
lst = re.compile(r'(js|ja)').split(s)

for i, x in enumerate(lst):
 if 'js' in x:
  lst[i] = '$$ js is here $$'
 elif 'ja' in x:
  lst[i] = '$$ ja is here $$'

print ''.join(lst)

とかやってみましたが、どう考えても綺麗ではないように思えます。

300 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 14:57:53 ]
import re
print re.sub('(js|ja)', lambda mo: '$$ js is here $$' if mo.group(0)=='js' else '$$ ja is here $$', "jskljaksljaj\njslkajskja\n\n")
↓に何とか厨という罵り言葉がくる悪寒




301 名前:デフォルトの名無しさん [2007/12/17(月) 15:00:36 ]
ワンライナーとか言ってる奴に限って基本的なことが理解できていないことが多い。
ワンライナー厨は典型的な中二病。
大抵のワンライナーはDQNレヴェルのスクリプトを一行にして得意気になってるアホです。
見づらいとか分かりづらいといった意見を読めないアホが悪いと無視するマジもんのアホです。
別にワンライナー以外が高尚でもなんでもなくただワンライナーがDWNなのです。
というか誰もワンライナーがそんないいもんだと思っちゃいないっていうかなんていうか


302 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 15:04:08 ]
別に慣れだとおもうけど。sql文なんかは一気にバーッと書くのが普通だし。

303 名前:デフォルトの名無しさん [2007/12/17(月) 15:25:22 ]
import re

s = "jskljaksljaj\njslkajskja\n\n"
print re.sub('(js|ja)', lambda mo: '$$ %s is here $$' % mo.group(0), s)

lambdaのとこよくわからんけどまねしてみた

304 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 17:31:45 ]
ああああ、すいません例示が悪かったです。
if〜のところはもっと複雑で、できればメソッドに切り出したいんです。

そういう方法はないんでしょうか。

305 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:26:35 ]
>>300-301
自演にも程があるw

306 名前:デフォルトの名無しさん [2007/12/17(月) 21:13:24 ]
pythonでマルチバイトの文字数を取得する方法について調べています。
test=u'日本語'
print len(test)
のように、変数宣言時にuをつけることで、取得できることは確認いたしました。
Ploneなどで、test=request.get('test',None)のように取得した変数を、マルチバイト文字として
カウントするにはどのようにすればよろしいのでしょうか。

よろしくお願いします。

307 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:40:06 ]
>>306
test=u'日本語'
--------------- ←ここで分けて考える。
print len(test)

後ろのtestはどういう性質のものなら適合するのか。(具体的には何Objectか)
戻って u'日本語' はどういう意味のコードか。

308 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:19:55 ]
Ploneって書いてある時点で終了っぽいな。
本当にありがとうございました。

309 名前:デフォルトの名無しさん [2007/12/17(月) 22:37:05 ]
306です。
>307
ありがとうございます。
以下のようにやったらできました。
test=request.get('test',None)
print len(unicode(test,'utf-8')

u'日本語'というのは文字列定数を定義する場合で、エンコーディングを明示的に指定
することで、len()関数が判定できるってことなんでしょうか。
とりあえず、できたんでありがとうございます。



310 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 00:39:50 ]
2.5の日本語のドキュメントってありますか?
翻訳プロジェクト見ても 2.3→2.4 が終了しただけで 2.5については一切書かれていないので・・・



311 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:18:53 ]
おまえに任せた

312 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:39:05 ]
マジか

313 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 03:18:52 ]
>>310
ボクからもお願いします( ´人`)

314 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:44:25 ]
pythonでchopってどうやるんですか?

315 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:50:59 ]
ここは2.5ドキュメントを1文づつ訳すスレになりました
以下、どうぞ

316 名前:デフォルトの名無しさん [2007/12/18(火) 08:15:43 ]
xinetdにサービスを登録しようと思い以下のようなスクリプトを書きました。
サーバに送信した文を[]で囲んで返すというものです。
が、なぜかクライアントのrecvで受信待ちになってしまいます。

クライアントの通信先をechoに変えたところ、recvは正常に受信し、文字はちゃんと表示されました。
またサーバのsyslogには、正しくprint [hogeron]と記録されています。

現象から見ると、どうもサーバのprintで、ちゃんと送信されていないっぽいです。
os.environ['PYTHONUNBUFFERED'] = '1'
で、バッファしないように設定しているのですが…
どうすれば正常に動かせますか?

317 名前:デフォルトの名無しさん [2007/12/18(火) 08:16:24 ]
【サーバ】
--
import os,sys,syslog

os.environ['PYTHONUNBUFFERED'] = '1'
line = sys.stdin.readline()
if line.endswith('\n'):line = line[:-1]
result = '['+line+']'
print result
syslog.syslog('print '+result)
--

【クライアント】
--
import socket

host = 'localhost'
port =6363
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send('hogeron')
str = s.recv(1024)
print str
s.close()

318 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 08:54:04 ]
>>315
>ここは2.5ドキュメントを1文づつ訳すスレになりました

「310の翻訳作業を監視するスレ」の間違いだろう。

319 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 09:12:55 ]
2.5の翻訳は、差分ツールで2.4との変化分だけみつけて、そこだけピンポイントで訳せばいいよね。
mac で使える差分ツールない?標準で着いてるファイルマージは、
Leopard だと起動エラーが起きる。。。。。。クリーンインストールしたのに。

320 名前:316 mailto:sage [2007/12/18(火) 11:10:34 ]
クライアントからソケットでsendする時にcrlfを付けてないからでした
unixはlfだけなのにネットワークではcrlfがないと駄目なんですね〜



321 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 11:57:04 ]
>>320
それはたまたまネットワークライブラリがCRLFで一区切りとしてくれただけで
一般的なTCP通信でその前提はなりたたないから。
sokcetを生で使うならあくまでバイト列な非同期通信として扱わないと。

322 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:37:29 ]
>>314
strip?

323 名前:[:-2] mailto:sage [2007/12/18(火) 16:47:20 ]
strip は違うだろ

324 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:28:11 ]
>>323
-2じゃなくて-1じゃね?

>>322
まーchompだったらrstrip()だけんど。

325 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:14:27 ]
seq切り落とし処理から見れば、\n文字で一つなのか

326 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:36:55 ]
全くプログラミングした事無いんだが
ちょっと興味があってPython勉強しようと思う。

そこで、おすすめの書籍なぞある?
環境はWin。

327 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:41:12 ]
>>326
「即効!Pythonプログラミング」上平哲著

328 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:41:44 ]
>326
>116

329 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:48:54 ]
>>319
WindowsなのでExamDiffで比較してみたけど
どうでもいい、タグの大文字→小文字とか lay-out → layout みたいな修正が多くて確認が面倒くさそうだった

330 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:50:02 ]
>>327、328
ありがとうございます

本読んで頑張ってみる。




331 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:00:00 ]
chopは

str[:-1]

chompは

str.endswith('\n') and str[:-1] or str

だとおもう。
(実用するかはともかくとして

332 名前:デフォルトの名無しさん [2007/12/19(水) 02:28:29 ]
import文を羅列で書いていて、
あるモジュールを使わなくなった時、
そのモジュールのimportを削除し忘れることってあるじゃん
結果無駄な読み込みが発生してしまう
そういうのを防ぐためのいい方法はありますか?

333 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 02:37:25 ]
>>331
chomp は str.rstrip('\r\n') だろ

334 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 03:39:23 ]
pythonて組み込みオブジェクトの拡張できるの?
文字列に自家製メソッド追加したり。

335 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 03:47:01 ]
>>229
pythonチュートリアルによるとグイド・ファン・ロッサム

336 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 04:28:47 ]
>>334
できない。

337 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 08:04:43 ]
class str_ex(str) じゃだめなの?

338 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 09:05:14 ]
>>327
とりあえず書いておくわ。
 
 
作者乙。

339 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:16:48 ]
>>332
pycheckerでチェックできると思う

340 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:08:32 ]
だれかGILを取ろうと考えているチャレンジャーはいないのか?



341 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:09:35 ]
>>337
それでいいと思う

342 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 15:48:13 ]
>>340
昔やったらかえって遅くなったんじゃなかったっけ?

343 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:20:21 ]
>>340
STGの神プレイヤーがどうかしたのか?

344 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 17:56:58 ]
>>343
WIZがどうかしたのか?


345 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 18:32:01 ]
GILといえばKI

346 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:02:52 ]
>>342
www.artima.com/weblogs/viewpost.jsp?thread=214235

347 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:30:39 ]
def makecounter():
number=0
def _makecounter(x):
if x=="init":
number=0
elif x=="inc" :
number=number+1
elif x=="dec" :
number=number-1
return number
return _makecounter
counter=makecounter()
print counter("init")
print counter("inc")
print counter("init")
print counter("dec")

ちょいと質問すみません。
こんなことやろうと思ったんだけど出来ません。
pythonじゃ無理?
lispやperlと違ってクロージャの中の変数いじれない?

348 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:16:42 ]
>>212からの流れ参照

pythonではそういう時はCounter classを作る

counter = Counter()

349 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:19:06 ]
>>226が答えに近い

350 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:25:09 ]
def makecounter():
    number = 0
    def _makecounter(x):
        global number
        if x=="init":
            number=0
        elif x=="inc":
            number=number+1
        elif x=="dec":
            number=number-1
        return number
    return _makecounter

counter=makecounter()
print counter("init")
print counter("inc")
print counter("init")
print counter("dec")
print counter("dec")



351 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:49:23 ]
ありがとうございます。
なるほどクラスを作るのか。

352 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:51:36 ]
Python コードを、対応するCソースに変換するツールってない?

for i in seq: print i

ってやると、

for (Py_ssize_t i=0; i<PyObject_Size(seq); i++) {
 PyObject* o = PySequence_ITEM(seq, i)
 PyObject* s = PyObject_Str(o);
 PySys_WriteStdout(PyString_AsString(s));
 Py_DECREF(s);
 Py_DECREF(o);
}
って自動で出力してくれるような。

353 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:58:43 ]
import hoge
def f(a, b): hoge.piyo(a, b)

ってやると

PyObject* f(PyObject* args) {
 PyObject* a = NULL;
 PyObject* b = NULL;
 PyArg_ParseTuple(args, "OO", &a, &b);
 PyObject* module = PyDict_GetItemString(PyImport_GetModuleDict(), "hoge");
 PyObject* func = PyObject_GetAttrString(module, "func");
 PyObject* result = PyObject_Call(func, "(OO)", a, b);
 Py_DECREF(result);
 Py_DECREF(func);
}

って自動で出力してくれるような。

354 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 02:00:16 ]
これさえできれば、Cコンパイラの力を借りて Python コンパイラが簡単に出来ると思うんだ

355 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 02:43:06 ]
Pyrexの中身でも調べてみたら

356 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 09:27:41 ]
つーかPyrexが答えじゃないの?

357 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 09:37:10 ]
Pyrexはじまったな(ww

358 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 11:23:31 ]
なにその強化ガラス?

359 名前:デフォルトの名無しさん [2007/12/20(木) 15:27:10 ]
何で皆そんなにpythonに詳しいんですか?
そういった仕事に就いてるからですか?
それとも趣味ですか?
もし趣味だとしたら変態です

360 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:35:15 ]
趣味ですよ
あなたが無能なだけですよ



361 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:59:53 ]
wikipedia のリフレクションの項、
python の例がないんだ・・・。

誰かかいてくれないか

362 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:45:34 ]
# リフレクションなし
foo = Foo()
foo.hello()

# リフレクション
class_ = globals()['Foo']
method = getattr(class_(), 'hello')
method()

おれこの種の用語嫌いなんだよな。RTTIって言い方やめたの?

363 名前:デフォルトの名無しさん [2007/12/20(木) 16:46:07 ]
>>360
このヘンタイがっ!!

364 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:21:31 ]
>>362
RTTIとリフレクションは意味が違う

365 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:13:32 ]
PyrexよりCythonのほうが書きやすいよ


366 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:48:38 ]
('foo', 1, 'bar', 2, 'baz', 3, )
というtupleから
{'foo': 1, 'bar': 2, 'baz': 3}
というdictを得たいんですが、いい方法ありますか。

367 名前:デフォルトの名無しさん [2007/12/20(木) 22:04:30 ]
もっといい方法があるかもしれないけど

lst = list(('foo', 1, 'bar', 2, 'baz', 3, ))
dic = {}
while lst:
  dic[lst.pop()] = lst.pop()

368 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:05:40 ]
T = ('foo', 1, 'bar', 2, 'baz', 3)
D = dict((T[x],T[x+1]) for x in xrange(0,len(T),2))


369 名前:347 mailto:sage [2007/12/20(木) 22:42:20 ]
def makecounter():
number=[0]
def _makecounter(x):
if x=="init":
number[0]=0
elif x=="inc" :
number[0] +=1
elif x=="dec" :
number[0] -=1
return number[0]
return _makecounter
counter=makecounter()
print counter("init")
print counter("inc")
print counter("dec")

>>226からのリンク先を見てクロージャでカウンタ作れました。
pythonってクロージャの中の変数書きかえれないので
numberに無名配列のポインタを入れてそこを操作するって感じなんですね。
mapの中に副作用持ちのlambda式入れられないとかlispとはかなり違うんだな。
うーん、pythonってなんか変w

370 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:53:17 ]
>>> t = ('foo', 1, 'bar', 2, 'baz', 3, )
>>> dict(zip(t[::2], t[1::2]))
{'baz': 3, 'foo': 1, 'bar': 2}




371 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:25:11 ]
forとかwhileの中で関数作るとクロージャの回避が結構面倒だな
デフォルト引数に入れて解決した

>>369
なんでclassにしないの?

372 名前:347 mailto:sage [2007/12/21(金) 00:42:06 ]
>>371
lispに馴れてるのでとりあえずクロージャを作ってみたかったのです。

373 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:50:24 ]
>>367,368,370
サンクス。
特に370の方法はいいな。


374 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:35:27 ]
generatorをenumerateすると、generatorとして作った意味がないことに気づいたんですが、
generator用のenumerateみたいなのは標準では付いてないんですかね?

375 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:40:01 ]
>>374
izip + count

376 名前:374 mailto:sage [2007/12/21(金) 13:55:47 ]
ごめ、調べてたら、すでにenumerateはリスト返してなかった・・・
どうもバージョンの古い脳内pythonの話だったポイ・・・orz

377 名前:デフォルトの名無しさん [2007/12/21(金) 14:59:36 ]
pythonてコードの前部分で定義した関数しか呼び出せないの?
phpですら定義の順番に関係なく呼べるのに・・・

378 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:14:56 ]
そうか

379 名前:デフォルトの名無しさん [2007/12/21(金) 15:19:46 ]
スクリプト言語のくせにそんなのイモすきない?
みんな許せるの?

380 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:27:07 ]
組込みクラスにメソッドを追加したいのですがどうやればいいのですか?

class int:
 def fuga(self):
   return "fugafuga"

じゃ無理みたいです



381 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:42:06 ]
>>380
・Rubyでやれ
>>337

382 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:46:02 ]
その前になんでそんなことしたいのか、だ

383 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:29:55 ]
>>379
それはエラーになってほしい人もいるからなんじゃない?
Pythonが変数と関数の名前空間が一緒なのと関係あるのかな。
ちなみにRubyもエラーになる。PerlとJavascriptとHaskellはオッケー。

>>382
えー既存クラスにメソッド追加って普通にしない?

384 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:32:04 ]
自前のにならたくさんやるがなぁ

385 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:39:35 ]
ちなみにどうするんですか?チュートリアルを読んだのですがよくわかりませんでした><

386 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:01:28 ]
def fuga(i):
return "fugafuga"

print fuga(42)

387 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:10:12 ]
『Pythonで学ぶプログラム作法』買ってみた
今から読んでみる

388 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:43:48 ]
>>376,383

モジュールがロードされるタイミングでいろいろしたい人がいるからじゃない?

if os.name == "nt":
 def pathnomalization(p):
  ほげほげ
else:
 def pathnomalization(p):
  ふがふが

みたいなコード書いたことあるけど。

389 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:49:09 ]
>>386
全然違うんですけど・・・。
Pythonianの人って、標準とは別名のメソッドを呼びたくなったらどうするんですか?

390 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:04:06 ]
関数使うよ



391 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:13:47 ]
>>389
PEPを書く

392 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:20:21 ]
>>391
ひえーマジすか
Pythonは禁欲的だと聞いていましたがこれほどとは・・・

メソッド定義にself書いたり、気持ち悪い規則が多いなあ
rubyに比べてリスト内包表記と、ライブラリが多いことと解釈系がやたら速いのと、
endを馬鹿みたいに書かなくていいのとhelp()が好きだけど、他はとにかく不便だなあ。
どの言語もいいところと悪いところがありますね。

393 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:24:16 ]
標準とは別名のメソッド呼びたくなる状況がわからん件

394 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:27:01 ]
なんか気持ちイーらしい

395 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:53:41 ]
意味のないことに固執したがるのはバカの特徴だな。

396 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:55:07 ]
一つの言語でやり方を覚えたらそこから抜け出せなくなる脳は不便だ
精進

397 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:26:07 ]
self批判するやつがいるがthisとか暗黙の変数がいきなり出てくる言語とかあり得ないキモイ正気を疑う
反論は認める

398 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:49:03 ]
質問させてください
HTMLParserってShift-jisのページでも使えますか?
urllib2.urlopenで取得した2chのメニュー(左フレーム)をそのままfeedしたら
junk charactersがなんとかってエラーがでました

399 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:53:52 ]
>>398
不可能ではないけどキミにはムリ。

400 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:03:16 ]
unicodeに変換しる。
もっても解析は出来ないと思う。
タグを振ってくれると楽なんだがなぁ。




401 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:06:07 ]
>>397
Σ(´Д` ) 工エー。せっかくスクリプト言語なのに・・・
_doc__とか__name__とかもダメなの?どっちかというと、printキーワードとかのほうが
キモいけどなあ。おまえそれどっから呼んでるのかと。

402 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:06:35 ]
>>398
ずばりなのがココにあるけど
www.freia.jp/taka/blog/169

403 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:12:30 ]
>>398
再現コード貼ってちょ

404 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:40:40 ]
>>401
printはビルトイン関数になるし早くなれ
__name__,__file__,__builtins__はモジュールを生成する側がglobalsに突っ込んでるその辺はすまんかった

405 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:43:44 ]
>>377
>pythonてコードの前部分で定義した関数しか呼び出せないの?
>phpですら定義の順番に関係なく呼べるのに・・・
通常は
def main():
 f()
 g()
def f():
 print 'foo'
def g()
 print 'bar'

main()
と書くから、だれも問題と思ってない。

>>379
>スクリプト言語のくせにそんなのイモすきない?
>みんな許せるの?
PHPのは関数の定義、Pythonは関数を生成して変数へ代入、Rubyは関数定義文の実行。
スクリプト言語といえど、それぞれ根本的に思想が違うんだから、どうしようもない。
それが分からないお前がいちばんあわれ。





406 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:45:35 ]
全ての動的言語はLispのスキンにすぎない

407 名前:398 mailto:sage [2007/12/21(金) 23:10:37 ]
>>399,400,402,403
レスありがとうございます
>>402 に書いてある方法で成功しました
というかこのページ開いてたのに下まで見てなかった・・・
お騒がせしてすいません

408 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 04:50:36 ]
>>379
>>401
「スクリプト言語」に限定したことではなくルールの問題に過ぎない

409 名前:デフォルトの名無しさん [2007/12/22(土) 11:20:43 ]
pythonでオブジェクトのインスペクトってどうやるんですか?

410 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:36:56 ]
>405
よくある相互入れ子型の再帰の練習問題みたいなのを
書こうとして「アレ?どうやんだっけ?」と思ったことはある…



411 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:37:19 ]
インスペクト?
Rubyのobj.inspectのことだとするなら
呼出側はrepr(obj)。自作クラスに定義したいならdef __repr__(self):で。

412 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:03:01 ]
>>411
それです
ありがとうございました
inspectモジュールのところ見て(?o?)となってました

413 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:49:56 ]
EOFをあらわすエスケープシーケンスってないんですか?

414 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:34:57 ]
false

415 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:10:56 ]
>>413
これのこと?
'\x00'
'\0'

416 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:26:25 ]
>>413
DOSじゃないなら、ないんじゃない?
'¥0'は文字列の終わりであって、EOFはまた意味が違うからね。

417 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:31:59 ]
EOFなんて聞いたのは.mag以来だ

418 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:36:16 ]
>>410
> よくある相互入れ子型の再帰の練習問題みたいなのを

それは問題なく何の工夫もなく書ける
関数定義の位置が関係するのは関数やメソッドの外から呼ぶ場合

419 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:23:13 ]
2.3だと
2 << 30が-2147483648なんだけど、
2.5だと2147483648Lになる。

こうなる理屈は分かってるんだけど、
2.2以前の32 bitを前提としたcodeを2.5に移植するときに、
どうやったらうまく動くんでしょうか。

>>185を参考にして
int((2 << 30) & sys.maxint)
としても、結果は0になってしまう。

420 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 01:08:24 ]
海外じゃ今月はこんな話題で盛り上がっていたみたいだね。
"Python" is not a good name, should rename to "Athon"



421 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 01:14:29 ]
よく分からないけど下ネタ?

422 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 01:47:22 ]
groups.google.co.jp/group/comp.lang.python/browse_thread/thread/7d9a4f8e3e936dac/a27e04b7365fc0a6

これかね、

423 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 02:42:01 ]
>>419
>>> hex(sys.maxint)
'0x7fffffff'
>>> hex(2 << 30)
'0x80000000L'


424 名前:デフォルトの名無しさん [2007/12/23(日) 09:40:55 ]
pythonて使用メモリの上限を作ることできますか?
スクリプトと思って気軽に書いてたら永久ループがあったみたいで
out of memoryになってしまい
その影響でmysqlのファイルがぶっ壊れててんやわんやでした(; ;)

425 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:16:32 ]
>>424
OSの仕事。
ulimitしとけ

426 名前:419 mailto:sage [2007/12/23(日) 12:55:39 ]
>>423
strになっちゃいますよね。
そこからどうすればいいですか?
int()もstring.atoi()もhexになっちゃうと効かないようで。

427 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:31:50 ]
>>426
移植元のコードの意図に寄るんじゃない?

428 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:49:54 ]
よくわからんけど、
eval or int(str, 16) ?

429 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:51:44 ]
先週1週間python-3000に投稿が無かったそうですね。py3大丈夫か?
年末だから忙しいだけかな・・・

430 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 15:21:56 ]
>>429
アーカイブを見る限り投稿はあるみたいだけど。
順調に開発が進んでいるから投稿する必要がないだけじゃないかな。

まあリリース10日前になって作者が「これ以外に問題点はありますか?」なんていう頓珍漢なメールを投げる、
プロジェクトよりは大丈夫だろwww



431 名前:423 mailto:sage [2007/12/23(日) 18:15:32 ]
>>426
sys.maxintはMSBをsignにしてるから31bits分しかonにならないと言いたかったんだが分かって貰えなかったようで
マスクしたいなら決め打ちでやれ
intが16bits幅のCコンパイラでビルドされたpythonがあるかも知れないぞ

432 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:24:36 ]
Python でオンラインオセロ大会できないかな?
WEBにスクリプトを投稿すると、
それまでに投稿されている全てのスクリプトと自動的に勝負が進行して、結果がでるみたいな。

433 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:31:46 ]
>>432
そういうプログラムを是非pythonで!

てか「初めてのPython」って本買ったんだが、
いまだにクラスすら出てこないorz

434 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:34:37 ]
Pythonで世界征服できないかな?
WEBにスクリプトを投稿すると、
世界中のサーバをハックしまくって意のままにコントロールできる、みたいな。


435 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:36:19 ]
class Com:
 def step(board):
  """
  board は int[10*10] の配列からなり、
  0行(列)と9行(列)はセンチネルとして常にゼロを保持する
  実際に勝負に使うのは1行(列)から8行(列)の部分。
  -1, 0, 1 の値をとり、0は何もない状態、-1と1はそれぞれ石が置かれている状態を示す
  step 関数が呼ばれたら自分が次ぎに置くX, Y 値をタプルで返す
  ”””
  raise "This method is an abstract"


classOothello:
 m0 = __import__("com0.py")
 m1 = __import__("com1.py")
 com = m0.Com()
 com_ = m1.Com()
 board = [0]*10*10
 while True:
  x, y = com.step(board)
  if x, y == 0, 0:
   print "PASS"
  else:
   board.put(x, y)
  com, com_ = com_, com


  
  



436 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:57:25 ]
Pythonでワンライナーってできる?

437 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:26:47 ]
質問の意味が分からん

438 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:52:58 ]
一行プログラムの事じゃないか



439 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 02:04:14 ]
perl -eって意味ならpython -c

440 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 02:08:43 ]
>>439
ありがと。

-cで、普通複数行で書くようなプログラムも1行で書ける?
行の区切りがどうなるのかなと思って。
Pythonはインデント使うから。



441 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 02:18:25 ]
>>433
俺もその本買って勉強してるが
分厚すぎてめちゃくちゃ重い
机から落として足直撃したときはちょっと泣いた

442 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 02:34:34 ]
>>440
普通に書けばおk

tests% python -c "f = [1,2,3,4,5]
for i in f :
 if i % 2 == 0 :
  print 'even'
 else :
  print 'uneven'
print 'ところで今日はクリスマスイブですよ、おまえら'"
uneven
even
uneven
even
uneven
ところで今日はクリスマスイブですよ、おまえら


443 名前:デフォルトの名無しさん [2007/12/24(月) 04:03:03 ]
>>442
ちっとも一行じゃないワンライナーだね(w。

>>440 じゃないけど、
勉強になりました。ありがとう。

444 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 06:27:43 ]
いままで Ruby 使ってたんだけど
Python に乗り換えることにする
とりあえず windows の方は
拡張子 .rb で python 起動されるようにした


445 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 06:29:57 ]
コマンドラインから入力することをワンライナーって言うの?

pythonは、対話型実行が良くできてるから、どんな小さい実験とかでも、
対話型を起動させたほうが良いような気がする。

446 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 06:32:13 ]
>>444
.py で python が起動されるようにしたほうが良いと思うよ

447 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 06:34:23 ]
>>446
Windowsならインストール時にそうなってるんじゃないか

448 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 06:42:37 ]
なんか海より深い勘違いをしてそうだな

449 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 07:49:35 ]
.rb については今までの負の資産があるので
結構色んな所から呼んでるんですよ
(CGIで後悔してたりとか別のコマンドから利用してたりとか)
しばらくはファイル名はそのまま残しておかないとまずいので
.rb をスケルトンにしてそこから .py 呼んで delegate でもいいんですけど
直接 .rb のナカミを python コードにしてしまった方が早いかなと

450 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 07:54:32 ]
>>449
ココはあなたのチラシの裏ではありません



451 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 07:58:05 ]
ln -s hoge.py hoge.rb
で一発ジャマイカ

452 名前:419 mailto:sage [2007/12/24(月) 09:39:25 ]
>>427, 428, 431
レスありがとうございます。

32bit目まで使う必要があるプログラムです。
ビット演算した結果は、fctrl.ioctl()の第二引数に与えます。

0x80000000L => 0x7fffffff
というような変換さえできればいいんですが、
普通2.5だとどうやって32bitの演算をCのように行うんでしょうか。

>>431
>intが16bits幅のCコンパイラでビルドされたpythonがあるかも知れないぞ
自分の環境でデバイスの操作を考えているので、
他環境では動かなくても大丈夫です(動けばなお良い)
ただし、現在2.3で運用しているんですが、
将来的に2.5で動かそうと改造を考えており、
そのためにLの扱いで躓いています。

453 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:18:23 ]
2<<30がどう使われてるかがわからない。30は変数?即値?
変数だとすると、2<<28,2<<29まではビットはひとつしか立ってないが、
2<<30==0x7fffffffということは、最上位ビットの関係でいきなりビットが
反転するがそれでいいの?即値ならそれこそ0x7fffffffを直接使うところだと思ふ。

454 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:35:43 ]
def c_like(n):
if n & (1 << 31):
n = (1 << 31) - (n % (1 << 31)) - 1
return int(n)

print hex(c_like(0x80000000L))

455 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:36:08 ]
def c_like(n):
    if n & (1 << 31):
        n = (1 << 31) - (n % (1 << 31)) - 1
    return int(n)

print hex(c_like(0x80000000L))

456 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:38:47 ]
>>452
コードに問題がある。書き直せ。

457 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:12:37 ]
たしかに、

>2.3だと
>2 << 30が-2147483648なんだけど、

この動作に本質的に依存したコードってなんか危ない気がする・・・

458 名前:419 mailto:sage [2007/12/24(月) 12:18:33 ]
>>453-456
元は
pyv4l.sourceforge.net/pyv4l/video4linux/__init__.py
なんですが、これをちょこちょこ自分で書き直したものです。
LinuxのCのheaderをそのまんま移植したものなので、
ベタ書きで書き直すとメンテが大変になるので避けたいところ。

こっから落とせます。
internap.dl.sourceforge.net/sourceforge/pyv4l/pyv4l-0.0.1.tar.gz

Python 2.3だと、
>>> import video4linux
>>> help(video4linux)
(snip)
VIDIOCGAUDIO = -2144963056

2.5だと、
VIDIOCGAUDIO = 2150004240L

となります。

>>454-455
それだと、0x7fffffffを取り出せますが、
long longじゃなくてlong intにしたいんです。
2147483647ではなく-2147483648にしたい。

459 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:59:33 ]
>long longじゃなくてlong intにしたいんです。

これでわかった。

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> (-2147483648) & (1 << 31) == (1 << 31)
True

def c_like(n):
    if (1 << 31) <= n < (1 << 32):
        n = -n
    return int(n)

print c_like(0x80000000L)

460 名前:デフォルトの名無しさん [2007/12/24(月) 13:31:00 ]
>>449
rubyのどこが気に入らなかったんですか?
pythonはじめたばかりですが
組み込みオブジェクトにメソッド追加したりできるところとか
rubyも魅力的だと思うんですが



461 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:34:18 ]
また君か

462 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:46:01 ]
またって?
rubyに関する質問したのは初めてですよ

463 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:48:26 ]
また(空気の読めないRuby厨)君か

464 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:18:42 ]
>>463
いくらなんでも無理ありすぎw

465 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:45:44 ]
他の言語はじめたばかりじゃわからないだろうから
わかるまで黙ってると良いと思います

466 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 16:03:41 ]
この板なんでID無いの?

467 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 16:35:20 ]
技術系の板なので、誰がレスしたかよりもレスの中身を重視しているから

468 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:16:31 ]
Vとか機種依存文字がページに含まれてると
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 176-177: illegal multibyte sequence
となって上手くいきません。

import urllib
uconn = urllib.urlopen('pc11.2ch.net/tech/dat/1196426978.dat')

for e in uconn.readlines():
    e = unicode(e, 'sjis')
    elem = e.rstrip(u'\r\n').split(u'<>')
    print ''.join(elem)

一度ローカルに保存してテキストエディタなどでutf-8に変換する以外で
この問題を回避する方法はあるでしょうか?

469 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:19:46 ]
>>275
ddでこけました

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 169-170: illegal multibyte sequence

470 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:26:19 ]
Windowsなら'shift_jis'の代わりに'cp932'を使う。とか?



471 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:26:43 ]
>>468
sjisをcp932でいけるんじゃね

472 名前:468 mailto:sage [2007/12/24(月) 17:39:02 ]
事故解決

新キャラクタセット cp932 / eucjpms
www.mysql-partners-jp.biz/techinfo/tech_01.html
PHPからMySQL4.1とか5.0とか5.1とかに接続すると文字化けする : ::yossy.blog::
yossy.iimp.jp/wp/?p=60
PHPで「(はしごたか)」「ア(たつさき)」が文字化ける(2) : ::yossy.blog::
yossy.iimp.jp/wp/?p=58

sjis != cp932
cp932 == sjis + NEC 特殊文字 + NEC選定IBM特殊文字 + IBM特殊文字

なんですね。
というかweb上のサービスはいい加減UTF-8に統一しようよ…

473 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:23:47 ]
>436
python ワンライナー で具具レバ… 超人に会えるでしょう

474 名前:デフォルトの名無しさん [2007/12/25(火) 01:29:30 ]
>>468
e = unicode(e, 'sjis', 'replace')
e = unicode(e, 'sjis', 'ignore')

475 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 02:38:16 ]
>>474
逃げちゃだめだろw


476 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 03:11:09 ]
拡張子をpywにして
os.system('dir > d.txt')
を実行すると一瞬だけ
DOS窓が立ち上がるんですが
これを出さずに実行する事は可能でしょうか?

477 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 03:22:05 ]
>>472
ユニコードは漢字文化圏を尊重せずに文字数切り詰めて"統合"したりするから
統一しようにもできないわけで。
コンピュータ中心に世の中回ってる訳じゃないからね

478 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 04:02:27 ]
>>476
パイプ

479 名前:468 mailto:sage [2007/12/25(火) 04:17:49 ]
>>474-475 >>477
dくす

ttp://diary.atzm.org/20040523.html
何でreplaceやらignoreなんてオプション指定があるんかなと不思議に思って
調べてみたら、フィルタリングするような用途で便利なんですね。
というかクロスプラットフォームを意識するとsjis+replaceで書いた
ほうが汎用性がありそうでした > unicode(elem, 'sjis', 'replace')
d

480 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:46:02 ]
Python2.5.1のインストーラー版を使っていますがC拡張モジュールをコンパイルするにはVS2003がないと駄目ですか?
VS2008かMingwでコンパイルしたいんですが。



481 名前:デフォルトの名無しさん [2007/12/25(火) 06:11:21 ]
The Art of UNIX Programmingに
スピードが必要な時には、PythonはCのプログラムに変換できる
というようなことが書かれていたのですが
どうやればいいですか?

482 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 06:13:01 ]
FILE* とかやりとりするとダメなんだっけ
オレはDDKに入ってるmsvc8相当でコンパイルしてるけど

483 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 11:26:55 ]
>>476
import subprocess
subprocess.call("dir > d.txt", shell=True)

484 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 11:28:45 ]
>>480
漏れはVC6でCOM利用モジュール作って使ってるけど、問題なく使えてる。

485 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:04:47 ]
ところで公式で配布されてるのは何でコンパイルしてるん?
[MSC v.1310 32 bit (Intel)]
1310言われても分からない


486 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:11:14 ]
>>485
VC6 Ver12.00
VC2002 Ver13.00
VC2003 Ver13.10 *これ
VC2005 Ver14.00
VC2008 Ver15.00



487 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:47:31 ]
>>480
MinGW (gcc 3.2.3) で拡張モジュールのコンパイルできてるよ。

488 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:22:32 ]
>>478
>>483
無事に解決する事が出来ました。
ありがとうございました。

489 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:10:44 ]
>>480
ttp://python.matrix.jp/apps/code_blocks.html


490 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:42:49 ]
Python 使える無料スペースってどこかに無い?



491 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:46:48 ]
xrea

492 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:56:59 ]
seq0 = seq1
seq0[:] = seq[:]
seq0 = [i for i in seq1]
seq0=[]; for i in seq1: seq0.append(i)
ってどれも同じ処理してる?

493 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:17:26 ]
処理は見たまんまでちがうし結果も異なる。
seq0 = seq1は同一オブジェクトを指すことになるが
他はリストを再構築してるので異なるオブジェクト(コピー)になる。

494 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 04:41:10 ]
seq0[:] = seq[:]

495 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 06:49:25 ]
seq0 = seq1
浅いコピー

seq0[:] = seq[:]
普通のコピーになってるが、seq0が初期化されてる必要がある。

seq0 = [i for i in seq1]
普通のコピー

seq0=[]
for i in seq1: seq0.append(i)
普通のコピー

496 名前:419 mailto:sage [2007/12/26(水) 08:48:24 ]
最終的に、演算子を自分で定義しました。
レス下さった方々、ありがとうございました。

class int32(int):
def __int2long(self, n):
if n >= 0:
return long(n)
else:
return long(0xffffffff - n - 1)

def __long2int(self, n):
if n & 0x80000000: # negative
return int(-2**31 + (n & 0x7fffffff))
else: # positive
return int(n & 0x7fffffff)

def __and__(self, y):
return self.__long2int(self.__int2long(self) & self.__int2long(y))

def __or__(self, y):
return self.__long2int(self.__int2long(self) | self.__int2long(y))

def __lshift__(self, y):
n = self.__int2long(self) << y
return int32(self.__long2int(n))

def __rshift__(self, y):
n = self.__int2long(self) >> y
return int32(self.__long2int(n))


497 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 08:52:16 ]
>>490
オマエのパソコン

498 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 10:52:27 ]
>>496
>>> from ctypes import c_int as int32
>>> 2 << 30
2147483648L
>>> int32(2 << 30).value
-2147483648


499 名前:419 mailto:sage [2007/12/26(水) 11:18:35 ]
>>498
ああ、そんなのがあるんですか。
ありがとうございます。知りませんでした。

ただ、2.3でも2.5でも動くようにしたいので、
2.3が消え去るまでは>>496の方法でやろうと思います。

500 名前:デフォルトの名無しさん mailto:ruby1.9 [2007/12/26(水) 16:00:50 ]
2.3が消え去るまでって・・・

オレなんか未だに 1.5.2 で動くコードを書かされてる。
つまり消えない。



501 名前:468 mailto:sage [2007/12/26(水) 16:53:04 ]
そういえば最近読んだironpythonの本にも>>474
encodeとdecodeの書式で取り扱うみたいに書いて
あったな…物忘れが激しすぎな罠d

>>500
ちょっと関連するかもしれないのだけど
PyrexとCythonのコードdiff取って読んでみたら
なんとなくだけどCython微妙

三項演算子、切捨て除算、#ifdef、+=、とか対応してる
けど、なんかコードが助長になってると思う。
error_goto_if_null() とか module.py_result() とか

isingmodel: pyising.pyx@4ecf71b2c0b0
hg.sharesource.org/isingmodel/file/db7dd01cdc26/pyising.pyx
Cに変換する用途なんだからそんなの別にいいじゃんとか
言われると、その通りだとは思うけどさ

というかPyrexのドキュメントがわかりにくすぎるのが
いけないと思うんだ。わかりやすく書こうよ... orz

502 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 16:58:29 ]
ごめん#IfdefはPyrexでも対応してるな

503 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:27:19 ]
>>501
わかりにくすぎる

504 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:07:45 ]
質問です
コードを読むときのエディタは
何を使ってますか?

505 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:20:06 ]
ファイル単位で読むときはVim
プロジェクト単位で読むときはEclipseかな。
われながらつまんない回答だとおもう。

506 名前:デフォルトの名無しさん [2007/12/27(木) 08:12:03 ]
自分用ライブラリってどこに配置するのがいいですか?

507 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:38:58 ]
>>506
どこでもいい。$HOME/lib/pythonとか。
あとは$PYTHONPATHを設定するだけ。

508 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:08:54 ]
djangoでファイルのアップロード試してみたんですが
50MBくらいまでならなんとか平気で動くんですけど
100MB近くになるとサーバー自体が重たくなって
500MBクラスのものを試すと数十分固まったあげく
最後にエラーで中断されてしまいます
python恒例のオンメモリで全部処理する罠にはまってるのでしょうか?
どなたかうまく回避しているかたがいらっしゃいましたら教えていただけないでしょうか



509 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:26:10 ]
え…pythonってオンメモリで全部処理するの…?

510 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:08:37 ]
実装依存の問題を言語のせいにするのはゆとり教育の弊害?



511 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:15:25 ]
ヒソヒソ( ゚д゚)パイソン(゚д゚ )オンメモリ…

512 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:20:58 ]
話がよく分からんのだがディスクスワップのこと?
OSの仕事だと思うんだけど


513 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:36:03 ]
これはひどい
www.youtube.com/watch?v=adN4Zeed-L0

514 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 11:48:07 ]
python の source を色つきでカッコよく印刷するのって
何を使ってますか?

できれば unix 環境で使えるもの希望

515 名前:デフォルトの名無しさん mailto:508 [2007/12/27(木) 14:48:57 ]
聞いた場所が間違ってたようですので移動します

516 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 15:38:31 ]
>>515
つEmacs

517 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 16:34:17 ]
py2htm

とかてきとーにいってみる

518 名前:516 mailto:sage [2007/12/27(木) 17:16:51 ]
アンカー間違った
>>514
つEmacs

519 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 17:22:04 ]
>>517
あー、難しく考えてた。
htmlとcss使えばいいのか。


520 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:42:24 ]
>>519
PyXR: Package c:\python24\lib\site-packages\win32\lib
pyxr.sourceforge.net/PyXR/c/python24/lib/site-packages/win32/lib/

とか見た目がよいかんじなのでおすすめ

[pythonpath]
usePythonpath = 0
exclude =
include = c:\Python25\Lib\xml

という具合にsetting.cfgに指定してあげてpython webserver.pyで
localhost:8088/にアクセスすればすぐ試せるよ

excludeとincludeの指定の仕方がワケわからんからはまると思うけど
たぶん簡単にできるかも。というか俺が知りたい…>>指定の仕方

なんかexcludeで弾いてやらないとsite-pacage下の全ファイルを
ドキュメントに変換し始めて止まらなくなったりすることが…

## pageText.pyも関係あるみたいだったので追記
if __name__ == '__main__':
    pt = pageText("/pysrc", write=open("output.htm", "w").write)
    pt.writeFileText("c:\\python25\\lib\\xml\\__init__.py")
    #pt.writePathText("/c/python25/lib/")
    #pt.writeRootText()



521 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 23:14:07 ]
>>514
a2ps --prolog color がオヌヌメ。


522 名前:デフォルトの名無しさん [2007/12/28(金) 05:57:41 ]
reprって何の略ですか?

523 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 08:24:53 ]
representation(表現)

524 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 08:42:33 ]
ありがとうございます

525 名前:デフォルトの名無しさん [2007/12/28(金) 09:07:44 ]
環境変数PYTHONPATHをpythonコード内で設定しても効かないのでしょうか?
import os
os.environ['PYTHONPATH'] = パス
って感じにしてからimportしてるのですが
うまくimportできません。
コード内でモジュールサーチパスを指定するにはどうしたらいいですか?

526 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 09:32:02 ]
sys.path

527 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 09:47:48 ]
>>526
ありがとうございました

528 名前:デフォルトの名無しさん [2007/12/28(金) 12:17:29 ]
MatchObjectオブジェクトとか
RegexObjectオブジェクトとか
くどくね?
何でオブジェクト二回言うの?

529 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 12:58:47 ]
SCSIインターフェース

530 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:28:40 ]
ということは Object を略して O にすればそんなに気にならなくなるわけだな

MatchO オブジェクト

マッチョ!!



531 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:56:36 ]
>>529
たしかにSCSIインターフェイスっておかしいね

532 名前:デフォルトの名無しさん [2007/12/28(金) 14:02:12 ]
リストの末尾への追加が
list.append('hoge')か
list += ['hoge']しかないのって冗長じゃね?
PHPなら
$list[] = 'hoge'
という書き方ができる。
PHPより冗長ってどんだけ〜

533 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 14:15:58 ]
>>531
おかしくはない。

534 名前:デフォルトの名無しさん [2007/12/28(金) 14:59:41 ]
import〜と
from〜import〜の使い分けってどうやってますか?
何かコツなどあれば教えて下さい。

535 名前:デフォルトの名無しさん [2007/12/28(金) 15:05:45 ]
>>508
Python はリスト処理言語なんだから
そんな低レベルな用途に使っちゃ遺憾

536 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:19:30 ]
ageてるのはみんな釣りなん?

537 名前:デフォルトの名無しさん [2007/12/28(金) 15:26:50 ]
urllib.urlopen()でwikipediaのページを取得すると、
Error: ERR_ACCESS_DENIED
というエラーになります。
どうも拒否られているみたいです。
urllib.urlopen()を使ってwikipediaを取得するにはどうしたらいいですか?

538 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:27:23 ]
>>534
後で読みやすい方で書けばおk

from A import X, Y
これは、ソースの先頭を見たときに X と Y を使っていることが分かる。

import A
これだとソース本文を見たときに
A.hoge()
A.boge()
といった処理がAに依存していることが分かる。


539 名前:537 [2007/12/28(金) 15:43:49 ]
urllibの説明に
現在のところ、以下のプロトコルだけがサポートされています: HTTP、 (バージョン 0.9 および 1.0)
と書かれていました。今時http1.0!?
これってバーチャルホストすらできないプロトコルですよね
もう古いのかと思い
urllib2にしたら、403 forbiddenになりました
googleは問題なく取得できるのですが…
pythonはwikipediaに嫌われている?

540 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:50:46 ]
>pythonはwikipediaに嫌われている?
自分の力量不足をpythonのせいにしやがって。
氏ねよ屑。
User-agentを送ってないから弾かれているだけだろ。




541 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:19:11 ]
>>540
確かにUAをセットしたら取得できました
ありがとうございました

542 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:21:34 ]
HTTPライブラリでデフォのUser-Agentがないのもめずらしなとおもって試してみたら
デフォの"User-Agent: Python-urllib"がブラック扱いされてるようだぜ?
とりあえず>>540は便所掃除で風説の流布は勘弁してやる。

543 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:33:53 ]
やっぱり嫌われてるんじゃん・・・
ブラック扱いってどんだけ〜
グイドがgoogleの従業員だからか

544 名前:デフォルトの名無しさん [2007/12/28(金) 17:05:24 ]
pyscripterでコード書いてるんですが
エディタ部の色が白いので目が痛いです
色をかえる方法あったら教えて下さい

545 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:08:48 ]
pythonでアタックツール書いた奴がいるんじゃね?

546 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:11:03 ]
uaなんていくらでも詐称可能だから
ブラックリスト入りさせることにどれだけの効果があるのか疑問
やはり嫌がらせ的なものとしか考えられない・・

547 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:39:29 ]
cgiの拡張子を.spamにしたのが効いたんじゃね

548 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 18:04:49 ]
ホワイトリスト方式なんじゃねーの?

549 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 18:15:26 ]
pythonに限らず、libwww-perlとかもけっこう弾かれているそうな
www.hazama.nu/t2o2/archives/002711.html

550 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 18:21:03 ]
>>540
wwwwww



551 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:23:35 ]
Pythonでユニコード文字列という場合、文字コードのutf-8とはまったく関係ないのでしょうか?
一般的にはunicodeの実装がutf-8ですよね?

552 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:23:34 ]
>>551
全く関係ないことはないが、関係ない。
unicodeは文字コード、utf-8はエンコーディング方式。

553 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:24:03 ]
Googleの次はWikipediaか。
バーボン送りにしとけ。

554 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:28:59 ]
from
って予約後?

555 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:32:24 ]
うん

556 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:34:32 ]
>>551
>Pythonでユニコード文字列という場合、文字コードのutf-8とはまったく関係ないのでしょうか?
関係ない。
Pythonでいうユニコード文字列は unicode object と
u'foo' / u'\u1234' 形式のリテラル表現あたりのこと。

>一般的には unicode の実装が utf-8 ですよね?
PerlやRubyとかのエンコーディングはね。
Pythonは UCS-2かUCS-4。
Windows, JavaはUTF-16。
(Python以外はうろ覚えだけど)

557 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:40:34 ]
>>> import keyword
>>> "from" in keyword.kwlist
True

558 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 02:49:52 ]
>>549
uaを変更することすら出来ない程低レベルなスパマーが多いから
uaのフィルタリングも一定の有効性はあるってことかな

559 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 08:57:17 ]
>>552 >>556
ありがとうございます。
確認できて安心しました。

unicode(text, "utf-8")
utf-8の文字列をユニコード文字列に変換する

とかで混乱してましたがすっきりしました。


560 名前:デフォルトの名無しさん [2007/12/29(土) 09:06:44 ]
他言語だと
長い文字列を、改行を挟んで記述することがありますが
pythonだと改行が意味を持つのでうまく出来ません

$str = "hogehogehoge" .
"mogemogemoge" .
"pogepogepoge"

みたいな記述法をpythonでするにはどうしたらいいですか?



561 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 09:17:26 ]
>>560
.の変わりに\を使う

562 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 09:25:53 ]
>>561
oh
ありがとうございました

563 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:21:33 ]
>>558
つまり >>540 は spammer を増やした訳だな

564 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 11:47:19 ]
ドキュメンテーション文字列って、文字列だから、
中間コードにされても実際にメモリは占有するよね?
コメントの方がよくね?

565 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:22:35 ]
対話環境でhelp()で見れるという利点もある。
まあメモリの占有が問題になるほど大量にドキュメントを書くこともないだろうし。

566 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:25:13 ]
>>564
勝手に -OO オプションでも付けてろよ

567 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:35:32 ]
PythonでCGI書いてるんですが、コンソールにログを出力する方法はないでしょうか?
今は
print "Content-type: text/html;charset=utf-8\n"
の後に出力してHTMLを返すようにしてるんですがこれだと面倒なので・・・

568 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 15:34:06 ]
content-type:〜

書かなかったらCGIじゃないじゃん

569 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 16:25:33 ]
デバッグで途中の変数の値とか表示させたいだけなんですが。

570 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 16:32:38 ]
CGIなのにコンソール?



571 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 16:33:43 ]
WinならOuptutDebugStringに出してODSモニタで見られそうなもんだが
具体的には知らん。

572 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 17:00:11 ]
>>567
def debug_msg(msg):
  open('/tmp/debug.log', 'a').write('** debug: ' + msg + '¥n')
を定義して debug_msg('var='+repr(var)) とかして使う。
そしてコンソールで
tail -f /tmp/debug.log
とすれば、デバッグメッセージが表示される。
本格的にするにはloggerかなんかを使うんだろうけど。

573 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 17:15:37 ]
>>569
cgitbって言うの使えば、エラー起きた前後の関係ありそうな変数の中身
自動で表示してくれるよ。

import cgitb; cgitb.enable()

574 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 18:40:08 ]
>>572
closeはいつすればよいですか?

575 名前:デフォルトの名無しさん [2007/12/29(土) 18:44:46 ]
>>572
flush はいつすればよいですか?

576 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:08:48 ]
質問。
ファイルからバイナリデータを読み込んで
1バイト毎の数値のリストとして扱いたいんですが
文字列から数値への変更方法がわかりません。
すいませんが教えてください。

577 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:10:57 ]
chr ord

578 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:24:48 ]
>>577
ありがとうございます! できました!

579 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:37:23 ]
>>574-575
どちらもしなくていいですよ

580 名前:デフォルトの名無しさん [2007/12/29(土) 20:12:20 ]
>>574-575
def debug_msg(msg):
open('/tmp/debug.log', 'a', 0).write('** debug: ' + msg + '\n').close()



581 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:20:13 ]
そもそも毎回open()するのが。。。
CGIならstderrに出せばWebサーバのログに残るし
たいがい出力先もサーバの設定で変えられる。

582 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:25:23 ]
Pythonで動くRubyやPerlって誰か作ってないかな。すごく欲しくなってきた。
変態っぽい環境だけど、将来需要ありそうな予感。

583 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:35:12 ]
変態的という以外の利点を教えてくれ

584 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:46:26 ]
execvで充分

585 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:57:31 ]
>>583
Linux/Unixの各所に残っている腐れ縁のPerlのツールをPythonで
動かせれば、Perl猿人を入れなくて済む。
それとCRubyよりCPythonの方が規模というか依存が少ないので
小が大を兼ねる状態になっていい感じと思った。

これが実装できればグーグルに入社できるかもね!

586 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 22:09:21 ]
>>582
Rubyなんて絶対に必要ないだろwww

587 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:35:14 ]
Is perl interpreter that written in python perl or python ?

588 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:58:34 ]
>>587
その英語ネイティブに言っても通じないわ(wwwwwwwwwwwwwwwwwww

589 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:16:02 ]
ネイティブが書かない英語だが、「まるでわからん」と言い出すネイティブがいたら、
そいつは単なる馬鹿か、あるいは「レスって何ですか?」とか言っちゃうタイプだな。

590 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:22:30 ]
わかりやすく2文に分けろ。



591 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:26:14 ]
perl interpriterの後は
that(which) is written in Python か
writenn in Python
じゃね?
それと、Per、Pythonみたいな固有名詞は大文字から始めるんだぜ。
 
 
 
おまいの英語、中学生からやり直した方がよくね?

592 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:27:24 ]
>>589
文法的に間違っている英語が分からないと馬鹿呼ばわりされるのか.
よい勉強になったよ.

593 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:28:39 ]
なんつーか・・・ム板ってスルー力ゼロだよな・・・

594 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:47:30 ]
高卒の俺が考えてみた。添削おね。
Is it Perl or Python which is a Perl interpreter written in Python?
冗長だから、Is it Perl or Pythonで一回切りたい。見出しっぽく。
Is it Perl or Python, a Perl interpreter written in Python?
みたいな書き方っていかんのだろうか。

ttp://jp.youtube.com/watch?v=VezP6yqhs9k

595 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:03:08 ]
インタプリタがどの言語か、ってとこから可笑しいだろ…

596 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:12:26 ]
いや、そんな直訳で受け取られても…。
>>587>>582に対する皮肉として書かれたんだろうし。

597 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:15:56 ]
文法的に間違っている英文なんて直訳すらできないだろ(wwwwwwwwwwwwww

598 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:23:46 ]
firefoxでURLを開くことを試しています。環境はUbuntu7.04です。
成功
os.system("firefox yahoo.co.jp")
subprocess.Popen(["firefox", "yahoo.co.jp"])
subprocess.call(["firefox", "yahoo.co.jp"])
失敗
os.spawnlp(os.P_WAIT, "firefox", "yahoo.co.jp")
os.spawnlp(os.P_NOWAIT, "firefox", "yahoo.co.jp")
なぜspawnだとうまくいかないのでしょうか。

599 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:25:17 ]
>>596
だから中学生からやりなおせって(WWWWWW

600 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 03:49:15 ]
print 'a','b'

ってやるとaとbの間に空白が入って「a b」って出力されるけど
この空白を挿入させないようにする方法ってありませんか?



601 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 03:55:36 ]
print 'a' + 'b'
区切りで半角スペースが入るのは仕様ってどっかに書いてた。

602 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 04:15:01 ]
>>601
トンクス。
仕様なら諦めます。

603 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 04:19:54 ]
printうんぬんの話題を見てて思うのだが、
これって対話モード時のリターン値の"表示"の延長であって、
プログラムの"出力"用途じゃない希ガス。


604 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 04:54:00 ]
>>598
質問からは少しずれるけど
標準ライブラリにwebbrowser.open(url)っていうのがあるよ。
2.5からはブラウザのタブにも対応してる。

605 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 07:25:37 ]
前スレ
pc11.2ch.net/test/read.cgi/tech/1192884897/

547 :デフォルトの名無しさん:2007/11/18(日) 21:51:04
printで一文字ずつ表示させると、間にスペースであいてしまうのはなぜ?

例)
x="hoge"
for y in x:
print "%c" % ord(y),

出力:
h o g e

548 :デフォルトの名無しさん:2007/11/18(日) 21:56:38
print i, j, k, l としたときに見やすいから


549 :デフォルトの名無しさん:2007/11/18(日) 22:10:06
printは主にデバッグ用だから


くっつけたいなら、print''.join("%c" % ord(y) for y in x)

550 :デフォルトの名無しさん:2007/11/18(日) 22:15:11
sys.stdout.write()でもいいよ


606 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:20:54 ]
Python3.0では

print(1,2,3) # 1 2 3
print(1,2,3,sep='') # 123
print(1,2,3,sep='|' # 1|2|3

607 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 14:34:19 ]
)

608 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 14:37:01 ]
python で書かれた 2ch ブラウザってありますか?

609 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 14:46:45 ]
昔あったな

610 名前:デフォルトの名無しさん [2007/12/30(日) 16:02:26 ]
webprogramを書くにあたっての
python特有の強みって何ですか?



611 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:03:10 ]
特にありません

612 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:56:29 ]
WebアプリケーションでPHPとPythonどっちがいい?

613 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:16:26 ]
PHPに決まってるだろハゲ

614 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:23:36 ]
PHPはなんちゃって仕様が多すぎていややもう

615 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:24:11 ]
あえて挙げるならASP

616 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:31:46 ]
>>614
kwsk

617 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:52:49 ]
外人のPythonの発音がどうしてもパイパンにしか聞こえません><

618 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:04:20 ]
>>617
耳がわるいもしくは脳内エロ辞書が充実しすぎ。

619 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:13:01 ]
>>480
VS2008だとRuntimeErrorが発生してVS2003でコンパイルしてくださいというエラーメッセージが表示される。

620 名前:デフォルトの名無しさん [2007/12/30(日) 21:17:56 ]
>>600どれでも好きなの使へ
print 'a''b'
print 'a' 'b'
print 'a'+'b'
print '%s%s'%('a','b')



621 名前:デフォルトの名無しさん [2007/12/30(日) 22:07:35 ]
Microthreadを使いたいんだけど、Stackless Pythonとgreenletだとどれぐらい速度が違うの?
たぶんStacklessのほうが速いと思っているんだけど。

622 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:15:48 ]
>>612
ttp://q.hatena.ne.jp/1198821703

623 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:18:22 ]
またruby厨かよ、もういいよ

624 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:02:20 ]
pythonでmdbに接続するにはどうしたらいいのでしょうか?
win32com?

625 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:12:03 ]
「pythonで」の「で」って何よって話

import win32com.client
import adodb

OpenOffice.org Scripting with Python



626 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:28:03 ]
説明不足ですまんこ

pythonを使ってMSAccessを操作したいのです。
INSERTなどはどうしたらいいのでしょう?

ちなみにみなさん開発環境ってなに使ってます?
やっぱりテキストエディタ?


627 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:33:38 ]
>>626
ttp://xwave.exblog.jp/6474694/

628 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:46:12 ]
pythonからmdb操作とか需要ないのかね・・・

説明少なすぎて解りません。
実力がないだけか

629 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:50:58 ]
win32comで繋ぎに行くだけであとはVBからやるのと大差ないんだが
そのwin32comの説明が少ないという罠

単にDB使いたいだけならSQLite使っちゃうしね

630 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:14:25 ]
既にmdbを使用してる状況なのでSQLLiteっていう選択肢はないので・・・

詳しい説明が掲載されている場所はないですかね?



631 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:18:44 ]
つか、何が分からんのか分からん。

632 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:07:24 ]
xwave.exblog.jp/m2007-02-01/

633 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:22:37 ]
cn = win32com.client.Dispatch('ADODB.Connection')
cn.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb')
cn.Execute(u"insert into 日本語テーブル (fileda, fieldb, 日本語フィールド) values (%d, '%s', '%s')" % (5, '6', u'七'))
rs = win32com.client.Dispatch('ADODB.Recordset')
rs.Open(u'select * from 日本語テーブル', cn, 1, 3)
while not rs.EOF:
print '%d, %d, %s, %s' % (rs.Fields('id').Value, rs.Fields('a').Value, rs.Fields('b').Value, rs.Fields(u'日本語フィールド').Value, )
rs.MoveNext()
rs.Close()
cn.Close()

634 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:54:31 ]
おぉ、コード書いてもらえると解りやすか!

pythonはじめたばかりだけど、みんなどんな用途に使ってる?

635 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 13:09:58 ]
バッチ処理に関数計算機にGUIアプリにwebアプリに…
ようするになんでも。

636 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:07:17 ]
テキスト処理周りでいろいろ。

637 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:19:39 ]
単調な作業とかをこなすときに、小さなツールガリガリ書いてる


638 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 19:22:50 ]
僕たちが従事するドカタ仕事には欠かせないアイテムですね!

639 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:43:29 ]
俺はドカタ仕事はJava使ってるので
Python弄ってると心が癒される

640 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:58:23 ]
>>639
ドカタ乙(wwwwwww



641 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:29:41 ]
>>639
会社で年越しでつか?

642 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:52:43 ]
そうです

643 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:03:04 ]
使い捨ての低賃金労働者が、会社で年越しか。
Pythonで憂さ晴らしでもしないと、やってられないよね。

644 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:12:36 ]
職業人はマ板いってくれんか

645 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:14:06 ]
そうそう。
ここはニートでPython覚えればGoogleに入れると信じて疑わないメルヘン専用のスレですよ。

646 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:07:05 ]
x メルヘン
o メンヘル


647 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:32:03 ]
幾スレにも渡ってメルヘンと書き続けて来た>>645
よいお年を

648 名前: 【大吉】 【233円】 mailto:sage [2008/01/01(火) 00:07:51 ]
ことよろ


649 名前: 【ぴょん吉】 mailto:sage [2008/01/01(火) 00:09:32 ]
ことしもPythonよろ

650 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:11:36 ]
あけおめ
Python3000とそれに隠れがちなPython2.6に期待



651 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:22:47 ]
会社で年越しでつ
ことよろ

652 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 04:45:59 ]
Python2.99999....とかで止まらないかなぁ。

653 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 05:41:10 ]
2.999... という循環小数は 3 と等しいんだぞ。

654 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 05:44:51 ]
2.9.6
2.9.7
2.9.8
2.9.9
2.9.9.1
2.9.9.2
...
2.9.9.9
2.9.9.9.1
...
2.9.9.9.9


655 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 06:10:11 ]
2.999....999...
==
3.1.0 !!!

656 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 07:31:33 ]
おめでとうございます

657 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 09:02:20 ]
>>655
それはない

2.6の次の2.7で2.xシリーズは終わりで、
メンテナンスリリースが2.7.1.8.2.8... という妄想ならしたことある

658 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 09:25:33 ]
なにそのMETAFONT

659 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:56:21 ]
>>652
それはRubyで期待しろwww

660 名前:デフォルトの名無しさん [2008/01/01(火) 21:27:28 ]
py***/&+



661 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 18:23:26 ]
defFnRule = "([0-9][0-9])__(.*)"
ldir = os.listdir( os.getcwd() )
for fn in ldir:
  chk = re.match( defFnRule, fn )
  if chk != None :
    matchList = re.findall( defFnRule, fn )
    newName = matchList[0] + "_" + matchList[1]
    print "New:>> [%s]" % newName

こんなコード書くと、
newName = matchList[0] + "_" + matchList[1]
ここで怒られるんだが…
連結できるのはstrではなくタプルだ…って意味が良く分からんのですが…。

662 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 18:48:30 ]
>>> import re
>>> L = re.findall('(\d\d)__(.*)', '00__foo.txt')
>>> L
[('00', 'foo.txt')]
>>> L[0] + '_'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple

663 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:07:16 ]
>>662
ありがとう。いろいろいじってて、どうも根本的に二重リスト?みたいになってるのは理解した。

    n0 = matchList[0][0]
    n1 = matchList[0][1]
    newName = n0 + "_" + n1
    print "New:>> [%s]" % newName

こんな感じで稼働するのは確認。
でも、なんで二重になったのか、よくわからん。
python、悪くない感触なんだけど…うーん。

664 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:10:33 ]
newName = chk.group(1) + "_" + chk.group(2)

665 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:45:40 ]
>>663
defFnRule内に複数のグループがあるから

>>> import re
>>> re.findall("(.)(.)", "123456789")
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]

666 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:11:31 ]
>>663
つまりこんな感触だといいわけだなw

re_once : あるかないかだけの正規表現モジュール(新規)
re : re_onceに加えてnまで使える正規表現モジュール(既存)


ついでにfor、rangeとかも増やした方がいいな

for_once : 0(実行しない), 1(1回だけ実行)
for_n : 0(実行しない), 1(1回だけ実行), n(n回実行)

range_0() : []を返す
range_1() : [0]を返す
range_n(n) : [0,1,2...n-1]を返す


667 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:11:39 ]
>>664も書いてるように
いっぺんre.match()して結果chkを得てるのに
またre.findall()するのは如何なものか。

668 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:16:38 ]
>>661
ldirとかchkとか、わざわざ変数用意するの読みづらくね?

669 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 21:06:21 ]
その前に正規表現をコンパイルしろよ

670 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:21:47 ]
>>661
どこ出身だ
なんかmicrosoftのコードを思い出すんだが



671 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:24:30 ]
二重になってる理由は、つまり正規表現の処理対象にListが取れるから、でいいのかなぁ
いや、>>665見ると違うなぁ…。というか、これは俺が正規表現良く分かってないのも原因かな。

>>669
ごめん。でもファイル名の一括変更やるだけの作り捨てscriptだし、ついでにお試しでpython使っただけだから。
>>668
否定しないw
>>667
言われてみればその通りだなぁ。
要は条件に合わないファイルを無視しようとして、なんとなく書いてたらああなっただけで、他意はない。


672 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:25:51 ]
>>670
色々。C++、Java、PHPとか。
でも出身という話になると…N88BasicとかVBとかってあたりかも。
とりあえず、動いたんで、もう消えまする。
ありがとうございました。>皆様

673 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:43:24 ]
re.match でコンパイルされてキャッシュされるからいいじゃない

674 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:30:38 ]
>>673
前から気になってたんだけど、re.matchとかre.searchってコンパイルした正規表現をキャッシュしてくれるのかな?
それってどっかに書いてある?

675 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:41:02 ]
ソースに書いてある。


676 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:42:27 ]
re モジュール見るとキャッシュしてるね
ただ _MAXCACHE = 100 を越えるとキャッシュを全てクリアするようになってる

677 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:43:01 ]
re.py:

_cache = {}
_cache_repl = {}

_pattern_type = type(sre_compile.compile("", 0))

_MAXCACHE = 100

def _compile(*key):
    # internal: compile pattern
    cachekey = (type(key[0]),) + key
    p = _cache.get(cachekey)
    if p is not None:
        return p

678 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 11:01:39 ]
keyの計算の手間ぶん損してない?

679 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:19:59 ]
>>671
4. パターンにもっと力を
www.python.jp/Zope/articles/tips/regex_howto/regex_howto_4
Python reモジュールで使える正規表現演算子
www.kt.rim.or.jp/~kbk/regex/pythonre.html

>>> p = re.compile('(a(b)c)d')
>>> m = p.match('abcd')
>>> m.group(0)
'abcd'
>>> m.group(1)
'abc'
>>> m.group(2)
'b'

>>> m.groups()
('abc', 'b')

グルーピングまわりで躓いてると思う。match とか search の項目は
解説してるとこ多いけど よく使う findall はあまり解説されてない罠。
findall は厳密には正規表現にはカテゴライズされないからか…

680 名前:679 mailto:sage [2008/01/03(木) 16:50:03 ]
>>671
ttp://kazamachi.blogspot.com/
>具体的には、ElementPathはXPathを分解するのにre.filndall()メソッドを使ってリスト
>の要素としてタプルが含まれていることを期待しているのですが、IronPython 1.0.1の
>re.findall()メソッドはリストのみを返すためにエラーとなります。

ごめんたぶんグルーピング関係ないw



681 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:12:25 ]
なんという不思議レス

682 名前:679 mailto:sage [2008/01/03(木) 18:41:20 ]
>>> re.findall("(.)(.)", "123456789") ## [Tuple(g(0),g(1)),…]
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]

>>> re.findall("((.)(.))", "123456789") ## [Tuple(g(0),g(1),g(2)),…]
[('12', '1', '2'), ('34', '3', '4'), ('56', '5', '6'), ('78', '7', '8')]

>>> re.findall("(..)", "123456789") ## [g(0),…]
['12', '34', '56', '78']

やっぱグルーピング関係あるかも orz

683 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 18:43:39 ]
>>681
俺も勉強中なんよ(爆)
スルーしる

684 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:05:09 ]
ヒント: help(re.findall)

685 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:15:09 ]
>>682
グループの数によって変わる。
グループなし、グループ一つはマッチリストかグループリスト
>>>re.findall('test','testtesttest')
['test', 'test', 'test']
>>>re.findall('(tes)t','testtesttest')
['tes', 'tes', 'tes']
複数のグループはグループをタプルで返してマッチしたものをリストで返す
>>> re.findall('(t)e(s)t','testtesttest')
[('t', 's'), ('t', 's'), ('t', 's')]

686 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:24:47 ]
((.)(.)) グルーピングが三つ揃っておっPython

687 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:32:54 ]
誰か使いやすい開発環境教えてちょんまげ


688 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:43:52 ]
Pythonじゃないけど
某スレで脳内環境が最強だと話題になってた

689 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:45:37 ]
クセのある環境ばかりで使いづらい
みんなどんな環境?

690 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:06:50 ]
>>689
テキストエディタ(emacs or vi)



691 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:10:37 ]
クセありすぎだろそれ

692 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:47:05 ]
俺もvimなんだけど。最初はバカにしてたけど、
pythonに限って言うとかなり使いやすい。

693 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:53:56 ]
idleとpydevを使ってます
idleは軽くていいんだけど、補完がpydevに比べるといまいち
ただpydevはstdinとかのエンコーディングがNoneになっていて
文字コードの変換とかしたらこけて、その解決法が良く分からないのが難しい
このスレのPert20にその話題が出ているみたいなんですけど、誰か>>1のまとめサイトに
アップしていただけないでしょうか?

694 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:11:24 ]
>>692 vimで補完できる??

695 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:23:08 ]
俺はxyzzyでpy-modeだな

696 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:41:50 ]
ソースの中に日本語書かないならPythonWinで結構用が足りてる。

697 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 03:52:45 ]
>>694
もちろん。

698 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 05:01:34 ]
>>594
ようつべわらた

699 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 05:36:55 ]
みなさん4tabですか?2tabですか?

700 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 05:51:50 ]
デパは0.5mgでも4tabだと爆睡しちゃうので2tが限界かな



701 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 08:13:08 ]
>>697
vimの補完てomni?

702 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 09:36:03 ]
いろいろ試したけどPyDevの補完が最強

703 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 09:36:24 ]
>>699
4タブ

704 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:22:11 ]
>>702
Eclipseって起動もっさりしてね?

705 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:28:31 ]
どんなIDEでも基本的にはモッサリしてる

706 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:35:09 ]
Eclipseはプラグインしだい。
何も入ってないのを立ち上げたらびっくりするほど速かった。
立ち上げただけで何も出来なかったけど。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 11:40:23 ]
How many projects do you open in same workspace ?

708 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 13:24:54 ]
>>707
14

709 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 13:25:59 ]
Zero, I mean I'm on wintervacation NOW (wwwwwww.

710 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:11:25 ]
みんなemacsかviだと思ってた
・・しかしpythonをeclipseで書くって凄いな。想像したことも無い
なんか嬉しい事ある?起動もっさりでイラつかない?




711 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:48:38 ]
>>710
CVSとかsvnとかとの連携が楽>eclipse

712 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 17:32:56 ]
>>711
710はソースコード管理をしない人なんだよ。
その必要がないんだろう。
なぜなら(ry

713 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 18:29:14 ]
emacs にも pcvs とか psvn とかあるのに…


714 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:11:59 ]
>>710
さすがにviはないな。vimは良いと思うけど。

>>712
EclipseはJavaでは使うけど、他の用途では便利だとはおもわんなぁ。
cvs/svnクライアントも別にIDE連動である必要って感じないし。

でもまぁPythonはスクリプト言語にしては開発環境充実してるよね。
そうやってどれがいいとか選べるのも面白い。

715 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:45:36 ]
vi

716 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:53:04 ]
>>704
朝起きたら一度起動してずっとそのままだから

717 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 12:47:17 ]
「経験上、ほとんどのプログラマは以下の『宗派』のいずれかに分類される」

経験カルト 最適化カルト 簡単カルト 高速カルト
不確実性カルト 完璧カルト カーゴ・カルト

ttp://slashdot.jp/developers/08/01/04/001246.shtml

718 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:37:07 ]
俺は完璧カルトか・・・

719 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:12:43 ]
元記事読んだけど、自分は簡単カルトだった。
Uncertainty Cultはカルトというよりはただの慎重派のような・・

720 名前:デフォルトの名無しさん [2008/01/05(土) 20:23:07 ]
macでpythonを始めました.
IDLEで日本語を扱えるようにするにはどうすれば良いですか?
お願いします



721 名前:デフォルトの名無しさん [2008/01/05(土) 20:26:57 ]
質問板で聞いてきます
スレ汚しすいませんでした

722 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 11:51:13 ]
これから勉強するならバージョン3系と2系どっちがいい?

723 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:05:00 ]
>>722
いまから始める程度の知識ならどちらも変わらない罠

安定しているor手に入っている処理系を使えばよかろ

724 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:51:39 ]
3で勉強は無理

725 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:54:13 ]
Py2.0 から Py3.0 への移植に当たって
/ 演算子の挙動変更が一番怖い。
気づかぬところで何かが起こりそうだ

726 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 14:23:15 ]
>>725
Introduction to Crunchy tutorial video - Crunchy - Learn: programming_tools, demonstration, open-source, cross-platform, interpreter, Python, interactive
showmedo.com/videos/video?name=1430000&fromSeriesID=143

切り捨て除算//が、普通の除算/になるんだっけか
どこに書いてあるんだ3.0の仕様とか,よくわからん

727 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 14:45:04 ]
この辺りじゃね?
ttp://www.python.org/dev/peps/pep-0238/
ttp://docs.python.org/dev/3.0/whatsnew/3.0.html

728 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:19:41 ]
py3000のやること、やらないことリスト
www.python.org/dev/peps/pep-3099/
www.python.org/dev/peps/pep-3100/

729 名前:デフォルトの名無しさん [2008/01/06(日) 16:06:13 ]
Alarm clock と表示されて終了してしまう場合,
何が問題でしょうか?
どの部分が問題なのかわからないので対処できずに困っています

730 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:17:37 ]
再現コードが張られないので対処できずに困っています



731 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:40:00 ]
>>726


732 名前:デフォルトの名無しさん [2008/01/06(日) 18:36:24 ]
「みんなのpython」 という本を買ったのですが
52pくらいで既に何をしてるか意味がわかりません。
そんな僕でも↑で挙げられていた「pythonで学ぶプログラム作法」
を理解することができるでしょうか?
他にも初心者に分かりやすい入門書があれば教えてください。

733 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:16:54 ]
>>732
Pythonの前に一般常識や日本語を勉強した方がいいと思うぜ。

734 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:27:53 ]
>>732
その本はたぶん一番易しい部類に入る。
もう一冊入門書を買うのは無駄だから、
何がわからないのか整理してからここで質問すべし。
あと対話型シェルでサンプルコードを試すこと。

735 名前:732 [2008/01/06(日) 20:51:17 ]
ありがとうございます!
頑張って理解できるようにしてみますっ!

736 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:45:38 ]
便乗
初めてのPython買ったんですが、
表紙の絵の意味がわかりません。
なぜねずみなんですか?

737 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:51:34 ]
Pythonクックブック(ウサギ)と並んで、蛇の獲物説が過去スレで言われていたな。

738 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:53:22 ]
日常の細々とした用途なら最初の50ページくらいで間に合うんだよ。
イテレータとかオブジェクト指向とかわざわざ使うこともない

739 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:09:59 ]
プログラミングPythonはヘビだからそれで我慢しる
あとはPythonシリーズ全部ヘビだと見分けが付かなくてよろしくないってのもあるかと

>>738
なんて本の最初の50ページ?

740 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:12:52 ]
>最初の50ページ
初めてのPythonならビルトインオブジェクトの項にすら入っていないな



741 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:37:56 ]
みんPyで確認したらリスト操作の途中だった。
116ページまでは頑張ってみましょう。
みんPyは用例不足なんで、説明の手際はいいけど
プログラムが初めての人にはイメージ沸きにくいね

742 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 02:53:09 ]
ちょっと端末の再起動をpythonでやりたいのですが、どう書いたらいいのか教えてください

743 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 02:59:56 ]
>>742
> ちょっと端末の再起動
ここをもっと環境含めて明示的に書いたら教えてくれるかも。

744 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:11:32 ]
携帯のsymbianってOS積んでるX01NKなんです。他のNOKIAでも同じなんですが。。。
WMだと.netで簡単にできたのですが、pythonでもやろうとおもって適当に連想できるコマンドで書いても再起動できないのでどのように書いたらいいのかと思いまして


745 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:20:22 ]
X01NKって法人向け専用でしょ?
会社の端末で遊ぶんじゃありません。

746 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:25:46 ]
いえ、個人で買いましたよ。何せ学生ですからw

747 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:31:46 ]
ttp://slashdot.jp/~patagon/journal/413497


748 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:48:04 ]
ありです。
でも、それだと、ネットワーク越しのPCを再起動する方法っすよね?オイラがやりたいのは携帯自体を再起動させる方法なんす

749 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 06:03:15 ]
対象は決まってるんだし、元の方法からその指定部分削れる分、
かえって楽なコードじゃないかと思った俺素人

750 名前:デフォルトの名無しさん [2008/01/08(火) 11:28:43 ]
PyDev使ってる方で、IronPython 設定できた方いらっしゃいませんか?
設定しようとすると 以下のエラーが出ます。
...
eclipse\plugins\org.python.pydev_1.3.10\PySrc\interpreterInfo.py, line 15, in Initialize

  File , line 0, in __import__##4

ImportError: No module named os

調べてみたところ 環境変数 IRONPYTHONPATH に %PYTHONPATH%\Lib を 設定すると出来るらしいのですが、ダメでした。
参考:sourceforge.net/tracker/index.php?func=detail&aid=1535901&group_id=85796&atid=577329

よろしくお願いします。

環境
  WinXP
  Eclipse 3.3.1.1
  PyDev 1.3.10
  CPython2.5.1
  IronPython1.1





751 名前:750 [2008/01/08(火) 11:51:45 ]
>>750 です。
パソコン再起動したらできました。
Eclipse を 再起動してもできなかったのに。。。

スレ汚しごめんなさい

752 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:08:48 ]
>>751
ランチャーとかから起動すると、
ランチャーが起動したときの環境変数しかみなかったりするよ。

753 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:20:14 ]
×ランチャー
○ローンチャ

754 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:04:52 ]
>>753
△ゲンマイチャ

755 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:13:50 ]
燃えるお兄さん?コアすぎるだろ常考

756 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:16:17 ]
>753
◎launcher

757 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:04:00 ]
Δ隠されし 禁断の ゲンマイチャ

758 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:18:25 ]
>>752
☆ラウンチャの男

759 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 04:50:25 ]
ロケットローンチャ

760 名前:750 [2008/01/09(水) 07:23:53 ]
>>752

それだ!
ランチャ使ってます。
なるほど、以後気を付けます

ありがと!



761 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:40:55 ]
CでPythonの独自クラスを定義して、さらにそれを継承したクラスもCで記述する場合って、
継承とかどうやるの?
ttp://www.python.jp/doc/release/ext/dnt-basics.html
ttp://www.python.jp/doc/release/api/type-structs.html
を見ながらやってるんだけど、継承して作る場合がいまいち良く分からない。

例えば、継承元クラスの構造体が
typedef struct {
PyObject_HEAD
PyObject *first;
PyObject *last;
int number;
} Noddy;
だったとして、これを継承したクラスを作りたい場合は
typedef struct {
 Noddy noddy;
 int mydata;
} NoddyEx;
でいいのかね? そのうえで、継承元 Noddy の PyTypeObject である noddy_NoddyType を
noddy_NoddyExType の tp_base に指定すればいいんだよね。
ただその場合、 tp_alloc とかの実装はどうなるんだろうか。今のところゼロで初期化して
継承元の設定を使ってるけど、NoddyEx で新たに確保しなきゃならない項目がある場合に
どう書いていいのかよくわからん。

762 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:47:14 ]
あと、
def __init__(self, A, B=0, *args, *kwargs):
 SUPERCLASS.__init__(self, *args, **kwargs)
 ...
に相当するコードをCで書く場合、*args と **kwargs の処理ってどうやってる?

int b=0;
PyObject* kw = PyDict_New();
PyDict_Update(kw, kwargs);
PyObject* val = PyDict_GetItemString("B", kw);
if (val) {
 b = PyInt_AsLong(val);
 PyDict_DelItemString(val);
}

て感じで、キーワード辞書のコピーを取っておいて、必要な値を pop してから
残骸を SUPERCLASS.__init__ (に相当するC関数)に渡す?

763 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:50:10 ]
まちがえた
PyObject* val = PyDict_GetItemString(kw, "B");
if (val) {
 b = PyInt_AsLong(val);
 PyDict_DelItemString(kw, "B");
}


764 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 09:20:42 ]
ローンチャ・ストラトス

765 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:15:58 ]
質問失礼します。

def ptest( *a ):
  for b in a: print b,
  print ""

上記の関数呼び出しを、

ptest( "a=", 1, " b=", 2 )
ptest( "a=%d,%s" %( 1, "hoge" ) )

などではなく、通常のprint文のように、

ptest "a=", 1, " b=", 2
ptest "a=%d,%s" %( 1, "hoge" )

としたいのですが、どうしたら良いでしょうか?
分かる方お願いします。

766 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:29:52 ]
できないよ。考え直すといいよ。

767 名前:デフォルトの名無しさん [2008/01/09(水) 12:49:54 ]
ttp://gihyo.jp/dev/feature/01/python3000/0001

768 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:53:13 ]
>>765
関数呼び出しと文はまったく別物。文は自分では作れない。

769 名前:765 mailto:sage [2008/01/09(水) 13:29:31 ]
>>766
>>768
勉強になりました。
ありがとうございました。

770 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:32:44 ]
>>761
boost.pythonじゃだめなの?
d.hatena.ne.jp/niitsuma/20080108




771 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 16:58:23 ]
>>765
ruby

772 名前:デフォルトの名無しさん [2008/01/10(木) 02:57:18 ]
pythonにおける変数名等の標準的な命名規則って何ですか?

773 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:02:13 ]
>>772
PEP 8 -- Style Guide for Python Code
www.python.org/dev/peps/pep-0008/

774 名前:デフォルトの名無しさん [2008/01/10(木) 03:25:17 ]
/bin/sh シェルのバッククォートを置き換える
www.python.jp/doc/release/lib/node235.html
これってshより複雑になってないですか?
もっとシンプルに`command`を実現することはできないのでしょうか?

775 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:27:34 ]
>>772
www.oldriver.org/python/pep-0008j.html

776 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:30:08 ]
コマンドの出力を取りたいだけならcommands.getoutput('command')でいいんでない

777 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:37:06 ]
>>776
こんなのあったんですね
ありがとうございました

778 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 06:25:05 ]
>>774
ttp://python.matrix.jp/tips/mini-tips.html
>>> args = ['python', '-c', 'print raw_input()']
>>> from subprocess import Popen, PIPE
>>> proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
>>> proc.stdin.write('input text')
>>> proc.stdin.close()
>>> proc.wait()
0
>>> print proc.stdout.read()
input text

>>> print proc.stderr.read()

>>>


779 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 06:28:48 ]
より現実的な例ではこうなるでしょう:

try:
retcode = call("mycmd" + " myarg", shell=True)
if retcode < 0:
print >>sys.stderr, "子プロセスがシグナルによって中止されました", -retcode
else:
print >>sys.stderr, "子プロセスが終了コードを返しました", retcode
except OSError, e:
print >>sys.stderr, "実行に失敗しました:", e


780 名前:デフォルトの名無しさん [2008/01/10(木) 10:02:17 ]
>>777
PEP 8を知らない奴がPythonやるなよ



781 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:34:43 ]
>> 780
「愚かな一貫性は小人物に憑いたおばけである」

782 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:50:01 ]
おばけ(wwwwwwwww
幼稚園児かよ(wwwwwwwwwwwwwwwwwwwwwwwwwwwww

783 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:57:02 ]
おばけ。
おばけ怖いね。たしかに怖い。
愚かな一貫性を捨ててPerlをやることにするよ。

784 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 11:08:49 ]
おばけより人間の方が怖い

785 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 11:12:54 ]
まんじゅうもこわい。
ついでにお茶もこわいんだけど。

786 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 14:13:05 ]
>>775
>プログラミングにおける推奨案
> - ソースコードは Python の実装(PyPy、Jython、IronPython、Pyrex、
> Psyco など)ごとの欠点を引き出さないように書くべきである。たとえば、
> CPython が a+=b や a=a+b などの文字列連結をインプレイス処理して、効
> 率よく動作する実装に依存してはならない。これでは Jython での動作が遅く
> なってしまう。パフォーマンスに敏感な部分では、''.join() を使うべき
> である。こう書いておけば、様々な実装において、連結処理は線形時間で
> 処理できる。

PythonSpeed
newworld.ddo.jp/doc/PythonSpeed

合わせて読みたい。

787 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 15:17:15 ]
Pythonの文字列って不変だから、+=演算子の振る舞いはあくまで
  s = s + "hoge"
  s = s.add("hoge")
であって
  s.add("hoge")
では無いんだよな。

Pythonを始めたころは+=演算子ないのかよと思っていたら
仕様拡張されて文字列にも適用されたけど、
今になって思えば失敗な気がする。
(何で当時の俺はまんせーしてたんだか…)


788 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:01:26 ]
>>782
別に幼児語じゃないぞ。

789 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:29:49 ]
問題はおばけではなく小人物の方だからな
つまりどこに行っても同じ

790 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:22:38 ]
はいはい。
おばけこわい。小人物こわい。



791 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:41:20 ]
>>789
このねちっこさは小人物の仕業だろ常識的に考えて(wwwwww

792 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:22:58 ]
>>786
PEP8の次にくるようにブックマークしたー

って、setオブジェクトってなんだよ…(しょっぱなで躓く)

793 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:39:49 ]
>>787
In Java, we had well known it's difference same as 'String / StringBuffer'.


794 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:59:28 ]
英語ダメな人キタコレwww

795 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:10:09 ]
Would you please correct it?

796 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:34:39 ]
とりあえず日本語でおk

797 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:38:47 ]
どこから直して良いのかわかんないけど・・・
とりあえず過去完了は昔のある出来事以前のことをあらわすので
そこを現在完了に変えて、ついでに時制の一致とかも考えて・・・
You'd know it as defference between String and StringBuffer in Java.
ぐらいじゃないの?

798 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:39:28 ]
It totally SUCK !!

799 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:40:41 ]
sucksな。

800 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:46:24 ]
「愚かな一貫性は小人物に憑いたおばけである」




801 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:58:18 ]
kinnnen mare ni miru kuso sure no nagare

802 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:05:30 ]
>>801
典型的なクソレス

803 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 01:11:53 ]
>「おろかな一貫性は、・・
調べてたら元ネタがあった。

"A foolish consistency is the hobgoblin of little minds, adored by little
statesmen and philosophers and divines. With consistency a great soul has
simply nothing to do." - Ralph Waldo Emerson

(愚かな一貫性というものはちっぽけな精神にひそむお化けで、ちっぽけな
政治家や哲学者や聖職者達に崇められるものだ。偉大なる魂は一貫性など
とは全く無縁である。 - ラルフ・ワルド・エマソン)

割と有名な引用らしい。(知らんかったけど

804 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 04:42:52 ]
質問させて下さい
python2.5+Vista環境でpywin32(Python for Windows extensions)を導入してみました
ところが付属Demoを実行すると次のようなエラーが出ます

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python25\lib\site-packages\pywin32-210.0004_s-py2.5-win32.egg\win32com\__init__.py", line 5, in <module>
import win32api, sys, os
ImportError: No module named win32api

3時間あれこれしてみたのですが一向に分かりません
包含関係はwin32api∈pywin32だと思うのですが・・・
何か初歩的な設定ミスなどしているのでしょうか

原因の思い当たる方どうぞご教示願います


805 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:08:56 ]
>>797
Thank you so much.


806 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:15:14 ]
>>804
ttp://starship.python.net/crew/mhammond/win32/
For some overviews of the Win32 API as exposed to Python,
see ttp://www.python.org/windows/win32/




807 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:18:10 ]
ttp://www.python.org/download/windows/
Win32all, Mark Hammond's add-on for the regular Python installer
(also including the Win32 API, COM support, and Pythonwin),
is available from the pywin32 project on SourceForge.
ttp://sourceforge.net/projects/pywin32/


808 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 06:35:50 ]
>>804
eggの中身はzipだからpeなwin32api.pydは標準ではインポートできない
setuptoolsもインポートの拡張してなかったと思うし

というかそのeggファイルって非公式なものなんじゃ

809 名前:804 mailto:sage [2008/01/11(金) 10:54:55 ]
>>806-808
egg排除してインストーラを使ってインストールし直したら
できました! みんなありがとう!!! 大感謝です!!!

今回の件でeasy_installやeggの特性も少し分かったので
スレタイ通り勉強になりました。今後も精進します。押忍



810 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:02:13 ]
>>803
こっちのことわざで言えば

君子豹変す

あたりのことかな。



811 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:31:57 ]
Jinsei iro iro


812 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:46:35 ]
URLをパースして分解してくれるようなライブラリはありますか。

813 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:48:22 ]
君子豹変す
小人面を革む (易経)

814 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:49:54 ]
>>812
urlparse

815 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:57:39 ]
で、結局怖いのは小人物なのか? それともおばけ(苦笑)なのか?

816 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 23:57:07 ]
馬鹿な突っ込みしちゃったのが心のささくれになってるのはわかるけど、
おばけにこだわってるのはもう君だけだから、無理に苦笑とかしても、ログ遡られて「ああこの子ね」となるだけかと。

817 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:04:31 ]
>>816
小人物乙(ww

818 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:22:01 ]
即レスw

819 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:34:38 ]
子供は寝ろよ

820 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:38:16 ]
小人閑居して不善を為す



821 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:49:09 ]
馬鹿の考え休むに似たり

822 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 03:29:59 ]
生兵法は怪我の元

823 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 06:34:36 ]
journal.mycom.co.jp/news/2008/01/08/045/
JythonでDjangoが動いたようです。

824 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 07:16:04 ]
>より最新のバージョンに対応したJythonの登場はそうとおい未来の話ではなさそうだ。

あと1年くらいか


825 名前:デフォルトの名無しさん [2008/01/12(土) 12:18:35 ]
花よりだんご

826 名前:デフォルトの名無しさん [2008/01/12(土) 15:26:24 ]
花よりだんごより金

827 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 15:41:16 ]
それにつけても金の欲しさよ

828 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:41:28 ]
談合三兄弟

829 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/01/12(土) 16:51:25 ]
 

830 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:02:35 ]
Py3.0では set がリテラル表記できると聞きましたが。。。。。。。
あたらしい文法増えるってことかい?



831 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:52:32 ]
>>830
{'増', 'え', 'る', 'よ'}

{i for i in 'さらに、setとdictの'}
{k: v for k, v in enumarate('内包表記も。')}

832 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 01:42:26 ]
pypyっていいね

833 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:38:35 ]
{} を 空dict にするか 空set にするかという議論もあったようだけど、空dict になったらしい。
個人的には 空set の方がよかった。

834 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:48:25 ]
>>833
無意味に後方互換性を崩すあんたのセンスを疑う。

835 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 08:31:58 ]
>>831
Yさん、ご苦労様です

836 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 10:12:27 ]
>>835
Yさんて誰よ

>>833-834
{} == set()
{:} == dict()
が自然じゃないかなぁ、と思ってた

確かに後方互換性がネックなんだけどね

837 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 11:56:25 ]
pythonって、dictの要素を繰り返すのに
for k, v in dct.iteritems(): print k, v
としますけど、なんで
for k, v in dct: print k, v
でできるようにしなかったんでしょう?
for v in dct: print v
としたら、キーが表示されました。
どうせなら、next()で(k, v)が返されればいいのに。

838 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 13:15:05 ]
for k, v in dct.items(): print k, v

839 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:41:03 ]
for k in dct: print k, dct[k] じゃだめなんか

840 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:55:21 ]
if k in dict: ....との一貫性のため、
だと思ってたけど。



841 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:41:24 ]
>>840
あ、そう、それだ、
そういうのを Guido は、if k in dict と for k in dict がライムする(韻を踏む(?))と表現しているね。
mail.python.org/pipermail/python-3000/2007-September/010222.html

842 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:42:28 ]
Pythonの開発環境はIDLEで充分ですか?
まだPythonは初心者ですが

843 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:08:30 ]
学習段階ならぶっちゃけメモ帳でも

844 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:14:30 ]
いやさすがにメモ帳は

最低でも複数行をまとめてインデントしたり
コメントアウトできるエディターは必要

845 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:47:11 ]
>>843-844
ありがとうございます
探してみます

846 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:29:17 ]
pythonで入力フォームを作っているのですが、
入力値のチェックで全角のみ許可する場合は
どのようにすればいいのでしょうか?

正規表現でどのように書けばいいのでしょう?
お願いします

847 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:37:26 ]
文字コード総合スレ part3
ttp://pc11.2ch.net/test/read.cgi/tech/1180250376/


848 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:09:38 ]
>>846
正規表現ライブラリの動作をかんがえると
簡潔にできないなら別に正規表現にする必要はないかと。
Unicodeに統一させるのは前提として
文字単位で確認するようなコードをこさえればいいと思う。
速度求めるようなもんでもなさそうだし。

849 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:27:29 ]

$KCODE = 'SJIS'
dat = ['Alpha', 'ひらがな', '漢字', 'カタカナ', '0123', 'ねこ大好き']

dat.each{ |str|
p str
case str
when /^[A-z]+$/s
p 'アルファベットのみ'
when /^[0-9]+$/s
p '数字のみ'
when /^[あ-ん]+$/s
p 'ひらがなのみ'
when /^[ア-ン]+$/s
p 'カタカナのみ'
when /^[亜-煕]+$/s
p '漢字のみ'
else
p '混合か全角英数字か記号'
end
}

850 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:33:46 ]
先生、ここはPythonスレです・・・



851 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:41:43 ]
UNICODEにしたときも
^[亜-煕]+$
って保証されるんかいな?

852 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:22:29 ]
「半角のみ」禁止なら割と簡単だけど・・・

853 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:23:01 ]
unicodedataつかいなよ

854 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:50:41 ]
>>851
UNICODEなら、漢字全部って意味でそれ書いちゃ間違い

855 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:56:46 ]
UNICODE(UCS-2)の文字コード順で書かないとな

漢字(統合漢字とExt.Aだけ)はこうか
r'^[\u4E00-\u9FBB\u3400-\u4DB5]+$'

856 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:32:08 ]
>>> unicodedata.east_asian_width(u'A') # 全角のA
'F'
>>> unicodedata.east_asian_width(u'ア') # 半角のア
'H'
>>> unicodedata.east_asian_width(u'あ')
'W'
>>> unicodedata.east_asian_width(u'A') # ASCII のA
'Na'
>>> unicodedata.east_asian_width(u'W')
'A'
>>> unicodedata.east_asian_width(u'\u0E20') # タイ語の文字
'N'
ttp://0xcc.net/blog/archives/000191.html


857 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:48:22 ]
……「半角が混じってたらNG」
というロジックにしちゃえというのは禁句だろうか

858 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:03:10 ]
2バイト半角もあるからな

859 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:39:57 ]
もう全部UTF-32でいいよもう

860 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:28:22 ]
禁止にするとかじゃなくて
内部でお好みの全角のみか何かに正規化するのが定石じゃん?

全角のみでおねがいします、の入力フォームを見るたびに
殴りたくなるぜ



861 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 10:53:30 ]
俺も正規化すればいいと思う。

862 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:55:16 ]
>>846
一旦EUC-JPかShift_JISにしてASCIIの範囲の文字とそれ以外に分ければいいと思う。

863 名前:862 mailto:sage [2008/01/14(月) 13:42:18 ]
# -*- coding: utf-8 -*-

def is_zenkaku(s):
    assert isinstance(s, unicode)
    try:
        s = s.encode("euc-jp")
    except UnicodeError:
        return False
    i = 0
    while i < len(s):
        if s[i] < '\x80': # ASCII
            return False
        elif s[i] == '\x8e': # JIS X 0201 Katakana
            return False
        elif s[i] == '\x8f': # JIS X 0212 Supplementary Kanji
            i = i + 3
        else: # JIS X 0208
            i = i + 2
    return True

864 名前:863の続き mailto:sage [2008/01/14(月) 13:43:21 ]
if __name__ == "__main__":
    assert is_zenkaku(u"日本語") == True
    assert is_zenkaku(u"Kanji") == False
    assert is_zenkaku(u"Kanji") == True
    assert is_zenkaku(u"12345") == False
    assert is_zenkaku(u"12345") == True
    assert is_zenkaku(u"パイソン") == False
    assert is_zenkaku(u"パイソン") == True
    assert is_zenkaku(u"森\u9dd7外") == True
    assert is_zenkaku(u"Espa\u00f1ol") == False
    assert is_zenkaku(u"Россия") == True
    assert is_zenkaku(u"Αθηνα") == True
    assert is_zenkaku(u"(・∀・)イイ!") == True
    assert is_zenkaku(u"(・A・)イクナイ!") == False

865 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:26:52 ]
>>849
rubyってそんな面倒なことしないと分けれないのかよwww

>>863
そんな面倒なことせずに
east_asian_width使えばいいだろ

866 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:08:51 ]
>>865
ソースに問題点あるみたいなのでそっちの方が面倒そう<east_asian_width
d.hatena.ne.jp/methane/20070109/1168316594

867 名前:methane mailto:sage [2008/01/14(月) 19:27:05 ]
>>866
それはdocutilsの中でeast_asian_width()の結果をどう扱ってるかって話。
日本限定で使う分にはこんな感じで良いと思う。
def char_width(s):
  if type(s) == 'str': s = unicode(s)
  return 2 if east_asian_width(s) in 'WFA' else 1

868 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:41:43 ]
なるほど・・

869 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:51:10 ]
>>866
それは、現在の実装がblogの人の想定と違ってるってだけでそ。
そこにある修正したら、\u00A1(INVERTED EXCLAMATION MARK)とかもWide&Full-widthと同じ扱いされてまうやん。


870 名前:methane mailto:sage [2008/01/14(月) 20:53:09 ]
スマン、east_asian_width() == 'A' の文字ってCJK圏では全部Wide文字扱いかと思ってた。
>>867 のも、'A'を入れるか入れないかは微妙なんだな。



871 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:12:40 ]
A - East Asian Ambiguous
Ambiguous : あいまい(な)
なわけで。
ttp://www.unicode.org/reports/tr11/tr11.h1.gif


872 名前:methane mailto:sage [2008/01/14(月) 21:18:31 ]
いや、A=Ambigious=「あいまい」は知ってたけど、
CJK圏ではWide、それ以外ではNarrow、という意味で「あいまい」だと思ってた。
Unicodeメンドイな。

873 名前:862 mailto:sage [2008/01/14(月) 21:21:25 ]
>>865
へー、unicodedata.east_asian_width() なんてあるんだ。知らんかった。Thanx

874 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:03:15 ]
Rubyのgets.to_iにあたる、数値入力を取得する命令ってどう書いたらいいんでしょうか?

875 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:37:06 ]
数値計算libでnumarray numpyとか似たようなのが複数あるけど
どれが一番いいの?


876 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:02:47 ]
>>874
try:
  a = input()
except NameError:
  a = 0

877 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:09:30 ]
>>876
その発想は無かった。

878 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:16:05 ]
>>874
import sys
x = int(sys.stdin.readline())

impoすらメンドいならint(raw_input())

879 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:26:31 ]
>>876
>>878
ありがとうございました。

880 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:37:12 ]
自鯖でpythonを動かし、rssなんかを取得したいのですが、
cgiからurllibでgetするとソケットエラーになります。
pythonを起動してやれば、普通に取得できます。
分かる方いたらお願いします。

OS : CentOS release 5 (Final)
Server : Apache/2.2.3
python : 2.4.3



881 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:26:14 ]
>>880
> urllibでgetするとソケットエラーになります。
「ソケットエラー」なんてエラー出力にはならないと思うし
勝手な省略したらわかるものもわからなくなるよ?

その環境にはないけどオチとしてはSELinuxが働いている、かな。

882 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:11:03 ]
>>881
動きました。ありがとうございます。
エラー文見て、適当に略してしまいました、すいません。
IOError: [Errno socket error] (-3, 'Temporary failure in name resolution')

883 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:34:40 ]
frobnicate - Google 検索
www.google.co.jp/search?q=frobnicate&hl=ja&lr=lang_ja&start=20&sa=N

質問
frobnicateってどういう意味ですか?

884 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:50:24 ]
>>883
その検索結果のROT13の頁を見よ

885 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:01:23 ]
>>884
ROT13 - Wikipedia
ja.wikipedia.org/wiki/ROT13
>このルーチンはROT13と同じ目的で用いられるが、任意の二進データに利用可能である
>(ユーモアをこめて、「意味不明化」(en:frobnicate)関数と呼ばれる)。このルーチンではデータの
>各8-bitバイトをとり、二進数の00101010(十進表記では42。人生、宇宙、すべての答え参照)と
>の間のビット毎の排他的論理和 (XOR) を計算する

ですね

Re: [Python-Dev] Replacement for print in Python 3.0 :: ASPN Mail Archive :: python-dev
aspn.activestate.com/ASPN/Mail/Message/python-dev/2808632
>printf('$1 forgot to frobnicate the $2!\n', username, file.name,
>    to=sys.stderr)

>While that's a little less self-descriptive for a translator to deal
>with (who would only see the string, not the call site), it certainly
>looks nicer for a non-i18n application, and could certainly work for an
>i18n app too. It's a neat idea worth exploring.

意味不明化する、いう使い方をするみたいですね
dくす

886 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:39:21 ]
>> I request the addition of prod():
>>  
>> def prod(seq):
>>      s = 1
>>      for x in seq:
>>          s *= x
>>  
>> prod is always as useful as sum()

>It would have to be called product(), and I believe it has been proposed
>multiple times and been rejected under the "not every 3-line function
>has to be builtin" rule.

そんなルール在ったんだw

887 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:46:04 ]
set に含まれる要素うち、2つを取り出して比較ってのを全組み合わせについて
やりたいんだけど、効率よく処理するにはどうすればいいだろう。
最初に思いたのは s = set([.........]) として
seq = tuple(s)
for i in range(len(seq)-1):
 for j in range(1, len(seq)):
  my_cmp(seq[i], seq[j])
なんだけど、すごい遠回りして処理してる気がする。
意外とベタに
[my_cmp(i, j) for i in seq: for j in seq]
ってインラインぽくやった方が早いのかな。ちなみに
my_cmp での比較順番は関係なし。(交換法則が成り立つ)

これを C で実装できればなおいいんだけど
C-APIには集合オブジェクトの処理がないんだよね。。。


888 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:08:04 ]
for x in list(s):
    s.remove(x)
    for y in s:
        my_cmp(x, y)

889 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:27:57 ]
効率よく、という趣旨からは外れるかもしれないけど、
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474124
の下の方のやつを使えば、

for p in comb(list(s), 2):
 my_cmp(*p)
とすっきり書ける。

890 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:41:58 ]
ls = list(s)
for i in ls[:-2]:
 for j in ls[1:]:
  my_cmp(i, j)



891 名前:デフォルトの名無しさん [2008/01/17(木) 17:57:12 ]
総当たりになってないw

892 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:10:51 ]
www.python.org/dev/peps/pep-0370/
面倒臭そうだ

893 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:05:26 ]
${HOME}/bin
${HOME}/lib/python2.5
${HOME}/share
俺は↑みたいにやってパスを通している。
/usr/local = ${HOME} の位置づけ

${HOME}/.local/lib/python2.6
わざわざ隠さなくてもいいよ。
存在を忘れそうだ。
タイプも面倒くさいし。

894 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:21:23 ]
半角と全角が混じった文字列を途中から改行するには
どうすればいいですか?

895 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:45:40 ]
unicode に変換したら

896 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:15:20 ]
禁則処理のことを云って居るのか?

897 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:34:09 ]
この質問にちゃんと答えられたら
その人はPGじゃなくてエスパーだろ。

898 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:57:27 ]
マルチバイト文字が入ってる文字列に改行を挿入したら泣き別れが
起きてしまうんですがどうしたらいいですか、なのかなぁ

899 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:38:32 ]
半角と全角とか言ってるからそこらへんかも

つ Unicode 文字列

900 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:26:07 ]
lxmlの最新バージョンのwindows用インストーラーがないんだけど



901 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 11:00:18 ]
あんたRubyにいいたいことがあるんじゃないんですか? とくにPythonと比べてみて。
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Bruce+Eckel%A4%CE%A1%D6Ruby%A4%CB%A5%A4%A5%A4%A5%BF%A5%A4%A5%B3%A5%C8%A1%D7%A5%B3%A1%BC%A5%CA%A1%BC



902 名前:デフォルトの名無しさん [2008/01/19(土) 13:40:00 ]
他の言語なんて放っておけ

903 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:00:57 ]
Pythonの勉強をしにきました!

904 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:02:35 ]
やっぱやめた!

905 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:17:47 ]
>903
あきらめ早すぎ。

906 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:30:12 ]
Pythonチュートリアル重要だねえ

print時の文字フォーマットは辞書を使って
>>>fuga = {'hoge':'doutei'}
>>>print("%(hoge)s" % fuga)
>>>doutei
ができることを知ったよ。恥ずかしいのですべて読み切る。

907 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:31:03 ]
なんでprintに()つけるん?

908 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:31:51 ]
>>907
Python3000から付けるようになるとのことで、
今のうちから括弧付ける癖付けてる

909 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:40:02 ]
print("%(hoge)s" % (fuga,))
が正しい

910 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:55:33 ]
>>907
かっこつかないだろ



後悔はしていない



911 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:56:37 ]
>>909
Traceback (most recent call last):
File "<pyshell#909>", line 1, in <module>
print("%(hoge)s" % (fuga,))
TypeError: format requires a mapping

適当なことを言うのはやめるんだ

912 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:20:07 ]
( "ヮ")

913 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:37:41 ]
import string
print string.Template('$hoge').substitute(fuga)

というのも一応ある

914 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:57:31 ]
slashdot.jp/articles/08/01/18/070215.shtml

915 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 02:24:27 ]
ただいまメンテナンス中です

Slashdot Japan は現在メンテナンスを行っております。
ご迷惑をおかけして、誠に申し訳ございません。
しばらく後にもう一度アクセス頂けますよう、お願い申し上げます。


916 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:01:44 ]
メンテ終わったよ

917 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:02:55 ]
>>906

>>> hoge = 'doutei'
>>> print '%(hoge)s' % locals()
doutei

こんな技もあるから覚えておくといいよチェリーボーイ

918 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 14:50:00 ]
>>916
39

919 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:12:47 ]
もう伸びないってさ

920 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:10:47 ]
>>917
どもども



921 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:08:28 ]
今日からPython始めようと思うのだけれど
まずはチュートリアルを読めばいいのかな?

922 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:25:12 ]
多言語を知っているのなら
でもそんな人はそんな質問しないだろうな

923 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:10:31 ]
>>919
そうそう。Pythonはもう伸びない。
だからこんなに便利なプログラミング言語を使わなくていいよ。
今すぐ別の言語に移ってくれていいよ。

924 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:14:57 ]
>>923
今の所、今年のキモレスNo1

925 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:16:44 ]
>>924
もうPythonから離れていいよ。
100000万キロくらい離れていいよ。
むしろ二度と近寄らなくていいから。

926 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:18:29 ]
>>925
子供はプログラミングじゃなくてお勉強してろ

927 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:31:54 ]
暗いと不平を言うよりも、すすんであかりをつけましょう

928 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:41:06 ]
>>926
日本語も満足にできない低脳はPythonを使わない方がいいよ。

929 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:46:07 ]
100000万キロなんて今時小学生でも使わないだろ・・・

930 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:55:53 ]
>921
チュートリアルよりお気楽 Python プログラミング入門ってのがいいと思うんだ



931 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:57:34 ]
ガリレイの相対性原理も、アインシュタインの相対性理論も
破棄されました。!

21世紀の科学、物理学は支配の法則が支配する!!!!!

home9.highway.ne.jp/cym10262/fenomina.html

932 名前:デフォルトの名無しさん [2008/01/21(月) 04:32:37 ]
初心者講座作れ!

933 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 06:32:20 ]
すいません。質問させてください。
Pythonの拡張とかフレームワークみたいなのを使わないで、
jspやerbみたいにhtmlにコードを埋め込むことはできますか?
テーブル作るときにレコードを一行ずつprintするのが嫌で、
配列をhtmlに渡して、レコードの数だけ埋め込んだコードでループさせたいと考えています。
まだ勉強し始めたばかりで、パイソン流の方法がわからず苦労しています。
よろしくお願いします。

934 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:25:44 ]
テンプレート

935 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:35:44 ]
>>933
テンプレートエンジンをつかいましょう。
Rubyと違って、PythonにはERBみたいなのは付属しないので、自分でインストールする必要があります。
ERBみたいなのでよければ、MakoやTenjinあたりが高速です。
www.kuwata-lab.com/tenjin/
に各種テンプレートエンジンへのリンクとベンチマークがあります。

936 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:27:54 ]
>>935
やっぱり何かをインストールしないとできないのですね。
紹介していただいたTenjinを使ってみました。
欲しかった使い勝手は、まさにコレでした。
使うときもtenjin.pyだけあれば管理者でサーバーにインストールする必要もないですし、
Tenjinを使っていこうと思います。
良いアドバイスをいただき、ありがとうございました。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef