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


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

Pythonのお勉強 Part34



1 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:23:19 ]
Pythonオフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
まとめWiki
python.rdy.jp/
関連スレ
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
pc12.2ch.net/test/read.cgi/tech/1240678081/

449 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:03:11 ]
>>448
すんません、aptラインの書き方わかんないす・・・orz


450 名前:デフォルトの名無しさん [2009/08/16(日) 20:08:25 ]
>>449
experimentalパッケージでも入れると申すか!
悪いことは言わんまだ使うな

451 名前:デフォルトの名無しさん [2009/08/16(日) 20:10:26 ]
>>447
おまえも人の話聞けよ

452 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:31:47 ]
GTKの人かw

453 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 13:26:19 ]
>452

あ〜、なるほど
なんかもやもやしてたのがすっきりした!

454 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:01:57 ]
cmake

455 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:28:58 ]
numpy関連のバージョンをlinuxのデフォルトバージョンから手動で上げようとしたら
めんどくさすぎて死んだ
asdfみたいな簡単な仕組みはないの?


456 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:50:09 ]
「make」と鬱と「負け」って読んじゃうんだよな

457 名前:デフォルトの名無しさん [2009/08/17(月) 18:34:23 ]
3.x 系列でも type(hoge) == types.DictType とかで
型を判定することができますか?



458 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 18:41:59 ]
それってisinstanceじゃダメなの?

459 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 19:12:45 ]
>>443
Linux上でPy2Exeは動かない

WineでWinのPython実行環境を構築すれば、
Python作ソフトをPy2ExeでExe化可能かもしれない
(やったことはないので確証は無い)


元よりWin上でPyhtonスクリプトをExe化する
ものだから(どこの説明でもそう書いて
あるのだが…)、WinでのPython実行環境が無いと
Exe化した際の不具合の特定が面倒だよ。


460 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:51:13 ]
Pythonのオブジェクトインスペクト関数「see()」
ttp://coreblog.org/ats/see-the-object-inspector
ttp://inky.github.com/see/

高機能なdir()って感じでなかなかよさげ

461 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:45:58 ]
>>459
XP (note) で作った exe が他の XP (note) では動くのに
XP (netbook) で動かなくて焦ったことはある

462 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:47:21 ]
vista でも動かない orz

463 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 09:13:06 ]
動かないというだけじゃなくて、そのときの症状を具体的に言うのが、
初心者を抜け出す第一歩だよ。
とりあえず、VC++ Runtime Library の 2005 か 2008 の再頒布可能パッケージを
インストールしてみな。

464 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:30:43 ]
こんな話か?
ttp://d.hatena.ne.jp/gunyara-python/20090531/hello_py2exe

465 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:39:09 ]
DLL地獄ようこそようこ

466 名前:デフォルトの名無しさん [2009/08/18(火) 11:02:09 ]
俺のアイドル天使はいずこに?

467 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 11:07:16 ]
角電池とかよっきゅんとかここは相変わらずカオスなスレですね



468 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:23:58 ]
イケメンハッカーも忘れないで!
アッー!

469 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:26:12 ]
またruby厨降臨?

470 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 18:29:59 ]
>>464のリンク見て不思議に思ったんだが
cx_FreezeはなんでVC++ランタイムライブラリを
配布できるんだ?
PSFライセンスの絡みであの手のライブラリは勝手に
配布しちゃいかんのじゃないの?
そのためPy2Exeはわざと除外してんだろう


471 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 19:01:57 ]
>>468
顔写真貼ればもっと盛り上がるよ

472 名前:デフォルトの名無しさん [2009/08/18(火) 20:56:04 ]
pythonをsakuraエディタで使えるようにしたいんですが、
ちゃんとした色設定ファイルがありません。

原理的にどこかにあると思うんですけど、
(IDLEと同じくらいの)
keyword(演算子、組み込み変数、組み込み関数、予約語等)をまとめたファイルって
どこかにないのでしょうか?

473 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 22:09:04 ]
> 原理的にどこかにあると思うんですけど

「原理的」の意味が分からない
というかサクラエディタのスレで聞いた方がいいのでは?

474 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 22:16:06 ]
import sys, os, itertools, keyword

def importable(name):
    try:
        __import__(name)
    except Exception:
        return False
    return True

def toplevel_modules(path):
    for root, dirs, files in os.walk(path):
        names = itertools.chain(dirs, (os.path.splitext(i)[0] for i in files))
        for name in names:
            if importable(name):
                yield name
        break

if __name__ == '__main__':
    words = set(keyword.kwlist)

    words.update(dir(__builtins__))
    for i in dir(__builtins__): words.update(dir(getattr(__builtins__, i)))

    stdout = sys.stdout
    for path in sys.path: words.update(i for i in toplevel_modules(path))
    sys.stdout = stdout

    for i in sorted(words): print i
自前で作ればいいんだよ

475 名前:デフォルトの名無しさん [2009/08/18(火) 23:28:28 ]
Python 3.1 で書き始めて
MySQLdbがPython 2.6どまりなことに気づいた・・
どうしよ
SQLite用に書いていたソフトを
MySQL用にしたいだけなんだけど
既に本体は Python 3.x にべったりで書いてる
死にたい

476 名前:デフォルトの名無しさん [2009/08/18(火) 23:40:06 ]
もしかしてpyodbcでなんとかしろと?
と思ったけど 3.x 系はリリースされてなかった
code.google.com/p/pyodbc/downloads/list

477 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 23:42:02 ]
シリーズ3作目はフラグ



478 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:10:02 ]
MySQL の c ライブラリを直接呼べ

479 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:28:14 ]
ctypes大作戦

480 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 08:31:36 ]
ctypesっていいよね。


481 名前:デフォルトの名無しさん [2009/08/19(水) 18:20:43 ]
WebARENAのsuitexが「Python の最新バージョンに対応w」らしいのですが
実際にどのバージョンが入っているかご存知の方はいらっしゃいますか?

482 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 18:28:33 ]
文字通り「Python の最新バージョンに対応w」なら 3.0 なんて有り得ん罠
良くて 2.4 と予想

483 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:20:42 ]
3.1.1

484 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:21:14 ]
>>482
言ってる事おかしくね?

485 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:16:30 ]
>>480
#include <ctypes.h>
こうですか?わかりません><

486 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:27:30 ]
3.x系列への移行はあんまり上手くいってないのか

487 名前:472 mailto:sage [2009/08/20(木) 05:43:09 ]
>>474
どうもありがとう。ようやくできた。。



488 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 12:10:46 ]
最新版にアップしてくれるのはありがたいんだけど
こんな風にころころ変えられるのも困るかも
ttp://php-sql-gdgd.jugem.jp/?eid=66
ttp://php-sql-gdgd.jugem.jp/?eid=67

489 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 12:31:43 ]
>>488
これで3.0系にアップデートされたら阿鼻叫喚になるなw

490 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 13:01:44 ]
>>481
ご存知の方はいらっしゃいますか?

491 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:08:58 ]
「Python 3.1.1」リリース
pc11.2ch.net/test/read.cgi/pcnews/1250773470/

492 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:25:42 ]
[ "a" for x in range (10)]

[ "a" ] * 10
は下の方が早い?

493 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:26:29 ]
自分でベンチマークすればいいだろうが

494 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:29:33 ]
下の方が10倍以上速かった

495 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:24:43 ]
[]の中がImmutableだったら*のほうがいいってことかな

496 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:45:47 ]
[ chr(ord('a') + x) for x in range (10) ]

[ "a" ] * 10
みたいな書き方できますか?

497 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:33:54 ]
ttp://www.pyside.org/
pyqtは使わないほうがいいのか?



498 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 09:54:31 ]
pc12.2ch.net/test/read.cgi/tech/1239996587/

499 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 11:07:03 ]
ジェネレータの中でエラーが発生すると、
エラーメッセージ中のスタックトレースが
ジェネレータ呼び出しまでの部分しか出力されません。

ジェネレータの内部以降のスタックトレースも
出力されるようにするにはどうすればいいのでしょうか。

処理系はIronPythonです。

500 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 13:19:35 ]
>>492
下は1つを参照してるんじゃないかな?

501 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 13:23:51 ]
>>500
文字列はimmutableだから、ひとつのオブジェクトへの参照のリストになって問題なし。
実際、上のも (CPythonの実装では) 全部同一オブジェクトを参照するよ。

リストのリストを作りたいときは、
[[] for x in xrange(10)]
の方が良いね。

502 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 22:16:40 ]
>>499
ジェネレータの内部で
try
except
print traceback

503 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:58:44 ]
人生の敗北者はもうPython使っちゃだめですか?

504 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 15:12:30 ]
>>502
どもども。
手元で追試してみたら、499で書いた制限がCPythonでもIronPythonでも発生しない。
(それぞれ標準コンソールでテスト)

実はPythonインタプリタはC#プログラムから自前で呼び出してるんだが、
そこの初期化なりトラップ法なりが間違っているような気がしてきた。

505 名前:デフォルトの名無しさん [2009/08/22(土) 17:02:41 ]
モジュールの先頭に """あれこれ""" とか
クラスの先頭に """のれそれ""" 書いてドキュメントとしています.
pydoc にかけるとそれらはただ単なる文字列として表示されるだけ
なんですが,なんかこう,定められたフォーマットとかあるんでしょうか?

それとは別にどっかで見たので __author__ とか __licence__ とか
設定してみたんですが,pydoc はそういうのはガン無視らしいです.

いままで覚書をコメント文で書いていたんですが,
ドキュメントのこともそろそろちゃんと考えないと
自分的に破たんする(先月の自分は自分じゃない)とおもって
Python使いの方はどうやってるのかと.

506 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:11:24 ]
>>505
EpydocとかPydoctorとか調べてみて。

507 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:39:33 ]
公開する気がないんならautherとかlicenceとかいらんような気もするけど
このあたりを参考にして書けばいいんじゃないの?
www.python.jp/doc/contrib/peps/pep-0257.txt



508 名前:365 mailto:sage [2009/08/22(土) 19:09:34 ]


509 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 20:43:56 ]
なんでpythonってlist.rindex()ないの?

510 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 21:18:16 ]
需要が無いんだろ。

rangeのようにパラメータの与え方で
逆に動くかとも思って試したが出来なかった。

ソース(Ver2.6,Ver3.1)を見るとこうなってる。
 for (i = start; i < stop && i < Py_SIZE(self); i++) {

start>stopでデクリメントされればな〜とでも
MLに投げればそのうち実装されるんじゃねw

511 名前:デフォルトの名無しさん [2009/08/22(土) 21:48:01 ]
一連の処理の開始から,要所要所までにかかる時間を
できれば高精度で(1/100秒くらいで)計測したいと思っています.
datetime を使って現在時刻を取得するのではとても精度が
悪いのですが,Pythonの中だけで完結できる方法としては
ほかにどのような方法があるでしょうか?

timeit は上のような用途には適してないと思います.
ある関数内での処理時間を計測するには使えると思いますが,
複数のチェックポイントで次々とというのには不向きかと

512 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 21:55:11 ]
どうしてdatetimeが出てきたのかよくわからないのだけれども
time.time()かtime.clock()じゃ不十分なのかな

513 名前:デフォルトの名無しさん [2009/08/22(土) 22:17:56 ]
いやぁ,単純に datetime.datetime.now() で得たオブジェクトなら
そのまま print しても見やすくフォーマットしてくれるなぁ,と.
で,datetime.datetime.now() でも十分な精度でした.

テストした環境がVMで,しかもその上で動かしてるLinuxカーネルの
タイマ割り込みの周期が1000回/秒だったせいで時計がずれまくってた
だけだった.

つーわけで俺のかんちguyでした

514 名前:デフォルトの名無しさん [2009/08/22(土) 22:33:33 ]
作ったスクリプトが遅いなぁと上の方法で計測してみたところ,
Pythonであれこれimportしているせいか
全ての import が終わるまで10秒くらいかかってます.
で,そのあとの処理はさくさくと.
bogomips が500を切るNASでやってるのが悪いのですが,
import を早く済ませるテクニックとかあるんでしょうか.
そりゃ絶対的に必要な時間はしかたないですが・・・
ちゃんと pyc もできてるし,打つ手はないかなぁ

515 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 23:07:16 ]
importのコストのうち、pycで削減できるのはコンパイル時間のみ。
10秒もかかるってことは、どれかのモジュールのグローバルに重い処理があるんじゃない?

516 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 00:46:19 ]
>>514
ある

517 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 02:47:03 ]
>>514
テストした環境がVM?



518 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 11:09:27 ]
(´・ω・`) God knows

519 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:12:48 ]
質問です。
8時間悩んだバグが単なる変数の再初期化のし忘れでした。
このやりきれない気持ちをどうすればよいですか。

520 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:26:18 ]
>>519
自動テストを書く。

521 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:52:14 ]
再初期化をする必要がないスコープで書く方法を学ぶ

522 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 06:20:03 ]
   ∧∧
  (´・ω・)  おやすみ・・・
  _| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

523 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 08:54:40 ]
   ∧∧
  (´・ω・)  おはヨーグルト!
  _| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

524 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 09:28:29 ]
>>519
変数名の使い回しなんて最悪だ

525 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 10:30:42 ]
おまえら発火損逝った?

526 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 11:27:27 ]
はっかそんいった?

527 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 14:20:39 ]
同じモジュールでも、複数のファイルからimportするとその分だけメモリ消費しますか?
from hoge import *だとそのファイルの物になって、複数ファイルでfromするとメモリ消費しますか?



528 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 14:29:54 ]
>>527
消費しない。
あるモジュールがはじめてimportされるとき、モジュールオブジェクトが作られて、
sys.modulesに保存される。

#a.py
print 'hello, I'm a'

#b.py
print "hello"
import a
a.foo = 'bar'
import c

#c.py
import a
print 'hello, I'm c'
print a.foo

$python b.py

してみて。
次に、 c の import a を、 import sys; a = sys.modules['a'] で置き換えてみて。

529 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 16:32:27 ]
白化村征かなかったのか。駄目だなあ。

530 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 18:11:11 ]
予想してみたけど分りません(>_<)

薄荷無羊駝(シソ科ハッカ属)、咲かなかったのか。
白化村(色素が抜けて全身真っ白の人しかいない伝説の村)、まさか無かったのか。


531 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 18:25:14 ]
ハッカービレッジとかそんなのか?知らんけど

532 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 22:23:57 ]
GAEあほだろ

533 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 22:46:28 ]
3.1.1で大分マシになったようだが、まだまだ遅いな。
www.gtsystem.eu/blog/2009/08/improved-performance-of-python-31/

534 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 08:52:01 ]
>>526
ttp://image.blog.livedoor.jp/insidears/imgs/7/a/7a713e87-s.jpg

こんな風だった

535 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 11:20:32 ]
>>534
アンチ自民キモイな。

536 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:16:56 ]
つまらない質問で悪いんだが、
タプル同士をベクトルみたいに足し算するのはどうやるの?
ab = (1, 2)
ac = (3, 4)

abc = (ab[0]+ac[0], ab[1]+ac[1])

537 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:25:34 ]
map(sum,zip(ab,ac))



538 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:51:31 ]
numpy

539 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:53:23 ]
タプルはベクトルでも行列でもねーぞ

540 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:53:48 ]
ab = 1 + 2j
ac = 3 + 4j
abc = ab + ac

541 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:57:38 ]
>>540


542 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:59:04 ]
つまらない質問で悪いんだが、
タプルを複素数にするのはどうやるの?

543 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:59:25 ]
>>536
tuple(ai + bi for ai, bi in zip(a, b))

おまけ:2ノルム
math.sqrt(sum(ai * bi for ai, bi in zip(a, b)))


544 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:03:02 ]
>>542
tup = (1, 2)
complex(*tup)

545 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:12:47 ]
>>542
complex(*ab)+complex(*ac)

546 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:13:35 ]
>>544
thx!
つまらない質問で悪いんだが、
複素数をタプルにするのはどうやるの?

547 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:16:44 ]
>>546
((complex(*ab)+complex(*ac)).real, (complex(*ab)+complex(*ac)).imag)



548 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:56:39 ]
とりあえず吉川と布袋に囲まれたら泣いて謝ると思う

549 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:32:01 ]
なんのこっちゃわからんが、みんなすごいね

550 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:57:23 ]
ぬのぶくろは弱いぞ

551 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 05:00:02 ]
ヘタれ布袋

552 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 15:14:20 ]
パイヤング

553 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:20:30 ]
matplotlibのbounding box調節関数のサンプルが見つからない

554 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:08:06 ]
文字列 % 辞書 はなんの為に使うんでしょうか?
def gettext_noop(string, **kwargs):
retval = string
if kwargs:
retval %= kwargs
return retval

555 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:54:29 ]
www.python.jp/doc/release/lib/typesseq-strings.html

556 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:55:56 ]
sprintfみたいなもんや

557 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 20:02:25 ]
マンモスありがとうございます



558 名前:デフォルトの名無しさん [2009/08/26(水) 20:24:36 ]
"abc%sdef" % "hoge"
みたいなフォーマット文字列の書き方とはもうサヨナラ?
悲しすぎる.

559 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 20:57:35 ]
"abc{}def".format("hoge")のほうが読みやすい
%sdefとかだと文字とフォーマット表記が混じって読みにくい

560 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 21:06:58 ]
長いこと%sやら%dな変換指定子に慣れてるから
他の書式にされると覚えにくくて困る

ええC#のことです

561 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:53:37 ]
正規表現も読みにくいな

562 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:08:25 ]
LINK = "<%(tag)s %(attr)s>%(name)s</%(tag)s>"
dict_ = {}
dict_["tag"] = "a"
dict_["attr"] = 'href="localhost:8080/"'
dict_["name"] = "hack you"
LINK % dict_

MENU = "<menu>\n%(item)s</menu>"
ITEM = "<li>%(content)s</li>\n"

print MENU % {"item" :"".join([ITEM % {"content": LINK % dict_}]*10)}

563 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:55:17 ]
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
attr = 'href="localhost:8080/"',
name = "hack you")
ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)

564 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:57:03 ]
インデントずれた
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
                                      attr = 'href="localhost:8080/"',
                                      name = "hack you")

ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)

565 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 05:37:11 ]
LINK = "<{tag} {attr}>{name}</{tag}>".format(
  {tag: "a", attr: 'href="localhost:8080/"', name: "hack you"})


566 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 06:19:49 ]
ぶっちゃけ、変数展開型言語も色んなテンプレも別に見やすいわけじゃないんだよな。
なんか良い方法あればいいんだけど。

567 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 16:09:07 ]
sqlite3でテーブルが作成されてなかったり、
データベースファイルがないのを検出する方法ってありますか?



568 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 18:25:50 ]
>>567
> sqlite3でテーブルが作成されてなかったり、
SELECT * FROM sqlite_master;

> データベースファイルがないのを検出する方法ってありますか?
os.path.exists

569 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:00:08 ]
10 Ways To Let People Know You're A Bad Python Programmer
ttp://artificialcode.blogspot.com/2009/08/10-ways-to-let-people-know-your-bad.html

570 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 02:06:58 ]
1. Write "God" functions
hundred lines of code
2. Never return anything in a function, especially not some type of value that could demonstrate your function succeeded or failed.
3. Never write a test...EVER.
4. Call Perl from Python
5. Screw Control Flow
import os
if os.path.exists("/tmp"):
    def myfunc():
        x = 4
        return x
class Foo(object):
    y = 1
f = Foo()
print f.y + myfunc()
6. Abuse conditional logic to the point that you double or even triple an "unmaintainable" Cyclomatic Complexity Score of 50.
7. Use sleep statements like Holy Water.
8. Initiate the same logic more then once, "just to be sure".
count = 0
for i in range(5):
    if os.path.exists("/tmp"):
        print "bingo"
def foo():
    print "stuff"
if os.path.exists("/tmp"):
    import sys
    sys.exit(1)
9. Write Library Code that does a sys.exit(0) on an exception.
10. Reimplement the Python Standard Library in every piece of code you write.
Summary
If you can do just a couple of these things in every piece of code you write, you are well on your way to writing bad python code! Stay tuned for part II.

571 名前:デフォルトの名無しさん [2009/08/29(土) 05:31:37 ]
PyDev 便利に使っているけど、やっぱり餅は餅屋というか、
Eclipse で Java している時のような至れり尽くせり感がないなぁ・・
もっと、こう、至れり尽くせりなPython用IDEって何があるんでしょうか。

572 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 05:35:24 ]
eric4

573 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 07:47:42 ]
emacs

574 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 08:41:35 ]
emacs+rope

575 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 09:16:35 ]
emacs+rope+auto-complete+anything

576 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 10:30:38 ]
おまえらがEclipseをろくに使ったことがないということはよくわかった

577 名前:デフォルトの名無しさん [2009/08/29(土) 10:39:21 ]
ううむ・・ericも含めて、それだったら PyDev でいいや・・・



578 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 13:07:55 ]
実際 Eclipse 使ったことないんだが、至れり尽くせりって具体的にどんなことが出来るのかね?


579 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 13:47:20 ]
eclipseを使ったら彼女が出来ました

580 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 13:48:22 ]
>>578
ファイルを保存する段階でコンパイルエラーを指摘してくれるのを最初に見たときは感動したな。

Visual Stdio 2008でも同じことが出来るけど。

環境がIronPythonになるが、Visual StudioでPythonのスクリプトを動かすことが出来るよ。

581 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 14:05:37 ]
なんだ、ドザか。

582 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 14:07:15 ]
w

583 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 15:03:03 ]
>>582

584 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 16:06:16 ]
>>578
イタレリのキットが抽選で当たります。

585 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 16:29:36 ]
見事に外したな

586 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 21:24:22 ]
並列実行用のモジュールにMultiProcessingというのがあるようなんですが、
メモリ共有型の場合でも対応できるんでしょうか?
例えば大きな行列があって、並列処理で別々の部分を処理したりしたいんですが。。。
threadingでは実際には並列効果がないというのを知ってショックを受けてます・・・


587 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 21:26:11 ]
yes you can



588 名前:デフォルトの名無しさん [2009/08/29(土) 22:16:41 ]
【JAVA質問スレより】
940 :デフォルトの名無しさん:2009/08/29(土) 22:08:40
>>937
一番もてるのはperl。
もっとも嫌われるのはpython。
C,C++は、相性とテクニック次第。


なんで?


589 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 22:18:57 ]
なんでそいつに聞かないの?

590 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 22:19:07 ]
モテる相手がバグだからさ

591 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 22:29:02 ]
うまいな

592 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 22:31:09 ]
>>586
docs.python.org/library/multiprocessing.html#sharing-state-between-processes

俺は使ったことない。共有メモリマシンでうまく並列効果が出たら是非教えて。

593 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 00:34:25 ]
>>588
なんでか知らんが、俺の周りでもpyてょnは変態呼ばわり。

594 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 00:42:05 ]
凡人には使えない言語だ

595 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 00:44:18 ]
言語じゃなくて使ってる人が変態(ry

596 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 00:45:57 ]
変態専用か

597 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 00:48:05 ]
変態じゃないよ
仮に変態だったとしても変態という名の紳士だよ



598 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 09:38:36 ]
俺もうんこ喰うけど別に変態ってわけじゃないな

599 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 10:57:11 ]
凡人は使わない言語だ

600 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:28:05 ]
またruby厨の荒らしっすか

601 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:31:27 ]
ruby厨は使わない言語だ

602 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:50:15 ]
そりゃそうだ

603 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:12:06 ]
これは良いマイキースレ

604 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:27:50 ]
>569,570
他はともかく
4. Call Perl from Python
これはあり得ないだろ…

605 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:44:40 ]
大学の時の教授は os.system 呼びまくりだったから
あり得ない話ではない。

606 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 12:29:07 ]
> 4. Call Perl from Python

いま仕事で使ってるスクリプトがまさにそれだ……


607 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 12:36:15 ]
CentOSってPython2.4なんだけど、2.5とか2.6で動かすメリットって大きい?
用途としてはDjangoでWebアプリ



608 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 13:04:28 ]
>>607
困ってないなら何もいじる必要ないのでは?
特にスピードが速くなるとかは感じない.

でも自分でコード書くなら 2.6 使っておくとよいのではとおもう.
3.x 系は自分としては使いたい拡張モジュールが
対応していないのでNG.標準モジュールだけならありかと.

609 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 13:22:37 ]
>>608
サンクス
実行速度とかは特に差が出ないのね
Javaなんかだとバージョンあげると明らかにパフォーマンスあがるもので気になっていたので。

モジュールとかはおおむね2.4以降なら動くみたいだしそのままでいくわ

610 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:41:42 ]
2.4はkuso

611 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:14:33 ]
理由は?

612 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:30:47 ]
ttp://www.shido.info/py/python10.html
ttp://ml.zope.jp/pipermail/zope-users/2009-January/006160.html

613 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 00:35:36 ]
システムのバージョンを上げるのはトラブルの元
ローカルに入れるのならおk

614 名前:!omikuji!dama mailto:sage [2009/09/01(火) 05:35:25 ]
test

615 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:02:02 ]
無責任に逃げ出すゴミ虫はなにやっても駄目だけどな

616 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:05:07 ]
自虐すか(笑)

617 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:20:44 ]
誰か逃げたの?



618 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:27:09 ]
>>617
俺知ってる(w

619 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 12:05:09 ]
仕事しろ、あとTwitterでやれw

620 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 12:08:06 ]
ゴミ虫はゾンビ化するとやっかいだから、煽らない方がいいよ...

621 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 12:09:11 ]
よくみんな黙ってるよ
みんな大人だ

622 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 12:24:48 ]
逃げちゃう人ってそいつが存在しなくたってまったく問題ナッシングなことを証明するチャレンジャーだよね

623 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 13:23:43 ]
レッドソックス松坂のことか

624 名前:デフォルトの名無しさん [2009/09/01(火) 14:30:36 ]
FreeBSDで
checking for python libraries... not found
って言われたのですが
/usr/local/lib/python2.6
じゃないんですか?

625 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:36:54 ]
Makefileもよめないの?

626 名前:デフォルトの名無しさん [2009/09/01(火) 17:22:32 ]
ぴーひゃらりんこだぷー

627 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:23:35 ]
あんなの読むのは土方とマニアだけでいいと思うんだ



628 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:29:31 ]
そうだね、フリーライダーは読まなくていいね

629 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:35:18 ]
matplotlibの最新版でグラフにアノテーションつける機能が使いたかった
古いシステムではnumpyが古くて入らなかった
numpy関連全部バージョン上げるの大変だからOSのバージョンごと上げたらいろいろ大変になった

630 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:59:01 ]
人間性から見て一生底辺だね
どんな仕事についても駄目っぽいね

631 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:05:29 ]
おまいらPythonの話をしろよ
たとえばだな

ドジャンゴ・イン・アクション
www.manning.com/geewax/

632 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:12:42 ]
>>624
よくわからんけど upgrade-site-packages やってないとかいうオチ?

633 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:11:04 ]
Pythonってopensslライブラリが標準ではついてこないのか。
くそ。

634 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:36:26 ]
pythonとは関係ないからな

635 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 01:02:40 ]
ssl

636 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 01:24:29 ]
OpenSSLがついてこないから、標準ではRSAとかの暗号関連ができないのか。ざんねん。

>>635
SSLができてもなあ・・・

637 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 03:31:18 ]
twisted



638 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 09:49:43 ]
twisted標準化してくれよ

639 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 09:57:04 ]
>>633, >>636
paramikoがお勧め。

640 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 10:14:19 ]
>>638
やだ

641 名前:デフォルトの名無しさん [2009/09/02(水) 10:43:23 ]
>>607
Cent OS は使用した事が無いですが?
OS version default の directory を残して python support Link の patch を当てるのが無難だと思います…
python support Link の patch を取っていれば問題ない様です… version up をするので在ればですが…

642 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 12:55:41 ]
ドカタかフリーライダーか、とかそういう対立軸以前に
余裕があるのかないのか、という人間としての質の差が重要な気がしている

643 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:12:17 ]
  <⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

644 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 14:39:21 ]
          |     |/(-_-)\|
          |     |   ∩∩   |
          |      ̄ ̄ ̄ ̄ ̄
        (-_-) …
        (∩∩)────────────────
      /
    /
  /

むかしはぱいそんができればぐーぐるにいけるとしんじていました
でもいまはかんがえをかえました

ttp://promotion.yahoo.co.jp/charger/bokoboko/r47/r47_02.php

645 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:09:10 ]
口をきいてもつまらなく、得るモンもなきゃ、しゃべる意味ないやろ。

646 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:15:00 ]
お前がひとりぼっちなのはよくわかったからPythonのことを書けよ。

647 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:15:50 ]
社会のために、
そのまま引きこもっとけや。



648 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:16:30 ]
もちろん靴下装備で

649 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 17:00:24 ]
社会の為にいろいろ活動します

650 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 17:54:02 ]
自宅を警備します

651 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 18:06:53 ]
二次元世界との架け橋を作ります。

652 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 05:49:55 ]



653 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 09:38:46 ]


654 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 13:53:35 ]
python2.5でプロセス操作が可能なライブラリってありますか?

655 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:34:36 ]
subprocess

656 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:08:56 ]
>>651
うpろだの事かー!

657 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:31:49 ]
何番?
ttp://long.2chan.tv/jlab-long/s/long1252027171807.jpg



658 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:48:32 ]
d = dict
としたあとで key in d が出来る様にするにはどうすればいいんだろう?

659 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:37:06 ]
>>658
d = d()

660 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:08:03 ]
d = d.keys()

661 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 12:07:43 ]
いつもdictでfor文まわすのってどうやるんだったっけって調べてしまうぜ。
いちいち言語の文法をそらんじなくなって久しい。

662 名前:デフォルトの名無しさん [2009/09/05(土) 12:21:13 ]
>>660
なんでわざわざdictのkeyを取り出す必要があるんだ?

663 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:28:02 ]
>>662
keyの文字列自体を何かに使いたいとき

664 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:50:23 ]
入門書嫁。

665 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:33:28 ]
リファレンス嫁。

666 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:55:21 ]
Python + C# 最強説あらわる。これでR**yを殲滅できるぞ!
ttp://d.hatena.ne.jp/wasisan/20090905

667 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:01:46 ]
またRuby厨があらしてるのか



668 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:33:49 ]
C#イラネ
ヘジのクラスライブラリは勘弁

669 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:11:00 ]
どうみてもPythonもC#も被害者じゃないか

670 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 02:35:09 ]
いや、普通にPython+C#で商用プログラム書いてるところですが何か。

671 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 10:12:46 ]
>>666
変な主観で語られてもなぁw


672 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:30:55 ]
それと比べたらたとえ揚げ足取りであったとしても、ちゃんと文章を細かく読んでくれて、理由もつけられて、
その文章内容自体について説教・罵倒される方がはるかにましだということにあの人たちはなぜか気づかない
(多分、リアルがそれなりに充実した幸せな人たちだからだろう)。今の時代、話を聞いてくれて、まともな
ことを言ってくれる近所の頑固親父的な人なんて絶滅危惧種なのに。

まあ、普通の大人の現代(近代)社会を考えると仕方がないのかもしれないけど。よく言われることだが、社会人は
自分の利益になるケース以外では他人(特にいわゆる「バカ」)に対して注意なんてすることはないのだ。
そんなの時間がもったいない、「時は金なり」ということ(まったくいやなことだが)。

それにしても、「「バカ」であることを自己認識し自重する人たち」にとっては、現代とはなんと寂しい・辛い世界
であることか。その人たちは相手にされること、馴れ合うことすらできないのだから。



673 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 13:10:50 ]
αブロガーっぽいコピペだな

674 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 13:13:06 ]
最初の二行を読むだけで目が回ったが

675 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 13:29:13 ]
括弧が多すぎる。統合失調症の臭いがする。

676 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:05:16 ]
単にLISP使いなんだろ

677 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:18:57 ]
>>657
まいんちゃん一択



678 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:40:01 ]
真のLisperは括弧を省略しない

679 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:04:58 ]
Python使いからすると
閉じ括弧を省略できると最高なんだが

680 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:08:22 ]
かつて、対応する括弧までを一気に閉じるスーパー括弧というのがあってだな

681 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:09:27 ]
haskellの$演算子はカッコを減らすのにいい

682 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:22:28 ]
Python使いの口癖

オフサイド!

683 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 01:14:27 ]
「M式というのもある」と発言してうそつき呼ばわりされた屈辱の日々

684 名前:デフォルトの名無しさん [2009/09/07(月) 06:57:21 ]
最近C++一辺倒でもなと思ってPythonを使い始めたやつですが,
Pythonってのは本質的に関数言語であって,クラスシステムは
後付けっつーことですか?

self とか cls があらわになっているをの見て,
そういうもんなのかなと.

なぜPythonに手を出したかというと
普段使わなくても多重継承がないと不安だからとか
そういう理由だとまた叩かれるのかな.

685 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 07:17:35 ]
ドMの癖に
いやらしいねえこの男は

686 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 07:19:35 ]
>>684
OOP機能は最初から装備されていたそうなので、あとづけではないらしい。
そこかしこに不自然さが残るのは確か(superとか)なんだけど、許容範囲だから我慢してる。
あとPythonの作者は関数型言語をあまりよく知らないらしいから、「本質的に関数型」ではなくて「偶発的に関数型」じゃないかな。

> self とか cls があらわになっているをの見て,
> そういうもんなのかなと.

そういうもんです。違和感あるだろうけど、我慢できる範囲だと思うので、我慢して使ってください。そのうち慣れます。

687 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 08:28:42 ]
>>684
個人的にはselfとかどの名前空間なのか明示する方が分かりやすい
省略しまくる言語とか訳分からん記号使いまくる言語は氏ねとか思う



688 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 08:48:25 ]
>>687
そうじゃない。self.method()は別に構わない。
def method(self): がちょっと嫌いなだけ。

689 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 08:55:11 ]
> self とか cls があらわになっているをの見て,
> そういうもんなのかなと.

そういうもんです。
どの名前空間なのか明示する方が分かりやすいです。

慣れないうちは __init__() に self 入れ忘れて、
"引数の数があわない"
という一見変なエラーに悩まされますが、
そのうち気にならなくなります。

どちらかというとわたしは unicode/str の
encode/decode でよく悩まされました。
こちらももうすっかり慣れましたけど。

どちらも今となっては良い思い出です。

690 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 09:12:47 ]
>>688
俺も前から第一引数のselfに疑問を持っているんだが、Guidoがimplicit selfを
絶対に導入しない理由は何なの?
ちょっとググってみたが良く分からんかった。

691 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 09:15:08 ]
>>688
selfまで省略されるとお前どっから来たんだよッて俺がキレる

692 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 09:31:39 ]
書くときは冗長に思えるけど読むときには便利、と思えるかな?>self

693 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 09:53:30 ]
>>690
これは既出?
www.python.org/doc/faq/general/#why-must-self-be-used-explicitly-in-method-definitions-and-calls

694 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:01:34 ]
>>693
和訳。
coreblog.org/ats/translation-of-why-explicit-self-has-to-stay
どのくらい正確なのかはわからんが。

695 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:39:14 ]
>>693
それは読んで知ってたけど、論拠としては弱いと思ってた。

>>694
サンクス。これを読んで一応納得した。デコレータを使った時に困るのは分かるが、
半分以上はGuidoの思想上の問題のような気がする。本人が絶対にexplicit self
を無くさないと言っているのだから仕方ないが。

696 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:50:10 ]
Pythonのメソッドって関数みたいなもんでしょ?
逆にいつでもselfを使える前提にするほうが変だと思う。
引数とって値を返す、関数らしい構造で良いと思う。
逆にRubyでは関数はメソッドの亜種だから、関数でもわざわざselfが設定されてる。
Javaではそもそも裸の関数が無いのだからselfがあるのは納得。

697 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:50:53 ]
って、Javaはthisだった、ごめ



698 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:51:49 ]
>>695
>デコレータを使った時に困るのは分かるが、

自分はここがよくわからないんだけど、だれか解説たのむ。

以下引用:
> メソッドがデコレートされたときに,self引数が渡されるかどうかを知ることはできない。
> というのは,デコレータはメソッドをスタティックメソッドに変えることもあるし(この場合selfはない),
> クラスメソッドに変えることもあるし(この場合は,selfの変わりにクラスオブジェクトが渡される),
> まったく違ったことをすることもできる
> (@staticmethodや@classmethodと同じ働きをするデコレータをPythonで書くことは希だと思うが)。
> つまり,デコレータが何をするかを知り得なければ,メソッドに明示的にselfが定義されているかどうかを知ることができないのである。

699 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:55:19 ]
>>696
> 逆にいつでもselfを使える前提にするほうが変だと思う。
>>694のリンク先を読めば分かるが、そんなことは誰も主張してない。

700 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:08:55 ]
>699
しってるよw 俺の感想を言っただけ。

701 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:13:11 ]
見苦しい言い訳だな。妄想は自分の脳内で完結させろ

702 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:13:57 ]
>>698
デコレータは関数を引数にとって「何か」を返す関数。
クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。
そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。

703 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:30:51 ]
>>701
それ自体が>>699の誤読の見苦しい言い訳であり
脳内からはみ出たお前の妄想じゃんw

704 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:10:27 ]
>>696
classと無関係なただの関数はself書かなくていいよ

705 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:13:24 ]
お前は何が言いたいんだ

706 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:15:07 ]
基地外が暴れだしたか

707 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:22:47 ]
今更selfがなくなると違和感ありまくり。



708 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:44:13 ]
解説ありがとうございます。でもやっぱりわからない。

>>702
>デコレータは関数を引数にとって「何か」を返す関数。
>クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。

↑これはわかる。↓これがわかんない。

>そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。

・コンパイル時に「何か」を決定することと、暗黙の引数を追加することに、どういう関係がありますか?
・コンパイル時ではなく実行時に決定するのではだめでしょうか。
・暗黙の引数を、追加するのではなく最初から追加しておけばいいように思うけど、それだとまずいでしょうか。


だれか時間のある人教えてください!




709 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:45:54 ]
オナニー言語やね

710 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 14:42:38 ]
低脳はPHPがRubyをやればいいよね

711 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 14:54:08 ]
またRuby厨が荒らしてるのか
まったく・・・

712 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:04:02 ]
>>698
デコレータは関数を関数に変換するもの(最近はクラスもできるが)。

self必須にすることで関数とメソッドはほぼ互換になる
>foo.meth(arg) == C.meth(foo, arg)
ここで、C.methは関数扱いできる。

メソッドが関数として扱えるので、
メソッドのデコレータは関数のデコレータを作るのと同じやり方でできる。

逆にself省略できるようにしたらメソッドのデコレータを作るのが難しくなると思う。

713 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:20:37 ]
>>712
若干の冗長性が柔軟性を生むいい例だね。
Pythonは仕様の簡潔性が特徴のスクリプト言語なわけで。
(予約語や特殊な文法が少ない)

714 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:33:22 ]
>>712
厳密に言うと、デコレータの出力は関数とは限らないよね。
@property
def foo(self):...
みたいにすると、 foo は foo.__get__() というメソッドが定義されたオブジェクトになる。

715 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:37:47 ]
すげー今更だけどこれって紹介されてたっけ?

Python 3.0開発者ガイド:コア言語の変更点
Python 3.0の主要な言語機能
codezine.jp/article/detail/4051

Python 3.0開発者ガイド:数値、文字列、データ
codezine.jp/article/detail/4052

716 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:41:09 ]
>>714
いや、まぁそこら辺は厳密性を犠牲にして説明しやすくしたということで(ry

717 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:08:14 ]
codezineの翻訳はクソ



718 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 02:33:13 ]
>>717
神降臨
書き換えてこい

719 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 09:37:04 ]
reportlabでpdfを作ると
同じものを作っても作るたびに
出来るファイルのサイズが違うのですが
こんなもんなのでしょうか?
pdfデータに日時が入ってるのかな

720 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 10:24:59 ]
帝国ピストンはMLで質問しろよ

721 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 11:47:07 ]
動的に渡す関数(メソッド内で関数を定義して戻り値で返すような)って、
自由変数の束縛はいったいどうやるんだ?

そういうことをやりたいときはグローバル変数使うかクラス使うかしかないんだろうか……。

722 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:31:53 ]
やってからいえ

関数の呼び出し->local名前空間の生成->関数オブジェクト生成->local名前空間の解放->関数オブジェクト返る
関数オブジェクトから参照してる変数は上位の名前空間が消えてもクロージャな参照が残ってるからGCに回収されずに使える

723 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:21:31 ]
>>やってからいえ
その言葉をそのまま返そう。

外側のメソッド[A]で定義した関数内関数[B]で[A]のローカル変数aを[B]内で使用しようとしたとき、
[B]内でそのままaと書くと未定義参照エラーになる。
かといって[B]の引数で与えても値渡しなのでa自体を書き換えることはできないよね。

724 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:32:29 ]
python3 nonlocal

725 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:38:48 ]
>>> def fa():
...  a=3
...  def fb():
...   a=5
...   print a
...  print a
...  return fb
...
>>> b=fa()
3
>>> b()
5


726 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:42:35 ]
nonlocalをpython2.xで模倣するときは
・L=[x]みたいにリストにして、L[0]に対する操作にする
・f.x = xのように関数の属性にして、f.xに対する操作にする

727 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 15:53:18 ]
>>725

>>> def fa():
... a=3
... def fb():
... a+=5
... print a
... print a
... return fb
...
>>> b=fa()
3
>>> b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fb
UnboundLocalError: local variable 'a' referenced before assignment
>>>



728 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 16:05:07 ]
>>726
ですよねー。

ふと調べてみたらそれについて記述したページを見つけたよ。
www.shido.info/py/py1_comment.html

実際にやってみたら
関数内関数[B]の中だけじゃなくて、
外側のメソッド[A]の側でも配列参照してあげないと
変更後の値にアクセスできないね。
実用にはなるんだけど不便だ……。

ともあれ、やり方がわかったよ。ありがとう。

729 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:11:51 ]
>>726
>>> def fa():
...  a=3
...  def fb():
...   fa.a+=5
...   print fa.a
...  print a
...  return fb
...
>>> b=fa()
3
>>> b()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in fb
AttributeError: 'function' object has no attribute 'a'


730 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:14:10 ]
>>728-729
>>> def fa():
...  fa.a=3
...  def fb():
...   fa.a+=5
...   print fa.a
...  print fa.a
...  return fb
...
>>> b=fa()
3
>>> b()
8
>>>


731 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:40:00 ]
>>727 >>729-730
Pythonのニシキヘビ共が、タチコマみたいな会話してるみたいで萌えたw

732 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 03:07:25 ]
pprintを使ってて、読めなくなった日本語をそのまま、読めるようにしたい。

>>> k=dict(hoge=u"欝")
>>> k
{'hoge': u'\u6b1d'}
>>> r=pprint.pformat(k)
>>> r
"{'hoge': u'\\u6b1d'}"
>>>
これを、pprintのフォーマットを保持したまま
"{'hoge': u'欝'}"
みたいに人が読める形に、出来ませんか?


733 名前:732 mailto:sage [2009/09/09(水) 03:22:29 ]
自己レス
一旦unicode化して、"unicode-escape"を使えば行けた。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pprint
d=dict(hoge=u'欝')
k=pprint.pformat(d)
print k
>>>{'hoge': u'\u6b1d'}
u=unicode(k,'utf-8')
print u.decode('unicode-escape')
>>>{'hoge': u'欝'}

配列の中に入った日本語とかも効くようだ。

734 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 07:20:56 ]
関係ないけど /usr/bin/env を使うのは環境依存でハマる事があるからあまり良くない気が。

735 名前:デフォルトの名無しさん [2009/09/09(水) 12:17:23 ]
環境依存ではまらないように設けた仕組みだろうに、
環境依存で動かないなんて本末転倒だな。


736 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 12:20:34 ]
> /usr/bin/env を使うのは環境依存でハマる

具体的に詳しく。

/usr/bin/env が無くて /bin/env とか、
PATHの設定に問題が、とか?

737 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 12:30:11 ]
/usr/local/bin/env



738 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:07:17 ]
>>734
おれも詳しく知りたい。

 #!/usr/bin/python
 #!/usr/local/bin/python

はよくなくて

 #!/usr/bin/env python

とするほうがいいとずっと思ってたんだけど、違うの?



739 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:17:43 ]
734は相当劣悪な環境を使っているに違いない。激しく同情する。

740 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:20:49 ]
レンタルサーバで使えない

741 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:21:17 ]
HOME以下に自分でビルドしたPythonをインストールしてパスを通してるとき、
/usr/bin/meld とかディストリビューションのアプリが #!/usr/bin/env 使ってて
軒並み動かなくなったなぁ。

742 名前:デフォルトの名無しさん [2009/09/09(水) 15:49:53 ]
ターミナルから起動して使うと、なぜか出力が最後にまとめて行われてしまいます。
バッファリング周りを自分なりに調べて試してみたのですが、改善しません。
教えていただけるとうれしいです _ _

#!/usr/bin/env python -u
import sys

for line in sys.stdin:
  line = line.rstrip()
  if line:
    print "true"
  else:
    print "false"
  sys.stdout.flush()


743 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 15:54:45 ]
>>741
どうでもいいところでハマってそれを自慢したがるド変態のM夫君っているものですね。

744 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:07:48 ]
質問の本題とは関係ないのだが、

> #!/usr/bin/env python -u

shebang で複数の引数を渡そうとした場合の動作は移植性がない。

745 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:36:04 ]
>>743
でもこの場合は、単に君が、どうでもいいところで「こいつは自慢してるんだろう」と誤読する
キチガイなだけでは?

746 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 16:45:37 ]
#!/usr/bin/python

にすればいいじゃん?

747 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:06:46 ]
python2.6.2/python3.1.1 ○バッファされない ×バッファされる
× py2 sys.stdin
○ py2 sys.iter(stdin.readline, None)
○ py3 sys.stdin
○ py3 sys.iter(stdin.readline, None)

ファイルのf.next()は効率のために先読みするんだけど、それが原因かな。
py3でどこが変更されたかはよくわからなかった



748 名前:747 mailto:sage [2009/09/09(水) 17:07:36 ]
訂正。
× py2 sys.stdin
○ py2 iter(sys.stdin.readline, None)
○ py3 sys.stdin
○ py3 iter(sys.stdin.readline, None)

749 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:08:49 ]
出力がバッファリングされてるんじゃなくて、

> for line in sys.stdin:

これのために、入力が終わるまで実行が止まってる。

for line in iter(sys.stdin.readline, ""):

こうする。

750 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:21:07 ]
ああpy3kのf.__next__は単純にf.readlineを呼び出すだけみたいだ。
ドキュメントには先読みすると書いてあるけど、たぶんこれはドキュメントのバグ。

751 名前:742 mailto:sage [2009/09/09(水) 17:36:41 ]
>>744 ありがとうございます、勉強になります!
>>747-750
ありがとうございます、出来ました!
バッファリングの問題じゃなかったんですね、お恥ずかしい。

752 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:49:21 ]
>>745
変態のくせにプライドだけ高いなんてどんだけひとりぼっち君。

753 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 18:00:03 ]
>>752
今度の設定はプライドか。ってか俺は>>741ではないし。
なんか君のキャラ設定って、鏡に映った君自身っぽい。

754 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 19:31:14 ]
>>753
>なんか君のキャラ設定って、鏡に映った君自身っぽい。


755 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 19:52:00 ]
自分のキャラ設定は鏡に映った自分自身という、再帰的新感覚キャラ「なんか君」

756 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 20:06:07 ]
てっきりスルーされると思ったらそうでもなかった。
env の話はこのへん分かりやすかったです。
ya.maya.st/d/200606c.html#d20060625

757 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 22:23:02 ]
情けないようで逞しくもある



758 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 22:45:56 ]
俺はUnix系の環境持ってないから分からんけど

#!python

だとダメなの?

759 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:48:18 ]
堂々巡り開始

760 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 12:56:13 ]
>>758
#!./python

761 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 13:48:03 ]
emacsでpython編集してたら、なんか嫌になった
netbeansにしようかなあ

762 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:44:37 ]
>>760
えーと、どゆこと?
パスが必須ってこと?
それとも、そういう意味に解釈されてしまうってこと?

763 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:35:12 ]
>>761
バイナリをテキストエディタで編集しちゃダメですよ。

764 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:40:31 ]
slimeだったらタグファイル作らなくてもタグジャンプしてくれたり、
何も設定しないデフォルトでほとんど何でもできちゃうのに
python.elが貧弱すぎる

765 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:44:17 ]
うちのCentOSのPythonは
/usr/bin/python 2.3 (プレインストール)
/usr/local/bin/python 2.5 (自分でコンパイル)
が入ってる
ちなみに /usr/bin/python を 2.5 で上書きしてしまうと
yum が動かなくなるのでこうしてる
自分の shell の path は /usr/local/bin/python が先なので
#!/usr/bin/env python
と書いても大丈夫なような気がするけど
自前のスクリプトは
#!/usr/local/bin/python
で作ってるよ

766 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:51:22 ]
stow使ってる

767 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 03:05:13 ]
>>761
kondoはどうよ?emacsキーバインディングもある
www.activestate.com/komodo_edit/



768 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 03:35:09 ]
>>767
もちつけw

769 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 11:01:20 ]
こども? 近藤さん?

770 名前:デフォルトの名無しさん [2009/09/11(金) 11:35:07 ]
Python 3 シリーズを将来使うために
今 2.3 とかで動かしているスクリプトを
メンテのたびに 2.6 に移し始めてます.
以降のためのガイドライン(from future importとか)
のページってありませんか?

出来れば日本語だとうれしい・・

771 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 12:02:29 ]
>>770
>出来れば日本語だとうれしい・・

Rubyなら日本語の情報が盛りだくさん!

772 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 12:13:59 ]
>>761
Editraはどうよ?viキーバインディングもある
editra.org/

773 名前:デフォルトの名無しさん [2009/09/11(金) 13:21:08 ]
eggファイルってWindowsのPythonでも使える?

774 名前:デフォルトの名無しさん [2009/09/11(金) 16:07:04 ]
つかえましたすまそ

775 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:18:07 ]
eggファイルといえば、site-packageにはいったeggが
展開もされずにそのまま動いてて、どうしてコレで動くんだろ?
って思ったことはあるな。

776 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:26:28 ]
Pythonのimportは拡張することが出来て、zipファイルからimportする拡張がデフォルトで入っている。
非圧縮zipだとファイルシステムからstatする時間が要らなくなるので通常ファイルのモジュールよりも
高速にロードできる。

777 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 17:30:00 ]
777



778 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 18:16:23 ]
Windows版2.5.1で試したことあるが
python.exeとpython25.dllだけあれば
後は全部zipに入れても動くよw
zipの中身適当に絞り込んだやつと、exeとdllを、未だUSBに入れてあるわ〜

779 名前:デフォルトの名無しさん [2009/09/11(金) 18:38:46 ]
Python でメモリがつがつ使うプログラム書くと,
当然ながら仮想メモリまで食いつぶしていきますよね?
せめて自分がどれくらいメモリを使っているかくらいは
知りたいのですが,OSに依存しないメモリ使用量の
取得方法ってあるでしょうか?

メモリ上にデータをキャッシュするようなアプリを書いていて
最終的にはスラッシングが起こりだしたらキャッシュの量を
減らすというような処理を行いたいと思っています.
最終的には.

780 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 19:06:40 ]
>>OSに依存しないメモリ使用量の取得方法
ざっと探してみたけどないので君が作るといい

781 名前:デフォルトの名無しさん [2009/09/11(金) 20:26:46 ]
easy_install は便利だけど同じパッケージの新しいバージョンをインストールしても
上書きしていくだけなんだよね?古いバージョンのアンインストールをきれいにやってから
新しいバージョンのパッケージをインストールしてくれないものだろうか?

782 名前:デフォルトの名無しさん [2009/09/11(金) 20:32:06 ]
俺もピートン勉強すっかな

783 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 22:29:18 ]
>>772
日本語を入力するまでは満足してました。

784 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 23:09:59 ]
>>779
どれぐらいのメモリを使ったらスラッシングが始まるのかがOSに依存すると思うのですが。


785 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 23:18:02 ]
>>784
それは別にOS依存しててもいいのでは?
大事なのはスラッシングが起こったことが検知できるかどうかでしょ。

786 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:09:53 ]
ああいえばじょうゆう。
んなことできる訳ねーダロカス

787 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:18:06 ]
むしろスラッシングが起こったことをアプリ側に分からないようにするのが近代的なOS設計だと思うんだが。
それに逆らってどうする。



788 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 05:36:22 ]
>>787
スラッシングがおこってもプロセスが実行しつづけられるようにするのは近代的なOSの設計だといえるけど、
スラッシングが起こったことを検出できない、検出させないのは、別に近代的でもなんでもない。
検出できるような設計にしたら近代的でなくなるのか?そんなわけない。

789 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 08:34:37 ]
今年はじょうゆう14年か

790 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 11:30:03 ]
>>788
で? Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか?

791 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 11:31:32 ]
>>788
は気にくわないことすべてに文句つけそうで怖い。

792 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:21:38 ]
788の方がまっとうな考えだな。
にちゃんは半可通が多数決で正しい答を出すから恐いw


793 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:31:19 ]
>>790
間違いを指摘されたからといって怒るなよ。
なんで
> Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか?
ということになるんだ?意味わかんねー。
別に間違っててもいいじゃんか。指摘されたら修正すればいいだけ。
間違いを認めようとせず、ごまかすためにキレるほうが格好悪いぞ。

794 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:39:55 ]
まぁ、かと言って、全く非の打ち所のない言語もまだないからな。
その中でPythonはかなり使いやすい部類だと思う。

795 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:42:47 ]
摩訶不思議なコードを書いて俺SUGEEEしてる人が少ないのが良い

796 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:02:05 ]
つか当初の質問のレベルが低すぎるだけじゃね。

797 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:04:38 ]
>>795
摩訶不思議なコードを書くのは
そうでもしないと今流行りの機能が実装できない(C++の謎なテンプレートとか)か、
変なコードのほうが高速だったり(末尾再帰とか)
ミスが起こりにくかったりする(if(0==x){〜とか)

とか、そんな事情がある。
Pythonはそもそもそういうのが起こらないように設計されてるからなー



798 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:06:36 ]
最初はメモリ使用量とスラッシングの話だったのに
気づかないまま別の方向に向かっているおまいらがすき

799 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:38:21 ]
zope.interfaceが"要らない"ことに気付くまで1年かかった

800 名前:デフォルトの名無しさん [2009/09/12(土) 17:07:43 ]
Windows で IDLE を起動してただ exit() と打つと
Python IDLE "The program is still running! Do you want to kill it?
っていうダイアログボックスがでてくるんだけどこれはバグ?

Windows Vista Business 上で Python 2.5, 2.6, 3.1 で確認しました

801 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:30:00 ]
ばかじゃないのおまえ

802 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:54:01 ]
>>792

x 半可通が多数決で正しい答を出す

o 半可通が多数決で出した答を正しいと思い込む


803 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:56:27 ]
>>792の意図するところはこっちだろう
o 半可通が多数決で「正しい」答を出す

804 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:56:50 ]
何をもってしてバグとするんだ?

805 名前:デフォルトの名無しさん [2009/09/12(土) 20:04:53 ]
print __builtins__ の結果と

import __main__
print __main__.__builtins__ の結果が違うのはなぜでしょうか?

たとえば __builtins__.__dict__ はありますが
__main__.__builtins__.__dict__ はありません

806 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 20:20:47 ]
>>805
処理系のソースコード調べて考えろ。

807 名前:デフォルトの名無しさん [2009/09/12(土) 20:32:48 ]
>>806
アドバイスありがとうございます
CPythonのコードはまだ読んでいませんがIDLEのコードを読んでいます。
lib\idlelib\AutoComple.py の中に

import __main__
中略
namespace = __main__.__dict__.copy()
namespace.update(__main__.__builtins__.__dict__)

というコードがあって、__main__.__builtins__.__dict__
の意味が分からず悩んでいます。



808 名前:805=807 [2009/09/12(土) 20:52:19 ]
>>806
たびたびすみません,原因が分かりました.
EclipseのPyDevで開発しているのですが,
デバッグモードで動かすと __builtins__ は dict です.
通常モードで動かすと __builtins__ は module です.
デバッグモードではこのような違いが随所にあったのが原因でした.

なお,PyDev のソースを読んだところたしかに pydevd.py で
そのような違いが表れていることが分かりました.
eclipse-pydev.sourcearchive.com/documentation/1.0.3-1ubuntu1/pydevd_8py-source.html

809 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:19:57 ]
なんかあさってだな

810 名前:805=807 mailto:sage [2009/09/12(土) 21:50:14 ]
>>809
スレを汚してしまってすみませんでした

811 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:05:33 ]
そういう意味ではない

812 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 07:39:27 ]
python2.6でpy2exeを使いmechanizeをimportしたスクリプトをexe化したいのですが
なにやら色んな物がないといわれます。で色んなもを入れたり、パス変更したりして
対応したのですが
dummy.Processというモジュールだけ見つかりません。
(python2.6/Lib/multipurocessingの中にprocess.pyがあったので/Lib/dummy/process.py
と置いてみましたがダメでした)
easy_installを試しましたがダメでした。
対処法もしくはdummy.Processがどこにあるかわかる方いますか?


813 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 08:09:46 ]
/Lib/dummy/process.py
->
/Lib/dummy/Process.py

814 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 08:17:23 ]
from multiprocessing.dummy import Process

815 名前:812 mailto:sage [2009/09/13(日) 09:27:34 ]
>>813
それでやってみましたがダメでした
>>814
自作スクリプト内ではdummy.processをimportしておらず、mechanize内でもimportされていなかったので
どのスクリプトのimportをそのように書き換えるのかわかりません

で、なぜかLib/multiprocessing/dummy/processとするとdummy.processは通りました
しかし、また新たにmultiprocessingが必要(?)でて
easy_installすると
こんどはmultiprocessing._mmap25とwin32processが必要といわれ。。。
なんだかきりがないように感じられたので諦めます
すいませんでした

816 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 14:03:24 ]
なんでPythonはRubyの文法を盗んでるのでしょうか

817 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 14:04:32 ]
具体例を挙げてください。



818 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:00:45 ]
defなんてそうだよね

819 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:02:40 ]
Rubyのが先に世に出たのに後からでたPythonが元祖語ってるという皮肉

820 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:11:03 ]
ttp://ja.wikipedia.org/wiki/Python
登場時期 1990年
ttp://ja.wikipedia.org/wiki/Ruby
登場時期 1995年

821 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:11:18 ]
>>819
アホか。Pythonの初出が1991年でRubyが1993年だろ。調べてから言え。
それから、RubyとPythonがどっちが優れてるかなんてフレームの元なのでやめたほうがいい。
用途によって使いやすいほうを使えば十分。

822 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:14:59 ]
>>818
いまだとBooとかScalaとかあるけど
PythonやRubyの前って関数定義にdef使ってるのってないのかな

823 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:32:01 ]
Assembly
BASIC
C
...
O
Python
Q
Ruby
S
...
Z


824 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 15:36:47 ]
スルー

825 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:01:43 ]
>>822
BASIC

826 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:38:10 ]
procedure hogehoge
function hogehoge

827 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:50:59 ]
>>825
DEF FN……懐かしい。



828 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 11:25:01 ]
Python2.5.2ですが、ユニコードって内部的には一律一文字2バイトで表現されていると思って良いのでしょうか?
C拡張でユニコードを扱う関数を作りたいんですが、Cでどのようにユニコード文字のバイト区切りを判断すれば良いのか分からなくて。


829 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 11:41:21 ]
ユニコード文字のバイト区切り?

830 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:09:04 ]
たぶん、Pythonでの扱い以前にUnicodeの基礎知識が不足していると思われ

831 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:15:39 ]
UnicodeとUTF-8の違いは?
pc12.2ch.net/test/read.cgi/tech/1177930957/

832 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:22:32 ]
欠けている部分があるので分からないわけですが、
基本知識はあると思ってるのですが...
そもそもUTF-8なんて話してません、ユニコードそのものの話です。
pythonにおいてunicode()で生成したユニコードのインスタンスをCレベルで操作したいという話です。
初期のUnicodeが16ビット固定長だった事は知っています。
しかし現在は21ビットにまで拡張されています。
ということは16ビットでは不足するケースがあるわけで、
原理的に固定長決め打ちというわけにはいかないはずです。
また、pythonのレベルからはunicode文字列の実バイト数を知るメソッドが見付けられませんでした。


833 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:23:50 ]
あ、>>832は、コードポイントをそのまま二進数で表現していると推測しています。


834 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:28:16 ]
また、BMPだけならば16ビット固定でも良いのでしょうが、
Pythonのunicodeobject.hやunicodectype.cには
UCS2、UCS4という文字列が両方とも含まれているので、
16ビット固定なのか32ビット固定なのか良く分かりません。


835 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:30:07 ]
2バイト固定や4バイト固定と知っているならそうと、どちらかなら判別方法を教えてくれればいいのに、わざわざUTF-8を持ち出して混乱させようとするなんて、ほんとににちゃんねるってのは根性悪いですね。
さようなら。


836 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 12:34:52 ]
さようなら

837 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:10:56 ]
>>> u=u'日本語'
>>> u
u'\u65e5\u672c\u8a9e'
>>> s=u.str()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'unicode' object has no attribute 'str'
>>> s=str(u)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
>>> l=u.split()
>>> l
[u'\u65e5\u672c\u8a9e']
>>> l=u.split(u'')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: empty separator

uを
s='\x65\xe5\x67\x2c\x8a\x9e'
または
l=[0x65,0xe5,0x67,0x2c,0x8a,0x9e]
というバイト列にしたいのですが
どのような方法があるでしょうか?




838 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:16:32 ]
>>> u=u'日本語'
>>> u
u'\u65e5\u672c\u8a9e'
>>> l = []
>>> for i in u:
...      n = ord(i)
...      l.extend((n >> 8, n & 0xff))
...
>>> l
[101, 229, 103, 44, 138, 158]
>>> map(hex, l)
['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']


839 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:26:59 ]
>>834
len(u'\U00010000')

840 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:49:25 ]
>>838
thx!

>>> u=u'日本語'
>>> map(hex, reduce(lambda x, y: x + [ord(y) >> 8, ord(y) & 0xff], u, []))
['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']


841 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:51:27 ]
おいおい。
sys.setdefaultencoding()で文字コードを再設定してやるのが先だろ?
むちゃくちゃやってやがるな……。

842 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 13:55:33 ]
>>828

843 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 15:54:14 ]
もう手遅れかもしれんが、Pythonとunicodeについて。
Pythonのビルドオプションで、unicodeはUTF-16とUCS4が選択できる。
デフォルトではUTF-16になっていて、これはWindowsでUnicodeファイル名を
そのまま扱えたり、.NET や JVM のUTF-16文字列と互換性があったりと、
相互運用性が求められるときに便利。

でも、一文字を1カウントで扱いたいという要求もよくあり、 .NET/JVM/WindowsAPI などとの
相互運用性が求められない分野ではUCS4が使われることもある。
たとえばFedoraやUbuntuなんかのPythonはUCS4でビルドされている。

844 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 20:02:10 ]
import sys
sys.argv.append("-n")
from idlelib.PyShell import main
main()

スクリプトの最後にこう書けばIDLEのインターフェイスを
立ち上げることができるんだけど,その時 Tk の
メニューを隠すとかできないもんかなぁ.

PyShell のコード自体に手を入れることはしたくない.

845 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 22:22:58 ]
しかし、ほんとユニコードってうんこ仕様だな。
まさに誰得だよ、これ。

846 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 22:32:35 ]
>>845
まあ欠点も色々あるが、結局Unicodeほど便利な文字コードも無いからな。
特にWebアプリはUTF-8で統一してしまうのが一番簡単。

847 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:08:02 ]
UTF-8はBOMをつけてはいけないという仕様にしてくれてれば殆ど困らなかったのになぁ。



848 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:26:21 ]
むしろ日本人ならBOMに理解を示そうよ。
一番BOMの恩恵受けるのは日本なんだし。

849 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:42:04 ]
UTF-16ならBELEあるからBOMの必要性がわかるが、
なんでUTF-8にBOMが必要なんだ?

いやとあるスレで、SJISやEUCテキストとの識別を容易にするために
BOM付きUTF-8を提案したのは俺だったりするのだが。

850 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:52:04 ]
BOMはトラブルの元って認識なんだが。

851 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:12:02 ]
Pythonやっぱつかえねーなー

852 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:20:26 ]
BOMはPython関係ねー

853 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:37:51 ]
やっぱRubyだなー

854 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:38:04 ]
UTF-8でソース書くときは
いつも付けてるが。

855 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:45:08 ]
>>850
BOM のせいで shebang がどうさしないとか

856 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 00:49:52 ]
PythonやPerl、Lispはやってて面白いし使える言語だがRubyだけは使いたくないな
存在価値も無いし

857 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 02:53:36 ]
Rubyしかありえねえだろ。日本だぞここは



858 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:19:11 ]
俺にとって四国は海外なので無問題。

859 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:20:32 ]
四国と何の関係があるの?

860 名前:858 mailto:sage [2009/09/15(火) 04:05:24 ]
松江って四国にあると勘違いしちゃった。テヘ

861 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 05:39:33 ]
松山と間違えたわけか

862 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 07:48:27 ]
>>843
ありがとうございます、助かります。
ヘッダやライブラリの何かの変数でどちらか判定できそうかと思ったんですが、
そこまでは分かりませんでした。
でも、debian sid x86_64ですが、UCS2っぽいです。
UCS2だとwchar_tを使っているみたいなのでなんとかなりそうです。
ctypes.c_wchar_pも使えそう。


863 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 08:12:56 ]
withステートメントの意義が分からない

864 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 08:36:39 ]
スレッドの同期オブジェクトをwithで使えるクラスを書いておくと、めーっちゃ便利。

def something(self):
 通常の処理

 with SynqObj(self.lock):
  クリティカルセクションな作業
 
 通常の処理

865 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 09:12:14 ]
>>862
関係ないかもしれないけど gcc で wchar_t って UCS-4 相当というか4バイトじゃなかったっけ?

866 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:39:39 ]
>>862
pyconfig.hに
Py_UNICODE_SIZEってのがある

867 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:48:49 ]
>>860-861
中国はパスポートが必要




868 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:50:14 ]
>>864
thx!

869 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 11:40:05 ]
あれ、with lock: ... って書けるよね。threadingでもthreadでも

870 名前:デフォルトの名無しさん [2009/09/15(火) 12:00:28 ]
with 構文の as は何のため?

871 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 12:33:02 ]
reStructuredTextをはがしてPlain Textにするモジュールってありますか?

872 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 13:18:30 ]
>>869
ああ、864は複数のスレッドの呼び分けをログで確認するためにラッパーを介しているだけだから。キニスンナ。
普通はlockオブジェクトを直にwith呼び出ししてかまわない。

>>870
Python 2.6のリリースノート読め!

873 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 13:44:36 ]
>>871
ttp://stackoverflow.com/questions/1192632/how-to-convert-restructuredtext-to-plain-text

874 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:08:01 ]
>>873
サンキュー。
でもドキュメント無いからソースよめってことね…。

875 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:29:11 ]
shebangのこと忘れてたよ

876 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:38:22 ]
rst2xxx -> xxx2txt みたいな経路でいけないかな?

877 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 16:39:11 ]
Pyhton3.0以降の言語仕様を日本語で解説してるサイトや書籍ってある?

3.0以降の資料が少なすぎて、勉強がさっぱり進まない
やはり英語を覚えるのが先なのか・・・



878 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 17:24:52 ]
腐るほどあるような気が
Python3.0でググるよりPython3000のほうが多いかも

879 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:29:18 ]
オライリーの第3版初めてのPythonの中でちょっとだけ触れられている

880 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:37:56 ]
>>878
うーん、一部を解説したものしか見つからない
できたら3.1までの仕様変更点を全て網羅している
解説が欲しいんだけど

881 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 18:56:31 ]
>>880
Python 3.0/3.1のリリースノートを読むのが結局一番早いよ。
Pythonはこの辺とても丁寧。

ところで、
IronPythonに向いた軽量なO/Rマッパーが見当たらなかったので
『100行ちょっとのやる気のないPython製O/Rマッパー』をベースに
実装してみたんだけど、試してみたい人います?

一応、Python/IronPython両用です。

882 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:25:58 ]
>>877
読んでみたけど
ttp://docs.python.org/3.1/whatsnew/3.0.html
ttp://docs.python.org/3.1/whatsnew/3.1.html
これくらいのボリュームなら自動翻訳でもかなり役立つと思うが。

# この先、仕事でプログラムするなら英語は何れ必要となるだろうからガンバレ
# 最近の翻訳は中国語から順に整備される傾向があるからな・・・

883 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:35:40 ]
>>866
確かにありました。
4になっていました。

>>865
sizeofで確認したところ確かに4バイトでした。
pyconfig.hの記述と一致してます。
UCS2って2バイトだと思ってましたが、
実装上はwchar_tで表現するので4バイトになってるってことなんでしょうか。
UCS4は元が4バイトですよね。
とりあえずPythonではunicode一文字は4バイトと思って良いのかな。
ほんとunicodeとその周辺のエンコーディングはよく分かりません。


884 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:40:43 ]
>>881
柴田さん乙

885 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:47:36 ]
pyconfig.hはautoconfなんかで出力してんじゃないの

886 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 20:37:03 ]
>>883
ucs4を使うかutf-16を使うかはconfigureオプションで指定して、
sizeof(wchar_t) == 4 && ucs4 の場合か、 sizeof(wchar_t) == 2 && utf-16 の場合にのみ
wchar_t を使う・・・という仕様だった気がする。
Pythonの拡張モジュールを作るときには、wchar_tを直接使うんじゃなくて、
Py_UNICODE を使う。
docs.python.org/c-api/unicode.html#Py_UNICODE

887 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 22:00:25 ]
>>886
あー、なるほど・・・
とりあえずLinux(gcc)ではi686でもamd64でもwchar_tがあり、
>>865さんの指摘どおり両方とも4バイトでした。

UCS4の場合にはどちらもwchar_tで4バイトですが、
UCS2(UTF-16)の場合にはwchar_tと不一致なので
unsigned shortが使われるようです。
これも両方共2バイトでした。

ということで、Linux(gcc)ではUCS2ならばunsigned shortで2バイト、
UCS4ならばwchar_tで4バイトということですね。
最近のLinuxディストリビューションではUCS4が多いらしいです。
Debian sidでもそうです。

Py_UNICODEを使った方が良いのだと思いますが、
Cで書く部分はできるだけPython独立にしておいて
ctypesからそれを利用したいので、
とりあえずwchar_tを使うことにします。

でもimmutableだからなのか、unicodeをそのまま渡して
中身を変更するような事はすぐにはできないっぽいです。
create_unicode_bufferを使うしかなさそうです。




888 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 22:08:01 ]
boostPython

889 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:13:28 ]
>>881
プププ、クソ本の著者乙(wwWwwwwWWWwwwWwWwww

890 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:15:28 ]
>>884,889
いや、当の著者の再配布許可が出たところなんだけど。
別に信じないならいいけどさ。

891 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:37:33 ]
884と889は低脳。
みんぱいの人に嫉妬するクソ本作者。

892 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:52:06 ]
またruby房の嫌がらせか

893 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:03:24 ]
大抵の謎の書き込みは >892 で納得できちゃうね

894 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:47:25 ]
Pythonスレはスルー力が有って良いと思う

895 名前:デフォルトの名無しさん [2009/09/16(水) 10:48:56 ]
何か書こうと思ったんだけど忘れた

896 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:09:33 ]
逃げるなよ。

897 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:27:59 ]
逃げるが勝ちだな



898 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 12:41:43 ]
逃げちゃだめだ

899 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 18:05:00 ]
>>888
ひょっとしてctypesよりboost.pythonの方が良いっていう意味のレスですか?
そうでないとしても、それをきっかけにしてboost.pythonも検討してみました。

boost.pythonとしては、まだunicode文字列を引数としてどう受け渡すのか
方式が定まってないっぽいんですが、とりあえずPyObject* opとして受け取って
PyUnicode_AS_DATA(op)でconst char*として実際のデータバッファのアドレスを取り出して、
それをwchar_t*にキャストして自作のC++関数などに渡せば良さそうです。
C++ではwchar_t*として扱うPython独立なプログラムとして作成して、
引数を渡すところだけはこの変換をするために一枚かぶせる感じです。
unicodeの実装がwchar_tではない場合には困るんすが、C++だし、
とりあえずテンプレート使っておけば後々それほど困らないでしょうし。

これでunicode文字列をC++の中で書き換えることもできました。
boost.pythonって、ほんとに楽にC++とやりとりできますね。


900 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 18:42:02 ]
>>897
働いたら負けだよな。

901 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 19:30:48 ]
俺が逃げるまで逃げるなよ

902 名前:デフォルトの名無しさん [2009/09/17(木) 06:49:55 ]
はやくにげてえーーーー

903 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 11:18:04 ]
boost.python前提になると他の言語からも使えるdllにならない

904 名前:デフォルトの名無しさん [2009/09/17(木) 11:28:50 ]
Eclipse で Java 開発環境と mingw による C言語での開発
環境をスタンドアロンで持ち歩いてるんですが,
PyDev と Python 実行環境もそんなことができればなぁ
と思ってます.Windows 環境です.

Windows の Python はレジストリに何か登録しているよう
なんで,そういうポータブルなことは難しいでしょうか?

905 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 11:54:05 ]
portablepython.com/
公式からもリンクされてるからそんなに怪しいものでは無いと思う。
公式からのリンク:python.org/download/

906 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 20:32:24 ]
>>903
まずはC++で(Pythonその他から)独立したクラスを作っておけばいいんじゃないですか?


907 名前:デフォルトの名無しさん [2009/09/17(木) 21:24:45 ]
unittest.TextTestRunner で複数のテストを次々と実行するトキ,
最初に発生した例外でストップしてほしいんですが,できますか?



908 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 05:57:29 ]
emacsのpython-mode.elで、ユニコードリテラル中にエスケープせずに文字を書くのと、
エスケープコードを書くのとで、py-execute-bufferの際に別物にされてしまう。
(素のバイトストリング扱いになるらしい)

C-x C-f foo.py
#!/usr/bin/python
# -*- mode: python-mode; coding: utf-8 -*-

print u'あ' == u'\u3042'

C-c C-c => False

$ python foo.py
True

どうしたものか。

909 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 08:15:29 ]
sys.getdefaultencoding()

910 名前:908 mailto:sage [2009/09/19(土) 04:44:02 ]
sys.getdefaultencoding() は環境によらず ascii を返すので原因は違うところにあるようだ。
ちなみに locale.getdefaultlocale() はいつでも ('en_US', 'UTF8') が帰る。
C-c ! で ipython を出しておいて C-c C-cすれば普通にターミナルからやるのと同じ挙動に
なったので、それでいいことにしたわ。

911 名前:デフォルトの名無しさん [2009/09/19(土) 09:48:33 ]
循環参照してしまうとそのオブジェクトはプロセスの
終了まで解放されない?

class ClassA(object):
    def __init__(self):
        import sys
        sys.stderr.write("ClassA.__init__(...) %s\n" % str(self))
    def __del__(self):
        import sys
        sys.stderr.write("ClassA.__del__(...) %s\n" % str(self))


class ClassC(object):
    def __init__(self):
        import sys
        sys.stderr.write("ClassC.__init__(...) %s\n" % str(self))
        self.a1 = ClassA()
        self.a2 = ClassA()
        self.a1.a2 = self.a2
        self.a2.a1 = self.a1

    def __del__(self):
        import sys
        sys.stderr.write("ClassC.__del__(...) %s\n" % str(self))

これで ClassC のインスタンスを作ると,
ClassA.__del__ は永遠に呼び出されない.
せめてプロセスの終了時には呼び出されると思ってた.

912 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:57:26 ]
ふうむ,ガベージコレクタが __del__ の
呼び出し順を決定できないからか.
そもそもデストラクタがあるのに循環参照が
起きるような設計をするなということだよな.

913 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 10:45:10 ]
>>908
C-x C-f foo.py
#!/usr/bin/python
# -*- mode: python-mode; coding: utf-8 -*-

print u'あ' == u'\u3042', hex(ord(u'あ')), u'あ'.encode('utf8')

C-c C-c => False (どうなりますか?)

914 名前:908 mailto:sage [2009/09/19(土) 17:52:16 ]
>>913
C-c C-c => False 0x20
と出ます。u'あ'.encode('utf8') はエラーも出さずに飲み込まれてしまっているみたい。ちなみに
print u'あ’ -> なにも表示されない、
print u'\u3042' -> UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042'...
となる。あらかじめC-c ! でipythonのバッファを出しておけばこれらの問題は起きない。


915 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:40:27 ]
>>911
そういうのって明示的に循環参照削除するメソッド作って呼び出すもんじゃないの?
と最近Pythonに興味もったPerl使いが言ってみる。

Perlだと参照を弱める(リファレンスカウント減らす)方法あるけど、
Pythonだと似たような方法有るのかな。

916 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:57:07 ]
del

917 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 19:58:55 ]
boost だと weak_ref とかの弱参照なスマートポインタがあるよな



918 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:00:17 ]
Pythonにもweak_refあるけど、やっぱり明示的に参照切るほうが多いかな。
weak_refは余計なコストかかるし。

919 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:08:20 ]
>>915
www.python.jp/doc/2.4/ext/refcounts.html

これ、絶対入ってるよね。
(文中の『デフォルトでは入っています』に対するレス)

920 名前:デフォルトの名無しさん mailto:sae [2009/09/19(土) 22:27:55 ]
infopile思ったより本格的だった
朝から使ってたけど普通に常用メーラで行けそう

921 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:40:02 ]
C++は元々が自前でメモリ管理しなきゃいけないから余計にああいうの欲しくなるけど
最低限で済むPythonではやはり最低限で良いと思うやね

922 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:54:52 ]
>>920
宣伝乙

923 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 23:47:44 ]
>>920
Windowsだけなんだっけ?

924 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:35:03 ]
>>> L=[]
>>> L[:]
[]
>>> L[:]=[1,2,3]
>>> L
[1, 2, 3]

リストの初期化がなんか違和感が…
納得できん

925 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:43:30 ]
2つのクラス同士でクラスオブジェクト同士を相互参照したい場合、
class Topic:
 child = Reply

class Reply:
 parent = Topic

なんて書いてたら、当然2行目で未定義識別子の参照でエラーになる。
これって、2つの定義を相互参照なしに定義した後で、classmethodを明示的に呼び出して
動的に結びつけるしか方法がないよね?

用途としては自作の軽量ORMライブラリを作ってるところで、
オブジェクト化したテーブル同士の親子関係を表現しようとしている。
で、例えばTopicから連結されてるReplyのインスタンスが欲しいので何らかの形で事前に教えておく必要がある、と。

926 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:51:30 ]
class Topic:
    pass

class Reply:
    pass

Topic.child = Reply
Reply.parent = Topic

927 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:01:17 ]
>>924
それ、初期化じゃなくて代入だから・・・



928 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:38:33 ]


929 名前:デフォルトの名無しさん [2009/09/21(月) 01:38:05 ]
>>924
の思考に違和感が

930 名前:デフォルトの名無しさん [2009/09/21(月) 01:40:50 ]
class Topic:
 children = []

class Reply:
 parent = Topic

Topic.children.append(Reply)

931 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:21:42 ]
>>924
入門書嫁。

932 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:34:48 ]
>>924は何に対して違和感を感じているんだろう
配列が伸び縮みすることになのか
要素の範囲を指定して代入することになのか
L[:] ってなんかきんもー、なのか

933 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 10:42:30 ]
>>> l=[9,8,7,6]
>>> l
[9, 8, 7, 6] <- 普通
>>> l[1:]=[3,4,5]
>>> l
[9, 3, 4, 5] <- 普通
>>> l[1:]=[2,1]
>>> l
[9, 2, 1] <- きもい
>>> l[:]=0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable <- 微妙
>>> l[:]=[0,0]
>>> l
[0, 0] <- きもい


934 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 10:47:29 ]
[1:]=の結果に違和感覚えないのに[:]の結果に違和感覚える理由が解らん

935 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 11:08:09 ]
>>933
スライスの代入で左辺と右辺のリストの要素数が
一致していなくても構わない(右辺にあわせて伸び縮みする)のが気持ち悪いってこと?
だったらリンクリストでも勉強すれば違和感なくなるんじゃないかね

936 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 13:53:54 ]
>>934
>>> l[1:]=[2,1]
>>> l
[9, 2, 1] <- きもい

937 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:02:18 ]
だから入門書読めよ低脳。



938 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:14:12 ]
バカだなあ。

939 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:31:56 ]
つーか、それがキモイならスライスの意味ないだろとw

940 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:05:35 ]
>>> l[1:]=[3,4,5]
>>> l
[9, 3, 4, 5] <- 普通
>>> l[1:]=[2,1]
>>> l
[9, 2, 1] <- きもい

このきもいと普通の違いがわからん
要素が1個減ったらきもい?何か見落としてるんだろうか・・・

941 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:42:29 ]
C言語の配列かなんかと勘違いしてるんじゃね?
抽象度の高い操作を理解できないとか

942 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 18:08:31 ]
スライスの代入ってあんまりやんないからどうでもいいや

943 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 20:57:09 ]
python の配列って中身はリストなんですか?

と思ったら
L=[]
で L に代入してるな orz

944 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:06:25 ]
変数名がL,M,Nではじまる場合にはリストなんだよ。


945 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:12:52 ]
>>941
あぁ。3要素のときはreplaceに見えるからきもくないのか
よくわかったありがとう

946 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:13:33 ]
Pythonのお勉強 Part35
pc12.2ch.net/test/read.cgi/tech/1253535109/

947 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:30:13 ]
>>943
質問の意味がよくわからないが、
Pythonのリストはメモリ上の連続領域を利用した配列型のリスト
(C++のstd::vectorやJavaのArrayListの類)

いわゆる連結リストではないので途中に挿入する操作には弱い。



948 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 23:45:44 ]
>>942
直感的に思えないから、俺もあまり使わないな。
冗長でも、新しいリストを作ってしまうな

949 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 02:10:54 ]
>>948

>>947 の言う通りなら新しく作りなおしてもそんなに速度は変わらなさそうですね

950 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 10:35:41 ]
実装は連続メモリ型かも知れんが
表向きリストのような動作をするように設計されてんだろうな

951 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 12:59:51 ]
from VideoCapture import Device

cam = Device()
cam.saveSnapshot('image.jpg')







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<189KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef