Pythonのお勉強 Part23 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/01/23 16:23:39
Python オフィシャルサイト
URLリンク(www.python.org)
日本Pythonユーザ会
URLリンク(www.python.jp)
FrontPage - Pythonのお勉強
URLリンク(python.rdy.jp)
前スレ
スレリンク(tech板)

◆関連スレッド

Microsoft IronPython 1.0
スレリンク(tech板)
Python の宿題ここで答えます Part 1
スレリンク(tech板)
2ch検索: [python]
URLリンク(find.2ch.net)

◆関連サイト

Python ドキュメント
URLリンク(www.python.jp)
参考サイト - Pythonのお勉強
URLリンク(python.rdy.jp)

以上

2:デフォルトの名無しさん
08/01/23 16:32:34
ついにGカップか…

3:デフォルトの名無しさん
08/01/23 18:39:32
class Hoge:
 class Orz(object):
  def __init__(self):
   self.__private = "I am Hoge.Orz"

class Orz(Hoge.Orz):
 def __init__(self):
  Hoge.Orz.__init__(self)
  print Hoge.Orz.__private

Orz()
print Hoge.Orz.__private

なんでエラーにならないの?

4:デフォルトの名無しさん
08/01/23 19:15:50
Pythonは終わった言語
これからはRubyの時代

5:デフォルトの名無しさん
08/01/23 19:17:15
Ruby信者のふり乙

6:デフォルトの名無しさん
08/01/23 22:59:20
おっPython勉強スレだ

7:デフォルトの名無しさん
08/01/24 00:44:44
活動再開するまでユーザ会のリンクは消したほうがよくね?

8:デフォルトの名無しさん
08/01/24 01:02:38
活動停止してたのか

9:デフォルトの名無しさん
08/01/24 01:54:20
でも更新されてる

10:デフォルトの名無しさん
08/01/24 08:39:26
宣伝乙

11:デフォルトの名無しさん
08/01/24 09:02:44
7はいらない子。
7が居なくなっても誰も気にもとめないし誰も困らない。
消えるべきは7。

12:デフォルトの名無しさん
08/01/24 10:58:01
後ろ向きなことしか言えない7なんかより、
定期的に勉強会や合宿を開催するユーザー会の中の人の方が2^32倍まし。
11が言うように7はいらない子。

13:デフォルトの名無しさん
08/01/24 11:07:50
より協力にサポートし

14:デフォルトの名無しさん
08/01/24 11:41:06
7は悔し過ぎておかしくなってしまったの?

15:デフォルトの名無しさん
08/01/24 13:28:28
7のタイミングの悪さは国宝級。
税金を使って保護すべき。

16:デフォルトの名無しさん
08/01/24 15:00:46
そんなことより野球しようぜ

17:デフォルトの名無しさん
08/01/24 16:20:10
更新されたと言っても、誰でも登録可能なトップニュースだけな訳だが。
止まってないと言うなら早く2.5.1のダウンロードリンク作り
2.3系を過去のものとして階層深くに引っ込めろよ。
日本語対応してるのが2.3系までと勘違いするユーザが多くて面倒なんだよ。

18:デフォルトの名無しさん
08/01/24 16:49:40
おいなりさんから来ました

19:デフォルトの名無しさん
08/01/24 18:27:51
>>17
> 止まってないと言うなら早く2.5.1のダウンロードリンク作り

すでにあるみたいだけど。
止まっているのはお前の脳みそ。

20:デフォルトの名無しさん
08/01/24 18:36:29
汚名を挽回しようとしてかえって墓穴を掘る7の天然ぶりは国宝級。
国費を投じて、7を保護するためだけの財団法人を作るべき。

21:デフォルトの名無しさん
08/01/24 18:55:09
>>19
修正乙
早く日本語環境用インストーラも消してくれよ

22:デフォルトの名無しさん
08/01/24 18:59:37
>汚名を挽回しようとしてかえって墓穴を掘る
「汚名返上できてしまう」ってことか?

23:デフォルトの名無しさん
08/01/24 19:00:05
7は無視して野球やろうぜ。

24:デフォルトの名無しさん
08/01/24 19:04:44
2chからリンク張られるかどうかがそんなに重要なことなのか?

25:デフォルトの名無しさん
08/01/24 21:29:51
リンクはどうでもいいけど古い情報がそのまんまなのは悲しいな
まぁ日本ユーザー会みたいなもんはどこもそんな感じよね

26:デフォルトの名無しさん
08/01/24 21:49:03
>>22
あの汚名をもう一度・・・っ!

27:デフォルトの名無しさん
08/01/24 22:55:52
>>17が汚名挽回のレスだなw

28:デフォルトの名無しさん
08/01/25 00:26:00
日本でPythonが流行らない理由が分かった気がするよ。

29:デフォルトの名無しさん
08/01/25 09:01:19
民度が低い
みんなのPython

30:デフォルトの名無しさん
08/01/25 10:01:50
やっぱ永久凍土

31:デフォルトの名無しさん
08/01/25 10:04:52
汚名を挽回してどうするんだw
汚名は返上するもんだあろ

32:デフォルトの名無しさん
08/01/25 10:11:06
Pythonの勉強をするために本を探しているのですが
↓の本は買いでしょうか?
URLリンク(www.oreillymaker.com)


33:デフォルトの名無しさん
08/01/25 10:13:48
>>32 ネタ乙

34:デフォルトの名無しさん
08/01/25 10:14:25
もんだあろ

ってなんだ?

35:デフォルトの名無しさん
08/01/25 10:19:28
Py3.0ではクラスは全て object からの導出になるのかな?

class A:

って宣言してた事に気づかないまま

hoge = propetry(gethoge, sethoge)

してしまって、バグの原因特定に苦労するのはもう嫌だ



36:デフォルトの名無しさん
08/01/25 10:23:37
のび太は放っておいて、スネ夫とPython 3000で遊ぼうぜ!

37:デフォルトの名無しさん
08/01/25 10:34:48
>>30
人間性に問題があるのは一部だけ。
しかし、キチガイほど目立つのは問題だな(w

38:132
08/01/25 10:36:28
>>3 の print Hoge.Orz.__private って
print Hoge.Orz._Orz__private じゃないといけないんじゃないの?

39:デフォルトの名無しさん
08/01/25 12:00:45
__private はインスタンスメンバだから
self._Orz__private や Hoge.Orz()._Orz__private じゃないか?

40:デフォルトの名無しさん
08/01/25 12:36:10
どもなせが最終行で例外でるだけ。コンストラクタは実行できてる

41:デフォルトの名無しさん
08/01/25 14:07:52
Orz.__init__ (!= Hoge.Orz.__init__) の print で例外起こる


42:デフォルトの名無しさん
08/01/25 16:30:04
本当だったら九行目のコンストラクタのprintでエラーにならなきゃいけないんじゃないの?

43:デフォルトの名無しさん
08/01/25 19:01:40
for e in names:
  D[e] = colors.random() # 色配列からランダムで取り出す(copy or popする?)

名前のリストがあってそれに重複しないように色を付ける
にはどうしたら良いですか?

44:デフォルトの名無しさん
08/01/25 19:24:44
>43
colors をコピーしたものを作って random.shuffle(colors_copy)

45:デフォルトの名無しさん
08/01/25 21:10:37
>>42
手元でやってみたけど、>>41の言ってるように、
コンストラクタを実行しようとして、9行目でエラーで止まったよ。
これでいいと思うけど。

c:\temp>c:\Python25\python.exe --version
Python 2.5.1

c:\temp>c:\Python25\python.exe hoge.py
Traceback (most recent call last):
File "hoge.py", line 11, in <module>
Orz()
File "hoge.py", line 9, in __init__
print Hoge.Orz.__private
AttributeError: type object 'Orz' has no attribute '_Orz__private'


46:デフォルトの名無しさん
08/01/26 00:11:30
dropbox の dropbox.exe に pyc が大量に含まれてるのだけど、
なんか普通のバイトコードじゃないんだよね。
ファイルサイズからすると RC4 的な暗号化がされてるっぽい。
解き方教えて。

47:デフォルトの名無しさん
08/01/26 01:27:36
いやいや、Orz は Hoge.Orz を継承してるわけだよね。
んで、Hoge.Orz のコンストラクタで self.__private を定義したと。この __private は
アンダースコア2つで始まる名前な訳だから、Horz.Orz を継承した Orz からも
self.__private でアクセスできるのはおかしいんでない?
でも Orz.__init__ 内の print 文ではなぜか例外が発生しない。

48:デフォルトの名無しさん
08/01/26 01:40:02
属性__privateは継承しないけど、__privateを定義するメソッドを継承して実行したから
__privateが定義されてても良いんじゃないの?

49:デフォルトの名無しさん
08/01/26 02:07:37
>>47
self.__private と書いたら self._Orz__private になるわけだから、おかしくない。

>>48
実際に __private は名前を変えて存在する。

50:デフォルトの名無しさん
08/01/26 08:14:04
これって結構落とし穴だよなあ。
別パッケージの同名クラスを継承した場合、
__で始まっていてもメンバ名のバッティングを気にしないといかん。

まあ、同名で継承するなって話か。。。。

51:名無しさん@いたづらはいやづら
08/01/26 13:21:46
>>47
コンストラクタは __new__ だぞ。
__init__ は初期化。

52:デフォルトの名無しさん
08/01/26 16:52:02
>1
おちゅ

53:デフォルトの名無しさん
08/01/27 00:09:51
今から勉強始めるのと、3が出るのを待つのと
どっちが賢い?

プログラミングはJavaと.NETを触ったことがあるレベルなのですが、
Pythonの勉強をいつ始めようか悩んでいます。

54:デフォルトの名無しさん
08/01/27 00:15:11
3が出ても、しばらくは
現行のバージョンも使われるだろうし
何より、恐らく3が出てからしばらくの間は
「3からPythonを始めた人」向けの解説は出回らず
現行バージョンを知っている人向けの解説が主になると思う。

55:デフォルトの名無しさん
08/01/27 01:29:35
今から3のアルファで勉強するのがベストじゃないか?
日本語の資料は諦める必要があるけど

56:デフォルトの名無しさん
08/01/27 01:48:52
>>55
3より前を勉強する価値はほとんどない
ってことでしょうか?

3ってそんなに凄いのか

57:デフォルトの名無しさん
08/01/27 02:31:54
んなこたぁない
原典と付属モジュールとPEP追ってちゃんと勉強する気があるなら3.xからはいって
いいと思うけど、
片手間でor趣味でor書籍や資料が多ければいいってんだったら2.xだろ

58:デフォルトの名無しさん
08/01/27 03:18:32
既存のスクリプトは2.xで書かれているのが大半だからなぁ


59:デフォルトの名無しさん
08/01/27 03:47:46
基本的な考え方が根本的に変わるところはほとんど無いと思われる
ので、いまから2.5勉強しても全然損しないと思う。
BNFの定義してる、grammar.txtはほとんど流用なので、文法なんかも身につければ
ほぼそのまま通用すると思う

60:デフォルトの名無しさん
08/01/27 04:37:38

【審議中】
      _,,..,,,,_   _,,..,,,,_
   _,,..,,,_/ ・ω・ヽ/・ω・ ヽ,..,,,,_
  ./ ・ω_,,..,,,,_  l _,,..,,,,_/ω・ ヽ
 |   /   ・ヽ /・   ヽ    l
  `'ー--l      ll      l---‐´
     `'ー---‐´`'ー---‐´ 


61:デフォルトの名無しさん
08/01/27 11:39:59
今と3の違いまとめページとかない?

62:デフォルトの名無しさん
08/01/27 11:46:46
URLリンク(gihyo.jp)

63:デフォルトの名無しさん
08/01/27 14:03:11
What’s New in Python 3.0
URLリンク(docs.python.org)


64:デフォルトの名無しさん
08/01/27 17:10:17
どっちにしても現有のコード資産は2以前でしか使えないから
否応無く勉強することになりそうだ

65:デフォルトの名無しさん
08/01/27 17:32:13
>>53
2の勉強をして2to3コンバーターがまともに動くことを
Googleに向けて祈る

66:デフォルトの名無しさん
08/01/27 17:59:37
ありがとうみんな。
よくわからないのでとりあえず今日から始めてみます。
なんかこのままいくと3が出ても勉強を始めない自分がいそうなので。

67:デフォルトの名無しさん
08/01/27 19:02:57
本当は「Python3.0になっても通用するPython2.x入門」とかあればいいんだろうけどね
つまり3.0で無くなる予定のレガシーな要素を抜いての入門だけど

68:デフォルトの名無しさん
08/01/27 20:08:35
>>67
それってPython3.0の新機能も使わないってことだから
2.xの勉強としても3.0の勉強としても不十分ジャマイカ?

>>66
3.0を横目で眺めつつ(気が向いたらかじりつつ)2.xを勉強するのが良いと思われ。
3.0が出たあとも2.xは相当長い間使われるハズだから。
個人的な経験からいっても、2.0が出たあとずいぶん長いこと1.5.2を使っていたし。

69:デフォルトの名無しさん
08/01/27 21:30:15
62と63に感謝。面白い読み物。
py3kについて事前情報で改悪改悪言ってたユーザーのサイト見て、
ちょっと偏見入ってたんだけど62の方を読むと互換性以外の点では、
今のところ良い事尽くめなんじゃねえの?って感じ。
でもまあ、そろそろ罠が来そうで楽しみw


70:デフォルトの名無しさん
08/01/27 21:30:25
>>66
URLリンク(farm3.static.flickr.com)
URLリンク(farm3.static.flickr.com)

Python ライブラリリファレンス
URLリンク(www.python.jp)
PDF版(ローカルに保存して Foxit Reader でみるの推奨)
URLリンク(www.python.jp)

2.4のドキュメントだけど、とても参考になるのでお勧め。
というかまだ2.4が出てから1年半くらいしか経ってない?

71:デフォルトの名無しさん
08/01/27 21:58:04
>それってPython3.0の新機能も使わないってことだから
>2.xの勉強としても3.0の勉強としても不十分ジャマイカ?

なんでそうなる

72:デフォルトの名無しさん
08/01/27 22:56:08
>>71
2.xと3.0の共通部分しか勉強しないってことなんだろ?

73:デフォルトの名無しさん
08/01/28 19:01:45
最近のPythonスレレベルの低下がひどい

74:デフォルトの名無しさん
08/01/28 19:58:17
>>73
職業マがいないからだろ。
実際日本で使ってる所も多くない言語だし。

75:デフォルトの名無しさん
08/01/28 21:07:55
>職業マがいないからだろ。
ここは胴衣

>実際日本で使ってる所も多くない言語だし。
実際素人が増えてプロが減ってる


76:デフォルトの名無しさん
08/01/28 21:18:28
>>73 お前が積極的に参加しないからだよ!

77:デフォルトの名無しさん
08/01/28 21:26:24
URLリンク(anond.hatelabo.jp)

ちょっとおもしろかった。専門でコード書いてる人とかは
あまり重要でもないのかもしれん。ソースの可読性とか

どうでもいいけどIE7かFirefoxとかじゃないと
xml形式のページがヒットしても開くの免土井ぽ…

78:デフォルトの名無しさん
08/01/28 22:16:25
むしろマ板民が流入してるからな感が


79:デフォルトの名無しさん
08/01/28 22:24:51
昔からこんなもんだ
2chに期待するのはどうかと思う

80:デフォルトの名無しさん
08/01/29 01:04:41
非常に初歩的な問題ですみません

from BeautifulSoup import BeautifulSoup
from urllib2 import urlopen
page = urlopen("URLリンク(****)")
soup = BeautifulSoup(page)

for hoge in soup('*', "****"):
print unicode(hoge.string)

で返ってきたhogeをそのままテキストファイルで保存しようと思った場合
どのように以後に付け加えればいいでしょうか?

81:デフォルトの名無しさん
08/01/29 01:26:46
>>80
lxml使え

82:デフォルトの名無しさん
08/01/29 02:01:14
>>80
お前はバカかとアホかと
そこまで出来てるんならすぐだろ
BeautifulSoup使う前に基礎の基礎から考え直せ

for以前でファイルを書き込みで開いて
for以下にインデントしてhogeを書き込め
理由は考えろボケが

83:デフォルトの名無しさん
08/01/29 10:01:18
Python において「ハッシュ可能」って、「変更不可能」と同義?

84:デフォルトの名無しさん
08/01/29 10:56:02
PyDoc でドキュメント生成しようとしたら、モジュール hoge が見つかりませんといって
停止しやがる。
hogeはCの実行ファイル側で定義されてるからスクリプトは存在しないんだよ!!!
それぐらい空気読んでスキップしてくれよ!!

これはあれか、hoge.py ってダミーファイルを用意しないといけないのか。

85:デフォルトの名無しさん
08/01/29 11:15:24
__dell__

86:デフォルトの名無しさん
08/01/29 13:20:45
>>83
URLリンク(lowlife.jp)


87:デフォルトの名無しさん
08/01/29 16:53:40
d

88:デフォルトの名無しさん
08/01/29 21:12:30
デコレータについて俺に優しく教えてくれ。
CのポインタならぬPythonのデコレータ

89:デフォルトの名無しさん
08/01/29 21:23:03
おでこっていいよな。

90:デフォルトの名無しさん
08/01/29 22:05:59
単なる炉利だろ

91:デフォルトの名無しさん
08/01/29 22:33:08
英語が苦でなくて、仕様書とかを見るのが早いという人なら、
PEPを読んでしまうのがてっとりばやい気が。
URLリンク(www.python.org)

92:デフォルトの名無しさん
08/01/29 23:02:10
hashとdictって違うものですよね?


93:デフォルトの名無しさん
08/01/29 23:02:13
デコレータってあんまり使わないんだけどここにいる人たちはどんな使い方してる?
読み出し専用プロパティ作るの楽だなあとしか思ったことない
@property
def readonly(self): return
あとはロックとかのリソース管理?

94:デフォルトの名無しさん
08/01/30 01:20:59
>>88
用途その@
クラスメソッドとか、スタティックメソッドを作るのに必要
@staticmethod
def a(): ...

@classmethod
def b(cls, ...): ...

95:デフォルトの名無しさん
08/01/30 02:57:30
ロックの一種だけどクリティカルセクションに入れたい時とか?

96:デフォルトの名無しさん
08/01/30 07:51:38
3.0からはクラスにもデコレータが適用できるね
こっちはどんな使い道があるだろう

97:デフォルトの名無しさん
08/01/30 09:49:21
>>96
メタクラ(ry

98:デフォルトの名無しさん
08/01/30 14:16:58
>>91
Design Goals あたりがポイントぽいのでまとめてみた

Decorator の実装に関する議論をまとめた wiki
URLリンク(wiki.python.org)
Phillip Eby さんの解説記事
URLリンク(www.everes.net)
Jim Hugunin さんのレシピ集
URLリンク(mail.python.org)

a gazillion(何億兆) "toy parser" tools out there (from Emacs python-mode to Python's own pyclbr.py) would have to be changed too
URLリンク(groups.google.com)

99:デフォルトの名無しさん
08/01/30 17:36:16
setup.pyの中でversionを設定できますが、
この数値を普通はCVSとどうやって連携とるものなんでしょうか。
setup.pyのversionを手動で書き換えて、
同じ数字でCVSにタグをつけるもんですか?
だとすると、間違えたりする可能性がありそうで嫌だな、と。

setup.pyのversionとCVSのリリースタグの、
どっちかを変更すると、もう一方にも自動で反映されるようにしたいんですが、
どうしたらいいんでしょうか。

100:デフォルトの名無しさん
08/01/30 21:30:52
>>99
普通はファイルのリビジョンとパッケージのバージョンは別だと思うんだけど。

101:デフォルトの名無しさん
08/01/30 22:56:25
みなさんIDE何使ってますか?
素直にIDLE?

102:デフォルトの名無しさん
08/01/30 23:01:12
xyzzy

103:デフォルトの名無しさん
08/01/30 23:16:18
PyScripter


104:デフォルトの名無しさん
08/01/30 23:57:09
>>99
setup.pyはPythonスクリプトだから、CVSのリリースタグをsetup.pyに埋め込んで、それをpythonで処理すればいい。
といってもCVSはよく知らんのだけど例えば
__release__ = '$Release: 1.2.3 $' # こんなリリースタグが埋め込めたとして
m = re.search(r'[.¥d]+', __release__)
version = m.group(0)
というのはどうでしょうか。

105:デフォルトの名無しさん
08/01/30 23:59:24
Eclipse+PyDev

106:デフォルトの名無しさん
08/01/31 01:15:26
pyplってcheese shopと同じようなもの?
今のPHP云々の中で「Perlで言うCPAN相当な再利用可能ライブラリの集積所」、
みたいな文脈で名前が挙がったんだけど、日本語の情報が少なくて…。

107:デフォルトの名無しさん
08/01/31 01:26:07
昔 pypi 今 cheese shop

108:デフォルトの名無しさん
08/01/31 01:34:32
変数名を取得する方法ってありますか?
>>> foo = Bar()
>>> foo.get_var_name()
'foo'
>>> baz = Bar()
>>> baz.get_var_name()
'baz'
という動作を期待しています。
newやreprモジュールを調べたのですが、クラス名、モジュール名は取得できる
ものの変数名の取得がとんと考えつきません。
ご教示いただければ幸いです。

109:デフォルトの名無しさん
08/01/31 01:53:22
>>107
ありがとう、そゆことなんだ。
言及してた人がPython使いじゃないから、古い名前しか知らなかったのか。
106でPYPLと打ってしまってて、検索に失敗していたのは許して欲しい…。

110:デフォルトの名無しさん
08/01/31 03:08:43
>>108
無理
できるのは、locals() でローカル変数の一覧を、globals() でグローバル変数の一覧をとってくるぐらい。
そんなことを必要とするのはたぶん、「ほんとうにやりたいこと」に対する解決方法が間違ってると思うから、まず「ほんとうにやりたいこと」を書いてみるといいよ。

111:デフォルトの名無しさん
08/01/31 03:18:37
>>108
class Foo:
    def get_var_name(self):
        for key, value in globals().items():
            if id(value) == id(self):
                return key
        return None

foo = Foo()
print foo.get_var_name()

この質問、ちょくちょく出るけど
Python で「変数名を取得したい」と思ったら十中八九「設計ミス」だと思う。



112:デフォルトの名無しさん
08/01/31 03:20:14
うは、かぶったw
結婚してください。
ヾ(o゚ω゚o)ノ"プニプニ!

113:デフォルトの名無しさん
08/01/31 03:26:57
>111
複数の変数が同じオブジェクトを指してるときはうまく動作しないね。

まあ、>110,111の言うとおり設計見直した方がいいと思う。

114:デフォルトの名無しさん
08/01/31 03:57:58
import traceback
import re

class Foo:
  def get_var_name(self):
    stack = traceback.extract_stack(limit=2)
    return re.search(r"([_a-zA-Z][_a-zA-Z0-9]+)\.get_var_name", stack[0][3]).group(1)

foo = Foo()
print foo.get_var_name()

115:デフォルトの名無しさん
08/01/31 04:07:27
>>111
>>>foo = Bar()
>>>foo._name = 'foo'
>>>foo._name
'foo'

116:デフォルトの名無しさん
08/01/31 04:51:28
>>110-114 本当にありがとうございます。
> 「ほんとうにやりたいこと」
というのはほんとうに純粋な興味からです。しかし皆さんのお話をうかがうに、
元々こんなことをやることが無理筋なのだと理解しました。
>>113の方が仰っているのを理解する意味で、
foo = Foo()
print id(foo), foo.get_var_name()
bar = Foo()
print id(bar), bar.get_var_name()
bar = foo
print id(foo), foo.get_var_name()
print id(bar), bar.get_var_name()
としてそれぞれ確認を行いました。
いずれにしても、globals()やid, tracebackの存在を知ることができて
ありがたいです。

>>115 ワロタ。。のですが、つまり原理的にこうするしかないということですね。


117:デフォルトの名無しさん
08/01/31 06:57:19
呼び出し元のフレームから.f_code.co_codeと.f_lasti辺りから解析すれば変数名は取得できるんじゃないの?
式になると当然無理だけど
まあ変数名取得してどうすんのという気はする

118:デフォルトの名無しさん
08/01/31 07:01:39
変数名がどうして必要になるのかが毎度気になる

119:デフォルトの名無しさん
08/01/31 07:25:51
>>70
Foxit Reader 使ってみたら PDF サクサク動いて感動した。d

120:デフォルトの名無しさん
08/01/31 09:47:29
cheese shopを未だにpypiと言う人にPythonを語る資格はないと思う。

121:デフォルトの名無しさん
08/01/31 09:48:48
たとえば、obj._name で常に変数名が取れたとする。

しかし、これは、'obj' と常に等しい。したがって変数名を取る仕組みは不要。

122:デフォルトの名無しさん
08/01/31 10:55:42
>>> foo = Bar()
>>> foo._name = 'foo'
>>> foo._name
'foo'
>>> bar = foo
>>> bar._name
'foo'
>>> bar._name = 'bar'
>>> foo._name
'bar'

123:デフォルトの名無しさん
08/01/31 12:59:11
もし変数名が取得できたらデバッグとかテストとか楽になりそうだと思うけどな

124:デフォルトの名無しさん
08/01/31 13:01:02
URLリンク(d.hatena.ne.jp)
書いては見たけど使いどころ思いつかん

125:デフォルトの名無しさん
08/01/31 13:28:17
Pythonの変数はコンテナじゃなくてリファレンスだから、
いろいろ変なことが起こる。

少なくともCPythonでは、
a = 2
b = 3 - 1
とすると、aとbは同じオブジェクトになる(a is bがTrueになる)。

文字列もインターンされたりされなかったりするから、
s = "ab"
t = "a" + "b"
だとs is t。
u = "a/b"
v = "a" + "/" + "b"
だとu is not v。

そーいうのを知ったうえでそれでもやるなら、どうぞどうぞ、という感じ。

126:デフォルトの名無しさん
08/01/31 13:34:12
>>123
>>108みたいな方法が出来ないというのであって、デバッグとかテストのときに
変数名とその値の一覧を取得するのはlocals(), globals()でおk

127:デフォルトの名無しさん
08/01/31 13:35:00
>>> "ab" is "a"+"b"
True
>>> "abc" is "a"+"b"+"c"
True
>>> "a/c" is "a"+"/"+"c"
False

なんだコレ?、バグじゃね?w

128:デフォルトの名無しさん
08/01/31 13:40:59
>>> 200000 is 100000 + 100000
False
>>> 20000 is 10000 + 10000
False
>>> 2000 is 1000 + 1000
False
>>> 200 is 100 + 100
True
>>> 20 is 10 + 10
True
>>> 2 is 1 + 1
True

テラ意味不明w笑いが止まらんw

129:デフォルトの名無しさん
08/01/31 13:41:02
is はポインタ比較。等値比較には == を使え

130:デフォルトの名無しさん
08/01/31 13:42:52
何が?
文字列や整数のようなオブジェクトがimmutableになっていて、VMが勝手に使いまわしてくれるのは大変ありがたいんだが。
再利用基準はVM依存だから、非明示的に作られた同値オブジェクトが同一だったり非同一だったりするのは当たり前。

131:デフォルトの名無しさん
08/01/31 13:54:41
>>125
> Pythonの変数はコンテナじゃなくてリファレンス
が真理だと思う。
クラスの中で self.get_var_name() とかして自分の名前を知りたいのかもしれないけど、
参照元が1つとは限らんし、その名前のコンテキストもわからんし、使いようがないような。


132:デフォルトの名無しさん
08/01/31 14:04:26
>再利用基準はVM依存だから、非明示的に作られた同値オブジェクトが同一だったり非同一だったりするのは当たり前。

immutable なのに再利用されないものがある理由が分からん


133:デフォルトの名無しさん
08/01/31 14:20:41
>>132
既にVM内に同値オブジェクトが存在するかどうか探す手間がオブジェクトの生成コストを超えるなら、再利用しない方がマシ。

134:デフォルトの名無しさん
08/01/31 20:26:55
>>91
>>98
ありがとう。ほんとうにありがとう。
こういう人たちがいるのでPython大好きだ

135:デフォルトの名無しさん
08/02/01 00:47:57
weakref.ref つかうときって、普通に

hoge_ref = weakref.ref(hoge)

ってやってる?それとも hoge が None である場合を考慮して

def get_hoge(self):
 return self.__hoge_ref and self.__hoge_ref()
def set_hoge(self, v):
 self.__hoge_ref = v and weakref.ref(v)
hoge = property(get_hoge, set_hoge)

みたいにしてる?


136:デフォルトの名無しさん
08/02/01 01:38:09
>>127は、識別子として有効な文字列ならinternされるって実装だから起こる現象。


137:デフォルトの名無しさん
08/02/01 05:00:40
>>120
URLリンク(pypi.python.org)
まずはここのサイトの管理人に文句を言ってくれないかwww

138:デフォルトの名無しさん
08/02/01 09:21:55
自分の間違いを他人のせいにする奴は生きている資格がないので今すぐ死ね。

139:デフォルトの名無しさん
08/02/01 10:15:36
setattr(self, "a", "b")
self.a = "b"
これ同じ?どっちが早い?

140:デフォルトの名無しさん
08/02/01 11:47:57
>>138
他人に'死ね'なんていうもんじゃないよ!!
137がPythonを使うのを止めれば済むことじゃないか!!!

141:デフォルトの名無しさん
08/02/01 17:03:02
ファイルとかパスを正規表現を使って探せる関数はありますか?
globはワイルドカードしか使えません><

142:デフォルトの名無しさん
08/02/01 17:41:03
>>141
re.match

143:デフォルトの名無しさん
08/02/01 19:48:33
re.match と os.listdir を組み合わせたのが欲しいんだろう

144:デフォルトの名無しさん
08/02/01 20:24:07
>>141
無理
MicrosoftがWinFSを載せたら出来たかもしれないが…

145:デフォルトの名無しさん
08/02/01 20:34:53
前スレでurllibでwikipediaのページを取ってこれないって言った人に対して
ライブラリのせいにすんな、死ねよって書いてた人だろ? >>138


146:デフォルトの名無しさん
08/02/01 20:52:04
145の頭の中にはオレとアイツの二人しかいないらしい。
これもゆとり教育の悪影響だろうか。

147:デフォルトの名無しさん
08/02/01 22:03:10
>>145
urllibでwikipediaのページを取れましたか?



148:デフォルトの名無しさん
08/02/01 22:18:39
pdbつかってるんですが変数に変化があったときブレイクしてくれるようなコマンドありますか?
gdbのwatchみたいなやつ

149:デフォルトの名無しさん
08/02/02 02:23:00
>>147
urllibのURLopenerでUserAgent指定すればいいんじゃね?

150:デフォルトの名無しさん
08/02/02 03:40:29
最近httplibそのまま使ったほうがいい気がして来た

151:デフォルトの名無しさん
08/02/02 03:57:28
urllib2

152:デフォルトの名無しさん
08/02/02 04:25:32
Python3.0だとurllibがurllib2相当になったりしないんだろうか

153:デフォルトの名無しさん
08/02/02 11:07:30
もっと便利で高機能なurllib3が追加される

154:148
08/02/02 12:47:12
yoyoyo ねーのかyo

155:デフォルトの名無しさん
08/02/02 13:29:02
ggrks

156:デフォルトの名無しさん
08/02/02 14:27:08
グーグル、土日休みだろ。

157:デフォルトの名無しさん
08/02/02 14:32:31
それ社員だけ

158:デフォルトの名無しさん
08/02/02 19:05:55
PythonでCGIプログラムを書いてるんですが、sessionを管理してくれるライブラリはありませんか。

159:デフォルトの名無しさん
08/02/02 19:34:03
PerlとRubyには存在するがPythonは自己でファイルを作って
管理していくしか現状ないみたい。
他はDjangoフレームワークつかうとか

160:デフォルトの名無しさん
08/02/02 21:06:57
>>158
そういう用途ならRubyが向いてるよ

161:デフォルトの名無しさん
08/02/02 21:31:43
その程度で躓くようなヤツはRubyを使った方がいいよ。
絶対。断じて。
Rails使って遅さにハマれば勉強になるよ。

162:デフォルトの名無しさん
08/02/02 22:00:36
Visual C++ 2008で作成したdllをctypesで読み込もうとしてるんですが関数がないというエラーが出ます。

test.dllで定義した関数
const char* test() { return "test"; }

test.py
from ctypes import windll
lib = windll.LoadLibrary("test.dll")
lib.test

function 'test' not found

dllのロードはできています。何か考えられる原因はありますか?

163:デフォルトの名無しさん
08/02/02 22:09:11
exportしてるのか?


164:デフォルトの名無しさん
08/02/02 22:16:25
exportってVC++の方の話ですか?

165:デフォルトの名無しさん
08/02/02 22:21:04
dumpbin.exe /exports test.dll で確認してみたら


166:デフォルトの名無しさん
08/02/02 22:29:42
VC++でdll作るときはexportっての必要なんですね。
やってなかったので調べてみます。


167:デフォルトの名無しさん
08/02/02 23:59:26
定時実行をスクリプト内でなんとかしたかったら
どんなのが楽ですか?

168:デフォルトの名無しさん
08/02/03 00:04:24
>>159
うそーん。session管理くらい標準ライブラリで用意してほしいなあ。

>>160
>そういう用途ならRubyが向いてるよ
そういう用途ってどんな用途?PythonはCGIには向いてないってこと?

>>161
>その程度で躓くようなヤツはRubyを使った方がいいよ。
>絶対。断じて。
なんで逆切れしてんの?
その程度で逆切れするようなヤツは引きこもってた方がいいよ。
絶対。断じて。


169:デフォルトの名無しさん
08/02/03 00:04:55
>167
「なんとか」をもーすこし具体的に頼む

170:デフォルトの名無しさん
08/02/03 00:05:53
かんとか

171:デフォルトの名無しさん
08/02/03 00:13:39
>>168
>その程度で逆切れするようなヤツは引きこもってた方がいいよ。
だからこのスレに引きこもってるんだろw
ヒッキー相手にマジレスカコワルイ

172:デフォルトの名無しさん
08/02/03 00:15:12
おまら両方うるさいから、rubyスレでやれよ。
phpの件で荒れてるから、少しぐらい騒いでも大丈夫やろ。

173:デフォルトの名無しさん
08/02/03 00:41:48
>>167
定時実行って時刻指定?インターバル指定?

import time, threading

def proc():
  while True:
    time.sleep(1)
    print 'aiueo'

threading.Thread(target=proc).start()


174:デフォルトの名無しさん
08/02/03 00:50:52
>173

わかってると思うけど、
それだとprint文の実行時間により結果が不定になるので、
time.sleepの直前で次にwakeup timeを計算したほうがよい気がする。


175:デフォルトの名無しさん
08/02/03 09:21:25
定時実行ってふつうは外部でcronを使うよね

176:デフォルトの名無しさん
08/02/03 10:18:26
Timerとか使えばよくね?

177:デフォルトの名無しさん
08/02/03 11:00:51
ctypesでCで作成した関数に構造体を渡す方法なんですが

struct user {
int id;
char name[20];
double average;
};
__declspec(dllexport) void __stdcall print_user(struct user u)
{
printf("id:%d\n", u.id);
printf("name:%s\n", u.name);
printf("average:%f\n", u.average);
}

print_userに構造体を渡すときにpython側で

from ctypes import *
lib = windll.LoadLibrary("test.dll")
class User(Structure):
_fields_ = [("no",c_int), ("name",c_char_p), ("average",c_double)]
u1 = User(10, "abcde", 83.5)
lib.print_user(u1)

とやると
ValueError: Procedure probably called with not enough arguments (16 bytes missing)
というエラーが出ます。
何が原因なのでしょうorz

178:デフォルトの名無しさん
08/02/03 11:21:54
Cのuser構造体が計4+20+4=28バイトとかなのに
Pythonのu1は4+4+4=12バイト
なので16バイト足りないって怒られるということじゃない?
("name", c_char_p * 20) とかしたらどうだろう

179:デフォルトの名無しさん
08/02/03 11:24:00
ああ間違えた。c_char * 20 かな

180:デフォルトの名無しさん
08/02/03 13:45:18
>>168
161が本当にキレてるかどうかはわからないけど(俺は君の勘違いだと思う)、
逆ギレという言葉を選ぶということは、君は自分がキレてる自覚あるわけだよね。
要するに、君みたいにいきなりキレちゃう痛い人には、それなりに刺激のあるレスが返ってくるってことだよ。
あきらめな。

181:デフォルトの名無しさん
08/02/03 13:55:16
煽るなw
半年ROMってろで済むだろw

182:デフォルトの名無しさん
08/02/03 14:33:40
>>178
なるほど!ありがとう

183:デフォルトの名無しさん
08/02/03 15:23:28
そういうとこが面倒なのでpyrexでラッパーを作ってしまう俺

184:148
08/02/03 17:42:02
申し訳ございません
ぐぐってもみつかりません
教えていただけませんでしょうか
(´Д`;)、 コノトオリデス
   ノノZ乙

185:デフォルトの名無しさん
08/02/03 17:44:12
ま、そんな時もあるさ
明日は違うさ

186:デフォルトの名無しさん
08/02/03 20:36:00
pdb.doc pdb.py bdb.py あたりを読んでみれば?

187:デフォルトの名無しさん
08/02/04 04:14:52
>>180
161本人乙
おまえの必死さは伝わった

188:デフォルトの名無しさん
08/02/04 08:51:32
必死な人ほど必死の一語で切り抜けようとするらしいよ。

189:デフォルトの名無しさん
08/02/04 09:36:37
オレ161だけど180とは別人だ。
オレとオマエの二人しかいない寂しい頭のキミに、
何を言っても無駄だろうけどね。

190:デフォルトの名無しさん
08/02/04 18:39:02
つーかいつまでも反応する奴みんなうぜぇ

191:デフォルトの名無しさん
08/02/05 00:09:15
>>161=180=188=189
1人4役乙
ひとりで4人分演じられる頭があれば、そりゃあ寂しくないだろうよ

192:デフォルトの名無しさん
08/02/05 00:19:38
>>191

自分で証明してどうする(www
>オレとオマエの二人しかいない寂しい頭のキミに



193:デフォルトの名無しさん
08/02/05 05:54:06
ここまで全部俺の自演

194:デフォルトの名無しさん
08/02/05 06:03:05
>>192
その反応が君一人で頑張ってたことの証明になってるよ。

195:デフォルトの名無しさん
08/02/05 09:39:32
>>194

>要するに、君みたいにいきなりキレちゃう痛い人には、それなりに刺激のあるレスが返ってくるってことだよ。

>オレとオマエの二人しかいない寂しい頭のキミに、
>何を言っても無駄だろうけどね。


196:デフォルトの名無しさん
08/02/05 10:12:19
自分の脳内でしか意味を為さない引用は勘弁。
こじつけ設定くらい考えてから切り返してね。

197:デフォルトの名無しさん
08/02/05 10:27:53
調子に乗って python でゲーム作ったけど、内容が肥大化するにつれ
実行速度がかなり厳しくなってきた俺が来ましたよ

参考までに
超基本的な事でRGBデータをどう持つのが一番早いか計測した結果。
早い順に
--------------
RGB = (R, G, B)
--------------
RGB = [R, G, B]
--------------
RGB = RGB_CLASS()
R, G, B = RGB.R, RGB.G, RGB.B
--------------
RGB = {"R":R, "G":G, "B":B}
R, G, B = RGB["R"], RGB["G"], RGB["B"]

クラスと辞書はどっちが早かったか覚えてないけど、ほとんど同じだった気がする

198:デフォルトの名無しさん
08/02/05 10:30:15
>>197
つpsyco

199:デフォルトの名無しさん
08/02/05 10:30:36
RGB = R << 16 | G << 8 | B
R, G, B = (RGB>>16)&255, (RGB>>8)&255, RGB&255
てのも考えたけど、各要素を取り出すのに必要な式なり関数なりを Python
で書いた時のコストを考えると、結局 RGB を独立して保持した方が早いという結論に。



200:デフォルトの名無しさん
08/02/05 10:51:09
ゲームといえば
URLリンク(wiki.python.org)
BF2/Civ4プレイヤーがうらやましい・・・

201:デフォルトの名無しさん
08/02/05 11:43:04
長い複数行にわたる文字列を定義したいと思って
str = """ hoge ""
見たくやりましたが
\v \bが含んでいると正しく出力されなくなります.

手作業で\\をつけてもいいですが,何かいい方法がありませんか?

202:デフォルトの名無しさん
08/02/05 11:51:02
「正しく」ってのはどういう状態を考えてるの?

203:デフォルトの名無しさん
08/02/05 11:55:20
>>201 raw文字列
>>> str=r"""hoge\nhoge"""
>>> print str
hoge\nhoge

204:デフォルトの名無しさん
08/02/05 12:04:49
UnicodeのRaw文字列はどう書くんだったかといつも迷う。
urなのかruなのか。
良い覚え方はないものだろうか。。。

205:デフォルトの名無しさん
08/02/05 19:24:39
unicode(r"hoge")

206:デフォルトの名無しさん
08/02/05 20:55:55
Unicode文字列に対してlenを呼んだときに返す値は何?

207:デフォルトの名無しさん
08/02/05 20:58:59
ユアストリングって覚えるといいよってGuidoかFredが言ってた


ごめん嘘いま俺が考えた

208:デフォルトの名無しさん
08/02/05 21:05:10
>>206
>>> len(u'日本語')
3
>>> len('日本語')
9

209:206
08/02/05 21:52:59
IPythonだけ変な値を返していました。
IPython以外で確認したら普通に文字数を返していました。

210:デフォルトの名無しさん
08/02/06 03:21:07
unicodeのraw文字列はロシアじゃない。とか。

211:デフォルトの名無しさん
08/02/06 11:06:21
いろいろとアイデアをありがとう。覚えられそうな気がしてきた。

212:デフォルトの名無しさん
08/02/06 14:24:36
>>> "bar" in "foobarbaz"
True

"foobarbaz".find("bar") != -1 とかやってた俺涙目

213:デフォルトの名無しさん
08/02/06 14:34:08
uro覚え

214:デフォルトの名無しさん
08/02/06 14:40:53
うru覚えは違うってことか

215:デフォルトの名無しさん
08/02/06 15:45:31
>>214
誰が上手いこと言えと
(ちょっと感動した)

216:デフォルトの名無しさん
08/02/06 16:06:08
>>214
urう覚えは違うの間違いだろ?

217:デフォルトの名無しさん
08/02/06 18:01:03
うりゃー
URyaaaa


218:デフォルトの名無しさん
08/02/06 18:05:17

hoge = [(1, 2), (3, 4), (5, 6), (7, 8)]

fuga = [(1, 3, 5, 7), (2, 4, 6, 8)]
に変換するにはどのような方法がスマートでしょうか?

hoge = [[1, 2], [3, 4], [5, 6], [7, 8]]
のときはやりかたは変わりますか?


219:デフォルトの名無しさん
08/02/06 18:34:51
fuga = zip(*hoge)

220:デフォルトの名無しさん
08/02/06 18:56:14
>219
それ、FAQの殿堂に入れようぜ!

221:デフォルトの名無しさん
08/02/06 19:01:44
>>219
できました
ありがとうございました

222:デフォルトの名無しさん
08/02/06 20:21:02
zip()ってあんまり使わないよね
Python Challenge以外で使った記憶がない

223:デフォルトの名無しさん
08/02/06 21:59:22
a[len(a)] = xがダメなのに、a[len(a):] = xだとおkなのは、
そういうもんだと納得しなきゃいけないんでしょかね。

あと、a[len(a):] = [x] と a[len(a):] = x の書き間違いで、
いつかミスる悪寒を覚えた。

224:デフォルトの名無しさん
08/02/06 22:29:04
チュートリアル
スライス演算には便利な不変式があります: s[:i] + s[i:] は s に等しくなります。
>>> word[:2] + word[2:]
’HelpA’
>>> word[:3] + word[3:]
’HelpA’
スライス表記に行儀の悪いインデクス指定をしても、値はたしなみよく処理されます: インデクスが大き
すぎる場合は文字列のサイズと置き換えられます。スライスの下境界 (文字列の左端) よりも小さいインデ
クス値を上境界 (文字列の右端) に指定すると、空文字列が返されます。
>>> word[1:100]
’elpA’
>>> word[10:]
’’
>>> word[2:1]
’’


225:デフォルトの名無しさん
08/02/06 23:15:28
>>223
インタプリタで実行してみたら
当たり前だが前者がIndexError,
後者がTypeErrorになってしまうのだが
何がどうOKなんだ

226:デフォルトの名無しさん
08/02/06 23:29:08
おれはいま恐ろしく頭の悪い奴を見た。
それは233だ。

227:デフォルトの名無しさん
08/02/06 23:32:44
233に期待せざるえない

228:223
08/02/06 23:34:26
このスレッドには馬鹿しかいないことが判明したようだ

229:デフォルトの名無しさん
08/02/06 23:35:20
>>223

やりたいのはa.append(x)じゃないのか?
或いはa.extend(x)を期待してる?

230:デフォルトの名無しさん
08/02/07 01:06:04
>>225
x がリストなら TypeError にならない

実際上は、229の言うように、append extend を使えば、
紛らわしい問題は起こらない。

231:デフォルトの名無しさん
08/02/07 01:11:04
233はPythonにエスパー能力を求めているの?

232:デフォルトの名無しさん
08/02/07 01:13:14
232

次どうぞ。

233:デフォルトの名無しさん
08/02/07 01:53:42
233getttttt

234:デフォルトの名無しさん
08/02/07 02:14:49
エスパー認定されました。おめでとう233。

235:デフォルトの名無しさん
08/02/07 02:44:08
お前には失望した

236:デフォルトの名無しさん
08/02/07 03:04:44
a = 1
b = 9
print a + b

237:デフォルトの名無しさん
08/02/07 06:34:25
PythonなんかよりRubyつかうほうがいいと思うよ
>>223

238:デフォルトの名無しさん
08/02/07 10:14:55
>253
寂しい奴め。
世界の果てでのたれ死ねこの低賃金ITドカタ。

239:デフォルトの名無しさん
08/02/07 10:28:44
このスレはいつから未来人が跳梁跋扈するスレになったんだ?


240:デフォルトの名無しさん
08/02/07 11:22:47
特定のビューアーで番号ずれてるだけじゃね?

241:デフォルトの名無しさん
08/02/07 15:50:40
再読込み汁

242:デフォルトの名無しさん
08/02/07 16:13:51
>>240
そんなのあるの?

243:デフォルトの名無しさん
08/02/07 16:27:25
twitterのapiを利用したサービスを作りたいんだ
サクラの鯖で運営したいんだけど
python以外にどんな知識が必要なの?
jsとかhtmlとか、もしかしてlinuxの知識もいるの?


244:デフォルトの名無しさん
08/02/07 16:29:27
「あぼーん」が発生しても運が悪いと検出できない時があるからな。

245:デフォルトの名無しさん
08/02/07 17:32:07
>>243
どれもこれも浅くて良いから一通り知っておく必要がある

どこから手をつけたらいいのかわからないんだったら
urllibでAPIを呼び出して結果をElementTreeで解析とかからやってみては
このあたりはHTTPとXMLの知識がすこし必要

そこから先はCGI作成設置とかだからスレ違い

246:243
08/02/07 17:51:25
>>245
ありがとう
むっさがんばる
”このサイトについて”のありがとう欄に”>>245”って入れるよ。絶対。

247:デフォルトの名無しさん
08/02/07 18:24:16
跳梁跋扈って、何て読むの?

248:デフォルトの名無しさん
08/02/07 19:01:27
>>247
このスレのどこに悪人が?


249:デフォルトの名無しさん
08/02/07 19:11:02
>>247
いまの若いもんはおんぶに抱っこも知らんのか


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5369日前に更新/205 KB
担当:undef