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


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

くだすれPython(超初心者用)



1 名前:デフォルトの名無しさん [2008/04/11(金) 10:55:10 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Python 使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

684 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 10:04:37 ]
>>683
それで合ってる。
inplaceにしたければ、スライス代入を使えばいい。

x[:] = (i * 2 for i in x)

685 名前:683 mailto:sage [2008/06/29(日) 10:55:58 ]
>>684
なるほど。ジェネレータ式も勉強になったよ

686 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:41:39 ]
from timeit import Timer

print Timer('x=[1,2]; x=[i*2 for i in x]').timeit()
# py3k: 2.0419500243746063
# py25: 1.5092940583230501

print Timer('x=[1,2]; x[:]=(i*2 for i in x)').timeit()
# py3k: 5.2120230364473699
# py25: 7.4014716954249735

スライス代入のほうがコストが高いんだろうか…
ベンチの取り方が間違ってるだけなのかもしれんけど (汗

687 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:44:13 ]
>>684
それだ

ありがとう


688 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:46:37 ]
>>686
最終的に代入になってても途中で余分にリスト作ってない?


689 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:03:13 ]
>>686
普通の代入 x = よりはスライス代入のほうが遅いけど
それ以上にジェネレータの実行速度が遅いんだと思うよ
ジェネレータで節約できるのはメモリが主だろうし

690 名前:デフォルトの名無しさん [2008/06/29(日) 13:05:03 ]
Python って末尾再帰の最適化はサポートされていないのでしょうか?

691 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:17:51 ]
されてますん。

692 名前:デフォルトの名無しさん [2008/06/29(日) 13:42:00 ]
>>691 どっちなんだ〜

-------------
def rec(x = 0):
  if (x<1000000000):
    rec(x+1)
rec()
------------
RuntimeError: maximum recursion depth exceeded



693 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:52:29 ]
うん、されてないと思う。

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

おれの環境ではfib(1000)ぐらいでコケる。
ので、Pythonではiterative processは
素直にループやiteratorで書けということだと思った。

694 名前:デフォルトの名無しさん [2008/06/29(日) 13:53:36 ]
単にトレースが取れるようにするために何か制限しているだけなのかなぁ。
わからん、わからん、わからんちん。
しかし単純にループにするだけならトレースとかそもそもいらないのに。

sys.setrecursionlimit() を勝手にいじるのもどうかと思うし・・・

695 名前:デフォルトの名無しさん [2008/06/29(日) 13:56:07 ]
ううむ、つまり、「されてない」が結論だということっすね。

C++ + Boost Graph Library で大規模なグラフ処理してたんだけど、
Python + networkx でやってみようと思ってハマってます。

末尾再帰最適化を前提としたコードかいてたから、
移植のときにアタマをきりかえるのがなんとも・・・

696 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:57:05 ]
Stackless Pythonというのを調べてみると良いかも。
ただ、Cのハードウェアスタックを使わないというだけなので、
末尾再帰をgotoに最適化してくれるかどうかは知らない。

697 名前:デフォルトの名無しさん [2008/06/29(日) 13:57:49 ]
mail.python.org/pipermail/python-list/2003-January/180220.html

698 名前:デフォルトの名無しさん [2008/06/29(日) 13:58:28 ]
>>697
さすがに2003年だからな
今でもだめなのか orz

699 名前:デフォルトの名無しさん [2008/06/29(日) 14:05:28 ]
sys.setrecursionlimit(10000)
でやってみたけど、7000ちょっとの再帰で今度は正真正銘の
MemoryError: stack overflow
が出た

Python赤玉。俺涙目。

700 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 15:21:59 ]
Stackless Pythonなら、setrecursionlimit()で限界増やして、メモリの限り再帰しても大丈夫だよ。

701 名前:デフォルトの名無しさん [2008/06/29(日) 16:23:18 ]
メモリの限り再帰って・・・本質的な解決じゃない気がする。
そのうち末尾再帰の最適化が入ることを祈って、
とりあえずループに書き直した。

702 名前:デフォルトの名無しさん [2008/06/29(日) 18:42:53 ]
Pythonでは定数をどのように宣言(?)すればいいのでしょうか?
たとえば C++ において,クラス全体で使われる定数は
static const で宣言しますが,それと同じようなことは
でこれーたで可能なのでしょうか?



703 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 18:55:24 ]
>>702
デコレータつかうと誤って更新すると例外が出るようのは作れるけど
クラスやパッケージ外からはアクセサつかって変数を更新するという
ルールにしとけば事故はおこんない。
そもそもPythonの変数は入れ物じゃなくて名前付けというか参照だから
そういう文化(というと大げさだけど)だと思うしかない。

まーCみたいに独自プリプロセッサとおすのはありかもね。

704 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:58:33 ]
ここでもstackの話してるのかw

705 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 21:23:49 ]
ゆとりちゃんは幼稚園からやりなおしてくだちゃいね

706 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:09:54 ]
やりなおしても、またゆとり教育で永久ループか?

707 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:37:55 ]
ゆとりはPython使うな。 以上。

708 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:25:22 ]
Python3.0について質問です。
名前空間ってやつで悩んでます。

urllibモジュールについて、

import urllib.parse.urlparseとやるとimportに失敗します。
from urllib.parse import urlparseとやるとモジュールのimportに成功します。

なぜでしょうか??

なぜ下の方は成功し、上のほうは失敗するのでしょうか。

709 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:35:21 ]
urlparseがモジュールじゃなくて関数だから (lib/urllib/parse.py)

710 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:43:14 ]
>>708
ttp://www.python.jp/doc/release/ref/import.html
単純なimport文やfromに指定できるのは「モジュール名」に限る。
パッケージがサブディレクトリを持っていて階層構造になっている場合は
モジュール名にドットが含まれることもある。

711 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:56:00 ]
>>709,>>710
ありがとうございます。
疑問点について氷解しました。

712 名前:デフォルトの名無しさん [2008/07/02(水) 09:12:25 ]
PEPってPython Enhancement Proposals
のことだって始めて知った今日。



713 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 13:39:10 ]
PHPってPrintHtmlPrototyping

714 名前:デフォルトの名無しさん [2008/07/03(木) 08:36:51 ]
Pythonで簡単なウェブサーバを作成するパッケージってありますか?
ローカルで実験してて計測結果を表示するウェブインターフェース付けたいんだけど

715 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 08:54:55 ]
>>714
>>651
>>> python -m CGIHTTPServer
50レス程度も読めないの?馬鹿なの?死ぬの?

716 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 09:11:23 ]
そういう人間のたまり場だということになぜ気付かないの?

717 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 12:58:39 ]
ログを読まないより、ググらないのとリファレンスを引かない方が…

718 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:41:22 ]
プログラム初心者がpythonでcgiやりたいとかならともかく、
実験してるような人なら、必要な情報を調べる技術は備えてるはずだと思うんだけどなあ

719 名前:714 [2008/07/04(金) 07:00:11 ]
思いついた時にケータイで取り合えず聞いておくから.
後で調べる.

とにかく古い測定器で,GP-IBインターフェイスカードが
そのマシンにしかついてなくって,面倒だなぁ,と.

720 名前:714 [2008/07/04(金) 07:02:01 ]
レスしてくれる人があったらラッキーだし,
なくてもまぁ,なんというか,メモ代わり.
自鯖のp2経由だから自分がどこに何書き込んだかログ残るし.

721 名前:714 mailto:sage [2008/07/04(金) 07:33:41 ]
だから,レスは別にいらないし、回答をくれても特に感謝もしない.
こっちが要求したワケじゃないから,ね.

722 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 07:38:31 ]
つチラシの裏



723 名前:714 mailto:sage [2008/07/04(金) 07:41:48 ]
わかってると思うけど,721は別人.

…まあ,言ってることは当たってるけど.

724 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 08:46:23 ]
あんま参考にならない意見かもしれんけど
coreblog.org/ats/python-de-cgi
coreblog.org/ats/stuff/minpy-web-support 目次

とか薦めてみるテスト

じぶんもCGIよくわからないひとなので、今週の土日使って
読んでみる予定。

725 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 11:30:17 ]
ものすごいインストーラー嫌いなんです
Windows用のはインストーラーしか見当たらないのですが
Pythonをインストールせずに使う方法はありますか?

Portable Pythonっていうのを使えばいいんでしょうか?


726 名前:デフォルトの名無しさん [2008/07/04(金) 11:51:14 ]
>>725
そんなに嫌がらないで・・・

727 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:21:23 ]
>>725
ソース落としてコンパイル or msiを展開する

728 名前:デフォルトの名無しさん [2008/07/04(金) 15:49:43 ]
1バイト以下に収まる整数のでっかい配列を扱いたいと
思ったんだけど、基本型には「短」整数型ってのはないのな orz

729 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 15:50:44 ]
>>728
import array

730 名前:デフォルトの名無しさん [2008/07/04(金) 16:22:22 ]
多次元配列を扱いたいんだ・・・
できれば符号なし8ビット整数の。

NumPy ってページを見てみた。
It also adds the features introduced
by Numarray and can also be used to replace Numarray.

ってことらしいのだが、つーことは今は numpy.array を使えと?

731 名前:デフォルトの名無しさん [2008/07/04(金) 16:29:12 ]
A newer implementation, Numarray, is a complete rewrite of Numeric
but is also deprecated. NumPy is a merge between the two
that builds on the code base of Numeric and adds the features
of Numarray.
----
Wikipedia にはこうかかれていました。

732 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 18:47:31 ]
ありがとうございました



733 名前:デフォルトの名無しさん [2008/07/04(金) 19:21:43 ]
どう見ても精子です。
本当にありがとうございました。

734 名前:デフォルトの名無しさん [2008/07/05(土) 20:03:29 ]
自鯖クラッシュに伴い、Python ベースのブログツールに
して気分一新しようと思ってるんですが、この世界は
大体 Zope ベースと TurboGears ベースに収束しつつあるんでしょうか?

Apache + Pythonベースの CGI というよりは、
サーバ機能も含めて全部 Python で固めたシステムに
してみたいんですが、そうなると Zope ベース一択ですか?

735 名前:デフォルトの名無しさん [2008/07/05(土) 20:34:16 ]
Debian に zope3 パッケージが見つかったんで入れちまった。

736 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:48:34 ]
Zope3はガチで地雷。

737 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:50:44 ]
言うな。個々のパーツは素晴らしいと思うんだが

738 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:17:12 ]
ブログツールってのが既成のなら
何ベースというより機能で選択すればいいとおもうけど
自分で構築するならlighty+WSGIかSCGIなPythonアプリかな。

Zopeは2.6以降追っかけてないけど
当時の設計思想でコアなProductも同等以上なら
Python自体がバージョンアップしてる分そうとう楽しく書けるはず。
でも実際は>>736のとおりなんだろうな。

739 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:23:27 ]
Zope3はすばらしいと思うが周りに集まってくる日本人がクソ。

740 名前:デフォルトの名無しさん [2008/07/05(土) 22:26:12 ]
え?地雷なの?
なんか改造したくなったときにPythonだと普段から使っているからやりやすいかと思って。
PerlとかPHPで書かれたやついじりまくって収集つかなくなった。

741 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:29:01 ]
舞の海

742 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:27:31 ]
>>740
>PerlとかPHPで書かれたやついじりまくって収集つかなくなった。

センスのある奴は道具に左右されずそつなくなんでもこなすもんだがね。



743 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:25:22 ]
クマー

744 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:40:50 ]
ちょ
PHPはセンスあっても無理な時は無理

grobal依存しまくりな著名アプリがほぼ絶滅したら認識改めてもいいが
なんかSquirrelMailっての改造作業回された時にほんと死ねクズ開発者共って思った

745 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:10:32 ]
PHPにはnamespaceすらも無いの?

746 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:13:36 ]
ねえよンなもん

747 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 04:53:51 ]
PHPは言語自体行き当たりばったりなハックで作られてる印象

748 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:31:52 ]
>>744
>SquirrelMailっての改造作業回された時

ドカタ乙。

749 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:45:48 ]
ワラ

750 名前:デフォルトの名無しさん [2008/07/06(日) 11:23:57 ]
Perlは綺麗なのか?
かなりアドホックに建て増ししてるように見えるが。

751 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 11:35:17 ]
Zope3の実装はきれいだけど、使っている日本人がババッちい。

752 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:02:04 ]
zopeはメメタァなだけだろ



753 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:49:36 ]
>>751
なんでZope関係の日本人は変な感じがするんだろう…

754 名前:デフォルトの名無しさん [2008/07/06(日) 13:35:53 ]
CMSでいえば俺が以前使ってた geeklog の人なんて
もっと気持ち悪いよ。

755 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:39:40 ]
CMSスレでも評判悪いなw

756 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 16:02:22 ]
>>745 namespaceは5.3で導入される。6.0からunicodeのネイティブサポート。

757 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 16:22:21 ]
総じてCMS開発者は気持ち悪いのか?

758 名前:デフォルトの名無しさん [2008/07/06(日) 16:54:27 ]
>>755
俺もね,いろいろと改良しようとはしたんだ.
というか,実際やった.自分のブログだけは.
でもさ,モジュール化が難しい PHP だと,
上流の変更に合わせてマージできるように確認
するだけでえらい手間がかかるんだ.
そこまでしてコントリビューとするのも面倒だったからやめた.

上流での変更範囲のどこまでが自分がコミットした
パッチに影響あるか,確信が持てないし,
退行テストするほど時間に余裕もない.

つーわけで Zope 3 だとその辺考慮されてるかな?
とか淡い期待を抱いてインスコはしてみたものの,
まだインスタンス作成すらしてないや.
Zope スレも過疎ってるみたいだしさ

759 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:30:40 ]
全然話は変わるけど、pythonってなんで
file = open('hoge.txt')
for line in file :
 hogehoge()
って書けないのよ

760 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:33:24 ]
書けるよ

761 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:01:11 ]
行毎なのか文字毎なのかバイト毎なのか
はっきりしろ

762 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:17:19 ]
>>759
Oh! Python勉強中なのでその話題は気になります

Perlだったらこんな感じ?
open(IN, "hoge.txt") or die "Can't open hoge.txt";
while(<IN>) {
 chomp;
 print $_;
}
close(IN);

Pythonなら



763 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:22:47 ]
Pythonならこう?

f = open("hoge.txt", 'r')
while True:
 l = f.readline()
 if l == '':
  break
 l = l.rstrip('\n')
 print l
f.close()

…もっと上手い書き方・短くなる書き方があるのでしょうか?
while True: が気になります
ここに条件判断入れて短くできないのでしょうか?

764 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:24:57 ]
というか Perlの or die "〜" に相当する部分がないのも気になるな…
try: 〜 except: 使わなきゃダメなのかな

765 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 04:39:35 ]
>>763
ファイルから1行ずつ読むループは
for line in file:
でいいんだよ。
759が何を駄目と言ってるのか分からない。

766 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 04:58:16 ]
>>763
f = open('hoge.txt')
for line in f: print f, # 末端にカンマつき
f.close()

stdout.writeのほうが好みならそっちを
あと例外は補足しなければ大概はdieの代わりになるよ

767 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 05:10:36 ]
>>765
おお…ホントだ! 試してみたら行けました
「Python ファイル読み込み」で検索すると>>763のような書き方しか出てこなかったので
for line in file: なんて書き方ができるとは知りませんでした

…どうして初心者向けの解説ページでは長々とした書き方を紹介してるんだろう
もしかして比較的最近の版じゃないと書けないやり方なんでしょうかね?
何にしても短く書けて嬉しい限りです

後は or die "〜" 相当の書き方を調べてこないと…

768 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 05:10:41 ]
ごめん間違い
for line in f: print line, で

769 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 05:15:50 ]
>>766
膝を打ちました
print の最後にカンマをつけることで改行を出力しない
=読み込んだ行の改行を利用して改行してしまう、ということなのですね
上手いやり方があるなあ…
しかもたったの3行になってて感動しました
同じ処理でもこんなに短く書けるのか…

770 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 06:54:27 ]
公式に良いチュートリアルがあるよ。
>>759-769の内容は網羅されてる。

ttp://www.python.jp/doc/release/tut/

771 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:19:44 ]
sys.stdout.writelines(open("hoge.txt"))

for line in open("hoge.txt"): print line

772 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:51:05 ]
>>770
「網羅されてる」ようには見えませんが…

7.2 ファイルを読み書きする
www.python.jp/doc/release/tut/node9.html#SECTION009200000000000000000

目についたのはこのへんですが、この内容から上記の話を知識として得るには無理がありませんか?
それとも、そちらで見ている項が違うんでしょうか?

余談ですが
こういってはなんですけど、公式のチュートリアルってなんだか判りづらくないですか…?
プログラミングそのものが初めての人向け、のように一見始まりながら
しかし噛み砕き方がかなり中途半端で、そのうえ、どこに何が載っているかが判りづらく
初心者にも、他言語習得済みの人にも
どちらにもお勧めできない解説になってるように思えます
…和訳文書があるだけマシではありますが、おそらくコレは原文からしてよくないんでしょうね



773 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 21:49:17 ]
>>772
もっと先のイテレータのところにちょろっと書いてある。

774 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:29:17 ]
余りわかりやすく書いてしまうと本が売れなくなる

775 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:35:07 ]
イタリックは止めて欲しいよね

776 名前:770 mailto:sage [2008/07/09(水) 22:43:43 ]
ちなみにPython2.4.2以降のチュートリアル(英語)には
ファイル読み書きの項にも載ってる
ttp://docs.python.org/tut/node9.html#SECTION009210000000000000000

>>772
> 初心者にも、他言語習得済みの人にも
> どちらにもお勧めできない解説になってるように思えます
確かにチュートリアルは初心者向けではない
ただ良いと感じるかそうでないかは
あくまで読む人の経験に左右されるので一概には言えない
良くないと感じたら入門書を買うのが吉

777 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:03:38 ]
pythonの入門書なんか書籍数が少ない上に中途半端なのばっかじゃん
python勉強しようって連中からしたらifとかforとかたらたら書いてあっても無意味なのにさあ
EffectiveC++とかEffectiveJava的な本が無いのがいかん

778 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:49:04 ]
>>773
あっ…そこでしたか。これは失礼しました。たしかにちらりと紹介されてました

9. クラス - 9.8 イテレータ (iterator)
www.python.jp/doc/release/tut/node11.html#SECTION0011800000000000000000

頭の中で「ファイル」「for文」のキーワードしか浮かばなくて違うところを探してました…

www.python.jp/doc/release/tut/node6.html#SECTION006200000000000000000
4. その他の制御フローツール - 4.2 for 文

Pyhon 2.5.2版チュートリアルでは、ファイル関係の項に事例が載ってるのが興味深いです
版が新しくなるたびに、微妙に改善?されてるのですね>原文

779 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:40:48 ]
Cookbookでもみたら。
プログラミングの初心者には、
pythonで学ぶプログラミング作法がおすすめなんだがさすがに古いんだよな。

780 名前:デフォルトの名無しさん [2008/07/10(木) 12:41:34 ]
is 演算子はオブジェクトに関するアイデンティティテストですが,
定数に対しての式 3 is 3 が True になるのはどういう理屈によるのでしょうか.

781 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 14:01:23 ]
定数じゃないから
>>> int(3) is 3
True

782 名前:デフォルトの名無しさん [2008/07/10(木) 15:42:02 ]
is ってオブジェクトとして同じってことであって,
値として同じってことじゃないと思うんですよ.

i = int(3)
j = int(3)
print i is j #これは True
print i == i #これは True

class TestClass():
  def __init(self):
    pass
  def __eq__(self, right):
    return True

p = TestClass()
q = TestClass()
print p is q #これは False
print p == q #これは True




783 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:46:43 ]
Pythonの数値はimmutableだから
同じオブジェクトを使いまわしても問題ないんです

784 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:48:19 ]
int,float,str等の場合はa==bがTrueでもa is bはFalseになる場合もあるので
使うべきではないね






[ 続きを読む ] / [ 携帯版 ]

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

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