Pythonのお勉強 Part22
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/11/30(金) 21:49:38http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
FrontPage - Pythonのお勉強
http://python.rdy.jp/
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1192884897/
◆関連スレッド
Microsoft IronPython 1.0
http://pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
◆関連サイト
Python ドキュメント
http://www.python.jp/doc/release/
Index of Python Enhancement Proposals (PEPs)
http://www.python.org/dev/peps/
参考サイト - Pythonのお勉強
http://python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8
.
0002デフォルトの名無しさん
2007/11/30(金) 21:59:110003デフォルトの名無しさん
2007/11/30(金) 22:15:43IronPython in Action
http://www.manning.com/foord/
wxPython
http://www.wxpython.org/
wxPython in Action
http://www.manning.com/rappin/
http://www.amazon.com/product/dp/1932394621/
Django
http://www.amazon.com/product/dp/1590597257/
TurboGears
http://www.amazon.com/product/dp/0132433885/
Pylons
http://www.amazon.com/product/dp/1590599349/
0004デフォルトの名無しさん
2007/12/01(土) 09:19:48なまら乙
0005デフォルトの名無しさん
2007/12/01(土) 10:14:21>FrontPage - Pythonのお勉強
>http://python.rdy.jp/
百度に飛ばされる
0006デフォルトの名無しさん
2007/12/01(土) 12:56:590007デフォルトの名無しさん
2007/12/01(土) 12:59:500008デフォルトの名無しさん
2007/12/01(土) 13:04:16荒らしさんは対立を作るのに忙しいな
0009デフォルトの名無しさん
2007/12/01(土) 13:45:20ttp://www.pythonchallenge.com/
0010デフォルトの名無しさん
2007/12/01(土) 16:24:33乙Py
0011デフォルトの名無しさん
2007/12/01(土) 16:53:05俺もう乗り換えるわ
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))
0012デフォルトの名無しさん
2007/12/01(土) 17:00:31keyerrorとかでてくるのだけど、これは対象が存在しない時出てくると考えていいの?
0013デフォルトの名無しさん
2007/12/01(土) 17:02:46てんさい
ttp://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29#smoking
0014デフォルトの名無しさん
2007/12/01(土) 18:45:48俺もう乗り換えるわ
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))
0015デフォルトの名無しさん
2007/12/01(土) 18:58:53Python (2.4) 25.16s
Haskell (GHC 6.8) 0.48s
Parallel Haskell (GHC 6.8) 0.42s
0016デフォルトの名無しさん
2007/12/01(土) 19:14:330017デフォルトの名無しさん
2007/12/01(土) 19:17:150018デフォルトの名無しさん
2007/12/01(土) 19:29:15Rubyスレ
0019デフォルトの名無しさん
2007/12/01(土) 19:47:55RubyってRailsで動いてるんじゃないのか?
0020デフォルトの名無しさん
2007/12/01(土) 20:20:180021デフォルトの名無しさん
2007/12/01(土) 20:38:42どうやったらいいの?今現在全然知らないのでコピペしただけ。
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)
0022デフォルトの名無しさん
2007/12/01(土) 21:06:21いい加減にして
0023デフォルトの名無しさん
2007/12/01(土) 21:14:090024デフォルトの名無しさん
2007/12/01(土) 21:17:15潔癖すぎだろw
0025デフォルトの名無しさん
2007/12/01(土) 21:22:06ごめんなさい。
百度があまりにもうるさいので、それっぽいIPだと
向こうにお帰り願う設定になってますので、
その影響を受けているのかと。
0026デフォルトの名無しさん
2007/12/01(土) 21:22:19アンチRuby工作員乙
0027デフォルトの名無しさん
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が好きなので他は使わないと思うけど…
0028デフォルトの名無しさん
2007/12/02(日) 00:03:03コードが糞すぎwww
ジェネレーターを使え。
0029デフォルトの名無しさん
2007/12/02(日) 00:04:05よく知らんが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を公式+αという感覚で入れても問題ない?
それとも公式を入れておいたほうが無難?
0030デフォルトの名無しさん
2007/12/02(日) 02:12:14Python 2.5.1
17.935
Python 2.5.1 + psyco
1.264
0031デフォルトの名無しさん
2007/12/02(日) 08:48:180032デフォルトの名無しさん
2007/12/02(日) 10:09:11数倍っつーか一桁変わってますけど…
0033デフォルトの名無しさん
2007/12/02(日) 10:13:44実用的なコードではほとんど高速化は期待できないのに・・・
父さん・・・酸素欠乏症にかかって・・・!
0034デフォルトの名無しさん
2007/12/02(日) 11:36:280035デフォルトの名無しさん
2007/12/02(日) 11:52:28Pythonは万能です
0036デフォルトの名無しさん
2007/12/02(日) 13:29:100037デフォルトの名無しさん
2007/12/02(日) 13:31:400038デフォルトの名無しさん
2007/12/02(日) 18:44:130039デフォルトの名無しさん
2007/12/02(日) 20:13:130040デフォルトの名無しさん
2007/12/02(日) 20:30:40|---------------|
|.;.:, |
|,.:.; SOYLE|
|.';.; |
|---------------|
=================
0041デフォルトの名無しさん
2007/12/02(日) 21:34:000042デフォルトの名無しさん
2007/12/02(日) 23:11:540043デフォルトの名無しさん
2007/12/02(日) 23:27:29ソースビルドしてPython2.5.1を入れてみました。
元から入ってたのは /usr/bin/python
ビルドして出来たものは /usr/local/bin/python
で分かれています。
一応動いているみたいなのですが、
上書きして書き換えるのはやめておいたほうが良いのでしょうか?
CentOSのその他の管理ツールで内部的に
Pythonのスクリプトを使っているものがあるとかいう
話を聴いたことがあるのでそっちに影響出る可能性があるのかなと。
あとyumの方が最新のバージョンにならないのもそういう理由ですよね?
0044デフォルトの名無しさん
2007/12/02(日) 23:51:01実際に入ってるモノが食い違うことになるんじゃ…
0045デフォルトの名無しさん
2007/12/03(月) 00:16:30アップデートしても最新にならないなら何か問題があるとか、単にテスト中だとかその辺だから大人しく待っとけ
というかpython25とか名前付ければ良いんじゃないかな。せっかくlnあるんだから
0046デフォルトの名無しさん
2007/12/03(月) 00:37:34俺だったら、まず$HOMEに入れることを考える。
大抵はこれで事が済む。
/usr/localに入れるとしても、
/usr/local/bin/pythonは消して、/usr/local/bin/python2.5だけ残す。
(初期状態だと、/usr/local/binにはPATHが通ってないと思うが、念のため)
(あとPATHがゴチャゴチャしてきた時の防御にもなる)
/usrのは絶対さわらない。
0047デフォルトの名無しさん
2007/12/03(月) 01:21:55上書きは止めた方が良いです、というか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になる。
なので危険ですよ。
0048デフォルトの名無しさん
2007/12/03(月) 03:19:490049デフォルトの名無しさん
2007/12/03(月) 03:28:57マイナーバージョンアップはバージョンアップすればいいんじゃないの?
0050デフォルトの名無しさん
2007/12/03(月) 06:36:55ファイル差分があってもパッケージ管理システムからはわからないから
ゴミが残ったりする。
まーsetup.pyやコピーで自前でライブラリ追加してもいっしょだし
ディレクトリが分散してるわけでもないから大事にはならないけど。
0051デフォルトの名無しさん
2007/12/03(月) 06:48:43おっしゃるとおりやっぱり危険ですよね。
/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 の方を使うように
設定する場所はあると思うのでそっちで探してみることにします。
みなさんありがとうございます
0052デフォルトの名無しさん
2007/12/03(月) 23:41:30> # 自分で例外ちゃんと処理するしかない?
するしかない。CP932で表示できないものはいかんともしがたい。端末依存。
簡単なのはエラーハンドリングを "replace" 等にして自前でエンコードすること。
print (u'ほげ%sふが' % u'hogÉfuga').encode(sys.stdout.encoding, errors="replace")
別解は Unicode-aware な端末ソフトを使う。
0053デフォルトの名無しさん
2007/12/03(月) 23:42:44encode(sys.stdout.encoding, "replace")
の間違い。
0054デフォルトの名無しさん
2007/12/04(火) 21:05:103. 以下のコードのような感じで、変数名を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}
>>>
0055デフォルトの名無しさん
2007/12/04(火) 23:03:17デバッグ目的ならもっと別なやり方を考えたほうがいいと思う
すごく無理やりなやり方だったら、
for val in (foo, bar):
print filter(lambda x:x[1]==val,locals().items())[0][0]
とかは可能・・(値が同じものがある場合を考慮するともう少しちゃんとする必要がある
0056デフォルトの名無しさん
2007/12/05(水) 18:21:52みたいに、一気に名前空間にimportすることはできないのでしょうか?
0057デフォルトの名無しさん
2007/12/05(水) 18:38:33↑でおけ。importした複数のモジュールで同じ名前が使われてた場合、
後にimportしたもので上書きされるから注意。
0058デフォルトの名無しさん
2007/12/05(水) 18:44:02dat形式に変換してローカルに保存したいのですが、
自分がうんこ野郎なので、webサイトから何かしらのデータを取得する方法が分かりません。
主にどのようなライブラリを使えば良いのでしょうか?
0059デフォルトの名無しさん
2007/12/05(水) 18:53:440060デフォルトの名無しさん
2007/12/05(水) 18:54:31urllib2
ttp://www.python.jp/doc/2.4/lib/urllib2-examples.html
dat形式への変換はしらん
0061デフォルトの名無しさん
2007/12/05(水) 19:30:55略
玉露入り : 「うは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^
0062デフォルトの名無しさん
2007/12/05(水) 20:04:58ありがとう!
006358
2007/12/05(水) 22:05:12ありがとう!!
dat変換まで出来てjaneに不具合なく導入出来たら公開する!!
0064デフォルトの名無しさん
2007/12/05(水) 22:15:500065デフォルトの名無しさん
2007/12/05(水) 22:30:35がんばれ
006658
2007/12/05(水) 22:55:32あれは使い勝手が悪いので自分で作ってみようかなと
うんこは考えたのです。
0067デフォルトの名無しさん
2007/12/06(木) 00:45:04特に他人に使ってもらおうと思ったら。
まあ頑張れ。若者よ。もしかしたらすごいのができるかもしれん。
0068デフォルトの名無しさん
2007/12/06(木) 00:49:550069デフォルトの名無しさん
2007/12/06(木) 09:04:400070デフォルトの名無しさん
2007/12/06(木) 10:12:580071デフォルトの名無しさん
2007/12/06(木) 11:43:450072デフォルトの名無しさん
2007/12/06(木) 15:00:31他の言語の知識は全くありません。
大量の写真(.img)を一括で同じサイズにリサイズする
ってな事Pythonで出来ますかね?
PILとか使うのでしょうか?
0073デフォルトの名無しさん
2007/12/06(木) 18:07:48・拡大縮小かけずにトリミングだけで同じサイズにカット
・拡大縮小かけるがアルゴリズムは適当で画像が劣化しても問題なし
どれにしますか
0074デフォルトの名無しさん
2007/12/06(木) 18:16:06http://www.flickr.com/photos/w00kie/sets/180637/
0075デフォルトの名無しさん
2007/12/06(木) 18:46:08007672
2007/12/06(木) 19:11:05カットは要らないと思います。
画像の劣化ですか…。そうですよね。
画像劣化せずに拡大縮小できたらいいなぁと思います。
大量のファイルをまとめてってのが一番の目的なんで
そこまで考えてませんでした(^^;
>>74 >>75
ありがとうございます
参考になります
0077デフォルトの名無しさん
2007/12/06(木) 19:57:08そういう用途ではImageMagickが適当かな。
Python用ライブラリもあるけど、単純に外部コマンドでconvertを呼んじゃえばおk。
0079デフォルトの名無しさん
2007/12/06(木) 21:46:21向こうの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("http://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
0080デフォルトの名無しさん
2007/12/06(木) 22:38:050081デフォルトの名無しさん
2007/12/06(木) 22:45:23ファイルの1行目に
# -*- coding: shift_jis -*-
と書くとうまく行くかも。
0082デフォルトの名無しさん
2007/12/06(木) 22:47:08分けるべきという話は置いといて。
0083デフォルトの名無しさん
2007/12/06(木) 23:00:42ついでにGoFコマンドパターンにしてしまえ。
0084デフォルトの名無しさん
2007/12/07(金) 13:15:04>ttp://makunouchi.jp/zope3/3496598985
なにこのデザイン。
1990年代かと思った。
0085デフォルトの名無しさん
2007/12/07(金) 13:23:33素数が昇順に出てくる無限リストを使いたかったら自前で実装するしかないですか?
0086デフォルトの名無しさん
2007/12/07(金) 14:29:38008772
2007/12/07(金) 14:31:40ImageMagickを入れたほうがよいのでしょうか?
それとも、PythonMagickの方がよいのでしょうか?
0088デフォルトの名無しさん
2007/12/07(金) 16:22:58やりたい内容による。
ものすごい単純なことやりたいだけなら、
ImageMagickのconvertを使ってshellから呼んだほうが楽。
Pythonから呼ぶことが重要なんであれば、
それ系のmoduleを入れるのが良い。
Pythonからexecするってのもありだけど。
0089デフォルトの名無しさん
2007/12/07(金) 18:38:13./configure --prefix=/home/aaa/
だと
/home/bbb
のユーザーは使えないのですよね
0090デフォルトの名無しさん
2007/12/07(金) 18:40:37def 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)
0091デフォルトの名無しさん
2007/12/07(金) 19:24:37/home/aaaがbbbから見れるんなら、
必要な環境変数を設定すれば大丈夫でしょう。
PATHやら何やら。
0092デフォルトの名無しさん
2007/12/08(土) 14:25:48すれ違い、UNIXの勉強してこい
0093デフォルトの名無しさん
2007/12/08(土) 17:21:47ttp://www.python.org/download/releases/3.0/
0094デフォルトの名無しさん
2007/12/09(日) 00:37:22標準ではないのでしょうか?
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
>>>
0095デフォルトの名無しさん
2007/12/09(日) 00:58:03[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
0096デフォルトの名無しさん
2007/12/09(日) 08:38:09コマンドからは sqlite3 で実行出来て
dbも作れているので大丈夫だと思います。
あとPython2.3も入っているのですが、
こっちでは import sqlite しても問題なかったです。
0097デフォルトの名無しさん
2007/12/09(日) 08:46:28Loading "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
0098デフォルトの名無しさん
2007/12/09(日) 14:54:160099デフォルトの名無しさん
2007/12/09(日) 16:23:53つ リファレンスマニュアル
010098
2007/12/09(日) 19:09:38ttp://www.python.jp/doc/2.4/tut/node8.htmlにて
モジュールには、関数定義に加えて実行文を入れることができます。これらの実行文はモジュールを初期化するためのものです
という記述をみつけて__init__相当を実現できることを確認できたのですが__del__が分かりません
もうすこしヒントをいただけませんでしょうか
0101デフォルトの名無しさん
2007/12/09(日) 19:52:26if __name__ == "__main__":
__credits__, __author__, __copyright__
モージュール内で __**__ 形式で書く時は定数
C言語のconstの代わりにしか使わないような気がする…
__revision__ = "$Revision: 196 $"[11:-2]
こんなのもいま読んでるソースに出て来てたけど
これも定数だったり。面白そうなプロジェクト見つけて
ソース読んだほうが手っ取り早いような…
0102デフォルトの名無しさん
2007/12/09(日) 20:08:14モジュールはオブジェクトじゃなくて
名前空間と考えるべき。
そもそもPythonエンジンは一度も__del__を呼び出さないで
終了してもいいことになっている。
0103デフォルトの名無しさん
2007/12/09(日) 20:36:14class ExitHandler(object):
def __del__(self):
print 'bye!'
if __name__ != '__main__':
sys.modules[__name__] = ExitHandler()
これで呼ばれないので無理
ところでsys.exitfuncというものがあってだな
010498
2007/12/09(日) 20:51:46そりゃスペースシャトルも事故るわwwww 探してみたんだけどrubyでもモジュール用の__del__みたいなのないみたいだしwwww
LLまだまだだなwwwwwwwww
0105デフォルトの名無しさん
2007/12/09(日) 21:13:07これなら呼ばれるわ。当たり前の話だね
0106デフォルトの名無しさん
2007/12/09(日) 21:27:520107デフォルトの名無しさん
2007/12/09(日) 21:35:150108デフォルトの名無しさん
2007/12/09(日) 21:47:35プログラム終了時に実行するコードを登録したいということなら、よくあるけど。
そもそもモジュールっていったんimportしたら廃棄できないんじゃないの?
なんでモジュールのデストラクタが必要なのか>>98に説明してほしいな.
0109デフォルトの名無しさん
2007/12/09(日) 21:52:37なんとなく必要だったんだと思うよ、なんとなく。
011098
2007/12/09(日) 22:25:110111デフォルトの名無しさん
2007/12/09(日) 23:34:200112デフォルトの名無しさん
2007/12/10(月) 03:18:45「釣りっぽい」の間違いだろ
0113デフォルトの名無しさん
2007/12/10(月) 06:25:24どういう順番で教えるのがいいかな?
0114デフォルトの名無しさん
2007/12/10(月) 06:51:250115デフォルトの名無しさん
2007/12/10(月) 09:56:13なにはともあれ。
「初めてのPython」と「はじめてのPython」の違いについて教えた方がいい。
0116デフォルトの名無しさん
2007/12/10(月) 10:10:42全くプログラミング経験が無い相手なら『Pythonで学ぶプログラム作法』一択
プログラミング経験がある相手なら「チュートリアル読め」で以上
0117デフォルトの名無しさん
2007/12/10(月) 11:09:590118デフォルトの名無しさん
2007/12/10(月) 18:07:53がxv以外を使うようにできないでしょうか?
0119デフォルトの名無しさん
2007/12/10(月) 19:09:57なーんか前、うちの環境でだけでる
utf-8関係でエラーが出たなぁと思っていじってて
また遭遇。
C:\> python
>> help()
help> modules sys
これでエラーが出ちゃった。
前はhelp(なんか)で出てたっぽいけど
今回、help(sys) はちゃんと動いている
XPなんだけど、他にも出る人いる?
0120デフォルトの名無しさん
2007/12/10(月) 19:35:03怖くて試せない。
0121デフォルトの名無しさん
2007/12/10(月) 19:56:220122WinXP, 32bit, 2.5.1installed
2007/12/10(月) 20:05:39と、書きたいところだが、
そこに行き着く前にインストーラがこけた。
以上
0123デフォルトの名無しさん
2007/12/10(月) 20:12:110124デフォルトの名無しさん
2007/12/10(月) 20:47:27僕の名前を知ってるかい?
0125デフォルトの名無しさん
2007/12/10(月) 21:14:40http://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は作成できたけどインポートできないよ
そろそろ心が折れてしまいそうです…もうダメぽ
0126デフォルトの名無しさん
2007/12/10(月) 21:31:18あとマルチやめろ。
0127デフォルトの名無しさん
2007/12/10(月) 22:21:10webベースじゃないと嫌です
マルチポストの件は反省しています
もう二度とマルチポストしません…orz
0128デフォルトの名無しさん
2007/12/10(月) 22:31:31今回は諦めましょう
0129デフォルトの名無しさん
2007/12/10(月) 22:44:05諦められません!
片っ端から忘れていけばいいじゃない。 VistaにMinGWを入れる場合の参考資料
http://0xc000013a.blog96.fc2.com/blog-entry-11.html
K-na TechNotes | MinGW のインストール
http://www.knatech.info/dev-mingw-install.html
コンパイル通ってるのにPythonから呼び出せないのは
納得できません…
0130デフォルトの名無しさん
2007/12/10(月) 23:50:12- On Windows, .DLL is not an accepted file name extension for
extension modules anymore; extensions are only found if they
end in .PYD.
0131デフォルトの名無しさん
2007/12/11(火) 00:17:24a=hogehoge(x=10,y=20,z=30)
なんつーふうにできるじゃないですか。
この引数一式を変数に入れとくって出来ないんですかね?
par1=("x=10","y=20","z=30")
a=hogehoge( par1 )
じゃもちろん駄目なんですが…
0132デフォルトの名無しさん
2007/12/11(火) 00:28:25a=hogehoge(**kwargs)
0133デフォルトの名無しさん
2007/12/11(火) 01:08:460134デフォルトの名無しさん
2007/12/11(火) 08:17:02$| = 1(出力バッファリングの停止)をやりたいんですが。
ググると、
起動オプションに-uを付ける、
あるいは環境変数PYTHONUNBUFFEREDに何らかの値を代入する。
という方法があるのは分かったのですが、
なんかやり方が美しくないように思います。
コードの中だけで完結しておきたいんですが、
そういう方法はないでしょうか?
0135デフォルトの名無しさん
2007/12/11(火) 08:57:210136デフォルトの名無しさん
2007/12/11(火) 09:01:12sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0)
0137デフォルトの名無しさん
2007/12/11(火) 10:00:480138デフォルトの名無しさん
2007/12/11(火) 10:15:29wxPythonのDemo等でイベント関連のところでBind関数を使って
いますが、詳細を知ろうと思いwxPythonのドキュメントでこの関数を
探しているのですが見つかりません。
どのあたりに書かれているかご存じの方いらっしゃいませんか?
0139デフォルトの名無しさん
2007/12/11(火) 10:30:34自己解決しました。
ドキュメントの最初に
wxWidgets 2.8.4: A portable C++ and Python GUI toolkit
ってあるからてっきりこれがwxPythonのドキュメントかと思ってしまいました。
別の所に、 Package wxのドキュメントがあり、Bind関数の記述を
見つけることが出来ました。
お騒がせしました…
0140デフォルトの名無しさん
2007/12/11(火) 11:21:14ファイルのパスに日本語が含まれているときに限ってなのですが、
sys.argv[0]を表示させようとすると
hoge.py と直接実行したときと
python hoge.py とコマンド指定して実行したときとで動作が違います。
後者はそのままうまく表示されるのですが
前者はunicode(path, 'mbcs')しないと例外が出てしまいます。
どこが違うのでしょう?
0141デフォルトの名無しさん
2007/12/11(火) 12:33:080142デフォルトの名無しさん
2007/12/11(火) 13:41:45ttp://developer.yahoo.com/python/
本家みてもurllib, httplib, xml.*でしこしこ書いてるから
スタンダードなRESTライブラリってないんだと思う。
通信自体は大したことないしAPI毎の解析は結局個別に実装が必要だし
単純にそういうのでいいんじゃないかな。
ttp://pysearch.sourceforge.net/
それかこれをJapan対応にするのも有意義かもだけど。
将来的にxmlrpclibみたいにrestlib?が標準でつくといいね。
0143デフォルトの名無しさん
2007/12/11(火) 14:19:580144デフォルトの名無しさん
2007/12/11(火) 16:37:03http://www.python.jp/doc/2.4/lib/module-fcntl.html
termios関連のものしか引数に渡せないんでしょうか。
http://home.mag.cx/messenger/
にあるLogitechのwebcamのLinux用デバイスドライバーの動作を、
Pythonで呼び出したい、というのが目的です。
linux/videodev.hに定義されているVIDIOCGCAPなどを使って、
http://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用に書くしかないですかね。
0145デフォルトの名無しさん
2007/12/11(火) 17:10:09再現しなかったよ。
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
0146144
2007/12/11(火) 17:16:06http://sourceforge.net/projects/pyv4l/
ここを参考にしたら出来そうです。
挫折したらまた来ます。
0147デフォルトの名無しさん
2007/12/11(火) 18:46:45複数の python が入ってるんじゃね?
0148デフォルトの名無しさん
2007/12/11(火) 18:59:070149デフォルトの名無しさん
2007/12/11(火) 23:08:15#-*- coding: shift_jis -*-
というように記載しているcodingの指定って変数とかに
格納されていたりするのでしょうか?
二箇所もかいたりするのを省略したいのですが。
0150デフォルトの名無しさん
2007/12/11(火) 23:53:490151デフォルトの名無しさん
2007/12/12(水) 00:33:29変数に入ってるかどうかしらんけど、なんかの関数で取得することはできそうだな。
0152デフォルトの名無しさん
2007/12/12(水) 01:07:24import 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__ が定義されなかったりするのかな?
0153デフォルトの名無しさん
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つは、別のものだと考えているけどね。
0154デフォルトの名無しさん
2007/12/12(水) 06:39:400155デフォルトの名無しさん
2007/12/12(水) 08:22:34追試ありがとうございます。
確かにそのコードだと問題出ませんでした。
自分のところで書いてたコードを晒します。
#!/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
0156デフォルトの名無しさん
2007/12/12(水) 08:23:08C:\日本語>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)')
0157デフォルトの名無しさん
2007/12/12(水) 08:24:21pythonは1つだけ(2.5.1)です
0158デフォルトの名無しさん
2007/12/12(水) 08:34:520159デフォルトの名無しさん
2007/12/12(水) 08:38:510160デフォルトの名無しさん
2007/12/12(水) 08:38:57(エクスプローラでダブルクリックするとさらに状況が違うかも知れない)
python testpath.pyのときは、実行ファイルがカレントディレクトリにいるため
プログラム中の
os.path.abspath
または
os.path.dirname
の内部でパスが補完されている
おそらく
C:\>python C:\日本語\testpath.py
を実行すれば前者(testpath.pyのみ)と同じ結果になるだろう
os.path.abspath
または
os.path.dirname
のUNICODEの取り扱いに問題があると思われ
0161デフォルトの名無しさん
2007/12/12(水) 08:47:28file は2.2か2.3で新しく追加された関数(というかコンストラクタ)で、
むしろ open の方が古い仕様で file のエイリアスって
扱いじゃなかったっけ。。。。。。
0162デフォルトの名無しさん
2007/12/12(水) 09:05:31b = 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)共に問題ありませんでした
本当にありがとうございました
0163デフォルトの名無しさん
2007/12/12(水) 09:55:33プルダウンメニューとコンテキストメニューが派手にバグっててorz
一瞬何が起こったのか分からんかった
0164デフォルトの名無しさん
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(^Д^)プギャー
0165デフォルトの名無しさん
2007/12/12(水) 10:20:01def f():
file = file("/dev/null") # ここで UnboundLocalError が飛ぶ
0166デフォルトの名無しさん
2007/12/12(水) 11:17:45>>162
解決しました。
ありがとうございました。
0167デフォルトの名無しさん
2007/12/12(水) 14:20:08file() 使っていたのにヽ(`Д´)ノ
0168デフォルトの名無しさん
2007/12/12(水) 14:47:54conn = urllib.urlopen("test.txt")
data = conn.read()
conn.close()
みたいなかんじでIO関連の処理はopen+closeでやる
ものだと何となく認識してた俺は大丈夫だったようだ…
0169デフォルトの名無しさん
2007/12/12(水) 15:46:30以前の関数名である open() は互換性のために残されており、 file() の別名となっています。
Python 2.5:
When opening a file, it's preferable to use open() instead of invoking this constructor directly.
ファイルを開くときは、このコンストラクタ(file)を直接実行するより、open()を使う方が望ましい。
0170デフォルトの名無しさん
2007/12/12(水) 17:25:58オレモオレモ… orz
0171デフォルトの名無しさん
2007/12/12(水) 17:33:15def _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は消えますか?
0172デフォルトの名無しさん
2007/12/12(水) 17:40:54ttp://www.python.jp/doc/2.4/lib/module-warnings.html
0173デフォルトの名無しさん
2007/12/12(水) 18:11:07単にwarningが表示されないようにするのではなく、
warningの原因自体を取り除きたいです。
>>171の書き方のどこがまずいんでしょうか。
0174デフォルトの名無しさん
2007/12/12(水) 18:16:18pass
という関数があったとして、
func(1, 2)
と書くかわりに
tup = (1, 2)
func(tup)
みたいにしたいんですが、
どうやったらいいでしょうか。
func自体は修正できないものとします。
0175デフォルトの名無しさん
2007/12/12(水) 18:18:34func(*tup)
0176デフォルトの名無しさん
2007/12/12(水) 18:24:41ありがとうございました。
0177デフォルトの名無しさん
2007/12/12(水) 20:44:17これ便利だよね関数にタプル渡して処理してくの
def getSafeText(self, text):
htmlFixes = [ ("&", "&"), ("<", "<"), (">", ">"), ]
for fix in htmlFixes:
text = text.replace(*fix)
return text
0178デフォルトの名無しさん
2007/12/12(水) 20:52:000179デフォルトの名無しさん
2007/12/12(水) 21:09:580180デフォルトの名無しさん
2007/12/13(木) 00:01:57バッファをクリアする方法はあるでしょうか。
0181デフォルトの名無しさん
2007/12/13(木) 02:37:39その中で定義されてる関数on_matchを呼び出すというような実行可能ファイルをCで書きたいと思っています
ただPyImport_ImportModuleを呼び出すとファイルがあるディレクトリをPythonに伝えていないのでcallback.pyは
もちろんimportされません
$PYTHONPATHをプログラムの中でいじくればimport対象にディレクトリ上のcallback.pyを追加できるとは思うのですが
環境変数をいじらずに同等のことを行える関数はありますでしょうか?
0182デフォルトの名無しさん
2007/12/13(木) 03:49:36Python Programming Language :: PyImport_ImportModule/embeddin g: surprising behaviors
http://www.megasolutions.net/python/PyImport_ImportModule-embeddin-g_surprising-behaviors-38379.aspx
参考になるかわからないけどこんなの見つけた
0183デフォルトの名無しさん
2007/12/13(木) 05:08:04パイソンのdictが便利なんですが
初期化とかsetitemとかupdateのときに
type checkをしたいんです。
dictをサブクラスしてできるんですが
いちいちやるのがすごくめんどうくさい
なんかいまやってることにパイソンはあんまり向いてないような気がしてきました
なにかお勧めの言語はあるでしょうか?
javaとか?
当方perl/pythonとあとC++をすこしつかいます
0184デフォルトの名無しさん
2007/12/13(木) 05:48:29import hage.fuga.hoge.callback
じゃだめ?
0185デフォルトの名無しさん
2007/12/13(木) 07:13:13x << y を int((long(x) << y) & sys.maxint) と直せばよいかと。
0186デフォルトの名無しさん
2007/12/13(木) 07:18:10まずいということではなくて、2.3以前と2.4以降で << の結果が変わりますよーというお知らせ。
0187181
2007/12/13(木) 10:05:16それだと実行可能ファイルがあるディレクトリからの相対的な位置指定しかできなく
実行可能ファイルがあるディレクトリよりroot方向よりの指定もできないと思います
パスをなんらかの方法で指定し(最悪 環境変数PYTHONPATH
importにモジュール名のみを渡してimportというのがよいかと思っています
0188デフォルトの名無しさん
2007/12/13(木) 10:19:45初心者なんでどっちか片方をスクリプトの基礎を勉強しながら取り組みたいのですが
0189デフォルトの名無しさん
2007/12/13(木) 10:24:450190デフォルトの名無しさん
2007/12/13(木) 10:27:41そして二度とPythonスレには来るな
0191デフォルトの名無しさん
2007/12/13(木) 11:11:05マジレスすると、どっちも有望
WebプログラミングではRails人気もあってRubyが有望
でも企業内ではPythonのほうが広範囲に使われている(Google, Pixar, DreamWorks, Youtube, Sega, etc)
0192デフォルトの名無しさん
2007/12/13(木) 11:23:42/* 独自の 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 が呼ばれるようになるから、あとは
自分でパスを補完するなり独自に取り込むなりすれば良い
0193デフォルトの名無しさん
2007/12/13(木) 11:34:29「標準インポートに失敗したら独自インポート」の方が無駄がなくていいよ。
__import__ は既に import されているかどうかに関わらず、
import 文が実行されたら必ず毎回呼び出されるから、もし独自 import の方を先に処理すると
インポート済みかどうかって事を毎回自分で調べる必要があるので無駄な処理時間が増える。
0194デフォルトの名無しさん
2007/12/13(木) 11:41:45>企業内ではPythonのほうが広範囲に使われている(Google, Pixar, DreamWorks, Youtube, Sega, etc)
こんなウソを信じちゃダメだ!!
PythonができればGoogleに入社できるなんて嘘っぱちだ!!!
0195デフォルトの名無しさん
2007/12/13(木) 11:59:34プログラマなら複数言語できてあたりまえだし
必要にせまられれば柔軟に吸収できるもんだよ。
だからとっかかりは将来性とかかんがえずに好みできめていいよ。
(イメージロゴがすきだとか興味あるアプリがあるとか)
あと最初に変なクセがつく危惧もあるけど意識して複数こなせば解消できる。
0196デフォルトの名無しさん
2007/12/13(木) 12:01:07(C or Java or PHP) + (Python or Ruby)
これ最強。
0197デフォルトの名無しさん
2007/12/13(木) 12:02:550198デフォルトの名無しさん
2007/12/13(木) 12:22:420199デフォルトの名無しさん
2007/12/13(木) 12:46:40typecheckていうのをデコレータとして作って、
class mydict(dict):
__init__=typecheck(dict.__init__)
__setitem__=typecheck(dict.__setitem__)
0201デフォルトの名無しさん
2007/12/13(木) 16:05:50(C or アセンブラ) and (Perl or Java or PHP or Python or Ruby)
の間違いじゃねーの?
0202デフォルトの名無しさん
2007/12/13(木) 16:09:35"独自にインポートするか、パスを変えてもう一度 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 を見てみることをお勧めする
0203デフォルトの名無しさん
2007/12/13(木) 16:23:450204デフォルトの名無しさん
2007/12/13(木) 16:51:120205デフォルトの名無しさん
2007/12/13(木) 17:11:390206デフォルトの名無しさん
2007/12/13(木) 17:36:57PHPと同列にするセンスに違和感。
0207デフォルトの名無しさん
2007/12/13(木) 17:43:000208デフォルトの名無しさん
2007/12/13(木) 18:27:220209デフォルトの名無しさん
2007/12/13(木) 19:35:480210デフォルトの名無しさん
2007/12/13(木) 20:11:24Lisp みたいな括弧の数だな
0211デフォルトの名無しさん
2007/12/13(木) 20:14:430212デフォルトの名無しさん
2007/12/13(木) 22:40:58def f():
def g():
z = 3 # fのローカル変数zを更新したい
z = 0
g()
return z # 3を返して欲しい
のようなコードでは、gのローカル変数zの更新になってしまいます。
かといってgの先頭にglobal zを加えると、fのスコープを飛ばしてglobalなスコープを見に行くので
エラーになります。
0213デフォルトの名無しさん
2007/12/13(木) 23:03:30def g():
f.z = 3
f.z = 0
g()
return f.z
0214デフォルトの名無しさん
2007/12/13(木) 23:40:57... 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'
0215デフォルトの名無しさん
2007/12/14(金) 01:20:34>(C or アセンブラ) and (Perl or Java or PHP or Python or Ruby)
オッサンは窓際で朽ち果てていてね。
0216デフォルトの名無しさん
2007/12/14(金) 02:10:40.py ファイルを fopen なりなんなりで開いて文字列読んで
Py_CompileString でコードオブジェクトにしてから
PyImport_ExecCodeModule に食べさせてインポート完了。
.pyc や .pyo の場合は先頭の4バイトから long を読んで、
その値を PyImport_GetMagicNumber と比較してマジックナンバーをチェック。(別にチェックしなくてもいいけど)
次の4バイトは完全無視。
残りのバイト列を PyMarshal_ReadObjectFromString か PyMarshal_ReadLastObjectFromFile に
食べさせればコードオブジェクトが出てくるから、
それを PyImport_ExecCodeModule に渡せばインポート完了。
Py_DECREF とか忘れないように。
0217デフォルトの名無しさん
2007/12/14(金) 02:11:28(Fortran or C or C++) and (awk or Perl or Python or Ruby)
だな
0218デフォルトの名無しさん
2007/12/14(金) 02:13:48標準ドキュメントが充実してるとはいえ、ちょっとした Tips が分からないのは苦労する。
ていうか、C実装の領域まで踏み込んで Python 使ってる人ってどれぐらいいるんだろうか。
みんなは CからPython使ってる?
0219デフォルトの名無しさん
2007/12/14(金) 02:25:53ソース見てて初めて気がついた。PySys_SetPath と同じ機能の関数つくっちゃった後だったよ。。。orz
__import__ 関数を自分定義の関数でオーバーライドできるという事は、
ローカルにライブラリファイルを全く持たないで、import 文を実行したときに
ネットワークから直接ファイルを読んでくるってのが可能だと思うんだ。
どっかのサーバに標準ライブラリその他をまるごと置いておけば、
インストール作業を全くすることなく、なおかつコンパクトなスタートアップスクリプトだけを
配布すればよい。これでなんか面白そうな事できないかな。。。。
0220デフォルトの名無しさん
2007/12/14(金) 02:36:58SWIG とかで楽できる領域を越えたくない…
標準ドキュメントでいろいろ調べられる点については JNI よりマシだと思った
0221デフォルトの名無しさん
2007/12/14(金) 03:08:47CからPythonを呼ぶのは、
Cで書くのマンドクセだから
本当にただ呼び出すだけだ。
PythonからCを使うのは、
Cのライブラリが目的だから
これも呼び出すだけだ。
CでPython関数をモリモリは使わんなぁ。
>>219
一般的な問題を話させてもらうと、
ローカルとネットワークはやっぱり違う。
ローカルとネットワークの抽象化をライブラリ層で図ろうとしても、(←やりがいのある作業だ)
必ず実装がアプリ層に漏れてきて、面倒ごとが増える。(←何故か作業が増えている)
上手くいきそうでも、中々うまくいかない。(←みんながイラついてくる)
そしてユーザー層まで漏れていく。(←どうしろというんだ)
例えばだけど、
たかが50行のソースを、
py2exe使って依存ファイルを詰め込んだ
巨大な10MBのexeファイルで配るのは非常に馬鹿馬鹿しいことだ。
つーか馬鹿にされる。
でも一番トラブルが少ない。←これ重要だと思うよ
0223デフォルトの名無しさん
2007/12/14(金) 07:08:06import hook したいだけならサポートモジュールを作ったことがあるよ
0224デフォルトの名無しさん
2007/12/14(金) 10:27:15入れてこそ真価を発揮すると思うんだけど……
0225デフォルトの名無しさん
2007/12/14(金) 10:41:51def f():
z=[0]
def g():
z[0] = 3
z[0] = 0
g()
return z[0]
0226デフォルトの名無しさん
2007/12/14(金) 13:11:15ポール・グレアムはそうやっているね。
http://practical-scheme.net/trans/icad-j.html
で、↓こういう反論が来たと。
http://practical-scheme.net/trans/IsPythonLisp-j.html
0227デフォルトの名無しさん
2007/12/14(金) 15:18:46そして self と __アンダ_バ__ を用意したわけだ。
0228デフォルトの名無しさん
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
>>>
0229デフォルトの名無しさん
2007/12/14(金) 16:08:05日本語の発音だとどうなるの?
ガイド・ヴァン・ロッサム?
0230デフォルトの名無しさん
2007/12/14(金) 16:32:20田中太郎です。
0231デフォルトの名無しさん
2007/12/14(金) 16:43:520232デフォルトの名無しさん
2007/12/14(金) 17:03:29グイド・ヴァンロッサム氏
0233デフォルトの名無しさん
2007/12/14(金) 17:31:300234デフォルトの名無しさん
2007/12/14(金) 17:41:180235デフォルトの名無しさん
2007/12/14(金) 18:12:420236デフォルトの名無しさん
2007/12/14(金) 18:16:000237デフォルトの名無しさん
2007/12/14(金) 18:30:160238デフォルトの名無しさん
2007/12/14(金) 18:48:250239デフォルトの名無しさん
2007/12/14(金) 19:43:54○global z
×nonlocal z
まぁ2.5にゃないんですけどね
0240デフォルトの名無しさん
2007/12/15(土) 00:35:560241デフォルトの名無しさん
2007/12/15(土) 00:45:210242デフォルトの名無しさん
2007/12/15(土) 08:49:58○と×、逆じゃない?
0243デフォルトの名無しさん
2007/12/15(土) 12:27:13第2版を買いなおした方が良いでしょうか?
2000〜2004の間にどれくらい、言語そのものの拡張と本そのものの
項目が追加されたのかが気になって…。
0244デフォルトの名無しさん
2007/12/15(土) 12:38:00プログラム初めてなら新しい方がいいかもしれんね。
0245243
2007/12/15(土) 13:06:52ありがとうございます。言語の経験はC++ぐらいなんですが、
Sconsを使っているアプリがWindowsでビルドできなくて
困ってました。
とりあえず、まずは買ってしまった本を読み切るようにします。
0246デフォルトの名無しさん
2007/12/15(土) 14:17:33公式チュートリアルをバッと読むのがいいとおもう
0248デフォルトの名無しさん
2007/12/15(土) 16:01:26他言語との違いについてもっと書いてくれるとありがたかった。
0249デフォルトの名無しさん
2007/12/15(土) 21:06:27Javaが嫌になって流れてきた人とか、Perlの汚なさが嫌になった人とか、PythonにLispに類似したものを
見出した人とか、何もバックグラウンドがない素人とか.... どんな人が多いんだろうね?
0250デフォルトの名無しさん
2007/12/15(土) 21:16:57Javascript
C
ABEL,AHDL,VHDL
ってとこでつね
0251デフォルトの名無しさん
2007/12/15(土) 21:33:39うんその通り
今気付いたorz
0252デフォルトの名無しさん
2007/12/15(土) 21:35:58かじってみた言語ならマシン語のハンドアッセンブルから
Smalltalk まで他にもたくさんあるけど
自分の目的で使うために習熟したのはこの2つだけ
0253デフォルトの名無しさん
2007/12/15(土) 22:07:29オッサン(wwwwwwwwwwww
0254デフォルトの名無しさん
2007/12/15(土) 22:29:09ゆとりの俺がいうんだから間違いない。
0255デフォルトの名無しさん
2007/12/15(土) 22:31:260256デフォルトの名無しさん
2007/12/15(土) 22:44:25を挙げる時、どの言語の例を挙げるのが妥当なのか知りたかったんだけど、簡単には決められない気がするよ。
そもそも、チュートリアルなら下手に内容を詰め込みすぎない方が混乱を防げるような気がするね。
Pythonを勉強する時って、他言語での経験って役に立ったりするのかな?Python自体、すごくシンプルな
言語なので、経験はあるに越したことはないのかも知れないけど、必要ないような気もするね。
0257デフォルトの名無しさん
2007/12/15(土) 22:45:33BASIC(高校の授業)->Fortran77(大学の講義)->C(卒研)->Java(趣味)->Python(生きる目的(ジョーク))
少し体験してみたもの:C++、C#、Scheme、OCaml、その他
色々弄ってきたけどPythonが一番使いやすいね。インデントでブロックを表現する所なんて最高だよ。
0258デフォルトの名無しさん
2007/12/15(土) 22:53:50ttp://pc11.2ch.net/test/read.cgi/tech/1192884897/379
0259デフォルトの名無しさん
2007/12/15(土) 22:56:18→PHP(CGIのため)→Perl(を覚えようとして逃げ帰る)→C++(再覚醒)
→Python(ついに見つけたユートピア)
って感じ。付き合った期間はC++が一番長いかな。
PrologやHaskellも興味はあるんだけど今の所使い道が無いので…
0260デフォルトの名無しさん
2007/12/15(土) 23:29:23C/C++に疲れたひとですが
0261デフォルトの名無しさん
2007/12/15(土) 23:31:070262デフォルトの名無しさん
2007/12/15(土) 23:54:300263デフォルトの名無しさん
2007/12/16(日) 00:04:000264デフォルトの名無しさん
2007/12/16(日) 01:13:230265デフォルトの名無しさん
2007/12/16(日) 01:22:04VisualStudio 2008 Shell Isolated Redistributable がないって言われる。入ってるのに…。
0266デフォルトの名無しさん
2007/12/16(日) 02:35:32おじさん(笑)です。
0267デフォルトの名無しさん
2007/12/16(日) 02:50:210268デフォルトの名無しさん
2007/12/16(日) 02:56:07誰?
0269デフォルトの名無しさん
2007/12/16(日) 03:11:20l = list(d.itervalues())
l.sort()
print l
l = d.items()
l.sort(key = lambda v: v[1])
print l
0270デフォルトの名無しさん
2007/12/16(日) 03:44:24>>> d = {'z':1, 'x':2, 'y': 3}
>>> sorted(d.iteritems(), key=operator.itemgetter(1))
[('z', 1), ('x', 2), ('y', 3)]
0271デフォルトの名無しさん
2007/12/16(日) 05:01:34Pythonは独特だと思う。
Pythonから始めた人はスムーズに習得できたのか知りたい。
0272デフォルトの名無しさん
2007/12/16(日) 06:17:53オライリー「pythonチュートリアル」にrangeで等差数列生成して回せって書いてるけど
どう考えてもメモリの無駄じゃないの?
0273デフォルトの名無しさん
2007/12/16(日) 06:53:170274デフォルトの名無しさん
2007/12/16(日) 07:10:02つxrange
まあpython3.0ではrangeもxrange相当になるけどな
0275デフォルトの名無しさん
2007/12/16(日) 07:26:08ああ、こんなのあるんだ
�d�d
0276デフォルトの名無しさん
2007/12/16(日) 14:07:31print seq[i]
と
for i in seq[start:end]:
print i
はどちらがいいのかな。スライス表記の方が
すっきり記述できるけど、これってコピー操作入ってるんでしょ?
0277デフォルトの名無しさん
2007/12/16(日) 14:19:56これはコードが簡素すぎるけど
実際ならindexを明示したいかどうかで変わるかな。
どちらもディープなコピーはないのでindexの生成分前者のが損だけど
わかりやすさの前には軽微な事。
0278デフォルトの名無しさん
2007/12/16(日) 15:32:09>>> 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が表示され正常終了します
0279デフォルトの名無しさん
2007/12/16(日) 15:39:45seqがタプルで、タプルのスライスの実装が工夫されてたら後者が得かな。
工夫って言うのはスライス元の一部を共有するってことね。ソース見たことないから実際はどうか分からないけど。
0280デフォルトの名無しさん
2007/12/16(日) 15:49:240281279
2007/12/16(日) 16:11:01特例として、スライス範囲がスライス元タプル全体と一致するならスライス元のタプルをそのまま返してた。
0282デフォルトの名無しさん
2007/12/16(日) 18:35:000283デフォルトの名無しさん
2007/12/16(日) 18:41:530284デフォルトの名無しさん
2007/12/16(日) 21:44:03両方同じように使えるのに驚いて、初めてrange()の正書式読んだ…
xrangeなる省メモリ代替(代わりにDocによれば用途外だと重い?)も知れて、
まっこと有意義な一日
0285デフォルトの名無しさん
2007/12/17(月) 01:06:45ここにpythonはlispの数十倍遅いって書いてるんですがマジですか?
0286デフォルトの名無しさん
2007/12/17(月) 01:36:280287デフォルトの名無しさん
2007/12/17(月) 02:05:350288デフォルトの名無しさん
2007/12/17(月) 04:14:280289デフォルトの名無しさん
2007/12/17(月) 04:43:24プログラム構造やメモリ操作の見通しがたち易いからコンパイル時も実行時も最適化がめっさ効く。
だてに何十年も研究されてないし。
0290デフォルトの名無しさん
2007/12/17(月) 04:59:02やってみようかな・・・
0291デフォルトの名無しさん
2007/12/17(月) 05:39:55http://www.djangobook.com/en/1.0/
0292デフォルトの名無しさん
2007/12/17(月) 08:51:57あんまり参考にならないけど、それでも数十倍の開きは付いてるね。
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=python&lang2=sbcl
Python を使うなら速度は気にしない方が良いよ。
0293デフォルトの名無しさん
2007/12/17(月) 09:19:10しんやまの書く記事を信用するなよボケ(wwwwwwww
0294デフォルトの名無しさん
2007/12/17(月) 09:46:410295デフォルトの名無しさん
2007/12/17(月) 11:13:47>定性的にみれば、Python はインタプリタ型の Lisp と同じくらいの速度に見える。 だが Lisp をコンパイルしたものと比べると明らかに遅い。
0296デフォルトの名無しさん
2007/12/17(月) 11:30:40今じゃ相当なマニアしか使ってねーっつうの
0297デフォルトの名無しさん
2007/12/17(月) 11:52:35まぁ普通はコンパイルするものだし。
Pythonで速度を上げられないのは、
バイトコードを動かしていることと
名前解決の辺りかな。
仕様と強く結びついている部分だから
これ以上の向上の余地もないと思う。
もっとも他人から否定されるのは嫌なのだがw
0298デフォルトの名無しさん
2007/12/17(月) 12:43:1430年前よりはマイナーだが、10年前よりはメジャーだ。変な話だが。
0299デフォルトの名無しさん
2007/12/17(月) 14:28:42よくある正規表現を使った文字列置き換えで、置き換え対象がちょっと複雑な時には
どのように書けばいいんですかね。
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)
とかやってみましたが、どう考えても綺麗ではないように思えます。
0300デフォルトの名無しさん
2007/12/17(月) 14:57:53print re.sub('(js|ja)', lambda mo: '$$ js is here $$' if mo.group(0)=='js' else '$$ ja is here $$', "jskljaksljaj\njslkajskja\n\n")
↓に何とか厨という罵り言葉がくる悪寒
0301デフォルトの名無しさん
2007/12/17(月) 15:00:36ワンライナー厨は典型的な中二病。
大抵のワンライナーはDQNレヴェルのスクリプトを一行にして得意気になってるアホです。
見づらいとか分かりづらいといった意見を読めないアホが悪いと無視するマジもんのアホです。
別にワンライナー以外が高尚でもなんでもなくただワンライナーがDWNなのです。
というか誰もワンライナーがそんないいもんだと思っちゃいないっていうかなんていうか
0302デフォルトの名無しさん
2007/12/17(月) 15:04:080303デフォルトの名無しさん
2007/12/17(月) 15:25:22s = "jskljaksljaj\njslkajskja\n\n"
print re.sub('(js|ja)', lambda mo: '$$ %s is here $$' % mo.group(0), s)
lambdaのとこよくわからんけどまねしてみた
0304デフォルトの名無しさん
2007/12/17(月) 17:31:45if〜のところはもっと複雑で、できればメソッドに切り出したいんです。
そういう方法はないんでしょうか。
0305デフォルトの名無しさん
2007/12/17(月) 19:26:35自演にも程があるw
0306デフォルトの名無しさん
2007/12/17(月) 21:13:24test=u'日本語'
print len(test)
のように、変数宣言時にuをつけることで、取得できることは確認いたしました。
Ploneなどで、test=request.get('test',None)のように取得した変数を、マルチバイト文字として
カウントするにはどのようにすればよろしいのでしょうか。
よろしくお願いします。
0307デフォルトの名無しさん
2007/12/17(月) 21:40:06test=u'日本語'
--------------- ←ここで分けて考える。
print len(test)
後ろのtestはどういう性質のものなら適合するのか。(具体的には何Objectか)
戻って u'日本語' はどういう意味のコードか。
0308デフォルトの名無しさん
2007/12/17(月) 22:19:55本当にありがとうございました。
0309デフォルトの名無しさん
2007/12/17(月) 22:37:05>307
ありがとうございます。
以下のようにやったらできました。
test=request.get('test',None)
print len(unicode(test,'utf-8')
u'日本語'というのは文字列定数を定義する場合で、エンコーディングを明示的に指定
することで、len()関数が判定できるってことなんでしょうか。
とりあえず、できたんでありがとうございます。
0310デフォルトの名無しさん
2007/12/18(火) 00:39:50翻訳プロジェクト見ても 2.3→2.4 が終了しただけで 2.5については一切書かれていないので・・・
0311デフォルトの名無しさん
2007/12/18(火) 01:18:530312デフォルトの名無しさん
2007/12/18(火) 01:39:050313デフォルトの名無しさん
2007/12/18(火) 03:18:52ボクからもお願いします( ´人`)
0314デフォルトの名無しさん
2007/12/18(火) 05:44:250315デフォルトの名無しさん
2007/12/18(火) 05:50:59以下、どうぞ
0316デフォルトの名無しさん
2007/12/18(火) 08:15:43サーバに送信した文を[]で囲んで返すというものです。
が、なぜかクライアントのrecvで受信待ちになってしまいます。
クライアントの通信先をechoに変えたところ、recvは正常に受信し、文字はちゃんと表示されました。
またサーバのsyslogには、正しくprint [hogeron]と記録されています。
現象から見ると、どうもサーバのprintで、ちゃんと送信されていないっぽいです。
os.environ['PYTHONUNBUFFERED'] = '1'
で、バッファしないように設定しているのですが…
どうすれば正常に動かせますか?
0317デフォルトの名無しさん
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()
0318デフォルトの名無しさん
2007/12/18(火) 08:54:04>ここは2.5ドキュメントを1文づつ訳すスレになりました
「310の翻訳作業を監視するスレ」の間違いだろう。
0319デフォルトの名無しさん
2007/12/18(火) 09:12:55mac で使える差分ツールない?標準で着いてるファイルマージは、
Leopard だと起動エラーが起きる。。。。。。クリーンインストールしたのに。
0320316
2007/12/18(火) 11:10:34unixはlfだけなのにネットワークではcrlfがないと駄目なんですね〜
0321デフォルトの名無しさん
2007/12/18(火) 11:57:04それはたまたまネットワークライブラリがCRLFで一区切りとしてくれただけで
一般的なTCP通信でその前提はなりたたないから。
sokcetを生で使うならあくまでバイト列な非同期通信として扱わないと。
0322デフォルトの名無しさん
2007/12/18(火) 12:37:29strip?
0323[:-2]
2007/12/18(火) 16:47:200324デフォルトの名無しさん
2007/12/18(火) 17:28:11-2じゃなくて-1じゃね?
>>322
まーchompだったらrstrip()だけんど。
0325デフォルトの名無しさん
2007/12/18(火) 22:14:270326デフォルトの名無しさん
2007/12/18(火) 22:36:55ちょっと興味があってPython勉強しようと思う。
そこで、おすすめの書籍なぞある?
環境はWin。
0327デフォルトの名無しさん
2007/12/18(火) 22:41:12「即効!Pythonプログラミング」上平哲著
0328デフォルトの名無しさん
2007/12/18(火) 22:41:44>116
0329デフォルトの名無しさん
2007/12/18(火) 22:48:54WindowsなのでExamDiffで比較してみたけど
どうでもいい、タグの大文字→小文字とか lay-out → layout みたいな修正が多くて確認が面倒くさそうだった
0330デフォルトの名無しさん
2007/12/18(火) 22:50:02ありがとうございます
本読んで頑張ってみる。
0331デフォルトの名無しさん
2007/12/19(水) 01:00:00str[:-1]
chompは
str.endswith('\n') and str[:-1] or str
だとおもう。
(実用するかはともかくとして
0332デフォルトの名無しさん
2007/12/19(水) 02:28:29あるモジュールを使わなくなった時、
そのモジュールのimportを削除し忘れることってあるじゃん
結果無駄な読み込みが発生してしまう
そういうのを防ぐためのいい方法はありますか?
0333デフォルトの名無しさん
2007/12/19(水) 02:37:25chomp は str.rstrip('\r\n') だろ
0334デフォルトの名無しさん
2007/12/19(水) 03:39:23文字列に自家製メソッド追加したり。
0335デフォルトの名無しさん
2007/12/19(水) 03:47:01pythonチュートリアルによるとグイド・ファン・ロッサム
0336デフォルトの名無しさん
2007/12/19(水) 04:28:47できない。
0337デフォルトの名無しさん
2007/12/19(水) 08:04:430338デフォルトの名無しさん
2007/12/19(水) 09:05:14とりあえず書いておくわ。
作者乙。
0339デフォルトの名無しさん
2007/12/19(水) 12:16:48pycheckerでチェックできると思う
0340デフォルトの名無しさん
2007/12/19(水) 13:08:320341デフォルトの名無しさん
2007/12/19(水) 13:09:35それでいいと思う
0342デフォルトの名無しさん
2007/12/19(水) 15:48:13昔やったらかえって遅くなったんじゃなかったっけ?
0343デフォルトの名無しさん
2007/12/19(水) 16:20:21STGの神プレイヤーがどうかしたのか?
0344デフォルトの名無しさん
2007/12/19(水) 17:56:58WIZがどうかしたのか?
0345デフォルトの名無しさん
2007/12/19(水) 18:32:010346デフォルトの名無しさん
2007/12/19(水) 22:02:52http://www.artima.com/weblogs/viewpost.jsp?thread=214235
0347デフォルトの名無しさん
2007/12/19(水) 23:30:39number=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と違ってクロージャの中の変数いじれない?
0348デフォルトの名無しさん
2007/12/20(木) 01:16:42pythonではそういう時はCounter classを作る
counter = Counter()
0349デフォルトの名無しさん
2007/12/20(木) 01:19:060350デフォルトの名無しさん
2007/12/20(木) 01:25:09number = 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")
0351デフォルトの名無しさん
2007/12/20(木) 01:49:23なるほどクラスを作るのか。
0352デフォルトの名無しさん
2007/12/20(木) 01:51:36for 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);
}
って自動で出力してくれるような。
0353デフォルトの名無しさん
2007/12/20(木) 01:58:43def 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);
}
って自動で出力してくれるような。
0354デフォルトの名無しさん
2007/12/20(木) 02:00:160355デフォルトの名無しさん
2007/12/20(木) 02:43:060356デフォルトの名無しさん
2007/12/20(木) 09:27:410357デフォルトの名無しさん
2007/12/20(木) 09:37:100358デフォルトの名無しさん
2007/12/20(木) 11:23:310359デフォルトの名無しさん
2007/12/20(木) 15:27:10そういった仕事に就いてるからですか?
それとも趣味ですか?
もし趣味だとしたら変態です
0360デフォルトの名無しさん
2007/12/20(木) 15:35:15あなたが無能なだけですよ
0361デフォルトの名無しさん
2007/12/20(木) 15:59:53python の例がないんだ・・・。
誰かかいてくれないか
0362デフォルトの名無しさん
2007/12/20(木) 16:45:34foo = Foo()
foo.hello()
# リフレクション
class_ = globals()['Foo']
method = getattr(class_(), 'hello')
method()
おれこの種の用語嫌いなんだよな。RTTIって言い方やめたの?
0363デフォルトの名無しさん
2007/12/20(木) 16:46:07このヘンタイがっ!!
0364デフォルトの名無しさん
2007/12/20(木) 17:21:31RTTIとリフレクションは意味が違う
0365デフォルトの名無しさん
2007/12/20(木) 19:13:320366デフォルトの名無しさん
2007/12/20(木) 21:48:38というtupleから
{'foo': 1, 'bar': 2, 'baz': 3}
というdictを得たいんですが、いい方法ありますか。
0367デフォルトの名無しさん
2007/12/20(木) 22:04:30lst = list(('foo', 1, 'bar', 2, 'baz', 3, ))
dic = {}
while lst:
dic[lst.pop()] = lst.pop()
0368デフォルトの名無しさん
2007/12/20(木) 22:05:40D = dict((T[x],T[x+1]) for x in xrange(0,len(T),2))
0369347
2007/12/20(木) 22:42:20number=[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
0370デフォルトの名無しさん
2007/12/20(木) 23:53:17>>> dict(zip(t[::2], t[1::2]))
{'baz': 3, 'foo': 1, 'bar': 2}
0371デフォルトの名無しさん
2007/12/21(金) 00:25:11デフォルト引数に入れて解決した
>>369
なんでclassにしないの?
0373デフォルトの名無しさん
2007/12/21(金) 00:50:24サンクス。
特に370の方法はいいな。
0374デフォルトの名無しさん
2007/12/21(金) 13:35:27generator用のenumerateみたいなのは標準では付いてないんですかね?
0375デフォルトの名無しさん
2007/12/21(金) 13:40:01izip + count
0376374
2007/12/21(金) 13:55:47どうもバージョンの古い脳内pythonの話だったポイ・・・orz
0377デフォルトの名無しさん
2007/12/21(金) 14:59:36phpですら定義の順番に関係なく呼べるのに・・・
0378デフォルトの名無しさん
2007/12/21(金) 15:14:560379デフォルトの名無しさん
2007/12/21(金) 15:19:46みんな許せるの?
0380デフォルトの名無しさん
2007/12/21(金) 15:27:07class int:
def fuga(self):
return "fugafuga"
じゃ無理みたいです
0381デフォルトの名無しさん
2007/12/21(金) 15:42:06・Rubyでやれ
・>>337
0382デフォルトの名無しさん
2007/12/21(金) 15:46:020383デフォルトの名無しさん
2007/12/21(金) 16:29:55それはエラーになってほしい人もいるからなんじゃない?
Pythonが変数と関数の名前空間が一緒なのと関係あるのかな。
ちなみにRubyもエラーになる。PerlとJavascriptとHaskellはオッケー。
>>382
えー既存クラスにメソッド追加って普通にしない?
0384デフォルトの名無しさん
2007/12/21(金) 16:32:040385デフォルトの名無しさん
2007/12/21(金) 16:39:350386デフォルトの名無しさん
2007/12/21(金) 17:01:28return "fugafuga"
print fuga(42)
0387デフォルトの名無しさん
2007/12/21(金) 17:10:12今から読んでみる
0388デフォルトの名無しさん
2007/12/21(金) 17:43:48モジュールがロードされるタイミングでいろいろしたい人がいるからじゃない?
if os.name == "nt":
def pathnomalization(p):
ほげほげ
else:
def pathnomalization(p):
ふがふが
みたいなコード書いたことあるけど。
0389デフォルトの名無しさん
2007/12/21(金) 17:49:09全然違うんですけど・・・。
Pythonianの人って、標準とは別名のメソッドを呼びたくなったらどうするんですか?
0390デフォルトの名無しさん
2007/12/21(金) 18:04:060391デフォルトの名無しさん
2007/12/21(金) 18:13:47PEPを書く
0392デフォルトの名無しさん
2007/12/21(金) 18:20:21ひえーマジすか
Pythonは禁欲的だと聞いていましたがこれほどとは・・・
メソッド定義にself書いたり、気持ち悪い規則が多いなあ
rubyに比べてリスト内包表記と、ライブラリが多いことと解釈系がやたら速いのと、
endを馬鹿みたいに書かなくていいのとhelp()が好きだけど、他はとにかく不便だなあ。
どの言語もいいところと悪いところがありますね。
0393デフォルトの名無しさん
2007/12/21(金) 18:24:160394デフォルトの名無しさん
2007/12/21(金) 18:27:010395デフォルトの名無しさん
2007/12/21(金) 18:53:410396デフォルトの名無しさん
2007/12/21(金) 18:55:07精進
0397デフォルトの名無しさん
2007/12/21(金) 19:26:07反論は認める
0398デフォルトの名無しさん
2007/12/21(金) 19:49:03HTMLParserってShift-jisのページでも使えますか?
urllib2.urlopenで取得した2chのメニュー(左フレーム)をそのままfeedしたら
junk charactersがなんとかってエラーがでました
0399デフォルトの名無しさん
2007/12/21(金) 19:53:52不可能ではないけどキミにはムリ。
0400デフォルトの名無しさん
2007/12/21(金) 20:03:16もっても解析は出来ないと思う。
タグを振ってくれると楽なんだがなぁ。
0401デフォルトの名無しさん
2007/12/21(金) 20:06:07Σ(´Д` ) 工エー。せっかくスクリプト言語なのに・・・
_doc__とか__name__とかもダメなの?どっちかというと、printキーワードとかのほうが
キモいけどなあ。おまえそれどっから呼んでるのかと。
0402デフォルトの名無しさん
2007/12/21(金) 20:06:35ずばりなのがココにあるけど
http://www.freia.jp/taka/blog/169
0403デフォルトの名無しさん
2007/12/21(金) 20:12:30再現コード貼ってちょ
0404デフォルトの名無しさん
2007/12/21(金) 20:40:40printはビルトイン関数になるし早くなれ
__name__,__file__,__builtins__はモジュールを生成する側がglobalsに突っ込んでるその辺はすまんかった
0405デフォルトの名無しさん
2007/12/21(金) 22:43:44>pythonてコードの前部分で定義した関数しか呼び出せないの?
>phpですら定義の順番に関係なく呼べるのに・・・
通常は
def main():
f()
g()
def f():
print 'foo'
def g()
print 'bar'
main()
と書くから、だれも問題と思ってない。
>>379
>スクリプト言語のくせにそんなのイモすきない?
>みんな許せるの?
PHPのは関数の定義、Pythonは関数を生成して変数へ代入、Rubyは関数定義文の実行。
スクリプト言語といえど、それぞれ根本的に思想が違うんだから、どうしようもない。
それが分からないお前がいちばんあわれ。
0406デフォルトの名無しさん
2007/12/21(金) 22:45:350407398
2007/12/21(金) 23:10:37レスありがとうございます
>>402 に書いてある方法で成功しました
というかこのページ開いてたのに下まで見てなかった・・・
お騒がせしてすいません
0408デフォルトの名無しさん
2007/12/22(土) 04:50:36>>401
「スクリプト言語」に限定したことではなくルールの問題に過ぎない
0409デフォルトの名無しさん
2007/12/22(土) 11:20:430410デフォルトの名無しさん
2007/12/22(土) 11:36:56よくある相互入れ子型の再帰の練習問題みたいなのを
書こうとして「アレ?どうやんだっけ?」と思ったことはある…
0411デフォルトの名無しさん
2007/12/22(土) 11:37:19Rubyのobj.inspectのことだとするなら
呼出側はrepr(obj)。自作クラスに定義したいならdef __repr__(self):で。
0412デフォルトの名無しさん
2007/12/22(土) 12:03:01それです
ありがとうございました
inspectモジュールのところ見て(?o?)となってました
0413デフォルトの名無しさん
2007/12/22(土) 12:49:560414デフォルトの名無しさん
2007/12/22(土) 16:34:570415デフォルトの名無しさん
2007/12/22(土) 18:10:56これのこと?
'\x00'
'\0'
0416デフォルトの名無しさん
2007/12/22(土) 19:26:25DOSじゃないなら、ないんじゃない?
'¥0'は文字列の終わりであって、EOFはまた意味が違うからね。
0417デフォルトの名無しさん
2007/12/22(土) 19:31:590418デフォルトの名無しさん
2007/12/22(土) 19:36:16> よくある相互入れ子型の再帰の練習問題みたいなのを
それは問題なく何の工夫もなく書ける
関数定義の位置が関係するのは関数やメソッドの外から呼ぶ場合
0419デフォルトの名無しさん
2007/12/22(土) 20:23:132 << 30が-2147483648なんだけど、
2.5だと2147483648Lになる。
こうなる理屈は分かってるんだけど、
2.2以前の32 bitを前提としたcodeを2.5に移植するときに、
どうやったらうまく動くんでしょうか。
>>185を参考にして
int((2 << 30) & sys.maxint)
としても、結果は0になってしまう。
0420デフォルトの名無しさん
2007/12/23(日) 01:08:24"Python" is not a good name, should rename to "Athon"
0421デフォルトの名無しさん
2007/12/23(日) 01:14:290422デフォルトの名無しさん
2007/12/23(日) 01:47:22これかね、
0423デフォルトの名無しさん
2007/12/23(日) 02:42:01>>> hex(sys.maxint)
'0x7fffffff'
>>> hex(2 << 30)
'0x80000000L'
0424デフォルトの名無しさん
2007/12/23(日) 09:40:55スクリプトと思って気軽に書いてたら永久ループがあったみたいで
out of memoryになってしまい
その影響でmysqlのファイルがぶっ壊れててんやわんやでした(; ;)
0425デフォルトの名無しさん
2007/12/23(日) 11:16:32OSの仕事。
ulimitしとけ
0426419
2007/12/23(日) 12:55:39strになっちゃいますよね。
そこからどうすればいいですか?
int()もstring.atoi()もhexになっちゃうと効かないようで。
0427デフォルトの名無しさん
2007/12/23(日) 14:31:50移植元のコードの意図に寄るんじゃない?
0428デフォルトの名無しさん
2007/12/23(日) 14:49:54eval or int(str, 16) ?
0429デフォルトの名無しさん
2007/12/23(日) 14:51:44年末だから忙しいだけかな・・・
0430デフォルトの名無しさん
2007/12/23(日) 15:21:56アーカイブを見る限り投稿はあるみたいだけど。
順調に開発が進んでいるから投稿する必要がないだけじゃないかな。
まあリリース10日前になって作者が「これ以外に問題点はありますか?」なんていう頓珍漢なメールを投げる、
プロジェクトよりは大丈夫だろwww
0431423
2007/12/23(日) 18:15:32sys.maxintはMSBをsignにしてるから31bits分しかonにならないと言いたかったんだが分かって貰えなかったようで
マスクしたいなら決め打ちでやれ
intが16bits幅のCコンパイラでビルドされたpythonがあるかも知れないぞ
0432デフォルトの名無しさん
2007/12/24(月) 00:24:36WEBにスクリプトを投稿すると、
それまでに投稿されている全てのスクリプトと自動的に勝負が進行して、結果がでるみたいな。
0433デフォルトの名無しさん
2007/12/24(月) 00:31:46そういうプログラムを是非pythonで!
てか「初めてのPython」って本買ったんだが、
いまだにクラスすら出てこないorz
0434デフォルトの名無しさん
2007/12/24(月) 00:34:37WEBにスクリプトを投稿すると、
世界中のサーバをハックしまくって意のままにコントロールできる、みたいな。
0435デフォルトの名無しさん
2007/12/24(月) 00:36:19def 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
0436デフォルトの名無しさん
2007/12/24(月) 00:57:250437デフォルトの名無しさん
2007/12/24(月) 01:26:470438デフォルトの名無しさん
2007/12/24(月) 01:52:580439デフォルトの名無しさん
2007/12/24(月) 02:04:140440デフォルトの名無しさん
2007/12/24(月) 02:08:43ありがと。
-cで、普通複数行で書くようなプログラムも1行で書ける?
行の区切りがどうなるのかなと思って。
Pythonはインデント使うから。
0441デフォルトの名無しさん
2007/12/24(月) 02:18:25俺もその本買って勉強してるが
分厚すぎてめちゃくちゃ重い
机から落として足直撃したときはちょっと泣いた
0442デフォルトの名無しさん
2007/12/24(月) 02:34:34普通に書けばお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
ところで今日はクリスマスイブですよ、おまえら
0444デフォルトの名無しさん
2007/12/24(月) 06:27:43Python に乗り換えることにする
とりあえず windows の方は
拡張子 .rb で python 起動されるようにした
0445デフォルトの名無しさん
2007/12/24(月) 06:29:57pythonは、対話型実行が良くできてるから、どんな小さい実験とかでも、
対話型を起動させたほうが良いような気がする。
0446デフォルトの名無しさん
2007/12/24(月) 06:32:13.py で python が起動されるようにしたほうが良いと思うよ
0447デフォルトの名無しさん
2007/12/24(月) 06:34:23Windowsならインストール時にそうなってるんじゃないか
0448デフォルトの名無しさん
2007/12/24(月) 06:42:370449デフォルトの名無しさん
2007/12/24(月) 07:49:35結構色んな所から呼んでるんですよ
(CGIで後悔してたりとか別のコマンドから利用してたりとか)
しばらくはファイル名はそのまま残しておかないとまずいので
.rb をスケルトンにしてそこから .py 呼んで delegate でもいいんですけど
直接 .rb のナカミを python コードにしてしまった方が早いかなと
0450デフォルトの名無しさん
2007/12/24(月) 07:54:32ココはあなたのチラシの裏ではありません
0451デフォルトの名無しさん
2007/12/24(月) 07:58:05で一発ジャマイカ
0452419
2007/12/24(月) 09:39:25レスありがとうございます。
32bit目まで使う必要があるプログラムです。
ビット演算した結果は、fctrl.ioctl()の第二引数に与えます。
0x80000000L => 0x7fffffff
というような変換さえできればいいんですが、
普通2.5だとどうやって32bitの演算をCのように行うんでしょうか。
>>431
>intが16bits幅のCコンパイラでビルドされたpythonがあるかも知れないぞ
自分の環境でデバイスの操作を考えているので、
他環境では動かなくても大丈夫です(動けばなお良い)
ただし、現在2.3で運用しているんですが、
将来的に2.5で動かそうと改造を考えており、
そのためにLの扱いで躓いています。
0453デフォルトの名無しさん
2007/12/24(月) 11:18:23変数だとすると、2<<28,2<<29まではビットはひとつしか立ってないが、
2<<30==0x7fffffffということは、最上位ビットの関係でいきなりビットが
反転するがそれでいいの?即値ならそれこそ0x7fffffffを直接使うところだと思ふ。
0454デフォルトの名無しさん
2007/12/24(月) 11:35:43if n & (1 << 31):
n = (1 << 31) - (n % (1 << 31)) - 1
return int(n)
print hex(c_like(0x80000000L))
0455デフォルトの名無しさん
2007/12/24(月) 11:36:08if n & (1 << 31):
n = (1 << 31) - (n % (1 << 31)) - 1
return int(n)
print hex(c_like(0x80000000L))
0456デフォルトの名無しさん
2007/12/24(月) 11:38:47コードに問題がある。書き直せ。
0457デフォルトの名無しさん
2007/12/24(月) 12:12:37>2.3だと
>2 << 30が-2147483648なんだけど、
この動作に本質的に依存したコードってなんか危ない気がする・・・
0458419
2007/12/24(月) 12:18:33元は
http://pyv4l.sourceforge.net/pyv4l/video4linux/__init__.py
なんですが、これをちょこちょこ自分で書き直したものです。
LinuxのCのheaderをそのまんま移植したものなので、
ベタ書きで書き直すとメンテが大変になるので避けたいところ。
こっから落とせます。
http://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にしたい。
0459デフォルトの名無しさん
2007/12/24(月) 12:59:33これでわかった。
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)
0460デフォルトの名無しさん
2007/12/24(月) 13:31:00rubyのどこが気に入らなかったんですか?
pythonはじめたばかりですが
組み込みオブジェクトにメソッド追加したりできるところとか
rubyも魅力的だと思うんですが
0461デフォルトの名無しさん
2007/12/24(月) 13:34:180462デフォルトの名無しさん
2007/12/24(月) 13:46:01rubyに関する質問したのは初めてですよ
0463デフォルトの名無しさん
2007/12/24(月) 13:48:260464デフォルトの名無しさん
2007/12/24(月) 14:18:42いくらなんでも無理ありすぎw
0465デフォルトの名無しさん
2007/12/24(月) 14:45:44わかるまで黙ってると良いと思います
0466デフォルトの名無しさん
2007/12/24(月) 16:03:410467デフォルトの名無しさん
2007/12/24(月) 16:35:200468デフォルトの名無しさん
2007/12/24(月) 17:16:31UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 176-177: illegal multibyte sequence
となって上手くいきません。
import urllib
uconn = urllib.urlopen('http://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に変換する以外で
この問題を回避する方法はあるでしょうか?
0469デフォルトの名無しさん
2007/12/24(月) 17:19:46�d�dでこけました
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 169-170: illegal multibyte sequence
0470デフォルトの名無しさん
2007/12/24(月) 17:26:190471デフォルトの名無しさん
2007/12/24(月) 17:26:43sjisをcp932でいけるんじゃね
0472468
2007/12/24(月) 17:39:02新キャラクタセット cp932 / eucjpms
http://www.mysql-partners-jp.biz/techinfo/tech_01.html
PHPからMySQL4.1とか5.0とか5.1とかに接続すると文字化けする : ::yossy.blog::
http://yossy.iimp.jp/wp/?p=60
PHPで「��(はしごたか)」「�ア(たつさき)」が文字化ける(2) : ::yossy.blog::
http://yossy.iimp.jp/wp/?p=58
sjis != cp932
cp932 == sjis + NEC 特殊文字 + NEC選定IBM特殊文字 + IBM特殊文字
なんですね。
というかweb上のサービスはいい加減UTF-8に統一しようよ…
0473デフォルトの名無しさん
2007/12/24(月) 18:23:47python ワンライナー で具具レバ… 超人に会えるでしょう
0474デフォルトの名無しさん
2007/12/25(火) 01:29:30e = unicode(e, 'sjis', 'replace')
e = unicode(e, 'sjis', 'ignore')
0475デフォルトの名無しさん
2007/12/25(火) 02:38:16逃げちゃだめだろw
0476デフォルトの名無しさん
2007/12/25(火) 03:11:09os.system('dir > d.txt')
を実行すると一瞬だけ
DOS窓が立ち上がるんですが
これを出さずに実行する事は可能でしょうか?
0477デフォルトの名無しさん
2007/12/25(火) 03:22:05ユニコードは漢字文化圏を尊重せずに文字数切り詰めて"統合"したりするから
統一しようにもできないわけで。
コンピュータ中心に世の中回ってる訳じゃないからね
0478デフォルトの名無しさん
2007/12/25(火) 04:02:27パイプ
0479468
2007/12/25(火) 04:17:49�dくす
ttp://diary.atzm.org/20040523.html
何でreplaceやらignoreなんてオプション指定があるんかなと不思議に思って
調べてみたら、フィルタリングするような用途で便利なんですね。
というかクロスプラットフォームを意識するとsjis+replaceで書いた
ほうが汎用性がありそうでした > unicode(elem, 'sjis', 'replace')
�d
0480デフォルトの名無しさん
2007/12/25(火) 05:46:02VS2008かMingwでコンパイルしたいんですが。
0481デフォルトの名無しさん
2007/12/25(火) 06:11:21スピードが必要な時には、PythonはCのプログラムに変換できる
というようなことが書かれていたのですが
どうやればいいですか?
0482デフォルトの名無しさん
2007/12/25(火) 06:13:01オレはDDKに入ってるmsvc8相当でコンパイルしてるけど
0483デフォルトの名無しさん
2007/12/25(火) 11:26:55import subprocess
subprocess.call("dir > d.txt", shell=True)
0484デフォルトの名無しさん
2007/12/25(火) 11:28:45漏れはVC6でCOM利用モジュール作って使ってるけど、問題なく使えてる。
0485デフォルトの名無しさん
2007/12/25(火) 13:04:47[MSC v.1310 32 bit (Intel)]
1310言われても分からない
0486デフォルトの名無しさん
2007/12/25(火) 13:11:14VC6 Ver12.00
VC2002 Ver13.00
VC2003 Ver13.10 *これ
VC2005 Ver14.00
VC2008 Ver15.00
0487デフォルトの名無しさん
2007/12/25(火) 13:47:31MinGW (gcc 3.2.3) で拡張モジュールのコンパイルできてるよ。
0488デフォルトの名無しさん
2007/12/25(火) 17:22:32>>483
無事に解決する事が出来ました。
ありがとうございました。
0489デフォルトの名無しさん
2007/12/25(火) 22:10:44ttp://python.matrix.jp/apps/code_blocks.html
0490デフォルトの名無しさん
2007/12/26(水) 01:42:490491デフォルトの名無しさん
2007/12/26(水) 01:46:480492デフォルトの名無しさん
2007/12/26(水) 01:56:59seq0[:] = seq[:]
seq0 = [i for i in seq1]
seq0=[]; for i in seq1: seq0.append(i)
ってどれも同じ処理してる?
0493デフォルトの名無しさん
2007/12/26(水) 02:17:26seq0 = seq1は同一オブジェクトを指すことになるが
他はリストを再構築してるので異なるオブジェクト(コピー)になる。
0494デフォルトの名無しさん
2007/12/26(水) 04:41:100495デフォルトの名無しさん
2007/12/26(水) 06:49:25浅いコピー
seq0[:] = seq[:]
普通のコピーになってるが、seq0が初期化されてる必要がある。
seq0 = [i for i in seq1]
普通のコピー
seq0=[]
for i in seq1: seq0.append(i)
普通のコピー
0496419
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))
0497デフォルトの名無しさん
2007/12/26(水) 08:52:16オマエのパソコン
0498デフォルトの名無しさん
2007/12/26(水) 10:52:27>>> from ctypes import c_int as int32
>>> 2 << 30
2147483648L
>>> int32(2 << 30).value
-2147483648
0499419
2007/12/26(水) 11:18:35ああ、そんなのがあるんですか。
ありがとうございます。知りませんでした。
ただ、2.3でも2.5でも動くようにしたいので、
2.3が消え去るまでは>>496の方法でやろうと思います。
0500デフォルトの名無しさん
2007/12/26(水) 16:00:50オレなんか未だに 1.5.2 で動くコードを書かされてる。
つまり消えない。
0501468
2007/12/26(水) 16:53:04encodeとdecodeの書式で取り扱うみたいに書いて
あったな…物忘れが激しすぎな罠�d
>>500
ちょっと関連するかもしれないのだけど
PyrexとCythonのコードdiff取って読んでみたら
なんとなくだけどCython微妙
三項演算子、切捨て除算、#ifdef、+=、とか対応してる
けど、なんかコードが助長になってると思う。
error_goto_if_null() とか module.py_result() とか
isingmodel: pyising.pyx@4ecf71b2c0b0
http://hg.sharesource.org/isingmodel/file/db7dd01cdc26/pyising.pyx
Cに変換する用途なんだからそんなの別にいいじゃんとか
言われると、その通りだとは思うけどさ
というかPyrexのドキュメントがわかりにくすぎるのが
いけないと思うんだ。わかりやすく書こうよ... orz
0502デフォルトの名無しさん
2007/12/26(水) 16:58:290503デフォルトの名無しさん
2007/12/26(水) 20:27:19わかりにくすぎる
0504デフォルトの名無しさん
2007/12/27(木) 02:07:45コードを読むときのエディタは
何を使ってますか?
0505デフォルトの名無しさん
2007/12/27(木) 02:20:06プロジェクト単位で読むときはEclipseかな。
われながらつまんない回答だとおもう。
0506デフォルトの名無しさん
2007/12/27(木) 08:12:030507デフォルトの名無しさん
2007/12/27(木) 08:38:58どこでもいい。$HOME/lib/pythonとか。
あとは$PYTHONPATHを設定するだけ。
0508デフォルトの名無しさん
2007/12/27(木) 09:08:5450MBくらいまでならなんとか平気で動くんですけど
100MB近くになるとサーバー自体が重たくなって
500MBクラスのものを試すと数十分固まったあげく
最後にエラーで中断されてしまいます
python恒例のオンメモリで全部処理する罠にはまってるのでしょうか?
どなたかうまく回避しているかたがいらっしゃいましたら教えていただけないでしょうか
0509デフォルトの名無しさん
2007/12/27(木) 09:26:100510デフォルトの名無しさん
2007/12/27(木) 10:08:370511デフォルトの名無しさん
2007/12/27(木) 10:15:250512デフォルトの名無しさん
2007/12/27(木) 10:20:58OSの仕事だと思うんだけど
0513デフォルトの名無しさん
2007/12/27(木) 10:36:03http://www.youtube.com/watch?v=adN4Zeed-L0
0514デフォルトの名無しさん
2007/12/27(木) 11:48:07何を使ってますか?
できれば unix 環境で使えるもの希望
0515デフォルトの名無しさん
2007/12/27(木) 14:48:570516デフォルトの名無しさん
2007/12/27(木) 15:38:31つEmacs
0517デフォルトの名無しさん
2007/12/27(木) 16:34:17とかてきとーにいってみる
0519デフォルトの名無しさん
2007/12/27(木) 17:22:04あー、難しく考えてた。
htmlとcss使えばいいのか。
0520デフォルトの名無しさん
2007/12/27(木) 18:42:24PyXR: Package c:\python24\lib\site-packages\win32\lib
http://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で
http://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()
0521デフォルトの名無しさん
2007/12/27(木) 23:14:07a2ps --prolog color がオヌヌメ。
0522デフォルトの名無しさん
2007/12/28(金) 05:57:410523デフォルトの名無しさん
2007/12/28(金) 08:24:530524デフォルトの名無しさん
2007/12/28(金) 08:42:330525デフォルトの名無しさん
2007/12/28(金) 09:07:44import os
os.environ['PYTHONPATH'] = パス
って感じにしてからimportしてるのですが
うまくimportできません。
コード内でモジュールサーチパスを指定するにはどうしたらいいですか?
0526デフォルトの名無しさん
2007/12/28(金) 09:32:020527デフォルトの名無しさん
2007/12/28(金) 09:47:48ありがとうございました
0528デフォルトの名無しさん
2007/12/28(金) 12:17:29RegexObjectオブジェクトとか
くどくね?
何でオブジェクト二回言うの?
0529デフォルトの名無しさん
2007/12/28(金) 12:58:470530デフォルトの名無しさん
2007/12/28(金) 13:28:40MatchO オブジェクト
マッチョ!!
0531デフォルトの名無しさん
2007/12/28(金) 13:56:36たしかにSCSIインターフェイスっておかしいね
0532デフォルトの名無しさん
2007/12/28(金) 14:02:12list.append('hoge')か
list += ['hoge']しかないのって冗長じゃね?
PHPなら
$list[] = 'hoge'
という書き方ができる。
PHPより冗長ってどんだけ〜
0533デフォルトの名無しさん
2007/12/28(金) 14:15:58おかしくはない。
0534デフォルトの名無しさん
2007/12/28(金) 14:59:41from〜import〜の使い分けってどうやってますか?
何かコツなどあれば教えて下さい。
0535デフォルトの名無しさん
2007/12/28(金) 15:05:45Python はリスト処理言語なんだから
そんな低レベルな用途に使っちゃ遺憾
0536デフォルトの名無しさん
2007/12/28(金) 15:19:300537デフォルトの名無しさん
2007/12/28(金) 15:26:50Error: ERR_ACCESS_DENIED
というエラーになります。
どうも拒否られているみたいです。
urllib.urlopen()を使ってwikipediaを取得するにはどうしたらいいですか?
0538デフォルトの名無しさん
2007/12/28(金) 15:27:23後で読みやすい方で書けばおk
from A import X, Y
これは、ソースの先頭を見たときに X と Y を使っていることが分かる。
import A
これだとソース本文を見たときに
A.hoge()
A.boge()
といった処理がAに依存していることが分かる。
0539537
2007/12/28(金) 15:43:49現在のところ、以下のプロトコルだけがサポートされています: HTTP、 (バージョン 0.9 および 1.0)
と書かれていました。今時http1.0!?
これってバーチャルホストすらできないプロトコルですよね
もう古いのかと思い
urllib2にしたら、403 forbiddenになりました
googleは問題なく取得できるのですが…
pythonはwikipediaに嫌われている?
0540デフォルトの名無しさん
2007/12/28(金) 15:50:46自分の力量不足をpythonのせいにしやがって。
氏ねよ屑。
User-agentを送ってないから弾かれているだけだろ。
0541デフォルトの名無しさん
2007/12/28(金) 16:19:11確かにUAをセットしたら取得できました
ありがとうございました
0542デフォルトの名無しさん
2007/12/28(金) 16:21:34デフォの"User-Agent: Python-urllib"がブラック扱いされてるようだぜ?
とりあえず>>540は便所掃除で風説の流布は勘弁してやる。
0543デフォルトの名無しさん
2007/12/28(金) 16:33:53ブラック扱いってどんだけ〜
グイドがgoogleの従業員だからか
0544デフォルトの名無しさん
2007/12/28(金) 17:05:24エディタ部の色が白いので目が痛いです
色をかえる方法あったら教えて下さい
0545デフォルトの名無しさん
2007/12/28(金) 17:08:480546デフォルトの名無しさん
2007/12/28(金) 17:11:03ブラックリスト入りさせることにどれだけの効果があるのか疑問
やはり嫌がらせ的なものとしか考えられない・・
0547デフォルトの名無しさん
2007/12/28(金) 17:39:290548デフォルトの名無しさん
2007/12/28(金) 18:04:490549デフォルトの名無しさん
2007/12/28(金) 18:15:26http://www.hazama.nu/t2o2/archives/002711.html
0550デフォルトの名無しさん
2007/12/28(金) 18:21:03wwwwww
0551デフォルトの名無しさん
2007/12/28(金) 23:23:35一般的にはunicodeの実装がutf-8ですよね?
0552デフォルトの名無しさん
2007/12/29(土) 00:23:34全く関係ないことはないが、関係ない。
unicodeは文字コード、utf-8はエンコーディング方式。
0553デフォルトの名無しさん
2007/12/29(土) 00:24:03バーボン送りにしとけ。
0554デフォルトの名無しさん
2007/12/29(土) 00:28:59って予約後?
0555デフォルトの名無しさん
2007/12/29(土) 00:32:240556デフォルトの名無しさん
2007/12/29(土) 00:34:32>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以外はうろ覚えだけど)
0557デフォルトの名無しさん
2007/12/29(土) 00:40:34>>> "from" in keyword.kwlist
True
0558デフォルトの名無しさん
2007/12/29(土) 02:49:52uaを変更することすら出来ない程低レベルなスパマーが多いから
uaのフィルタリングも一定の有効性はあるってことかな
0559デフォルトの名無しさん
2007/12/29(土) 08:57:17ありがとうございます。
確認できて安心しました。
unicode(text, "utf-8")
utf-8の文字列をユニコード文字列に変換する
とかで混乱してましたがすっきりしました。
0560デフォルトの名無しさん
2007/12/29(土) 09:06:44長い文字列を、改行を挟んで記述することがありますが
pythonだと改行が意味を持つのでうまく出来ません
$str = "hogehogehoge" .
"mogemogemoge" .
"pogepogepoge"
みたいな記述法をpythonでするにはどうしたらいいですか?
0561デフォルトの名無しさん
2007/12/29(土) 09:17:26.の変わりに\を使う
0562デフォルトの名無しさん
2007/12/29(土) 09:25:53oh
ありがとうございました
0563デフォルトの名無しさん
2007/12/29(土) 10:21:33つまり >>540 は spammer を増やした訳だな
0564デフォルトの名無しさん
2007/12/29(土) 11:47:19中間コードにされても実際にメモリは占有するよね?
コメントの方がよくね?
0565デフォルトの名無しさん
2007/12/29(土) 12:22:35まあメモリの占有が問題になるほど大量にドキュメントを書くこともないだろうし。
0566デフォルトの名無しさん
2007/12/29(土) 12:25:13勝手に -OO オプションでも付けてろよ
0567デフォルトの名無しさん
2007/12/29(土) 13:35:32今は
print "Content-type: text/html;charset=utf-8\n"
の後に出力してHTMLを返すようにしてるんですがこれだと面倒なので・・・
0568デフォルトの名無しさん
2007/12/29(土) 15:34:06書かなかったらCGIじゃないじゃん
0569デフォルトの名無しさん
2007/12/29(土) 16:25:330570デフォルトの名無しさん
2007/12/29(土) 16:32:380571デフォルトの名無しさん
2007/12/29(土) 16:33:43具体的には知らん。
0572デフォルトの名無しさん
2007/12/29(土) 17:00:11def debug_msg(msg):
open('/tmp/debug.log', 'a').write('** debug: ' + msg + '¥n')
を定義して debug_msg('var='+repr(var)) とかして使う。
そしてコンソールで
tail -f /tmp/debug.log
とすれば、デバッグメッセージが表示される。
本格的にするにはloggerかなんかを使うんだろうけど。
0573デフォルトの名無しさん
2007/12/29(土) 17:15:37cgitbって言うの使えば、エラー起きた前後の関係ありそうな変数の中身
自動で表示してくれるよ。
import cgitb; cgitb.enable()
0574デフォルトの名無しさん
2007/12/29(土) 18:40:08closeはいつすればよいですか?
0575デフォルトの名無しさん
2007/12/29(土) 18:44:46flush はいつすればよいですか?
0576デフォルトの名無しさん
2007/12/29(土) 19:08:48ファイルからバイナリデータを読み込んで
1バイト毎の数値のリストとして扱いたいんですが
文字列から数値への変更方法がわかりません。
すいませんが教えてください。
0577デフォルトの名無しさん
2007/12/29(土) 19:10:570578デフォルトの名無しさん
2007/12/29(土) 19:24:48ありがとうございます! できました!
0579デフォルトの名無しさん
2007/12/29(土) 19:37:23どちらもしなくていいですよ
0580デフォルトの名無しさん
2007/12/29(土) 20:12:20def debug_msg(msg):
open('/tmp/debug.log', 'a', 0).write('** debug: ' + msg + '\n').close()
0581デフォルトの名無しさん
2007/12/29(土) 20:20:13CGIならstderrに出せばWebサーバのログに残るし
たいがい出力先もサーバの設定で変えられる。
0582デフォルトの名無しさん
2007/12/29(土) 20:25:23変態っぽい環境だけど、将来需要ありそうな予感。
0583デフォルトの名無しさん
2007/12/29(土) 21:35:120584デフォルトの名無しさん
2007/12/29(土) 21:46:260585デフォルトの名無しさん
2007/12/29(土) 21:57:31Linux/Unixの各所に残っている腐れ縁のPerlのツールをPythonで
動かせれば、Perl猿人を入れなくて済む。
それとCRubyよりCPythonの方が規模というか依存が少ないので
小が大を兼ねる状態になっていい感じと思った。
これが実装できればグーグルに入社できるかもね!
0586デフォルトの名無しさん
2007/12/29(土) 22:09:21Rubyなんて絶対に必要ないだろwww
0587デフォルトの名無しさん
2007/12/30(日) 00:35:140588デフォルトの名無しさん
2007/12/30(日) 00:58:34その英語ネイティブに言っても通じないわ(wwwwwwwwwwwwwwwwwww
0589デフォルトの名無しさん
2007/12/30(日) 01:16:02そいつは単なる馬鹿か、あるいは「レスって何ですか?」とか言っちゃうタイプだな。
0590デフォルトの名無しさん
2007/12/30(日) 01:22:300591デフォルトの名無しさん
2007/12/30(日) 01:26:14that(which) is written in Python か
writenn in Python
じゃね?
それと、Per、Pythonみたいな固有名詞は大文字から始めるんだぜ。
おまいの英語、中学生からやり直した方がよくね?
0592デフォルトの名無しさん
2007/12/30(日) 01:27:24文法的に間違っている英語が分からないと馬鹿呼ばわりされるのか.
よい勉強になったよ.
0593デフォルトの名無しさん
2007/12/30(日) 01:28:390594デフォルトの名無しさん
2007/12/30(日) 01:47:30Is 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
0595デフォルトの名無しさん
2007/12/30(日) 02:03:080596デフォルトの名無しさん
2007/12/30(日) 02:12:26>>587は>>582に対する皮肉として書かれたんだろうし。
0597デフォルトの名無しさん
2007/12/30(日) 02:15:560598デフォルトの名無しさん
2007/12/30(日) 02:23:46成功
os.system("firefox http://yahoo.co.jp")
subprocess.Popen(["firefox", "http://yahoo.co.jp"])
subprocess.call(["firefox", "http://yahoo.co.jp"])
失敗
os.spawnlp(os.P_WAIT, "firefox", "http://yahoo.co.jp")
os.spawnlp(os.P_NOWAIT, "firefox", "http://yahoo.co.jp")
なぜspawnだとうまくいかないのでしょうか。
0599デフォルトの名無しさん
2007/12/30(日) 02:25:17だから中学生からやりなおせって(WWWWWW
0600デフォルトの名無しさん
2007/12/30(日) 03:49:15ってやるとaとbの間に空白が入って「a b」って出力されるけど
この空白を挿入させないようにする方法ってありませんか?
0601デフォルトの名無しさん
2007/12/30(日) 03:55:36区切りで半角スペースが入るのは仕様ってどっかに書いてた。
0602デフォルトの名無しさん
2007/12/30(日) 04:15:01トンクス。
仕様なら諦めます。
0603デフォルトの名無しさん
2007/12/30(日) 04:19:54これって対話モード時のリターン値の"表示"の延長であって、
プログラムの"出力"用途じゃない希ガス。
0604デフォルトの名無しさん
2007/12/30(日) 04:54:00質問からは少しずれるけど
標準ライブラリにwebbrowser.open(url)っていうのがあるよ。
2.5からはブラウザのタブにも対応してる。
0605デフォルトの名無しさん
2007/12/30(日) 07:25:37http://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()でもいいよ
0606デフォルトの名無しさん
2007/12/30(日) 13:20:54print(1,2,3) # 1 2 3
print(1,2,3,sep='') # 123
print(1,2,3,sep='|' # 1|2|3
0607デフォルトの名無しさん
2007/12/30(日) 14:34:190608デフォルトの名無しさん
2007/12/30(日) 14:37:010609デフォルトの名無しさん
2007/12/30(日) 14:46:450610デフォルトの名無しさん
2007/12/30(日) 16:02:26python特有の強みって何ですか?
0611デフォルトの名無しさん
2007/12/30(日) 16:03:100612デフォルトの名無しさん
2007/12/30(日) 16:56:290613デフォルトの名無しさん
2007/12/30(日) 17:16:260614デフォルトの名無しさん
2007/12/30(日) 17:23:360615デフォルトの名無しさん
2007/12/30(日) 17:24:110616デフォルトの名無しさん
2007/12/30(日) 17:31:46kwsk
0617デフォルトの名無しさん
2007/12/30(日) 20:52:490618デフォルトの名無しさん
2007/12/30(日) 21:04:20耳がわるいもしくは脳内エロ辞書が充実しすぎ。
0619デフォルトの名無しさん
2007/12/30(日) 21:13:01VS2008だとRuntimeErrorが発生してVS2003でコンパイルしてくださいというエラーメッセージが表示される。
0620デフォルトの名無しさん
2007/12/30(日) 21:17:56print 'a''b'
print 'a' 'b'
print 'a'+'b'
print '%s%s'%('a','b')
0621デフォルトの名無しさん
2007/12/30(日) 22:07:35たぶんStacklessのほうが速いと思っているんだけど。
0622デフォルトの名無しさん
2007/12/30(日) 22:15:48ttp://q.hatena.ne.jp/1198821703
0623デフォルトの名無しさん
2007/12/30(日) 22:18:220624デフォルトの名無しさん
2007/12/31(月) 10:02:20win32com?
0625デフォルトの名無しさん
2007/12/31(月) 10:12:03import win32com.client
import adodb
OpenOffice.org Scripting with Python
0626デフォルトの名無しさん
2007/12/31(月) 10:28:03pythonを使ってMSAccessを操作したいのです。
INSERTなどはどうしたらいいのでしょう?
ちなみにみなさん開発環境ってなに使ってます?
やっぱりテキストエディタ?
0627デフォルトの名無しさん
2007/12/31(月) 10:33:38ttp://xwave.exblog.jp/6474694/
0628デフォルトの名無しさん
2007/12/31(月) 10:46:12説明少なすぎて解りません。
実力がないだけか
0629デフォルトの名無しさん
2007/12/31(月) 10:50:58そのwin32comの説明が少ないという罠
単にDB使いたいだけならSQLite使っちゃうしね
0630デフォルトの名無しさん
2007/12/31(月) 11:14:25詳しい説明が掲載されている場所はないですかね?
0631デフォルトの名無しさん
2007/12/31(月) 11:18:440632デフォルトの名無しさん
2007/12/31(月) 12:07:240633デフォルトの名無しさん
2007/12/31(月) 12:22:37cn.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()
0634デフォルトの名無しさん
2007/12/31(月) 12:54:31pythonはじめたばかりだけど、みんなどんな用途に使ってる?
0635デフォルトの名無しさん
2007/12/31(月) 13:09:58ようするになんでも。
0636デフォルトの名無しさん
2007/12/31(月) 15:07:170637デフォルトの名無しさん
2007/12/31(月) 18:19:390638デフォルトの名無しさん
2007/12/31(月) 19:22:500639デフォルトの名無しさん
2007/12/31(月) 20:43:29Python弄ってると心が癒される
0640デフォルトの名無しさん
2007/12/31(月) 20:58:23ドカタ乙(wwwwwww
0641デフォルトの名無しさん
2007/12/31(月) 21:29:41会社で年越しでつか?
0642デフォルトの名無しさん
2007/12/31(月) 21:52:430643デフォルトの名無しさん
2007/12/31(月) 22:03:04Pythonで憂さ晴らしでもしないと、やってられないよね。
0644デフォルトの名無しさん
2007/12/31(月) 22:12:360645デフォルトの名無しさん
2007/12/31(月) 22:14:06ここはニートでPython覚えればGoogleに入れると信じて疑わないメルヘン専用のスレですよ。
0646デフォルトの名無しさん
2007/12/31(月) 23:07:05o メンヘル
0647デフォルトの名無しさん
2007/12/31(月) 23:32:03よいお年を
0650デフォルトの名無しさん
2008/01/01(火) 00:11:36Python3000とそれに隠れがちなPython2.6に期待
0651デフォルトの名無しさん
2008/01/01(火) 00:22:47ことよろ
0652デフォルトの名無しさん
2008/01/01(火) 04:45:590653デフォルトの名無しさん
2008/01/01(火) 05:41:100654デフォルトの名無しさん
2008/01/01(火) 05:44:512.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
0655デフォルトの名無しさん
2008/01/01(火) 06:10:11==
3.1.0 !!!
0656デフォルトの名無しさん
2008/01/01(火) 07:31:330657デフォルトの名無しさん
2008/01/01(火) 09:02:20それはない
2.6の次の2.7で2.xシリーズは終わりで、
メンテナンスリリースが2.7.1.8.2.8... という妄想ならしたことある
0658デフォルトの名無しさん
2008/01/01(火) 09:25:330659デフォルトの名無しさん
2008/01/01(火) 13:56:21それはRubyで期待しろwww
0660デフォルトの名無しさん
2008/01/01(火) 21:27:280661デフォルトの名無しさん
2008/01/02(水) 18:23:26ldir = 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ではなくタプルだ…って意味が良く分からんのですが…。
0662デフォルトの名無しさん
2008/01/02(水) 18:48:30>>> 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
0663デフォルトの名無しさん
2008/01/02(水) 19:07:16ありがとう。いろいろいじってて、どうも根本的に二重リスト?みたいになってるのは理解した。
n0 = matchList[0][0]
n1 = matchList[0][1]
newName = n0 + "_" + n1
print "New:>> [%s]" % newName
こんな感じで稼働するのは確認。
でも、なんで二重になったのか、よくわからん。
python、悪くない感触なんだけど…うーん。
0664デフォルトの名無しさん
2008/01/02(水) 19:10:330665デフォルトの名無しさん
2008/01/02(水) 19:45:40defFnRule内に複数のグループがあるから
>>> import re
>>> re.findall("(.)(.)", "123456789")
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]
0666デフォルトの名無しさん
2008/01/02(水) 20:11:31つまりこんな感触だといいわけだな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]を返す
0667デフォルトの名無しさん
2008/01/02(水) 20:11:39いっぺんre.match()して結果chkを得てるのに
またre.findall()するのは如何なものか。
0668デフォルトの名無しさん
2008/01/02(水) 20:16:38ldirとかchkとか、わざわざ変数用意するの読みづらくね?
0669デフォルトの名無しさん
2008/01/02(水) 21:06:210670デフォルトの名無しさん
2008/01/02(水) 22:21:47どこ出身だ
なんかmicrosoftのコードを思い出すんだが
0671デフォルトの名無しさん
2008/01/02(水) 22:24:30いや、>>665見ると違うなぁ…。というか、これは俺が正規表現良く分かってないのも原因かな。
>>669
ごめん。でもファイル名の一括変更やるだけの作り捨てscriptだし、ついでにお試しでpython使っただけだから。
>>668
否定しないw
>>667
言われてみればその通りだなぁ。
要は条件に合わないファイルを無視しようとして、なんとなく書いてたらああなっただけで、他意はない。
0672デフォルトの名無しさん
2008/01/02(水) 22:25:51色々。C++、Java、PHPとか。
でも出身という話になると…N88BasicとかVBとかってあたりかも。
とりあえず、動いたんで、もう消えまする。
ありがとうございました。>皆様
0673デフォルトの名無しさん
2008/01/02(水) 22:43:240674デフォルトの名無しさん
2008/01/02(水) 23:30:38前から気になってたんだけど、re.matchとかre.searchってコンパイルした正規表現をキャッシュしてくれるのかな?
それってどっかに書いてある?
0675デフォルトの名無しさん
2008/01/02(水) 23:41:020676デフォルトの名無しさん
2008/01/02(水) 23:42:27ただ _MAXCACHE = 100 を越えるとキャッシュを全てクリアするようになってる
0677デフォルトの名無しさん
2008/01/02(水) 23:43:01_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
0678デフォルトの名無しさん
2008/01/03(木) 11:01:390679デフォルトの名無しさん
2008/01/03(木) 16:19:594. パターンにもっと力を
http://www.python.jp/Zope/articles/tips/regex_howto/regex_howto_4
Python reモジュールで使える正規表現演算子
http://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 は厳密には正規表現にはカテゴライズされないからか…
0680679
2008/01/03(木) 16:50:03ttp://kazamachi.blogspot.com/
>具体的には、ElementPathはXPathを分解するのにre.filndall()メソッドを使ってリスト
>の要素としてタプルが含まれていることを期待しているのですが、IronPython 1.0.1の
>re.findall()メソッドはリストのみを返すためにエラーとなります。
ごめんたぶんグルーピング関係ないw
0681デフォルトの名無しさん
2008/01/03(木) 17:12:250682679
2008/01/03(木) 18:41:20[('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
0683デフォルトの名無しさん
2008/01/03(木) 18:43:39俺も勉強中なんよ(爆)
スルーしる
0684デフォルトの名無しさん
2008/01/03(木) 19:05:090685デフォルトの名無しさん
2008/01/03(木) 19:15:09グループの数によって変わる。
グループなし、グループ一つはマッチリストかグループリスト
>>>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')]
0686デフォルトの名無しさん
2008/01/03(木) 19:24:470687デフォルトの名無しさん
2008/01/03(木) 22:32:540688デフォルトの名無しさん
2008/01/03(木) 22:43:52某スレで脳内環境が最強だと話題になってた
0689デフォルトの名無しさん
2008/01/03(木) 22:45:37みんなどんな環境?
0690デフォルトの名無しさん
2008/01/03(木) 23:06:50テキストエディタ(emacs or vi)
0691デフォルトの名無しさん
2008/01/03(木) 23:10:370692デフォルトの名無しさん
2008/01/03(木) 23:47:05pythonに限って言うとかなり使いやすい。
0693デフォルトの名無しさん
2008/01/03(木) 23:53:56idleは軽くていいんだけど、補完がpydevに比べるといまいち
ただpydevはstdinとかのエンコーディングがNoneになっていて
文字コードの変換とかしたらこけて、その解決法が良く分からないのが難しい
このスレのPert20にその話題が出ているみたいなんですけど、誰か>>1のまとめサイトに
アップしていただけないでしょうか?
0694デフォルトの名無しさん
2008/01/04(金) 00:11:240695デフォルトの名無しさん
2008/01/04(金) 00:23:080696デフォルトの名無しさん
2008/01/04(金) 02:41:500697デフォルトの名無しさん
2008/01/04(金) 03:52:45もちろん。
0698デフォルトの名無しさん
2008/01/04(金) 05:01:34ようつべわらた
0699デフォルトの名無しさん
2008/01/04(金) 05:36:550700デフォルトの名無しさん
2008/01/04(金) 05:51:500701デフォルトの名無しさん
2008/01/04(金) 08:13:08vimの補完てomni?
0702デフォルトの名無しさん
2008/01/04(金) 09:36:030703デフォルトの名無しさん
2008/01/04(金) 09:36:244タブ
0704デフォルトの名無しさん
2008/01/04(金) 10:22:11Eclipseって起動もっさりしてね?
0705デフォルトの名無しさん
2008/01/04(金) 10:28:310706デフォルトの名無しさん
2008/01/04(金) 10:35:09何も入ってないのを立ち上げたらびっくりするほど速かった。
立ち上げただけで何も出来なかったけど。
0707デフォルトの名無しさん
2008/01/04(金) 11:40:230708デフォルトの名無しさん
2008/01/04(金) 13:24:5414
0709デフォルトの名無しさん
2008/01/04(金) 13:25:590710デフォルトの名無しさん
2008/01/04(金) 14:11:25・・しかしpythonをeclipseで書くって凄いな。想像したことも無い
なんか嬉しい事ある?起動もっさりでイラつかない?
0711デフォルトの名無しさん
2008/01/04(金) 15:48:38CVSとかsvnとかとの連携が楽>eclipse
0712デフォルトの名無しさん
2008/01/04(金) 17:32:56710はソースコード管理をしない人なんだよ。
その必要がないんだろう。
なぜなら(ry
0713デフォルトの名無しさん
2008/01/04(金) 18:29:140714デフォルトの名無しさん
2008/01/05(土) 01:11:59さすがにviはないな。vimは良いと思うけど。
>>712
EclipseはJavaでは使うけど、他の用途では便利だとはおもわんなぁ。
cvs/svnクライアントも別にIDE連動である必要って感じないし。
でもまぁPythonはスクリプト言語にしては開発環境充実してるよね。
そうやってどれがいいとか選べるのも面白い。
0715デフォルトの名無しさん
2008/01/05(土) 01:45:360716デフォルトの名無しさん
2008/01/05(土) 10:53:04朝起きたら一度起動してずっとそのままだから
0717デフォルトの名無しさん
2008/01/05(土) 12:47:17経験カルト 最適化カルト 簡単カルト 高速カルト
不確実性カルト 完璧カルト カーゴ・カルト
ttp://slashdot.jp/developers/08/01/04/001246.shtml
0718デフォルトの名無しさん
2008/01/05(土) 15:37:070719デフォルトの名無しさん
2008/01/05(土) 17:12:43Uncertainty Cultはカルトというよりはただの慎重派のような・・
0720デフォルトの名無しさん
2008/01/05(土) 20:23:07IDLEで日本語を扱えるようにするにはどうすれば良いですか?
お願いします
0721デフォルトの名無しさん
2008/01/05(土) 20:26:57スレ汚しすいませんでした
0722デフォルトの名無しさん
2008/01/06(日) 11:51:130723デフォルトの名無しさん
2008/01/06(日) 12:05:00いまから始める程度の知識ならどちらも変わらない罠
安定しているor手に入っている処理系を使えばよかろ
0724デフォルトの名無しさん
2008/01/06(日) 12:51:390725デフォルトの名無しさん
2008/01/06(日) 12:54:13/ 演算子の挙動変更が一番怖い。
気づかぬところで何かが起こりそうだ
0726デフォルトの名無しさん
2008/01/06(日) 14:23:15Introduction to Crunchy tutorial video - Crunchy - Learn: programming_tools, demonstration, open-source, cross-platform, interpreter, Python, interactive
http://showmedo.com/videos/video?name=1430000&fromSeriesID=143
切り捨て除算//が、普通の除算/になるんだっけか
どこに書いてあるんだ3.0の仕様とか,よくわからん
0727デフォルトの名無しさん
2008/01/06(日) 14:45:04ttp://www.python.org/dev/peps/pep-0238/
ttp://docs.python.org/dev/3.0/whatsnew/3.0.html
0728デフォルトの名無しさん
2008/01/06(日) 15:19:41http://www.python.org/dev/peps/pep-3099/
http://www.python.org/dev/peps/pep-3100/
0729デフォルトの名無しさん
2008/01/06(日) 16:06:13何が問題でしょうか?
どの部分が問題なのかわからないので対処できずに困っています
0730デフォルトの名無しさん
2008/01/06(日) 16:17:370731デフォルトの名無しさん
2008/01/06(日) 16:40:00逆
0732デフォルトの名無しさん
2008/01/06(日) 18:36:2452pくらいで既に何をしてるか意味がわかりません。
そんな僕でも↑で挙げられていた「pythonで学ぶプログラム作法」
を理解することができるでしょうか?
他にも初心者に分かりやすい入門書があれば教えてください。
0733デフォルトの名無しさん
2008/01/06(日) 19:16:54Pythonの前に一般常識や日本語を勉強した方がいいと思うぜ。
0734デフォルトの名無しさん
2008/01/06(日) 19:27:53その本はたぶん一番易しい部類に入る。
もう一冊入門書を買うのは無駄だから、
何がわからないのか整理してからここで質問すべし。
あと対話型シェルでサンプルコードを試すこと。
0735732
2008/01/06(日) 20:51:17頑張って理解できるようにしてみますっ!
0736デフォルトの名無しさん
2008/01/06(日) 22:45:38初めてのPython買ったんですが、
表紙の絵の意味がわかりません。
なぜねずみなんですか?
0737デフォルトの名無しさん
2008/01/06(日) 22:51:340738デフォルトの名無しさん
2008/01/06(日) 22:53:22イテレータとかオブジェクト指向とかわざわざ使うこともない
0739デフォルトの名無しさん
2008/01/06(日) 23:09:59あとはPythonシリーズ全部ヘビだと見分けが付かなくてよろしくないってのもあるかと
>>738
なんて本の最初の50ページ?
0740デフォルトの名無しさん
2008/01/06(日) 23:12:52初めてのPythonならビルトインオブジェクトの項にすら入っていないな
0741デフォルトの名無しさん
2008/01/06(日) 23:37:56116ページまでは頑張ってみましょう。
みんPyは用例不足なんで、説明の手際はいいけど
プログラムが初めての人にはイメージ沸きにくいね
0742デフォルトの名無しさん
2008/01/07(月) 02:53:090743デフォルトの名無しさん
2008/01/07(月) 02:59:56> ちょっと端末の再起動
ここをもっと環境含めて明示的に書いたら教えてくれるかも。
0744デフォルトの名無しさん
2008/01/07(月) 03:11:32WMだと.netで簡単にできたのですが、pythonでもやろうとおもって適当に連想できるコマンドで書いても再起動できないのでどのように書いたらいいのかと思いまして
0745デフォルトの名無しさん
2008/01/07(月) 03:20:22会社の端末で遊ぶんじゃありません。
0746デフォルトの名無しさん
2008/01/07(月) 03:25:460747デフォルトの名無しさん
2008/01/07(月) 03:31:460748デフォルトの名無しさん
2008/01/07(月) 03:48:04でも、それだと、ネットワーク越しのPCを再起動する方法っすよね?オイラがやりたいのは携帯自体を再起動させる方法なんす
0749デフォルトの名無しさん
2008/01/07(月) 06:03:15かえって楽なコードじゃないかと思った俺素人
0750デフォルトの名無しさん
2008/01/08(火) 11:28:43設定しようとすると 以下のエラーが出ます。
...
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 を 設定すると出来るらしいのですが、ダメでした。
参考:http://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
0751750
2008/01/08(火) 11:51:45パソコン再起動したらできました。
Eclipse を 再起動してもできなかったのに。。。
スレ汚しごめんなさい
0752デフォルトの名無しさん
2008/01/08(火) 14:08:48ランチャーとかから起動すると、
ランチャーが起動したときの環境変数しかみなかったりするよ。
0753デフォルトの名無しさん
2008/01/08(火) 15:20:14○ローンチャ
0754デフォルトの名無しさん
2008/01/08(火) 21:04:52△ゲンマイチャ
0755デフォルトの名無しさん
2008/01/08(火) 21:13:500756デフォルトの名無しさん
2008/01/08(火) 21:16:17◎launcher
0757デフォルトの名無しさん
2008/01/09(水) 01:04:000758デフォルトの名無しさん
2008/01/09(水) 01:18:25☆ラウンチャの男
0759デフォルトの名無しさん
2008/01/09(水) 04:50:250760750
2008/01/09(水) 07:23:53それだ!
ランチャ使ってます。
なるほど、以後気を付けます
ありがと!
0761デフォルトの名無しさん
2008/01/09(水) 08:40:55継承とかどうやるの?
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 で新たに確保しなきゃならない項目がある場合に
どう書いていいのかよくわからん。
0762デフォルトの名無しさん
2008/01/09(水) 08:47:14def __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関数)に渡す?
0763デフォルトの名無しさん
2008/01/09(水) 08:50:10PyObject* val = PyDict_GetItemString(kw, "B");
if (val) {
b = PyInt_AsLong(val);
PyDict_DelItemString(kw, "B");
}
0764デフォルトの名無しさん
2008/01/09(水) 09:20:420765デフォルトの名無しさん
2008/01/09(水) 12:15:58def 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" )
としたいのですが、どうしたら良いでしょうか?
分かる方お願いします。
0766デフォルトの名無しさん
2008/01/09(水) 12:29:520767デフォルトの名無しさん
2008/01/09(水) 12:49:540768デフォルトの名無しさん
2008/01/09(水) 12:53:13関数呼び出しと文はまったく別物。文は自分では作れない。
0770デフォルトの名無しさん
2008/01/09(水) 13:32:44boost.pythonじゃだめなの?
http://d.hatena.ne.jp/niitsuma/20080108
0771デフォルトの名無しさん
2008/01/09(水) 16:58:23ruby
0772デフォルトの名無しさん
2008/01/10(木) 02:57:180773デフォルトの名無しさん
2008/01/10(木) 03:02:13PEP 8 -- Style Guide for Python Code
http://www.python.org/dev/peps/pep-0008/
0774デフォルトの名無しさん
2008/01/10(木) 03:25:17http://www.python.jp/doc/release/lib/node235.html
これってshより複雑になってないですか?
もっとシンプルに`command`を実現することはできないのでしょうか?
0775デフォルトの名無しさん
2008/01/10(木) 03:27:34http://www.oldriver.org/python/pep-0008j.html
0776デフォルトの名無しさん
2008/01/10(木) 03:30:080777デフォルトの名無しさん
2008/01/10(木) 03:37:06こんなのあったんですね
ありがとうございました
0778デフォルトの名無しさん
2008/01/10(木) 06:25:05ttp://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()
>>>
0779デフォルトの名無しさん
2008/01/10(木) 06:28:48try:
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
0780デフォルトの名無しさん
2008/01/10(木) 10:02:17PEP 8を知らない奴がPythonやるなよ
0781デフォルトの名無しさん
2008/01/10(木) 10:34:43「愚かな一貫性は小人物に憑いたおばけである」
0782デフォルトの名無しさん
2008/01/10(木) 10:50:01幼稚園児かよ(wwwwwwwwwwwwwwwwwwwwwwwwwwwww
0783デフォルトの名無しさん
2008/01/10(木) 10:57:02おばけ怖いね。たしかに怖い。
愚かな一貫性を捨ててPerlをやることにするよ。
0784デフォルトの名無しさん
2008/01/10(木) 11:08:490785デフォルトの名無しさん
2008/01/10(木) 11:12:54ついでにお茶もこわいんだけど。
0786デフォルトの名無しさん
2008/01/10(木) 14:13:05>プログラミングにおける推奨案
> - ソースコードは Python の実装(PyPy、Jython、IronPython、Pyrex、
> Psyco など)ごとの欠点を引き出さないように書くべきである。たとえば、
> CPython が a+=b や a=a+b などの文字列連結をインプレイス処理して、効
> 率よく動作する実装に依存してはならない。これでは Jython での動作が遅く
> なってしまう。パフォーマンスに敏感な部分では、''.join() を使うべき
> である。こう書いておけば、様々な実装において、連結処理は線形時間で
> 処理できる。
PythonSpeed
http://newworld.ddo.jp/doc/PythonSpeed
合わせて読みたい。
0787デフォルトの名無しさん
2008/01/10(木) 15:17:15s = s + "hoge"
s = s.add("hoge")
であって
s.add("hoge")
では無いんだよな。
Pythonを始めたころは+=演算子ないのかよと思っていたら
仕様拡張されて文字列にも適用されたけど、
今になって思えば失敗な気がする。
(何で当時の俺はまんせーしてたんだか…)
0788デフォルトの名無しさん
2008/01/10(木) 16:01:26別に幼児語じゃないぞ。
0789デフォルトの名無しさん
2008/01/10(木) 19:29:49つまりどこに行っても同じ
0790デフォルトの名無しさん
2008/01/10(木) 21:22:38おばけこわい。小人物こわい。
0791デフォルトの名無しさん
2008/01/10(木) 21:41:20このねちっこさは小人物の仕業だろ常識的に考えて(wwwwww
0792デフォルトの名無しさん
2008/01/10(木) 22:22:58PEP8の次にくるようにブックマークしたー
って、setオブジェクトってなんだよ…(しょっぱなで躓く)
0793デフォルトの名無しさん
2008/01/10(木) 22:39:49In Java, we had well known it's difference same as 'String / StringBuffer'.
0794デフォルトの名無しさん
2008/01/10(木) 22:59:280795デフォルトの名無しさん
2008/01/10(木) 23:10:090796デフォルトの名無しさん
2008/01/10(木) 23:34:390797デフォルトの名無しさん
2008/01/10(木) 23:38:47とりあえず過去完了は昔のある出来事以前のことをあらわすので
そこを現在完了に変えて、ついでに時制の一致とかも考えて・・・
You'd know it as defference between String and StringBuffer in Java.
ぐらいじゃないの?
0798デフォルトの名無しさん
2008/01/10(木) 23:39:280799デフォルトの名無しさん
2008/01/10(木) 23:40:410800デフォルトの名無しさん
2008/01/10(木) 23:46:240801デフォルトの名無しさん
2008/01/10(木) 23:58:180802デフォルトの名無しさん
2008/01/11(金) 00:05:30典型的なクソレス
0803デフォルトの名無しさん
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
(愚かな一貫性というものはちっぽけな精神にひそむお化けで、ちっぽけな
政治家や哲学者や聖職者達に崇められるものだ。偉大なる魂は一貫性など
とは全く無縁である。 - ラルフ・ワルド・エマソン)
割と有名な引用らしい。(知らんかったけど
0804デフォルトの名無しさん
2008/01/11(金) 04:42:52python2.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だと思うのですが・・・
何か初歩的な設定ミスなどしているのでしょうか
原因の思い当たる方どうぞご教示願います
0805デフォルトの名無しさん
2008/01/11(金) 05:08:56Thank you so much.
0806デフォルトの名無しさん
2008/01/11(金) 05:15:14ttp://starship.python.net/crew/mhammond/win32/
For some overviews of the Win32 API as exposed to Python,
see ttp://www.python.org/windows/win32/
0807デフォルトの名無しさん
2008/01/11(金) 05:18:10Win32all, 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/
0808デフォルトの名無しさん
2008/01/11(金) 06:35:50eggの中身はzipだからpeなwin32api.pydは標準ではインポートできない
setuptoolsもインポートの拡張してなかったと思うし
というかそのeggファイルって非公式なものなんじゃ
0809804
2008/01/11(金) 10:54:55egg排除してインストーラを使ってインストールし直したら
できました! みんなありがとう!!! 大感謝です!!!
今回の件でeasy_installやeggの特性も少し分かったので
スレタイ通り勉強になりました。今後も精進します。押忍
0810デフォルトの名無しさん
2008/01/11(金) 22:02:13こっちのことわざで言えば
君子豹変す
あたりのことかな。
0811デフォルトの名無しさん
2008/01/11(金) 22:31:570812デフォルトの名無しさん
2008/01/11(金) 22:46:350813デフォルトの名無しさん
2008/01/11(金) 22:48:22小人面を革む (易経)
0814デフォルトの名無しさん
2008/01/11(金) 22:49:54urlparse
0815デフォルトの名無しさん
2008/01/11(金) 22:57:390816デフォルトの名無しさん
2008/01/11(金) 23:57:07おばけにこだわってるのはもう君だけだから、無理に苦笑とかしても、ログ遡られて「ああこの子ね」となるだけかと。
0817デフォルトの名無しさん
2008/01/12(土) 00:04:31小人物乙(ww
0818デフォルトの名無しさん
2008/01/12(土) 01:22:010819デフォルトの名無しさん
2008/01/12(土) 01:34:380820デフォルトの名無しさん
2008/01/12(土) 02:38:160821デフォルトの名無しさん
2008/01/12(土) 02:49:090822デフォルトの名無しさん
2008/01/12(土) 03:29:590823デフォルトの名無しさん
2008/01/12(土) 06:34:36JythonでDjangoが動いたようです。
0824デフォルトの名無しさん
2008/01/12(土) 07:16:04あと1年くらいか
0825デフォルトの名無しさん
2008/01/12(土) 12:18:350826デフォルトの名無しさん
2008/01/12(土) 15:26:240827デフォルトの名無しさん
2008/01/12(土) 15:41:160828デフォルトの名無しさん
2008/01/12(土) 16:41:280829,,・´∀`・,,)っ-○◎●
2008/01/12(土) 16:51:250830デフォルトの名無しさん
2008/01/12(土) 20:02:35あたらしい文法増えるってことかい?
0831デフォルトの名無しさん
2008/01/12(土) 23:52:32{'増', 'え', 'る', 'よ'}
{i for i in 'さらに、setとdictの'}
{k: v for k, v in enumarate('内包表記も。')}
0832デフォルトの名無しさん
2008/01/13(日) 01:42:260833デフォルトの名無しさん
2008/01/13(日) 02:38:35個人的には 空set の方がよかった。
0834デフォルトの名無しさん
2008/01/13(日) 07:48:25無意味に後方互換性を崩すあんたのセンスを疑う。
0835デフォルトの名無しさん
2008/01/13(日) 08:31:58Yさん、ご苦労様です
0836デフォルトの名無しさん
2008/01/13(日) 10:12:27Yさんて誰よ
>>833-834
{} == set()
{:} == dict()
が自然じゃないかなぁ、と思ってた
確かに後方互換性がネックなんだけどね
0837デフォルトの名無しさん
2008/01/13(日) 11:56:25for 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)が返されればいいのに。
0838デフォルトの名無しさん
2008/01/13(日) 13:15:050839デフォルトの名無しさん
2008/01/13(日) 14:41:030840デフォルトの名無しさん
2008/01/13(日) 14:55:21だと思ってたけど。
0841デフォルトの名無しさん
2008/01/13(日) 16:41:24あ、そう、それだ、
そういうのを Guido は、if k in dict と for k in dict がライムする(韻を踏む(?))と表現しているね。
http://mail.python.org/pipermail/python-3000/2007-September/010222.html
0842デフォルトの名無しさん
2008/01/13(日) 16:42:28まだPythonは初心者ですが
0843デフォルトの名無しさん
2008/01/13(日) 17:08:300844デフォルトの名無しさん
2008/01/13(日) 17:14:30最低でも複数行をまとめてインデントしたり
コメントアウトできるエディターは必要
0845デフォルトの名無しさん
2008/01/13(日) 17:47:11ありがとうございます
探してみます
0846デフォルトの名無しさん
2008/01/13(日) 18:29:17入力値のチェックで全角のみ許可する場合は
どのようにすればいいのでしょうか?
正規表現でどのように書けばいいのでしょう?
お願いします
0847デフォルトの名無しさん
2008/01/13(日) 18:37:26ttp://pc11.2ch.net/test/read.cgi/tech/1180250376/
0848デフォルトの名無しさん
2008/01/13(日) 19:09:38正規表現ライブラリの動作をかんがえると
簡潔にできないなら別に正規表現にする必要はないかと。
Unicodeに統一させるのは前提として
文字単位で確認するようなコードをこさえればいいと思う。
速度求めるようなもんでもなさそうだし。
0849デフォルトの名無しさん
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
}
0850デフォルトの名無しさん
2008/01/13(日) 21:33:460851デフォルトの名無しさん
2008/01/13(日) 21:41:43^[亜-煕]+$
って保証されるんかいな?
0852デフォルトの名無しさん
2008/01/13(日) 22:22:290853デフォルトの名無しさん
2008/01/13(日) 22:23:010854デフォルトの名無しさん
2008/01/13(日) 22:50:41UNICODEなら、漢字全部って意味でそれ書いちゃ間違い
0855デフォルトの名無しさん
2008/01/13(日) 22:56:46漢字(統合漢字とExt.Aだけ)はこうか
r'^[\u4E00-\u9FBB\u3400-\u4DB5]+$'
0856デフォルトの名無しさん
2008/01/13(日) 23:32:08'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
0857デフォルトの名無しさん
2008/01/13(日) 23:48:22というロジックにしちゃえというのは禁句だろうか
0858デフォルトの名無しさん
2008/01/14(月) 00:03:100859デフォルトの名無しさん
2008/01/14(月) 04:39:570860デフォルトの名無しさん
2008/01/14(月) 09:28:22内部でお好みの全角のみか何かに正規化するのが定石じゃん?
全角のみでおねがいします、の入力フォームを見るたびに
殴りたくなるぜ
0861デフォルトの名無しさん
2008/01/14(月) 10:53:300862デフォルトの名無しさん
2008/01/14(月) 12:55:16一旦EUC-JPかShift_JISにしてASCIIの範囲の文字とそれ以外に分ければいいと思う。
0863862
2008/01/14(月) 13:42:18def 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
0864863の続き
2008/01/14(月) 13:43:21assert 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
0865デフォルトの名無しさん
2008/01/14(月) 18:26:52rubyってそんな面倒なことしないと分けれないのかよwww
>>863
そんな面倒なことせずに
east_asian_width使えばいいだろ
0866デフォルトの名無しさん
2008/01/14(月) 19:08:51ソースに問題点あるみたいなのでそっちの方が面倒そう<east_asian_width
http://d.hatena.ne.jp/methane/20070109/1168316594
0867methane
2008/01/14(月) 19:27:05それは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
0868デフォルトの名無しさん
2008/01/14(月) 19:41:430869デフォルトの名無しさん
2008/01/14(月) 19:51:10それは、現在の実装がblogの人の想定と違ってるってだけでそ。
そこにある修正したら、\u00A1(INVERTED EXCLAMATION MARK)とかもWide&Full-widthと同じ扱いされてまうやん。
0870methane
2008/01/14(月) 20:53:09>>867 のも、'A'を入れるか入れないかは微妙なんだな。
0871デフォルトの名無しさん
2008/01/14(月) 21:12:40Ambiguous : あいまい(な)
なわけで。
ttp://www.unicode.org/reports/tr11/tr11.h1.gif
0872methane
2008/01/14(月) 21:18:31CJK圏ではWide、それ以外ではNarrow、という意味で「あいまい」だと思ってた。
Unicodeメンドイな。
0874デフォルトの名無しさん
2008/01/14(月) 22:03:150875デフォルトの名無しさん
2008/01/14(月) 22:37:06どれが一番いいの?
0876デフォルトの名無しさん
2008/01/15(火) 00:02:47try:
a = input()
except NameError:
a = 0
0877デフォルトの名無しさん
2008/01/15(火) 00:09:30その発想は無かった。
0878デフォルトの名無しさん
2008/01/15(火) 00:16:05import sys
x = int(sys.stdin.readline())
impoすらメンドいならint(raw_input())
0879デフォルトの名無しさん
2008/01/15(火) 00:26:31>>878
ありがとうございました。
0880デフォルトの名無しさん
2008/01/15(火) 13:37:12cgiからurllibでgetするとソケットエラーになります。
pythonを起動してやれば、普通に取得できます。
分かる方いたらお願いします。
OS : CentOS release 5 (Final)
Server : Apache/2.2.3
python : 2.4.3
0881デフォルトの名無しさん
2008/01/15(火) 15:26:14> urllibでgetするとソケットエラーになります。
「ソケットエラー」なんてエラー出力にはならないと思うし
勝手な省略したらわかるものもわからなくなるよ?
その環境にはないけどオチとしてはSELinuxが働いている、かな。
0882デフォルトの名無しさん
2008/01/15(火) 16:11:03動きました。ありがとうございます。
エラー文見て、適当に略してしまいました、すいません。
IOError: [Errno socket error] (-3, 'Temporary failure in name resolution')
0883デフォルトの名無しさん
2008/01/15(火) 16:34:40http://www.google.co.jp/search?q=frobnicate&hl=ja&lr=lang_ja&start=20&sa=N
質問
frobnicateってどういう意味ですか?
0884デフォルトの名無しさん
2008/01/15(火) 16:50:24その検索結果のROT13の頁を見よ
0885デフォルトの名無しさん
2008/01/15(火) 19:01:23ROT13 - Wikipedia
http://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
http://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くす
0886デフォルトの名無しさん
2008/01/15(火) 19:39:21>>
>> 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
0887デフォルトの名無しさん
2008/01/16(水) 00:46:04やりたいんだけど、効率よく処理するにはどうすればいいだろう。
最初に思いたのは 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には集合オブジェクトの処理がないんだよね。。。
0888デフォルトの名無しさん
2008/01/16(水) 01:08:04s.remove(x)
for y in s:
my_cmp(x, y)
0889デフォルトの名無しさん
2008/01/16(水) 12:27:57http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474124
の下の方のやつを使えば、
for p in comb(list(s), 2):
my_cmp(*p)
とすっきり書ける。
0890デフォルトの名無しさん
2008/01/16(水) 23:41:58for i in ls[:-2]:
for j in ls[1:]:
my_cmp(i, j)
0891デフォルトの名無しさん
2008/01/17(木) 17:57:120892デフォルトの名無しさん
2008/01/18(金) 03:10:51面倒臭そうだ
0893デフォルトの名無しさん
2008/01/18(金) 12:05:26${HOME}/lib/python2.5
${HOME}/share
俺は↑みたいにやってパスを通している。
/usr/local = ${HOME} の位置づけ
${HOME}/.local/lib/python2.6
わざわざ隠さなくてもいいよ。
存在を忘れそうだ。
タイプも面倒くさいし。
0894デフォルトの名無しさん
2008/01/18(金) 21:21:23どうすればいいですか?
0895デフォルトの名無しさん
2008/01/18(金) 22:45:400896デフォルトの名無しさん
2008/01/18(金) 23:15:200897デフォルトの名無しさん
2008/01/18(金) 23:34:09その人はPGじゃなくてエスパーだろ。
0898デフォルトの名無しさん
2008/01/18(金) 23:57:27起きてしまうんですがどうしたらいいですか、なのかなぁ
0899デフォルトの名無しさん
2008/01/19(土) 01:38:32つ Unicode 文字列
0900デフォルトの名無しさん
2008/01/19(土) 06:26:070901デフォルトの名無しさん
2008/01/19(土) 11:00:18ttp://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
0902デフォルトの名無しさん
2008/01/19(土) 13:40:000903デフォルトの名無しさん
2008/01/19(土) 16:00:570904デフォルトの名無しさん
2008/01/19(土) 16:02:350905デフォルトの名無しさん
2008/01/19(土) 16:17:47あきらめ早すぎ。
0906デフォルトの名無しさん
2008/01/19(土) 19:30:12print時の文字フォーマットは辞書を使って
>>>fuga = {'hoge':'doutei'}
>>>print("%(hoge)s" % fuga)
>>>doutei
ができることを知ったよ。恥ずかしいのですべて読み切る。
0907デフォルトの名無しさん
2008/01/19(土) 19:31:030908デフォルトの名無しさん
2008/01/19(土) 19:31:51Python3000から付けるようになるとのことで、
今のうちから括弧付ける癖付けてる
0909デフォルトの名無しさん
2008/01/19(土) 19:40:02が正しい
0910デフォルトの名無しさん
2008/01/19(土) 19:55:33かっこつかないだろ
後悔はしていない
0911デフォルトの名無しさん
2008/01/19(土) 19:56:37Traceback (most recent call last):
File "<pyshell#909>", line 1, in <module>
print("%(hoge)s" % (fuga,))
TypeError: format requires a mapping
適当なことを言うのはやめるんだ
0912デフォルトの名無しさん
2008/01/19(土) 20:20:070913デフォルトの名無しさん
2008/01/19(土) 20:37:41print string.Template('$hoge').substitute(fuga)
というのも一応ある
0914デフォルトの名無しさん
2008/01/19(土) 22:57:310915デフォルトの名無しさん
2008/01/20(日) 02:24:27Slashdot Japan は現在メンテナンスを行っております。
ご迷惑をおかけして、誠に申し訳ございません。
しばらく後にもう一度アクセス頂けますよう、お願い申し上げます。
0916デフォルトの名無しさん
2008/01/20(日) 03:01:440917デフォルトの名無しさん
2008/01/20(日) 03:02:55>>> hoge = 'doutei'
>>> print '%(hoge)s' % locals()
doutei
こんな技もあるから覚えておくといいよチェリーボーイ
0918デフォルトの名無しさん
2008/01/20(日) 14:50:0039
0919デフォルトの名無しさん
2008/01/20(日) 16:12:470920デフォルトの名無しさん
2008/01/20(日) 20:10:47どもども
0921デフォルトの名無しさん
2008/01/20(日) 22:08:28まずはチュートリアルを読めばいいのかな?
0922デフォルトの名無しさん
2008/01/20(日) 22:25:12でもそんな人はそんな質問しないだろうな
0923デフォルトの名無しさん
2008/01/21(月) 00:10:31そうそう。Pythonはもう伸びない。
だからこんなに便利なプログラミング言語を使わなくていいよ。
今すぐ別の言語に移ってくれていいよ。
0924デフォルトの名無しさん
2008/01/21(月) 00:14:57今の所、今年のキモレスNo1
0925デフォルトの名無しさん
2008/01/21(月) 00:16:44もうPythonから離れていいよ。
100000万キロくらい離れていいよ。
むしろ二度と近寄らなくていいから。
0926デフォルトの名無しさん
2008/01/21(月) 00:18:29子供はプログラミングじゃなくてお勉強してろ
0927デフォルトの名無しさん
2008/01/21(月) 00:31:540928デフォルトの名無しさん
2008/01/21(月) 00:41:06日本語も満足にできない低脳はPythonを使わない方がいいよ。
0929デフォルトの名無しさん
2008/01/21(月) 00:46:070930デフォルトの名無しさん
2008/01/21(月) 00:55:53チュートリアルよりお気楽 Python プログラミング入門ってのがいいと思うんだ
0931デフォルトの名無しさん
2008/01/21(月) 00:57:34破棄されました。!
21世紀の科学、物理学は支配の法則が支配する!!!!!
http://home9.highway.ne.jp/cym10262/fenomina.html
0932デフォルトの名無しさん
2008/01/21(月) 04:32:370933デフォルトの名無しさん
2008/01/21(月) 06:32:20Pythonの拡張とかフレームワークみたいなのを使わないで、
jspやerbみたいにhtmlにコードを埋め込むことはできますか?
テーブル作るときにレコードを一行ずつprintするのが嫌で、
配列をhtmlに渡して、レコードの数だけ埋め込んだコードでループさせたいと考えています。
まだ勉強し始めたばかりで、パイソン流の方法がわからず苦労しています。
よろしくお願いします。
0934デフォルトの名無しさん
2008/01/21(月) 08:25:440935デフォルトの名無しさん
2008/01/21(月) 09:35:44テンプレートエンジンをつかいましょう。
Rubyと違って、PythonにはERBみたいなのは付属しないので、自分でインストールする必要があります。
ERBみたいなのでよければ、MakoやTenjinあたりが高速です。
http://www.kuwata-lab.com/tenjin/
に各種テンプレートエンジンへのリンクとベンチマークがあります。
0936デフォルトの名無しさん
2008/01/21(月) 20:27:54やっぱり何かをインストールしないとできないのですね。
紹介していただいたTenjinを使ってみました。
欲しかった使い勝手は、まさにコレでした。
使うときもtenjin.pyだけあれば管理者でサーバーにインストールする必要もないですし、
Tenjinを使っていこうと思います。
良いアドバイスをいただき、ありがとうございました。
0937デフォルトの名無しさん
2008/01/22(火) 09:41:41逆に、作る方のモジュールって
RSS.py
PyRSS2Gen
を見つけたんだけど、他にないでしょうか?
0938デフォルトの名無しさん
2008/01/22(火) 09:47:24普通にテンプレート使えばいいんじゃね?
0939デフォルトの名無しさん
2008/01/22(火) 09:50:00import bz2
でできるけど、ライブラリ中に bz2.py は存在しないよね。
実際に存在するのは encodings/bz2_codec.py だ。
これは encodings/__init__.py でエイリアス名 bz2 が定義されてるからだってのはわかったんだけど、
なぜ
import encodins.bz2 ではなく import bz2 でインポート可能なんだ???
そもそもパッケージ中の __init__.py って、どのタイミングで処理されてるの?
import encodins.ナントカ を実行すると __import__ が自動的に encodins ディレクトリを探して __init__ を見つけ出して実行してる?
0940デフォルトの名無しさん
2008/01/22(火) 10:27:01でググれカス.
0941デフォルトの名無しさん
2008/01/22(火) 10:59:020942デフォルトの名無しさん
2008/01/22(火) 11:00:21同じパッケージ内のモジュールはパッケージ名なしで import できるんだよ。
てきとーに print 文を入れて
foo/
foo/__init__.py
foo/foo.py
foo/bar.py
を作って foo.py から import bar してみるべし。
> import encodins.ナントカ を実行すると __import__ が自動的に encodins ディレクトリを探して
> __init__ を見つけ出して実行してる?
そのとおり。上の例で import foo.foo とか import foo してみるべし。
0943デフォルトの名無しさん
2008/01/22(火) 12:05:22233 :126:2006/07/11(火) 01:45:53
今日の発見:
pythonのdefやimportって、宣言文じゃなくて実行文なんですね。知りませんでした。
def f1(arg):
print arg
というのは、JavaScriptチックに書くと
f1 = function(arg) {
print(arg);
}
ということなんですね。実行時に関数オブジェクトを作成し、変数に代入してるだけ。
たしかに、これなら関数を「文がかけるlambda」として使うことに納得がいきました。
defは宣言文だと思ってたので、lambdaのかわりにdefを使うというのはすごく違和感があったんです。
ようやくわかったよー。確かにこれならlambdaを無理に拡張する必要ないですね。
>>170
>ていうかそもそも「lambdaに文を入れたい」っていう気持ちがあんまりわからないなあ。
ぜひとも文を入れたい、というわけじゃなくて、単になんで文が指定できないのかなと思ったのがそもそもの発端です。
でもPython2.4では3項演算子がないので、lambdaにif文を指定したいときはあります。
「cond and val1 or val2」でもいいんですけど、これは偽となる値をval1に入れられないので。
(入れるとcondに関わらずいつもval2が返されてしまう。)
0944デフォルトの名無しさん
2008/01/22(火) 12:21:23>lambdaにif文を指定したいときはあります。
そう思ったときが、lambda -> 関数定義への替え時ってことだと思うよ。
0945デフォルトの名無しさん
2008/01/22(火) 16:54:01http://www.python.org/doc/essays/packages.html
ここに答えがありそうだけど良く分からん・・・
0946デフォルトの名無しさん
2008/01/22(火) 17:06:25>>> import bz2
>>> bz2.__file__
で確認すると俺の環境(Windows)では Python25/DLLs/bz2.pyd が表示される
0947デフォルトの名無しさん
2008/01/22(火) 17:36:11中の人ががんばってんだ、そっとしておいてやれ(ww
0948デフォルトの名無しさん
2008/01/22(火) 18:32:01str.encode, deode の encoding オプションで使用可能なもの
>>> "aiueo".encode("bz2")
'BZh91AY&SY\xde\x0cS\xf8\x00\x00\x00\x01\x80" \x82\x00 \x00!\x86\x81\x9a\x03Sqw$
S\x85\t\r\xe0\xc5?\x80'
>>> "aiueo".encode("bz2").decode("bz2")
'aiueo'
0949デフォルトの名無しさん
2008/01/22(火) 21:29:29>ライブラリ中に bz2.py は存在しないよね。
存在してる。
0950デフォルトの名無しさん
2008/01/22(火) 23:12:45Pythonの場合、関数ローカルな関数が作れるのもあって
あんまりlambdaにこだわる必要ないよな。
気軽にdefしちゃえ、って気分。
0951デフォルトの名無しさん
2008/01/23(水) 00:50:58どこに?
0952デフォルトの名無しさん
2008/01/23(水) 00:58:48949の心の中に。
0953デフォルトの名無しさん
2008/01/23(水) 06:56:50windows上でcryptモジュールがimportできない話を思い出した。
0954デフォルトの名無しさん
2008/01/23(水) 09:53:51簡単にするためにここでは対象ファイルは .py のみを考え、インポート機構には
PyImport_ExecCodeModule をつかって __import__ をエミュレートしてみる。
import hoge.piyo
だと、
1. ファイルシステムから hoge または hoge.py を探す
2. hoge.py ファイルが見つかれば hoge.py を PyImport_ExecCodeModule("hoge", ...)して終了 ?
3. hoge ディレクトリだったら hoge/__init__.py を探して PyImport_ExecCodeModule("hoge", ...) する?でも __init__.py を hoge という名前でインポートするのはおかしい気が
4. ファイルシステムから hoge/piyo または hoge/piyo.py を探す
5. hoge/piyo.py ファイルが見つかれば hoge/piyo.py を PyImport_ExecCodeModule("hoge.piyo", ...) して終了 ?
6. hoge/piyo ディレクトリだったら hoge/piyo/__init__.py を探して PyImport_ExecCodeModule("hoge.piyo", ...) して終了
疑問
手順2 または 3 で名前を "hoge" として PyImport_ExecCodeModule してしまうと以下のようなコードが可能になってしまわないか?
import hoge,piyo
print hoge.orz
かといって、PyImport_ExecCodeModule をしないと __init__ の内容が反映されないし、
hoge がファイル名だった場合は、そもそも PyImport_ExecCodeModule しないと話にならない。
0955デフォルトの名無しさん
2008/01/23(水) 10:06:55あぁ、この一覧欲しかったんだ。ありがと。
encodings.aliases.aliases ね。
0956デフォルトの名無しさん
2008/01/23(水) 10:31:45import hoge.piyo ってことだよな
>>> import os.path
>>> os.sep
'\\'
別にいいじゃない
0957デフォルトの名無しさん
2008/01/23(水) 10:45:20その書き方って可能だったの????
じゃあ import A.B.C.D ってしたら
A.a
A.B.b
A.B.C.c
全部可能ってこと?
0958デフォルトの名無しさん
2008/01/23(水) 10:52:200959デフォルトの名無しさん
2008/01/23(水) 11:14:050960デフォルトの名無しさん
2008/01/23(水) 11:22:13その虚飾がなくなっただけだろう。
0961デフォルトの名無しさん
2008/01/23(水) 11:33:230962デフォルトの名無しさん
2008/01/23(水) 11:35:18もう少し利口そうな文章を書いてくれ
0963デフォルトの名無しさん
2008/01/23(水) 11:38:280964デフォルトの名無しさん
2008/01/23(水) 11:46:580965デフォルトの名無しさん
2008/01/23(水) 11:56:43低レベルが増えるのは仕方ない
0966デフォルトの名無しさん
2008/01/23(水) 11:58:110967デフォルトの名無しさん
2008/01/23(水) 12:03:54そういうのは二十歳過ぎくらいの、
何の根拠もなく自分を「わかってる奴」だと思ってる天狗ちゃんに任せる。
0968デフォルトの名無しさん
2008/01/23(水) 12:18:07人任せはよくないぞ。
0969デフォルトの名無しさん
2008/01/23(水) 12:34:25>>967からご指名だぞ
0970デフォルトの名無しさん
2008/01/23(水) 13:32:58こういう独自の設定を説明抜きで使ってくるあたりが青いよね。
こういうのが「いけてる切り返し」だと思う時期は誰にでもあるけど、
アカデミック版と同じで、社会に出ちゃったらNGです。
0971デフォルトの名無しさん
2008/01/23(水) 13:38:560972デフォルトの名無しさん
2008/01/23(水) 14:41:18968は10までくらいなら数えることができるんだな。
すごいな。数学者向きだな。
0973デフォルトの名無しさん
2008/01/23(水) 16:24:00Pythonのお勉強 Part23
http://pc11.2ch.net/test/read.cgi/tech/1201073019/
0974デフォルトの名無しさん
2008/01/23(水) 16:51:35加齢臭がする(なんとなく)。
0975デフォルトの名無しさん
2008/01/23(水) 17:07:59>>> bz2.__file__
'/usr/local/lib/python2.4/lib-dynload/bz2.so'
>>>
0976デフォルトの名無しさん
2008/01/23(水) 19:43:500977デフォルトの名無しさん
2008/01/23(水) 20:24:500978デフォルトの名無しさん
2008/01/23(水) 22:00:300979デフォルトの名無しさん
2008/01/23(水) 22:05:000980デフォルトの名無しさん
2008/01/23(水) 23:37:530981デフォルトの名無しさん
2008/01/23(水) 23:43:57ガンオタきもいわ
0982デフォルトの名無しさん
2008/01/24(木) 00:23:530983デフォルトの名無しさん
2008/01/24(木) 00:43:160984デフォルトの名無しさん
2008/01/24(木) 06:18:380985デフォルトの名無しさん
2008/01/24(木) 09:15:50最悪だ・・・orz
0986デフォルトの名無しさん
2008/01/24(木) 14:38:050987デフォルトの名無しさん
2008/01/24(木) 17:25:130988デフォルトの名無しさん
2008/01/24(木) 22:30:19他にどこかにありませんか?
0989デフォルトの名無しさん
2008/01/24(木) 23:18:36というか落ちてないぞ
ttp://www.crummy.com/software/BeautifulSoup/#Download
0990デフォルトの名無しさん
2008/01/25(金) 02:00:45ごめんなさい今見たら復活してました・・・
0991デフォルトの名無しさん
2008/01/25(金) 02:24:24lxmlのほうがお勧め
0992デフォルトの名無しさん
2008/01/26(土) 02:30:360993デフォルトの名無しさん
2008/01/26(土) 02:55:17速いなあー
0994デフォルトの名無しさん
2008/01/26(土) 12:30:060995デフォルトの名無しさん
2008/01/26(土) 12:30:300996デフォルトの名無しさん
2008/01/26(土) 12:30:560997デフォルトの名無しさん
2008/01/26(土) 12:31:200998デフォルトの名無しさん
2008/01/26(土) 12:31:480999デフォルトの名無しさん
2008/01/26(土) 12:38:29ttp://www.kmonos.net/wlog/81.html#_1247080126
参考
1000デフォルトの名無しさん
2008/01/26(土) 12:54:0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。