2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Pythonのお勉強 Part16

1 :デフォルトの名無しさん:2006/12/14(木) 07:57:54
http://www.python.org/
http://www.python.jp/Zope/

http://www.python.jp/doc/release/
http://diveintopython.org/toc/
http://www.python.org/dev/peps/

http://wiki.python.org/moin/
http://python.rdy.jp/

http://www.amazon.co.jp/s/&url=search-alias%3Dstripbooks&field-keywords=Python
http://www.amazon.co.jp/s/&url=search-alias%3Denglish-books&field-keywords=Python

Pythonのお勉強 Part15
http://pc8.2ch.net/test/read.cgi/tech/1163339504/

2 :デフォルトの名無しさん:2006/12/14(木) 09:04:01
>>1 乙パイ

3 :デフォルトの名無しさん:2006/12/14(木) 11:26:26
【NGName推奨】Python初心者

4 :デフォルトの名無しさん:2006/12/14(木) 16:48:29
おっ、Pythonスレですぅ。

5 :デフォルトの名無しさん:2006/12/14(木) 23:54:01
>5
前スレの巫女Pyナースについて一言

6 :デフォルトの名無しさん:2006/12/14(木) 23:54:26
>>1
パイ乙

7 :デフォルトの名無しさん:2006/12/15(金) 00:13:44
まだまだいくよぉ〜〜〜!!

巫女みこナース! 巫女みこナース!
リスト内包 巫女みこナース!!

巫女みこナース! 巫女みこナース!
lambda 一行 巫女みこナース!!

巫女みこナース! 巫女みこナース!
Py本粘着 巫女みこナース!!

巫女みこナース! 巫女みこナース!
初心者(復活) 巫女みこナース!!

巫女みこナース! 巫女みこナース!
print u"文字化け"巫女みこナース!!

巫女みこナース! 巫女みこナース!
メタクラ おっぱい 巫女みこナース!!

巫女みこナース! 巫女みこナース!
巫女みこナース! 巫女みこナース!
巫女みこナース! 巫女みこナース!

巫女みこナース! 巫女みこナース!

最後にもいっちょー、ハイ!
巫女みこナース!

8 :デフォルトの名無しさん:2006/12/15(金) 00:14:27
ぐぐる八分とは姑息だなw

9 :デフォルトの名無しさん:2006/12/15(金) 00:32:59
>>前スレ999
> mod_pythonが使えるレン鯖なら、DjangoのBlogとかがつかえるんじゃね?
実際にmod_pythonなレン鯖ってある?

10 :デフォルトの名無しさん:2006/12/15(金) 00:41:31
三項。

ttp://www.wappy.ne.jp/service/function.html

Googleで検索したらいろいろ出てきたよ。

11 :デフォルトの名無しさん:2006/12/15(金) 00:46:56
>>9
http://moover.jp/archives/7/
http://www.wappy.ne.jp/service/index.html
http://www.venturenow.jp/news/2006/02/10/2120_011042.html
http://internet.impress.co.jp/rs/detail.php?id=208885430002&server_type=share
いくらでも見つかるだろ

12 :デフォルトの名無しさん:2006/12/15(金) 00:54:04
なんか自鯖でやった方がいいような。挙げられたレン鯖しょぼすぎ。

13 :デフォルトの名無しさん:2006/12/15(金) 00:56:14
レン鯖である時点でしょぼすぎなんだから仕方ないじゃん。
自鯖立てたほうがあらゆる意味で良いのは当然。

14 :デフォルトの名無しさん:2006/12/15(金) 08:22:14
前スレの998です

>> 999さん
pyblosxomとdjangoを調べてみます

自鯖も考えてみます
ありがとうございました

15 :デフォルトの名無しさん:2006/12/15(金) 09:49:17
>>> class hoge:
...   class moge:
...    class hage:
...      class fuge:
...        class fuga:
...          spam = 42
...
>>> hoge.moge.hage.fuge.fuga.spam
42
>>> s = 'moge.hage.fuge.fuga.spam'
>>> reduce(getattr, s.split('.'), hoge)
42



16 :デフォルトの名無しさん:2006/12/15(金) 10:20:41
dive into pythonの翻訳って、誰もしてないの?

17 :デフォルトの名無しさん:2006/12/15(金) 10:23:27
たった今>>16が翻訳することに決まりました。

18 :デフォルトの名無しさん:2006/12/15(金) 12:39:12
他力本願のクレクレヒキコモリばっかりだなこのスレは。

19 :デフォルトの名無しさん:2006/12/15(金) 12:40:38
ttp://wataru.aoisakura.jp/tdiary/?date=20061214#p01

なにこのラインナップ(w
作者と同じで読者もアニオタか(w

20 :デフォルトの名無しさん:2006/12/15(金) 14:03:54
となりの801ちゃんは非常に読みたい

21 :デフォルトの名無しさん:2006/12/15(金) 15:15:19
>>15
>>>class oOo:
...  def __init__(self,n):
...    self.oOo = 42 if not n else oOo(n-1)
...
>>>s = oOo(8)
>>>reduce(getattr,['oOo']*9,s)
42


22 :デフォルトの名無しさん:2006/12/15(金) 16:50:12
ナニこれ?
ttp://www.flatz.jp/articles/2006/12/14/python-%E7%A7%81%E3%81%AEpython%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AEq-a

23 :デフォルトの名無しさん:2006/12/15(金) 16:54:39
>>22
どう見てもセックル(左下

24 :デフォルトの名無しさん:2006/12/15(金) 17:01:12
初めてのpythonを読んだ時に、
CGIなどの知識を必要とする最後の章は読み飛ばしてしまったのですが、
Dive Into Pythonも読むのに英語の問題以外で前提とする知識はありますか?


25 :デフォルトの名無しさん:2006/12/15(金) 17:19:57
一般常識

26 :デフォルトの名無しさん:2006/12/15(金) 17:44:02
氏ね

27 :デフォルトの名無しさん:2006/12/15(金) 17:52:18
教えて!goo 「氏ね」と書かれました。2ちゃんねるで。
ttp://oshiete1.goo.ne.jp/kotaeru.php3?qid=1884125

28 :デフォルトの名無しさん:2006/12/15(金) 17:58:25
>>24
正規表現、HTML、XML、HTTP、SOAPの章があるけど、同様に読み飛ばせば
よいと思う。
あと、読み始めてたら判ると思うが、機能を説明するためにC、Java、Perl、
VBScriptと比較してたりするので、いずれかの言語を知っていると読みやすいと
思うが、初めてのPythonの前半を読んでる人なら問題なく読めると思うよ。

Dive Into Pythonをざっと読んで、Programming Python 3rd Editionか
Python Referenceの必要な個所をじっくり読むのがよいと思う。

29 :28:2006/12/15(金) 18:00:01
あ〜、なんか「思う」がやたら多い文書だなw。
自分もいまDive Into PythonとProgramming Python 3rd Editionを
読んでるところなんで…。

30 :デフォルトの名無しさん:2006/12/15(金) 18:21:25
と思う。まで読んだ。


31 :デフォルトの名無しさん:2006/12/15(金) 20:21:34
と思う、まで読んだ、と思う。

32 :デフォルトの名無しさん:2006/12/15(金) 21:40:14
Python使う奴なんて空気読めない奴ばっかりだよ、な!

33 :16:2006/12/15(金) 21:45:14
と思う、まで読んだ、と思う。まで読んだ。

>>17
まじかよw
既に3から5の頭まで読んだんだが。
英語は苦にならないけど、ちょっと内容検索するのに単語出てこなくて手間取った程度の問題なんだよ。



34 :デフォルトの名無しさん:2006/12/15(金) 21:52:27
問5. 次のような動作をするプログラム tateyomi.py を作りなさい。
ただし read.cgi は利用しないこと。(ヒント:/tech/1166050674.dat)

> tateyomi.py http://pc8.2ch.net/test/read.cgi/tech/1166050674/28



V


D
P

35 :デフォルトの名無しさん:2006/12/15(金) 21:54:16
先生!ヒントが間違っていますw

誤:/tech/1166050674.dat
正:/tech/dat/1166050674.dat

36 :デフォルトの名無しさん:2006/12/15(金) 22:17:24
>>22
>オブジェクト指向プログラムである為、コードの再利用がしやすい

Pythonの前に日本語の勉強からした方がいいかと。
がんばってくだちい。

37 :デフォルトの名無しさん:2006/12/16(土) 00:02:53
>>34
先生! いまさらながらつくってみますた

# tateyomi.py
import re
import sys
import urllib

url_parts = sys.argv[1].split('/')
host, test, cgi, category, dat_no, res_no = url_parts[2:8]
dat_url = 'http://%s/%s/dat/%s.dat' % (host, category, dat_no)

lines = urllib.urlopen(dat_url).readlines()
body = lines[int(res_no) - 1].split(' <> ')[1].decode('sjis')
body = re.sub(r'<.*?>.*?</.*?>', '', body)
for line in body.split('<br> '):
    print line[0]

Python使い出してから日が浅いので、誰か添削してくれるとウレシス

38 :デフォルトの名無しさん:2006/12/16(土) 02:42:10
# coding: euc-jp
(ここにはテストを書いたけど省略)
import re, sys, urllib

url_pattern = re.compile('http://(?P<host>[^/]*)/test/read.cgi/(?P<category>[^/]*)/(?P<dat_no>[^/]*)/(?P<res_no>.*)')
dat_url_pattern = 'http://%(host)s/%(category)s/dat/%(dat_no)s.dat'

def do_tateyomi(url, index=0):
  captured = url_pattern.match(url).groupdict()
  dat_url = dat_url_pattern %(captured)
  line = urllib.urlopen(dat_url).readlines()[int(captured['res_no'])-1]
  body = re.sub(r'<.*?>.*?</.*?>', '', line.split(' <> ')[1].decode('shift_jis'))
  return '¥n'.join([line[index] for line in body.split('<br> ')])
  
def _test():
  import doctest, tateyomi
  doctest.testmod()

if __name__=="__main__":
  if len(sys.argv)<2:
    _test()
    sys.exit()
  print do_tateyomi(sys.argv[1])


39 :デフォルトの名無しさん:2006/12/16(土) 02:43:50
ちなみにテストはこれ。
# coding: euc-jp
"""
>>> print do_tateyomi('http://pc8.2ch.net/test/read.cgi/tech/1166050674/28').encode('euc-jp')
<BLANKLINE>



V

<BLANKLINE>
D
P
>>> test_url = 'http://pc8.2ch.net/test/read.cgi/tech/1166050674/28'
>>> expected = {'category': 'tech', 'host': 'pc8.2ch.net', 'dat_no': '1166050674', 'res_no': '28'}
>>> captured = url_pattern.match(test_url).groupdict()
>>> captured == expected
True
>>> dat_url_pattern %(captured)
'http://pc8.2ch.net/tech/dat/1166050674.dat'
"""


40 :デフォルトの名無しさん:2006/12/16(土) 04:19:07
↑なんか2chを愛しすぎててきもい

41 :デフォルトの名無しさん:2006/12/16(土) 04:26:36
↑ありがとう。

42 :デフォルトの名無しさん:2006/12/16(土) 08:37:49
>>28
ご丁寧にありがとう

43 :37:2006/12/16(土) 08:42:42
>>38
thx! 勝手に参考にさせてもらいます
モジュールとして使えるようにしてあるとことか、doctestしてるのもためになったけど、
特に(?P<name>...)に'%(name)s' % {'name': 'key' }、groupdictみたいな機能が
あるって知らなかったので、これから勉強してみます

44 :デフォルトの名無しさん:2006/12/17(日) 01:23:46
lenって変数が定義されてるモジュールで、
len( "hogehoge" )って関数を呼びたい場合、どうすればいいですか?

45 :デフォルトの名無しさん:2006/12/17(日) 01:37:19
__builtins__.len("hogehoge")

こういう使い方をしないように気をつけるのがPythonic。

46 :デフォルトの名無しさん:2006/12/17(日) 02:25:44
上書き定義する前に length = len みたいに別名を付けておくとか。

47 :デフォルトの名無しさん:2006/12/17(日) 02:35:13
__builtins__由来のものは(簡単には)再定義できないようにしたほうが良いのだろうな。
Python 3000ではそうなるのかな。

48 :デフォルトの名無しさん:2006/12/17(日) 02:36:44
ということは、こんなふうにできるわけか

>>> len("hogehoge")
8
>>> len = 88
>>> len("hogehoge")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: 'int' object is not callable
>>> length = __builtins__.len
>>> length("hogehoge")
8

できた。

49 :44:2006/12/17(日) 04:03:29
ありがとうございます
参考にします

50 :デフォルトの名無しさん:2006/12/17(日) 09:46:50
言語の仕様を変えて副作用を増やすより
当たり前のことを当たり前に気をつけることを開発者に求める
これがPythonic

51 :デフォルトの名無しさん:2006/12/17(日) 11:26:29
python で書くときに問題があることが分かっていて
len という変数を使うことに拘る意図がわからん

52 :デフォルトの名無しさん:2006/12/17(日) 12:42:20
なんかホント、みんな無理してPython使ってるよねw
使命感にでも駆られているかのように。あるいは催眠術のたぐいか。

53 :デフォルトの名無しさん:2006/12/17(日) 12:47:55
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance

ワロス(www

54 :デフォルトの名無しさん:2006/12/17(日) 13:04:30
>>52
YouTubeとかGoogleとかMicrosoftとか,無理してPython使いすぎだよね
Googleなんて作者タソ雇うなんて無理しすぎ

55 :デフォルトの名無しさん:2006/12/17(日) 13:51:50
いい物をいいと思って使ってるだけ。無理してPythonの弱点を見つけようと
してるのは藻前だろ(wwww

56 :デフォルトの名無しさん:2006/12/17(日) 14:00:51
>>54
そこで「俺はこう使ってる。この用途においてPythonはこう便利」っていう体験を語れず、
状況に応じて何だって使いこなす最先端の人間達の例を曖昧に掬い取るしかできない言語が
Pythonなんだねえ。

誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。
PやRとそこが段違いだよね。

57 :デフォルトの名無しさん:2006/12/17(日) 14:02:17


58 :デフォルトの名無しさん:2006/12/17(日) 14:03:51
>>56
>PやRとそこが段違いだよね。

Python使いは成熟しているんだと思う。
PやRを使っている厨房とは違って、人間的に大人なんだよ。

59 :デフォルトの名無しさん:2006/12/17(日) 14:04:55
なんだか知らんが仲直りしてこい
http://pc8.2ch.net/test/read.cgi/tech/1099804004/

60 :デフォルトの名無しさん:2006/12/17(日) 14:10:01
>>58
でもすぐ人格批判に移行するよね

61 :デフォルトの名無しさん:2006/12/17(日) 14:12:10
>>56
>誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。

プログラミング言語に「養護」という言葉が出てくる理由がわからないなぁ.

俺は便利に使っている.
世界的に実績がある.
そして,オマエには便利さが分からない.

これがすべてだろ.

62 :デフォルトの名無しさん:2006/12/17(日) 14:13:40
>>60
あ、ごめん。
君自身が「PやRを使っている厨房」だったんだね(www
名指しで君の人格をおとしめてしまってごめんなさい(wwwwwwwwwwwwwwwwwwww

63 :デフォルトの名無しさん:2006/12/17(日) 14:14:31
>>56
とりあえずメタクラスが便利だから使ってみるといいと思うよ

64 :デフォルトの名無しさん:2006/12/17(日) 14:18:15
>誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。
だから、自分がいいと思ってるから使ってるって言ってるだろ(wwww
何がいいのか語るものは持っているが、どうせ何言っても捻じ曲げられるから
しない。

65 :デフォルトの名無しさん:2006/12/17(日) 14:24:02
このスレにPython厨のスキルや人格への様々な疑惑を投下すると、
返ってくる反応がことごとくその裏付けになるのが面白い。

言語の便利さを疑えば「どう便利なのかが返ってこない」ことで疑惑はより強まり、
人格を疑えば「草がいっぱい生えた」レスが返ってきて疑惑が確定する。
速攻で自分の首を絞めるのがPython流?

66 :デフォルトの名無しさん:2006/12/17(日) 14:26:48
http://www.youtube.com/watch?v=ODshB09FQ8w

spam!spam!spam!spam!spam!spam!spam!spam!

67 :デフォルトの名無しさん:2006/12/17(日) 14:43:25
44とか47みたいな人は、他の言語を使って経験を積んでからPythonに戻ってくると
新たな発見があって安らぎを感じることができるかも知れない

まあ95%無理だろうけど。センスなさそうだし。

68 :デフォルトの名無しさん:2006/12/17(日) 14:53:33
>>65
Rubyは知らんけど、自分が使っててPerlよりPythonが勝ってると思うひとつは配列構造の柔軟さだ。

UserData = {('User1','Pass1'): 'User 1', ('User2','Pass2'): 'User 2'}
print UserData[('User1','Pass1')]

これと同様のスクリプトをPerlで書くとどうなる?

69 :デフォルトの名無しさん:2006/12/17(日) 15:13:04
>>68
自分もPython を使い始めてけっこう経ったので、Perl のことは
かなり忘れてしまったけれど、

そういう部分でPerl へ勝負を挑んでも、リファレンス使えば
Perl でもあっさりおなじように出来たんじゃない?

(たぶん、Python が常にリファレンスを使用してるというだけでしょ)

自分としては、それよりも、Perl がOOP への対応に関して作戦ミスを
したなぁと思う。

OOP を導入する際、既存の文法へ最小限の命令しか加えないと
いう方針を採っため、めちゃくちゃOOP が難しいものになってしまった。

あのとき、大胆に新たな命令セットを導入すれば、
シンプルで明快な形でOOP できるようにすることも可能だったろうに。

そうすれば、僕がPython を使おうと思うこともなかったかもなぁ。

70 :デフォルトの名無しさん:2006/12/17(日) 15:23:24
プログラム言語なんていくつも使えなきゃだめだよ!
好き嫌いというか道具なんだからいくつ使えたって困らないし

71 :デフォルトの名無しさん:2006/12/17(日) 15:26:42
>>69
> そういう部分でPerl へ勝負を挑んでも、リファレンス使えば
> Perl でもあっさりおなじように出来たんじゃない?
>
> (たぶん、Python が常にリファレンスを使用してるというだけでしょ)

そこが微妙に違うところで、
確かに>>68の辞書UserDataを作るだけなら、Perlのリファレンスを知ってれば簡単に出来る。
しかし、その辞書(Perlで言うと連想配列)のキーを使う場合には
Perlだと連想配列を作った時と同じリファレンスでないとキーとして使えないんですよ。
だから、Perlで単純に
$UserData[['User1','Pass1']]
としてもPythonみたいに値が得られないんです。

72 :デフォルトの名無しさん:2006/12/17(日) 15:37:26
漏れは『初めてのPerl』でPerl最高!Larry最高!みたいにかかなり感化されたんだけど
『続・初めてのPerl』読んでリファレンス周りで挫折した。あれは悲しかった・・・

Pythonだと1 < a < 100みたいに書けたりするところも好き

73 :デフォルトの名無しさん:2006/12/17(日) 15:48:27
Perlはまわりに使える人たくさんいるけどPythonはマイナーってのがいまいち
スクリプトは書き捨てだから自分だけわかればいいけど

74 :デフォルトの名無しさん:2006/12/17(日) 15:54:49
>>71

Perl で本当に同じことをしようと思ったら
    $UserData{ 'User1' . "\0" . 'Pass1' }
みたいに、各キーの「値」を合成するようなことをしなくちゃいけないってことだよね。これは、アッサリとは言いにくい。(連結文字は、各キーに含まれていないことを確認するとか、機械的にやできん)

リファレンスだと、アドレスを区別するだけだから、同じキー内容だけど、別物の場合、違うモノ扱いになっちゃう。

75 :69:2006/12/17(日) 15:58:24
>>71
うーん、
ハッシュ(連想配列)のリファレンスの話? 
配列のリファレンスではダメなの?

リファレンスっていっても、
ハッシュ(連想配列)でなくてもリファレンスできるわけだから。

配列のリファレンスの場合のデリファレンスは、

なんたらかんたら  [x][y][z]

の形式(x, y, z はそれぞれ添え字)で、3次配列でも100次配列でも
望みの場所のものをどんぴしゃで引き出せたはずだけど。

すでにPerl をインストールすらしてない身で、
あれこれいうのも辛いところながらw

76 :デフォルトの名無しさん:2006/12/17(日) 16:20:13
Python は最終的な「見やすさ」のために、
あえて不便の道を歩んでいるように見える。

Ruby は Perl の機能を全て「分解」して、
オブジェクト指向の思想の元に「再構築」してる
(構築前後で 1:1 に対応してる)。
だから、Perl で出来たことは Ruby で出来る。
これは正しいやり方の一つだ。
ただ、Perl のゴチャゴチャさを継承してしまっているのも
否めないところだ。

Python は、Perl のあり方をそもそも一旦「忘れた」上で、
1から考え直して「あらたに構築」しているっていう印象がある。
だから、Perl ・Ruby で出来ることが、Python ではなかったり
することも多々あるかもしれない。そのかわり、Perl , Ruby では
考えられなかったような点が見直されていて、新鮮だ。


77 :デフォルトの名無しさん:2006/12/17(日) 16:20:54
例えば、代入が式ではなく文っていうところ。代入式って、
書く時便利だけど、読むとなった時、実は見辛かったりする。
それを廃したのは、なかなかの判断だと思う。
そのかわり、既存の代入式が必要とされたシーンでは、
それらを使わなくてもよいように、ライブラリとかの方で工夫して、
見やすくなるように配慮する。これは正解のような気がする。

だから、Python のどこが便利だと言われて、答えられないのは、
当然のような気がする。だって、書く時の便利さを捨ててるんだから。
かわりに書き終わった後のソースのスッキリ感や、
書いた本人でなくとも読み易いという長所はデメリットを
補って余りあると思うよ。多分。
(トリッキーなコードを書かれると、引き継ぐ人がたいへんだからね)

# これ、あくまで個人的な見解なんで、そんなことないぞ、
# 便利だという反論も他の Python 好きに言ってもらいたいなぁ。


78 :デフォルトの名無しさん:2006/12/17(日) 16:24:07
>>72
>Pythonだと1 < a < 100みたいに書けたりするところも好き
をを、知らなかった。サンクス。

79 :デフォルトの名無しさん:2006/12/17(日) 16:28:02
>>77
ああ、そういや当たり前すぎて忘れてたが、
if X=1:
 ・・・
がエラーになることがうれしいな。

80 :74:2006/12/17(日) 16:30:26
>>75

>>74 だけど、誤読していていた。キーにリファレンスを入れるというのと勘違いした
(>>71 もそうじゃないかな)。
言いたいのは、よくある二次元配列のリファレンスによるエミュレーションの、
n 次元ハッシュ版ね。理解した。
# わしの回避策は、awk の二次元配列エミュレーションの真似

ただ、そうすると、一次元部分のハッシュの初期化を最初にしなくちゃいけないというのはあるよね。
その部分の手間が Python では省けるという認識でオケー? >> 各位

81 :デフォルトの名無しさん:2006/12/17(日) 16:38:27
日曜日はレベルが低いなぁ

82 :69:2006/12/17(日) 16:42:47
自分もなにか >>71 を誤読していたかな。

要するに、Perl においてはPython と違って、
ハッシュ(連想配列)のキーとして、リファレンスは使えない(使いにくい)だろ、
という話ね。

それに対して、Perlでは
配列でもハッシュ(連想配列)でも、リファレンス作れるし、それの組み合わせも
できる。
3次でも100次でも、n次配列の、どの階層のどの要素でも、
狙い通り取ってこれるよと返事したのだが、

少し話がずれていたね。

自分はもうPerler ではないけれど、たぶんPerler なら、
最初の要素をそういう風にしないで、うまくやると思う。

言語の特性はそれぞれ違うし、それにPerl のリファレンスの仕組みは
Python とは特性が違うけど、十分に柔軟なものと思うよ。

自分としては、Perl の問題点は OOP と思うなぁ。
あれさえ解決していてくれたら、Python は使ってなかった…

83 :デフォルトの名無しさん:2006/12/17(日) 17:08:26
>>77
>Python のどこが便利だと言われて、答えられないのは、
>当然のような気がする。だって、書く時の便利さを捨ててるんだから。

Pythonは十分書く時も便利。ジェネレータのおかげで内部イテレータとしても
外部イテレータとしても扱える柔軟さが手に入る。(forループに任せず、next()
で手動でデータを取ってきたいことがある)itertoolsとの組み合わせも便利。
翻ってRubyは内部イテレータしかない。Generatorというライブラリはあるが、
スレッドのトランポリンを使っていて、めちゃくちゃ重い。実用にならない。

Rubyの書きやすさとしてよくメソッドチェーンがあげられるが、Pythonにも
内包表記がありデメリットにはならない。Rubyのブロックは複数行かけるが、
そういうメソッドチェーンはあまり見ないし、そういう場合Pythonだと高階関数
をそばに書いて内包表記に組み込むなどすれば、不便を感じない。

Pythonのスライスはa[1:3]のような表記だが、Rubyにはa[1..3]とa[1...3]が
あり、最後の要素を含む・含まないの違いがある。いつも混乱するので、Python
の方がその点で書きやすい。

84 :デフォルトの名無しさん:2006/12/17(日) 17:10:24
>>77
そんなことないぞ。便利だ。w
つか、おまえ糞なエディタ使ってるとかじゃね?

85 :71:2006/12/17(日) 17:11:04
OOPやってみようって頃は、もうPerlは見限ってた。

>>80
私の言いたかった問題点は、>>74でどんぴしゃですよ。


話は変わるけど、
>>82
> 3次でも100次でも、n次配列の、どの階層のどの要素でも、
> 狙い通り取ってこれるよと返事したのだが、

ただし、もとの配列が全てn次でないと困りますね。
極端な例かもしれないけど、

Python
HASH = {('X','Y','Z'):'xyz', ('X','Y'):'xy'}
print HASH[('X','Y','Z')] #xyz

Perl
$HASH['X']['Y']['Z'] ='xyz';
$HASH['X']['Y'] = 'xy';

print $HASH['X']['Y']['Z']; #データ無し

86 :77:2006/12/17(日) 17:22:15
>>84

あー、いやいや書く手間自体はいいんだw。
俺個人としては、別にそれ嫌がってるわけじゃないから。
(だから、最近、Python 好きになったわけだし)
短く書けるか、長く書く必要があるかというのを
「不便」とか「書く時不便」とかいう表現をしちゃったのが
まずかったな。

漏れはとしては >>83 のような建設的なアピールが
出た時点で、もう思い残すことはない。

87 :デフォルトの名無しさん:2006/12/17(日) 17:23:11
Python/Tkinterも何気に便利だよね。簡単なGUIツールならこれで十分かも。
Pythonはネイティブスレッドに対応してるからIOみたく重い処理があっても
リスポンス良く組むことが可能だし。

88 :デフォルトの名無しさん:2006/12/17(日) 17:27:59
安定していて比較的高速なのも嬉しいかも。いくらLLでも、せっかく組んだのに
バグで落ちたりのろのろ動くと悲しい。

89 :デフォルトの名無しさん:2006/12/17(日) 17:32:58
pyblosxomさいこーです!!
教えてくれたひとありがとーぉ

90 :デフォルトの名無しさん:2006/12/17(日) 18:16:01
ライブラリ入れなくても最初から色々揃ってるのも嬉しい
あと文字コード関係で悩まなくて済む

91 :デフォルトの名無しさん:2006/12/17(日) 18:23:12
>>90
それは言えるな。
俺は言語的にはLisp系が好き、Pythonは許容範囲、Perlは論外って感じなんだけど、
ライブラリはPythonが充実してるから、実際の仕事ではPythonが一番活躍してる。

92 :デフォルトの名無しさん:2006/12/17(日) 19:43:21
正規表現で()グループ化して記憶したものを
使う場合はどうしたらよいのか教えて頂けないでしょうか。

例えばperlで置換する場合ですと

s/(\d)\s(\d)/ $1$2/

といったように $数字 でよいと思うのですが、
pythonではgroupというのを使えばよいらしいことは
分かったのですがどうしたらよいのか分からずにいます。

re.sub((\d)\s(\d),  ??????,     )

誠に恐縮ですがよろしくお願い致します。

93 :デフォルトの名無しさん:2006/12/17(日) 19:54:17
>>> import re
>>> m=re.search("(\\d)\\s(\\d)"," 2 3 ")
>>> print m.group(0)
2 3
>>> print m.group(1)
2
>>> print m.group(2)
3

置換(sub) では、どうするんかは、知らん
(もしかしたら、できぬ?)

94 :デフォルトの名無しさん:2006/12/17(日) 19:59:30
置換は1番目の括弧の中身は\1、2番目の括弧中身は\2という感じで
>>> re.sub(r"(\d)\s(\d)", r"\1\2", "5 6")
56
とすればいいんだけど、こんなとこで聞くよりマニュアル読んだほうが分かり易いと思う。

95 :92:2006/12/17(日) 20:09:29
うまくいきました。
本当にどうもありがとうございました。

どうやら自分のにはr"\1\2"の
rがなかったようでそれを入れたところうまくいきました。

ちなみにこの r は何を意味するものなのでしょうか?
私の探し方が悪いのだと思いますがマニュアルでは
みたことがなかったものでして

96 :92:2006/12/17(日) 20:15:47
ちゃんと記述がありました。失礼致しました。

http://iblinux.rios.co.jp/PyJdoc/lib-j/module-re.html

つまり、"r"を前につけた文字列リテラルにおいてはバックスラッシュは特別な扱いを受けることはありません。従って、r"\n"は"\"と"n"を含む2文字の文字列ですが、"\n"はニューラインを含む1文字の文字列です。



97 :デフォルトの名無しさん:2006/12/17(日) 20:18:08
↓ここでRP言語厨がひとこと

98 :デフォルトの名無しさん:2006/12/17(日) 20:20:39
RPG最高。なんでこんな便利な言語誰も使わないの?

99 :デフォルトの名無しさん:2006/12/17(日) 22:29:59
>>98
postscriptで十分だから

100 :デフォルトの名無しさん:2006/12/18(月) 00:05:21
皆の者、曲者じゃ!1.5.1じゃ!!>96

101 :デフォルトの名無しさん:2006/12/18(月) 03:07:49
昔の資料ってこと?気が付けばhas_keyとかも無くなってく位だし、時の流れって…。

102 :デフォルトの名無しさん:2006/12/18(月) 10:11:04
読み込んだデータから、エスケープシーケンスを捨てるのはどんなコードになる?

103 :デフォルトの名無しさん:2006/12/18(月) 10:37:13
>>102
「エスケープシーケンス」次第。

104 :デフォルトの名無しさん:2006/12/18(月) 15:42:51
.pycから.pyファイルを得る方法は何かありますか?

105 :デフォルトの名無しさん:2006/12/18(月) 16:15:54
もちろんあります。

106 :デフォルトの名無しさん:2006/12/18(月) 16:20:06
とりあえずオライリーのpython本買っとけば間違いないかね?

107 :デフォルトの名無しさん:2006/12/18(月) 16:22:07
オライリーでも何冊か出している。もちろん全部買えば心配ない。

108 :デフォルトの名無しさん:2006/12/18(月) 16:35:14
やっぱ、
オライリー本(初めてのPython)からオンライン公式ドキュメントへっていうのが、
王道なんじゃないの?自分もいま必死に勉強中。

あと、こういうのが訳されてれば、もっと嬉しいけど。

An Introduction to Tkinter
http://www.pythonware.com/library/tkinter/introduction/index.htm

Tkinter reference: a GUI for Python
http://infohost.nmt.edu/tcc/help/pubs/tkinter/

(まあ、エキサイト君の出番だなぁ。エキサイトのハナモゲラ語が
 自然な日本語に思えてくる今日この頃w)

109 :デフォルトの名無しさん:2006/12/18(月) 16:44:41
真の王道は

・Pythonのソース読む
・俺言語を実装

だよ。

110 :デフォルトの名無しさん:2006/12/18(月) 16:46:54
>>108
Tkinterにいまさら感を抱くおいらはwxPythonを研究中

111 :デフォルトの名無しさん:2006/12/18(月) 16:58:33
>>110
(゚∀゚)人(゚∀゚)ナカーマ
Tkinterはまともに扱ったことないけど、いろいろGUIツールの評判とか見て
PythonならwxPythonが良さそうだと判断した。

112 :デフォルトの名無しさん:2006/12/18(月) 18:54:40
>>108
漏れ的には
http://www.effbot.org/tkinterbook/
がおすすめ。

113 :デフォルトの名無しさん:2006/12/18(月) 19:50:49
pythonの質問スレがなさそうなので、ここでお尋ねします。

シェルスクリプトの

trap signal_handler_cmd SIGINT

と同様のことをpythonでやるには、どうすればよいですか?

signal.signal(signal.SIGINT, signal_handler_func)

はダメでした。


114 :デフォルトの名無しさん:2006/12/18(月) 19:56:44
問6.以下の文章を読んで問いに答えなさい。

俺も若かったからさ、昔は後先も考えねえであれこれの(A)に手を
出したもんだ。幼なじみの(B)とも深い仲になっちまってたけど、
俺調子こいててずいぶんひどい仕打ちを繰り返してた。(B)に手前
勝手に使い走りをやらせてる暇で別の(A)をブイブイ言わせたりな。
(B)のやつ、ちょっと不器用なところがあるし、ぶっちゃけ面も古風で
華ってもんがなかった。けどアイツ、うらむってことを知らねえし、
俺が呼び出すといつでも飛んできて甲斐甲斐し世話を焼いてくれた。
なんつーか家庭的ってのかな。ひどいこといっぱい言っちまった気が
するけど、(B)はじっと耐えてた。俺が安っぽい(A)ばっか引っ掛けて
それなりに痛い目にあってヘコんで帰ってきても、アイツはいつも
そっと寄り添ってくれた。俺もなんだかんだ言って結局(B)のところに
戻って来ちまうんだよなあ。俺、アイツの気持ちにとっくに気付いて
たのにいいように利用してた。最低だよなあ。まじ最低。逝ってよし
つーか。やっぱあれだ、俺、(B)のこと好きだわ。うん。今すぐ会って
言ってこよ。オマエとやり直したいって。

上記の空欄(A)、(B)に適切な語句を入れなさい。(各3点)

A: GUIツールキット    B: Tkinter
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

115 :デフォルトの名無しさん:2006/12/18(月) 20:09:34
>>113
環境、Pythonのバージョンは?

116 :デフォルトの名無しさん:2006/12/18(月) 20:13:52
>>115

$python -V
python 2.3.4

$uname -a
Linux my-pc 2.6.9-42.0.3.EL #1 Fri Oct 6 05:59:54 CDT 2006 i686 i686 i386 GNU/Linux

です。


117 :デフォルトの名無しさん:2006/12/18(月) 20:14:04
A: おっぱい    B: おっぱい

118 :デフォルトの名無しさん:2006/12/18(月) 20:21:57
import signal, sys
def signal_handler_func(*args):
  print args; sys.exit(1)
signal.signal(signal.SIGINT, signal_handler_func)
raw_input()

手元のLinux環境では
2.3.3 だと raw_input() が KeyboardInterrupt エラーを raise、
2.4.2 だと signal_handler_func でトラップ可、
という結果になるなあ。

バージョン依存ってことでFA?

119 :デフォルトの名無しさん:2006/12/18(月) 20:33:56
『初めてのPython』はあまり好きじゃない
白飯をいくら喰ってもおかずにたどり着かずにいらいらする
せっかくPythonの言語仕様がシンプルなんだから、一通りの概観を得たら
さっさとおいしいライブラリの勉強に移行するほうが望ましいと思う

そういう観点からすれば、『みんなのPython』→『Dive into Python』お勧め
後者は無料で読めるし、前半総論後半各論(ライブラリ)って構成も実践的でいいよ

120 :デフォルトの名無しさん:2006/12/18(月) 21:19:29
手っ取り早いのは
『公式チュートリアル』→ライブラリリファレンスとソース適宜参照しながらとにかく書く
だろ

121 :デフォルトの名無しさん:2006/12/18(月) 21:44:40
耳にタコができました。

122 :デフォルトの名無しさん:2006/12/18(月) 21:49:34
もうある程度使えているから
そんな話はどうでもよかったり

123 :デフォルトの名無しさん:2006/12/18(月) 22:47:43
どうでもいい、どうでもいい、俺はもう初心者じゃないから、どうでもいい

124 :デフォルトの名無しさん:2006/12/18(月) 23:10:32
お、どうした?

紙ってデバイスに価値を感じるか否かだけを、引っ張りつづけて幾星霜。

125 :デフォルトの名無しさん:2006/12/18(月) 23:25:30
最後の感じが読めないっす

126 :デフォルトの名無しさん:2006/12/18(月) 23:28:45
初心者じゃないとか思ってる奴に限って
基本が抜けていたりする
そういう奴の何割が、Pythonのモジュールの仕組みや
オブジェクト思考機能
スコープについて完全に理解しているというのか

チュートリアルでも書籍でもいいから、いっぺん通して読んでみろ
コードのクオリティが高くなるぞ

127 :デフォルトの名無しさん:2006/12/18(月) 23:37:08
Dive into Python はそういう意味でおすすめだが
今読むと少々古く感じる部分もあるな。

128 :デフォルトの名無しさん:2006/12/19(火) 01:00:08
>>126
Pythonのモジュールの仕組みや
オブジェクト思考機能
スコープについて完全に理解しているというのか

129 :デフォルトの名無しさん:2006/12/19(火) 01:07:00
また頭の悪そうな奴が出てきたぞ

130 :デフォルトの名無しさん:2006/12/19(火) 04:33:03
仲良くしろよ

131 :デフォルトの名無しさん:2006/12/19(火) 06:41:09
現存する全てのPythonモジュールの一覧表みたいなのってどこかにありますか?

132 :デフォルトの名無しさん:2006/12/19(火) 08:20:23
>>131
俺の脳内にあるんだぜ?

133 :デフォルトの名無しさん:2006/12/19(火) 08:24:58
>>13
http://www.google.com/codesearch

134 :デフォルトの名無しさん:2006/12/19(火) 08:26:13
また頭の悪そうな奴が出てきたぞ

135 :デフォルトの名無しさん:2006/12/19(火) 08:28:10
Pythonスレだからねぇ

136 :デフォルトの名無しさん:2006/12/19(火) 08:31:17
ひときわ頭の悪そうな奴が出てきた

137 :デフォルトの名無しさん:2006/12/19(火) 08:47:24
いやいや俺こそが

138 :デフォルトの名無しさん:2006/12/19(火) 09:35:14
>>126
オブジェクト思考(指向だろw)機能 というのは、
Python についてのドキュメントだけ読んでても、なかなか分らないよね。

web で参考になりそうなところを挙げてみると、下のようなところかな。

ただ、もっと初歩的な導入部分の解説のところがほしいし、
事例がPython だったら、もっといいと思うんだが。

Python のドキュメントみても、いきなり解説なしにオブジェクトやら
インスタンスやらの言葉が飛び出してくるものが多く、どれだけの人が
分っているのやら。

Java 知ってる奴しか分からんのじゃないか???

オブジェクト指向入門
http://itpro.nikkeibp.co.jp/members/NSW/ITBASIC/20050617/162922/

オブジェクト指向分析/設計
http://itpro.nikkeibp.co.jp/article/COLUMN/20061122/254695/

UML入門
http://itpro.nikkeibp.co.jp/article/COLUMN/20060213/229061/

ソフトウエア・パターン
http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252691/?ST=develop&P=1

デザインパターン
http://www.techscore.com/tech/DesignPattern/

早わかりGoFデザインパターン
http://itpro.nikkeibp.co.jp/article/COLUMN/20051201/225570/

139 :デフォルトの名無しさん:2006/12/19(火) 10:10:16
あたまわるすぎ

140 :デフォルトの名無しさん:2006/12/19(火) 10:22:22
頭が良いならLispに行ってるからねえ

141 :デフォルトの名無しさん:2006/12/19(火) 10:45:46
>>138
分かった気になってる奴の典型だな。
初心者はスキルこそ低いかも知れないが,学習意欲があるだけ可能性がある。
エセ中級者はスキルが低いくせに,分かった気になって学習意欲がない場合が多いので困る。

142 :デフォルトの名無しさん:2006/12/19(火) 10:57:18
オブジェクト指向というのはフレームワーク至上主義のことです。
データの流れる枠組みだけを必死に作ってればそれでよいのです。

143 :デフォルトの名無しさん:2006/12/19(火) 11:34:26
出来合いのクラスとかフレームワークを使うだけなら,オブジェクト指向なんて覚えること少ないし簡単だよ。
難しいのはオブジェクト指向「設計」な。こればっかりはデザパタ学んでも本を読んでもなんともならない。
設計手法を身につけたいなら,師匠につくなどして実務で経験を積むか,既存のソースを少しでも多く読むしかない。

144 :デフォルトの名無しさん:2006/12/19(火) 11:36:18
そこでDB設計ですよ。

145 :デフォルトの名無しさん:2006/12/19(火) 11:38:46
>>142
いや、ネタで書いてるだけなんだろうけど、

マジレスぎみに書いておけば、
ruby はそっち方面へPython より意欲的に取り組んでいるようにも
見えるんだよ。たとえば、

Rubyプログラミング+モデリング
http://www.rubyist.net/~keiju/doc/ruby-with-modeling-for-pdf.pdf
とかね。

自分の場合は、弟が会計士を取りそうなんで、会計関係のシステムでも
作りたいなと思ってあれこれ考えていたんだが、
Java でやろうかとも思ったんだけど(Java は多少とも経験がある)、

一人しか組む人間がいないのに、Java は苦しすぎると思い、
Python にたどり着いたとこ。
やっぱり大規模なシステム組むときに、オブジェクト指向は欠かせない
からね。

Java は煩瑣な言語だが、そっち方面のドキュメントはたくさん手に入る。
Python はシンプルで明快な文法だが、いかんせんそっち方面のドキュメントが乏しい。

いっそ関数だけで書いてくことにしてしまえば、悩まずに済むんだが、
(その方が早く組める可能性もないとはいえない)
悩ましいところだ…。と、グチを少々書いてみた。

みんなも頑張ってくれ。じゃ。

146 :デフォルトの名無しさん:2006/12/19(火) 11:39:58
138が挙げてる類の本、1冊だけなら許容範囲。
2冊以上持ってる奴は出入り禁止ということでどう?

147 :デフォルトの名無しさん:2006/12/19(火) 11:45:42
スレッド実装が腐ってるrubyで大規模システムとは勇者ですねw

148 :デフォルトの名無しさん:2006/12/19(火) 11:46:46
>>147
数値演算も腐ってますが何か?

149 :デフォルトの名無しさん:2006/12/19(火) 11:49:57
>>145
あなた何歳?

150 :デフォルトの名無しさん:2006/12/19(火) 11:51:36
>>147
そこでdRubyというバッドノウハウ投入

151 :デフォルトの名無しさん:2006/12/19(火) 11:51:48
rubyのアドバンテージは日本語扱いだけだったが、最早それすらも他がUTF-8化して消えた。

152 :デフォルトの名無しさん:2006/12/19(火) 12:11:56
まあ。
Cやアセンブラの開発経験が豊富な俺にしてみれば、だ。
クラスとかインスタンスとかリファレンスとかは、
全部構造体とかポインタのメタファとして理解できるわけ。
だからオブジェクト指向なんて簡単。
設計手法も根底はCとかと同じだしね。

153 :デフォルトの名無しさん:2006/12/19(火) 12:47:48
また頭の悪(ry

154 :デフォルトの名無しさん:2006/12/19(火) 13:17:29
from XXX import YYY
とした場合に、モジュールXXXに固有の例外をキャッチするにはどうしたらいいんでしょうか。

具体的には、importだけを使った場合に、
import xml.dom.minidom
try:
 DOM = xml.dom.minidom.parseString('python')
except xml.parsers.expat.ExpatError:
  print "XML ExpatError."

と処理することを、
from xml.dom.minidom import parseString
try:
DOM = parseString('python')
except ???:
print "XML ExpatError."
ここで、???に上手く書いて処理する方法はありますか?

155 :デフォルトの名無しさん:2006/12/19(火) 13:34:10
parseString だけ import した時点で自業自得
ExpatError を import したくない理由が何かあるの?

156 :デフォルトの名無しさん:2006/12/19(火) 13:53:13
>>155
いえ、ExpatErrorをimportすれば(上の例では結局xmlからimportする必要がありますけど)出来ます。
Python一般のテクニックとして、上手く処理する方法があるのか知りたかっただけです。

157 :デフォルトの名無しさん:2006/12/19(火) 13:57:13
頭悪いくせに from 〜 import なんて使うなという神のお告げだよ

158 :デフォルトの名無しさん:2006/12/19(火) 13:57:23
importがしてることの意味わかってる?

159 :デフォルトの名無しさん:2006/12/19(火) 14:03:01
import Tkinterすると次のようなエラーが出ます。

File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.5/lib-tk/Tkinter.py", line 38, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

sys.pathは
['', '/usr/local/lib/python25.zip', '/usr/local/lib/python2.5',
'/usr/local/lib/python2.5/plat-linux2',
'/usr/local/lib/python2.5/lib-tk',
'/usr/local/lib/python2.5/lib-dynload',
'/usr/local/lib/python2.5/site-packages']

/usr/sahre/tk8.4とか、/usr/share/tcl8.4とか見てもconfigureファイルないし、
そもそもyumでインストールしてるからconfigureの必要はないと思うし・・・。
あと、yum install tkinterもしてみたけど、結果は同じでした。

ちょっとスレ違いの質問かもしれないけど、どなたか解決法教えてください。

160 :デフォルトの名無しさん:2006/12/19(火) 14:03:50
やっぱり自称中級者は基本的な知識が足りないんだ。
入門書嫁。

161 :デフォルトの名無しさん:2006/12/19(火) 14:05:30
>>156
ないと思われ。

162 :デフォルトの名無しさん:2006/12/19(火) 14:09:35
>>159
_tkinterモジュールがそもそもビルドされていないか
_tkinterモジュールのビルドに失敗しているか
_tkinterモジュールが必要としている何かがインスコされていないか
のどれかだと思われ。

どこのパケジ?

163 :デフォルトの名無しさん:2006/12/19(火) 14:44:12
>>162
http://www.python.jp/Zope/download/pythoncore
ここですね。

>_tkinterモジュールがそもそもビルドされていないか
これってPython-2.5内のconfigure->make->make installではビルドされないんですか?

164 :デフォルトの名無しさん:2006/12/19(火) 15:11:16
>>163
あれ、yum といいつつ実は Python を野良ビルドしている?
だったら
> _tkinterモジュールのビルドに失敗しているか
こっちの可能性大。

> これってPython-2.5内のconfigure->make->make installではビルドされないんですか?

状況による。

165 :デフォルトの名無しさん:2006/12/19(火) 15:14:25
>>164
yum install pythonするとpython-2.4がインストールされませんか?
2.5が使いたかったんでPyJUGからDLしてビルドしたんですけど・・・・。
他に方法があったんでしょうか。

166 :デフォルトの名無しさん:2006/12/19(火) 15:15:55
すいません、説明不足だったみたいで。
yum したのは
yum install tk
yum install tcl
yum install tkinter
の3つです。

Pythonそのものは上記の通りです。

167 :デフォルトの名無しさん:2006/12/19(火) 15:23:30
>> 154

Pythonicさを求めるなら,例外も明示的にimportしておく.
from zipfile import ZipFile, BadZipfile
try:
 ZipFile(open('hoge.tgz', 'rb'))
except BadZipfile:
 print 'bad zip file.'

どのモジュールから例外が出るか分からなくても,「ある種の例外」の親クラスは共通.
try:
 ZipFile(open('hoge.tgz', 'rb'))
except Exception, e:
 print "exception raised from module %s" %(e.__module__)

これはちょっとハックだし,例外が同じモジュールで定義されていなければうまく動かない.
from zipfile import ZipFile
try:
 ZipFile(open('hoge.tgz', 'rb'))
except Exception, e:
  if e.__module__ == ZipFile.__module__:
   print 'same'
  else:
   print 'different'


168 :デフォルトの名無しさん:2006/12/19(火) 15:39:28
>>155
何でそんなところでハマるのかな(;´Д`)



169 :デフォルトの名無しさん:2006/12/19(火) 20:16:44
>>166
ぼくちゃんはPython2.5のtkinterと2.4のtkinter、どちらが使いたいのかな?
yumでインストールしたtkinterは2.4と2.5のどちら用かな?

170 :166:2006/12/19(火) 20:28:27
>>169
てめーには聞いてねーよばーか^^

171 :デフォルトの名無しさん:2006/12/19(火) 20:45:54
いま>>166はこのスレの住人全員を敵に回した。

172 :デフォルトの名無しさん:2006/12/19(火) 21:40:55
和気藹々

173 :デフォルトの名無しさん:2006/12/19(火) 21:50:03
まともな人間なら普通に動かせるものが動かないという場合、人間のほうが
まともでないことをまず疑うべきなんですね。

174 :デフォルトの名無しさん:2006/12/19(火) 23:13:57
にんげんがいちばんバギーだからな。

175 :デフォルトの名無しさん:2006/12/20(水) 00:07:02
「機械から入力を行うようにプログラムされたソフトウェアは人間から入力を受けると必ずクラッシュする」

176 :デフォルトの名無しさん:2006/12/20(水) 00:50:48
色々とレスありがとうございます。
もう一度ビルドしなおしてみようと思います。

177 :デフォルトの名無しさん:2006/12/21(木) 15:12:46
ttp://d.hatena.ne.jp/jbking/20061221/p1
「Exceptionがobjectのサブクラスになった」という意味を理解してないのかね?

178 :デフォルトの名無しさん:2006/12/21(木) 15:23:02
Python 2.5 Quick Reference
http://rgruet.free.fr/PQR25/PQR2.5.html

179 :デフォルトの名無しさん:2006/12/21(木) 15:44:04
さて、無能で英語力もないクレクレ君の俺は
ゆっくり日本語訳されるのを待つとするか。

180 :デフォルトの名無しさん:2006/12/21(木) 16:12:04
Cygwin 上の Python から ODBC を使うにはどうしたらいいでしょうか。

181 :デフォルトの名無しさん:2006/12/21(木) 17:47:56
Cygwinを窓から投げ捨てる

182 :デフォルトの名無しさん:2006/12/21(木) 21:03:41
Instant Hackingの
radius = input("What is the radius?")
print radius*radius*3.14
のコード実行すると
SyntaxError: unexpected EOF while parsing
というエラーになるんだけどなぜでしょうか?

183 :デフォルトの名無しさん:2006/12/21(木) 21:07:08
ElementTreeでtextを抽出しようとしても
最初にサブエレメントが出てくるところまでしかとれないよね。

"激ウマ<BR/>ラーメンです。"ってあっても
激ウマの部分しかとれないみたいな。
サブエレメントの後ろのtextも取り出したいんだけど
なんかいい方法ない?
以前、DOMでやってたときもおんなじよーな問題がでてた記憶が....

184 :デフォルトの名無しさん:2006/12/21(木) 21:09:09
どやてじこしたのかかこよ

185 :デフォルトの名無しさん:2006/12/21(木) 21:19:29
>>182ですが
PyDev上のコンソールから入力するとエラーでるけど、DOSプロンプトでpythonコマンドやcommand line使うとエラーにならない・・・
PyDevの問題?



186 :デフォルトの名無しさん:2006/12/21(木) 21:23:15
そだよ

187 :sage:2006/12/21(木) 21:54:30
どうやって実行したのか書こうよ

なるほど・・・

188 :デフォルトの名無しさん:2006/12/21(木) 21:57:18
>>183
「ラーメンです」を br 要素の後ろに続くテキストって考えれば
element.tail で取れます。

>>>import xml.etree.cElementTree as ET
>>> elem = ET.fromstring(u'<p>激ウマ<br/>ラーメンです</p>')
>>> print elem[0].tail
ラーメンです

189 :デフォルトの名無しさん:2006/12/21(木) 21:58:38
http://effbot.org/zone/element-infoset.htm#mixed-content
中の人のサイトに書いてあるやん。

190 :183:2006/12/21(木) 22:21:17
188,189
無事解決したよ。アリガトー!!
マジ感謝


191 :デフォルトの名無しさん:2006/12/22(金) 09:19:40
だいぶよむだけで、ぜんぶわかった

192 :デフォルトの名無しさん:2006/12/22(金) 15:49:12
Windowsのコンソールから起動して、

import sys
unicode(sys.argv[1])

↑こんな風にしたら、

UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 0: ordinal not in range(128)

こういわれてしまいました。
unicodeというかUTF-8にしたいのですが、どうすればいいでしょうか。
よろしくお願いします。


193 :192:2006/12/22(金) 15:50:48
あ、書き忘れ。
第一引数には、「エンコード」という文字を渡してます。

> python.exe hoge.py エンコード

↑こんな感じ


194 :デフォルトの名無しさん:2006/12/22(金) 16:09:29
>>192
入門書嫁。

195 :デフォルトの名無しさん:2006/12/22(金) 17:03:57
http://www.roy.hi-ho.ne.jp/pastel/home/Python/extension_win32.html
WSHがPythonから使えるらしいのだけど
HPのようにしてもうまくいかない
なんで

196 :デフォルトの名無しさん:2006/12/22(金) 17:10:52
>>195
何かエラーが出るの?
エラーは無いけど思ったのと違う結果になるの?
そもそも何も起きないの?

もっと具体的に書いてくれ

197 :195:2006/12/22(金) 18:06:51
何もおきずに止まってしまう。

エラー 実行に失敗しました(例外)が発生しました

198 :デフォルトの名無しさん:2006/12/23(土) 00:39:18
>>192
sys.argv[1](この場合 Shift_JIS 文字列)の
エンコーディングを明示的に指定してやる

sjis_str = sys.argv[1]
unicode_str = unicode(sjis_str, 'sjis')
unicode_str = sjis_str.decode('sjis') # 上と等価

デコードする際のエンコーディングを明示的に指定したくないなら、
Python2.5/site-packages/sitecustomize.py に以下を記述

import sys
sys.setdefaultencoding('sjis')

unicode() の第二引数や、encode()、decode() の第一引数を省略した場合に
defaultencoding が使われことを知っておくと混乱しないよ。

199 :デフォルトの名無しさん:2006/12/23(土) 11:40:41
Perl.comの記事で
http://www.perl.com/pub/a/2006/12/21/using-java-classes.html
こんなのがあったのですが、こんな感じで簡単にJavaのクラスを
Pythonで使う方法ってありますか?

200 :デフォルトの名無しさん:2006/12/23(土) 11:47:16
つ Jython

201 :デフォルトの名無しさん:2006/12/23(土) 12:26:12
>>200
灯台下暗しでした。すみません。ありがとうございます。

202 :デフォルトの名無しさん:2006/12/23(土) 14:38:26
大正デモクラシ

203 :デフォルトの名無しさん:2006/12/23(土) 17:57:50
python cookbookって日本語版出るの?

204 :デフォルトの名無しさん:2006/12/23(土) 23:40:49
unix(FreeBSD)で popen2 で子プロセスを呼んで
状態監視(vmstat -w 1 とか netstat -w 1) をしたいのですが,
親プロセスが終了するときに子プロセスを
どうやって終了させればいいのか良く分かりません.

popen2 が返してきた child の child.pid を os.kill すると
sh -c netstat -w 1 の方は殺せるのですが,
popen が /bin/sh 経由で呼び出した実際のプロセスの方は
生き残って親プロセス丸ごと終了できなくなってしまいます.

コマンドラインでやるみたいに os.system で
ps aux | grep netstat | awk '{print $2}' なんていう
python っぽくないダサい手段で探して殺すというバッチイ方法じゃない
良い子の方法はどうすればいいのでしょうか?


205 :204:2006/12/23(土) 23:45:10
補足:
子プロセスはこの方法をまねて呼んでます(まね,というかほとんどそのまま).
while 1 のループの中でデータ処理をしてます
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52296/index_txt

206 :デフォルトの名無しさん:2006/12/23(土) 23:46:01
>>204
めんどいのでこれを使ってる
ttp://www.python.jp/doc/nightly/lib/module-commands.html

207 :デフォルトの名無しさん:2006/12/23(土) 23:52:02
これではだめだね
すまん

208 :デフォルトの名無しさん:2006/12/24(日) 06:00:07
>>202
どうした、調子悪いぞ!

209 :デフォルトの名無しさん:2006/12/24(日) 06:03:11
os.wait()

210 :204:2006/12/24(日) 09:44:44
永遠に終了しないコマンドは wait() しても仕方ないですよね?

それとも他の使い方があるのかな?

211 :デフォルトの名無しさん:2006/12/24(日) 10:33:56
試さずに書くけど

ttp://www.python.jp/doc/2.4/lib/module-popen2.html
> Unixではcmdはシーケンスでもよく、その場合には (os.spawnv()のように)
> 引数はプログラムシェルを経由せず直接渡されます。
> cmdが文字列の場合、(os.system()のように)シェルに渡されます。

ちゅーことなのでコマンドをリストか何かで渡してみたらどーでしょ。
(つまりコマンドラインの字句解析をシェルに任せずに自分でやる)

212 :デフォルトの名無しさん:2006/12/24(日) 13:31:04
そもそも、強制終了がデフォルトというのが、おかしいのと違う?
ある条件を満たせば、自分で終了するとしとけば、
wait() しとけばいいだけと思うし。

213 :204:2006/12/24(日) 14:11:09
すみません,
child = popen2()
=> 終了
child.fromchild.close()
child.childerr.close()

でいいみたいです.
これをやっているつもりだったのですが,
終了条件投入関数が実行されていませんでした.

やり方はこんななんですが:

sw = status_watch('netstat -w 1')
sw.run()
## time.sleep(10)
sw.finish() ### いつまでも実行されない???
(続く)

214 :204:2006/12/24(日) 14:13:58
(続き)
class status_watch(threading.Thread):
def __init__(self, command ):
threading.Thread.__init__(self)
self.command = command
self.quit = False
def run(self):
self.child = popen2.Popen3(self.command, 1)
self.child.tochild.close() # don't need to talk to child
outfd = self.child.fromchild.fileno()
errfd = self.child.childerr.fileno()
makeNonBlocking(outfd) # don't deadlock!
makeNonBlocking(errfd)
while 1:
ready = select.select([outfd,errfd],[],[]) # wait for input
### do something
if self.quit:
return
select.select([],[],[],.1) # give a little time for buffers to fill

def finish(self):
self.quit = True
self.child.fromchild.close()
self.child.childerr.close()


215 :デフォルトの名無しさん:2006/12/24(日) 14:14:05
Unix Programming FAQ の1 プロセス制御 の章
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC26
に、

1.16 どうすればプロセスの子孫を全て殺すことができますか?

というのがあるけど、その中に、

このための完全に一般的な手法はありません。
(略)
解決法としてそのサブプロセスを新しいプロセスグループに入れ、killするとき はそのプロセスグループをkillすることができます。
(略)
プロセスグループを作るのに望ましい関数はsetpgid()です

とある。

で、Python ライブラリ・リファレンスのp274に

setpgid(pid, pgrp)
システムコールsetpgid() を呼び出して、pid のid をもつプロセスのプロセスグループid をpgrp
に設定します。利用できる環境: UNIX

というのがあるが、これ使えないかな?

216 :204:2006/12/24(日) 14:18:35
>212
いや netstat, vmstat とか 「signal 食らわない限り無限ループ」
を読みたいんで...

python 側は >214 に書いたように "終了()" を呼んで
後始末をさせようとしているんですが,
自分が思っているように動かないんですよね...

>214 に書いているうちの,self.quit 変数が
True に変わってくれないんです...
(while loop で print してみてても変わってない...ナゼ???)

217 :204:2006/12/24(日) 14:42:16
すみませんすみません...

本件とは別のところで エラーを吐いて終了処理(finish())が
きちんと実行できていなかっただけみたいです...

curses と組み合わせて書いていたんですが,
curses の "裏画面" のエラーメッセージとかを
見逃してました...

218 :デフォルトの名無しさん:2006/12/24(日) 22:04:42
おととい買ったエロゲがPython2.3だった

219 :デフォルトの名無しさん:2006/12/24(日) 22:14:19
詳細>218

220 :デフォルトの名無しさん:2006/12/24(日) 23:17:30
メリークリスマス!

221 :デフォルトの名無しさん:2006/12/24(日) 23:21:55
>218
kwsk!!!!

222 :デフォルトの名無しさん:2006/12/25(月) 01:13:11
./
  GR.dll, KEY.dll, ksound.dll
  python23.dll, run.dll, SND.dll, WIN.dll
  nanami.pyc, run_base.pyc
  nanami.exe

  DLLs/
    _sre.pyd, bz2.pyd, datetime.pyd
    mmap.pyd, parser.pyd, pyexpat.pyd
    select.pyd, unicodedata.pyd
    winsound.pyd, zlib.pyd
  itp/
    *.pyc
  Lib/
    site-packages/
      JapaneseCodecsだけ
  nanami/
    *.pyc
    data/
  spp/
    *.pyc
  stdADV/
    *.pyc

こんな構成。
他にはプロテクト関係のソフトが入ってる。
エロゲーでライセンスキーの入力を求められたのは初めてだw

これ以上は分からんがな(´・ω・`)

223 :デフォルトの名無しさん:2006/12/25(月) 02:21:08
key.dllってスパイウェアじゃねぇの?

224 :デフォルトの名無しさん:2006/12/25(月) 02:21:59
>>222
それって ef?
シリアル入力があるって聞いてるけど.

225 :デフォルトの名無しさん:2006/12/25(月) 14:15:11
Python とmatlabのインターフェイスでよく使われるのはどれでしょうか?
googleの検索で上位にでるのはこれですが
http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html

226 :デフォルトの名無しさん:2006/12/25(月) 14:56:40
.pyに関連付けるもうちょっとシンプルでかっちょのよいアイコンないっすか?

227 :デフォルトの名無しさん:2006/12/25(月) 23:00:41
本家のやつで十分。
こんな派手なやつでも使うのか?
http://www.emptypage.jp/gadgets/icon-py.html

228 :デフォルトの名無しさん:2006/12/26(火) 00:01:32
家紋とかはどうよ

229 :デフォルトの名無しさん:2006/12/26(火) 00:23:25
ジョルジュ長岡のAAでも張っとけ

230 :デフォルトの名無しさん:2006/12/26(火) 03:53:07
つttp://www.deviantart.com/deviation/44025868/

231 :デフォルトの名無しさん:2006/12/26(火) 15:50:06
ttp://d.hatena.ne.jp/InoHiro/20061226/p2

232 :デフォルトの名無しさん:2006/12/26(火) 16:18:28
PythonからWSH呼ぶのと

win32com.client.Dispatch(.."..")

は同じなの?

233 :デフォルトの名無しさん:2006/12/26(火) 19:10:46
>>218 おーい、結局そのエロゲは何だったんだ?
>>218-224 を見て、「ef」というエロゲの体験版を探してきてダウンロードして
みたのだが、Pythonとは何の関係もなかった。GUIの作り方の参考になるかと
思ったのに。腹が立ったので即削除。

234 :デフォルトの名無しさん:2006/12/26(火) 20:35:22
>>233
ぐぐったらパティスリーの待宵草ってのはPythonらしい。
メーカーサイトにはその辺何もなかったから実際どうかはしらんが。

235 :デフォルトの名無しさん:2006/12/26(火) 23:20:35
>>234
ありがとう。その「待宵草」にも体験版はあるみたいだ。
しかし、よく考えたらエロゲに限定する必要はなかった。
つうかむしろ、エロゲでないほうが良かった。自分にはちょとつらいわ。


236 :デフォルトの名無しさん:2006/12/26(火) 23:36:22
>>234
サイト行ったら変な声流れてビビった

237 :デフォルトの名無しさん:2006/12/26(火) 23:51:49
どう見ても3流エロゲメーカーです。
ありがとうございました。

238 :デフォルトの名無しさん:2006/12/27(水) 01:14:58
pythonってマルチバイト文字列を変数に入れるとき、いちいち

str = u"日本語"

みたいにしないといけないの?
めんどくさくない?

239 :デフォルトの名無しさん:2006/12/27(水) 01:17:36
めんどくさくない

240 :デフォルトの名無しさん:2006/12/27(水) 01:32:01
>>238
たとえばマルチバイト文字がシフトJISならファイルの先頭行に
# coding: shift_jis
を入れれば u を入れる必要はなくなるよ。

241 :デフォルトの名無しさん:2006/12/27(水) 01:35:09
>>240
そりゃ別の問題だべさ

242 :デフォルトの名無しさん:2006/12/27(水) 01:41:01
>>240
入門書嫁

243 :デフォルトの名無しさん:2006/12/27(水) 02:24:59
# coding: utf-8

for char in u'やらないか':
  print char,    #=> や ら な い か
  
for char in 'やらないか':
  print char,    #=> 文字化け

244 :デフォルトの名無しさん:2006/12/27(水) 06:37:08
>>241-242
240の言っていることは正しいんでは。
str = u"日本語".encode("sjis")
と書くのと
# coding: sjis
str = "日本語"
と書くのは等しいわけだから。
バイト列(文字列ではなく)を得る方法としてはまったく正しい。

245 :デフォルトの名無しさん:2006/12/27(水) 08:40:06
encodeするって話だったっけ?

246 :デフォルトの名無しさん:2006/12/27(水) 09:07:23
つまり>>238の質問内容だけで回答しようとする面子はみんな初心者。

247 :デフォルトの名無しさん:2006/12/27(水) 10:19:38
うーんと、
# -*- encoding: mbcs -*-
じゃなかったっけ?
入門書、読み直した方がいいかな?
対話モードでも使えりゃいいんだが。ていうか、
うちは対話モードも特段設定しなくても、化けはしないけど。
ただ、あの兇悪なIDLEだけは許せんなぁ。
あれは、utfからデフォルトのエンコーディングに
戻してないんだろ。
いいかげん、向うの連中もそれくらいの初歩的バグに
気づいてほしいもんだが、無理だろなー。

248 :デフォルトの名無しさん:2006/12/27(水) 10:26:13
>>246
何もしようとしないのはみんなヒキコモリ。

249 :デフォルトの名無しさん:2006/12/27(水) 12:12:00
トラブルを避けるためには、ASCIIコード以外を含むソースファイルには必ず正確な
encodingを記述したほうが良い。(mbcsは正確なencodingではない)
また文字列についていろんな処理をするなら、できるだけUnicode文字列を使うべき。
つまり '文字列' よりも u'文字列' を使うべき。
この2つは基本的には別の問題。(後者には例外も存在する)
Python 3000ではUnicode文字列だけになるらしいので、もうちょっとすっきりするかも。

250 :デフォルトの名無しさん:2006/12/27(水) 12:35:39
以上、ヒキコモリ代表からの意見でした。

251 :デフォルトの名無しさん:2006/12/27(水) 12:47:35
>>249
>Unicode文字列だけ

byte型を使えば他エンコードの文字列を扱えるんだぜ?

252 :デフォルトの名無しさん:2006/12/27(水) 14:56:51
明示的な方法でない utf-8 への変換でうまくやれてるのは、
実質的にはJava くらいなんじゃないの?

Perl なんかでは(もう2、3年前のことしか知らないが。 5.8かな)
明示的な方法でなく自動というか勝手に utf へ変換が
行われるんだが、それがために問題が生じていて、
どうするか大問題になっていたと思う。

つまり、標準で日本語をutf へ変換するモジュールが
入ってるんだが、それとは別にPerl 本体が勝手にutf に変換してる。

ところが、Perl 本体の方は無自覚に(日本語のsjisかeuc かとか気にせず)
やってるから、それは内部的には的外れなutf に変換されており、
変換モジュールの方は、sjis ならsjis があればutf へ変換する
というものだが、その時点では内部的に的外れutf しかないから
全然変換できてないというものだった。

あれからその問題がどうなったか知らないが(たぶん、そのままかも)、
Java 以外の言語で、非明示的な方法を使うものは、
みんな苦しんでるんじゃないかと思う。
むしろPython は、明示的変換を採用したおかげで
うまく問題を回避してると思う。

sjis のままだと、正規表現とか誤動作するが、おおかたの人は
そんな問題に遭遇することもないかもしれない。

253 :デフォルトの名無しさん:2006/12/27(水) 16:43:47
>>247
入門書を読み返すよりこっちお勧め。
ttp://ns.jk.to/zwiki/Nikki/PEP0263
ttp://www.geocities.jp/tan9ent/unicode.html
難しいけど雰囲気だけでも。

>>252
Perl 5.6 以降は、ソースに ASCII じゃない文字が含まれてると、
それを UTF-8 で書かれているとみなして処理するから、
use encoding 'shiftjis';
などとして、Perl に処理させる前にソースを UTF-8 に
変換しておく必要がある・・・とかいう理屈だったと思う。

なので、ちゃんと use encoding してあれば
的外れなことをする心配はなかったような。


まあどの言語でも文字コード周りは鬼門だと思う orz
Unicode 文字列に一本化されたら幸せになれるのかな・・・

254 :デフォルトの名無しさん:2006/12/27(水) 17:02:31
>>253
> use encoding 'shiftjis'
> などとして、Perl に処理させる前にソースを UTF-8 に

違う。そうじゃなくて、
その動作それ自体が、そのようになってなくて、
モジュールが働く前に、Perl本体の方の勝手変換が
効いてしまっている という話で、

当時は大変な問題になっていた。
ただ、その後の話は自分は知らない。

だから、Python が明示的変換を採用しているのは
賢明だとその頃は(今もだが)感じた。

255 :デフォルトの名無しさん:2006/12/27(水) 18:37:49
ヒキコモリだから年末年始ヒマなのはわかるけど、
年に一度の大掃除くらいちゃんとやれよ。

256 :デフォルトの名無しさん:2006/12/27(水) 18:44:04
>>255
おまえがな(WWWWWWWWWWWWW

257 :デフォルトの名無しさん:2006/12/27(水) 19:45:21
>>255
年末年始くらいマッタリ過ごせないのはITドカタくらいだろ
今日も元気に掘った穴埋めてるのか????

258 :デフォルトの名無しさん:2006/12/27(水) 20:07:22
そんなにムキになるなよ。掃除ちゃんとやれって言っただけだろ。

259 :デフォルトの名無しさん:2006/12/27(水) 20:45:43
たしかにいちいち全部u書くの面倒だな
書かないとlen("あ")が2とか返すだけで一応動くみたいだけど

260 :デフォルトの名無しさん:2006/12/27(水) 20:56:51
一応動くからいいや、と思ってるとfindとか使って痛い目に遭う。
一見動いてしまうことも多いので却ってたちが悪い。

261 :デフォルトの名無しさん:2006/12/27(水) 21:08:09
いや、だから正規表現とかで誤動作してもいいなら、
なにも問題ないわけで、
どうせ誤動作したって、人が死ぬわけでもないしと思えるなら、
それもありかもしれない。

ただ、Perlとかでsjisで平気でやってる人たちは
誤動作問題知らないんじゃないかなぁ。
その仲間に入るか入らないか、という事でしょ。

だいたいこの問題、Java以外ではスマートに解決はできないと
思われ。

262 :デフォルトの名無しさん:2006/12/27(水) 21:17:17
基本的には u 付ければずっとマシな状況になるんだから、よくわからないなら u 付ける
癖にするのが無難だと思う。もちろん「ニセUnicode」にならんように最低限encodingくらい
はちゃんと指定しておくのが前提。

263 :デフォルトの名無しさん:2006/12/27(水) 21:43:06
バイト列で日本語を扱うことに意外と消極的なんだね、みんな。
俺は結構好きだ。2.0 未満の頃はバイト列しかなかったしね。
ついこないだまで n = len(s) の代わりに
n = 0
for c in s:
 if c < "0x80":
  n = n + 1
 else:
  n = n + 2
みたいなことを当たり前のようにやってたわけだ。
(補助漢字? 半角カナ? (∩゜д゜)あーあー聞こえなーい)

正直UnicodeマンセーだけどUnicodeは万能じゃない。要は適材適所。

264 :デフォルトの名無しさん:2006/12/27(水) 21:43:52
> 2.0 未満の頃は

1.6のことを忘れていたw

265 :デフォルトの名無しさん:2006/12/27(水) 21:46:33
"0x80" → "\x80" だた。連投スマソ

266 :デフォルトの名無しさん:2006/12/27(水) 21:50:13
>>263
俺もやってたけど、嫌な思い出なので早く忘れたいのよ。w
万能じゃないけどUnicodeのほうがマシなのは確かなので、ちゃんと使おうよ派だな。

267 :デフォルトの名無しさん:2006/12/27(水) 22:36:56
emacsじゃないなら
# -*- encoding: hoge -*- って丁寧に書かないで
# coding: hoge でも同じだったっけ。

268 :デフォルトの名無しさん:2006/12/27(水) 22:38:11
いまさらハートマークも扱えない文字コードには戻れないし

269 :デフォルトの名無しさん:2006/12/27(水) 22:50:58
さういふ貴君もメエルはISO-2022-JPでおくつているのだらう。

270 :デフォルトの名無しさん:2006/12/27(水) 23:03:47
>>258
大掃除なんてクリスマス前に終わらせた
今度は君の番だ
がんばれよ、社内ヒキコモリのITドカタ君(w

271 :デフォルトの名無しさん:2006/12/27(水) 23:23:36
>>267
1行目か2行目が、正規表現 "coding[:=]\s*([-\w.]+)"にマッチすればOK
http://ns.jk.to/zwiki/Nikki/PEP0263

272 :デフォルトの名無しさん:2006/12/28(木) 08:43:18
ヒキコモリとかITドカタってそんなに劣等感を煽る言葉なのか。

273 :デフォルトの名無しさん:2006/12/28(木) 09:37:04
言われる側の劣等感というより、言う側のよくわからない熱さが奇妙で
色々とからかわれちゃうのでは。

274 :デフォルトの名無しさん:2006/12/28(木) 10:40:21
>大掃除なんてクリスマス前に終わらせた

正体を現わしたな、真正ヒキコモリ!
まともな社会生活を送っている者には
クリスマス前に大掃除を終わらせるヒマなどない!
悪霊退散!!

275 :デフォルトの名無しさん:2006/12/28(木) 11:45:37
>>274
自分にヒマが無くても、世の中にはお金で解決できることもあるんだよ
頑張れ、低賃金のITドカタ君(w

276 :デフォルトの名無しさん:2006/12/28(木) 11:56:55
>まともな社会生活を送っている者には
>クリスマス前に大掃除を終わらせるヒマなどない!

いかにも短絡的で,コミュニケーション能力低い感がにじみ出てるな.
これは本物の社内引き籠もりかもしれん.

277 :デフォルトの名無しさん:2006/12/28(木) 12:49:00
Zope関係者、自称初心者ときて次はヒキコモリ同士の抗争か。
なごやかな2006年だったな。

278 :デフォルトの名無しさん:2006/12/28(木) 16:17:55
ハハハ、こやつめ、ハハハ

279 :デフォルトの名無しさん:2006/12/28(木) 16:36:18
>>276
> これは本物の社内引き籠もりかもしれん.
就職してると思うなんて、随分過大評価するんだなw

280 :デフォルトの名無しさん:2006/12/28(木) 17:29:26
就職の話、掃除の話、低賃金の話はなどはそれぞれ適当な板・スレでやりましょう

281 :デフォルトの名無しさん:2006/12/28(木) 19:47:51
みんPyの作者に粘着してたZOPE関係者、最近見ないな。
「しっぱい」が売れなくて、のたれ死んだか(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

282 :デフォルトの名無しさん:2006/12/28(木) 21:22:43
サウンドデバイスドライバのオブジェクトを取得するにはどうすればいいの?
linuxやsunではaudioopモジュール等が用意されているみたいなんだけど、
win用が見当たらない。。
ちなみになるべくマルチプラットフォーム向けにと考えています。

283 :デフォルトの名無しさん:2006/12/28(木) 21:26:19
マルチプラットフォームで使える抽象化されたオーディオデバイス。
贅沢な時代になったものだな。
ついこの間まで日本中が「欲しがりません。勝つまでは。」と言っていたのに。

284 :デフォルトの名無しさん:2006/12/28(木) 21:30:56
まずプラットフォーム判別して、その後適材適所のモジュール使って
オブジェクト渡してやればいいかなーって思ってるんだけど。

285 :デフォルトの名無しさん:2006/12/28(木) 21:33:06
ぱいがめは使えないのかな?

286 :デフォルトの名無しさん:2006/12/28(木) 21:33:30
要はwdmオブジェクト取得したい。
教えてエロいひと

287 :デフォルトの名無しさん:2006/12/28(木) 21:38:50
>>282
俺はそっち方面はあんまり詳しくないけど、
そういうのは、Pygame を通して sdl を使うんじゃないの?
そんなことを聞いた覚えが。
Pygame とか python sdl とかでぐぐってみたら、
情報ひっかからないかな。

288 :デフォルトの名無しさん:2006/12/28(木) 22:16:36
ぐぐってみただけだが…。

SDLdoc 日本語翻訳プロジェクト
http://www.tacoworks.jp/software/SDLdoc-jp/
この10 にオーディオがあるね。
あと、
pygame入門
http://www.halb-katze.jp/pygt/index.html

初心者のための pygame ガイド
http://www.unixuser.org/~euske/doc/pygame/newbieguide-j.html

こんなとこかな。

289 :デフォルトの名無しさん:2006/12/28(木) 22:23:53
>>281
>「しっぱい」が売れなくて、のたれ死んだか(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

クラス定義にdefを使うと書いてあるクソ本が売れるわけがない(wwwwwwwwwwwww

290 :デフォルトの名無しさん:2006/12/28(木) 22:35:17
ビルトインのExceptionを継承しました。
try:
 raise DerivedException( "Exp" )
except Exception, E:
 print E.message:
で、結果が
>Exp

という風にしたいのですが、
DerivedExceptionのコンストラクタを呼ぶのを
Exception.__init__( "msg" )
とすると
TypeError: descriptor '__init__' requires a 'exceptions.Exception' object but received a 'str'
となります。
どうすればいいですか?

291 :デフォルトの名無しさん:2006/12/28(木) 22:41:12
覚え書きだけど
try:
raise DerivedException "Exp"
except Exception, E:
print E
ってな感じじゃなかったっけ?
>>285-288
試してみます。ありがとう

292 :デフォルトの名無しさん:2006/12/28(木) 22:43:42
x raise DerivedException "Exp"
o raise DerivedException, "Exp"

293 :デフォルトの名無しさん:2006/12/28(木) 23:35:22
raise Exception("hogehoge")
って一般的じゃない?

294 :デフォルトの名無しさん:2006/12/28(木) 23:51:19
>>289
>クラス定義にdefを使うと書いてあるクソ本

ttp://foma-zakki.cocolog-nifty.com/zakki/2006/12/python_books_py_1f47.html

ここに書いてあるな.

ttp://www.trirhino.com/books/ppyerrata

正誤表に載ってないと言うことは、
著者はガチでdefでクラスを定義しようと思ってるということか.
これはとんだクソ本だ(WWWWWW

295 :デフォルトの名無しさん:2006/12/28(木) 23:52:18
すまん、ただ俺がこの方法を良く使ってただけ。
>>293の方法では、たぶんこれじゃない?
class DerivedException (Exception):
def __init__ (self, msg):
Exception.__init__ (self, msg)


296 :デフォルトの名無しさん:2006/12/29(金) 00:05:10
>>282
自分はWin用にctypes使って、実処理はDLL作っている。
C/C++なら大量な情報がネットに転がっているんで作りやすい。
クロス環境は適当なconstant変数つくって分岐させるのが一番楽かと。

297 :デフォルトの名無しさん:2006/12/29(金) 00:12:44
>>282
http://audiere.sourceforge.net/

298 :デフォルトの名無しさん:2006/12/29(金) 03:04:34
>>295
出来ました。ありがとうございます。
selfを第一引数に持ってくるんですね・・・

299 :デフォルトの名無しさん:2006/12/29(金) 11:44:03
みんPyの作者に粘着してるZOPE関係者に粘着してるのはみんPy関係者ですか?

300 :デフォルトの名無しさん:2006/12/29(金) 12:07:24
みんPyの作者に粘着してるZOPE関係者に粘着してるのはみんPy関係者ですか?


301 :デフォルトの名無しさん:2006/12/29(金) 14:37:23
Pythonのインストール方法ってPythonディレクトリ内で
#./configure
#python setup.py install
でいいよな?

302 :デフォルトの名無しさん:2006/12/29(金) 14:41:30
./configure; make; make install だろ普通

303 :デフォルトの名無しさん:2006/12/29(金) 14:43:03
./configure && make && sudo make install だろ普通

304 :デフォルトの名無しさん:2006/12/29(金) 15:25:40
インストーラをダブルクリックだろ、普通w

305 :デフォルトの名無しさん:2006/12/29(金) 16:06:04
python-2.5-macosx.dmg をダブルクリックかな。


306 :デフォルトの名無しさん:2006/12/29(金) 16:06:24
>>302-303
thx.

_tkinter moduleの有効化ってどうすんだ?
Modules/Setupの_tkinter moduleあたりをUncommentするんじゃないの?
これした後に make するとものすごいエラーが出るんだけど。

./Modules/_tkinter.c:2974: 警告: スカラー初期化子内の要素が多すぎます
./Modules/_tkinter.c:2974: 警告: (near initialization for ‘moduleMethods’)
./Modules/_tkinter.c:2995: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
./Modules/_tkinter.c:2990: error: declaration for parameter ‘event_tstate’ but no such parameter

こういうのがいっぱい。
最後一行に
./Modules/_tkinter.c:3165: error: expected ‘{’ at end of input



307 :デフォルトの名無しさん:2006/12/29(金) 18:17:09
./configure --with-tkinter
だろ多分

308 :デフォルトの名無しさん:2006/12/29(金) 18:49:00
クソ本作者は粘着カキコなんてしてないで
ちゃんと大掃除しろよ!!

309 :デフォルトの名無しさん:2006/12/29(金) 19:38:25
はしゃぐなよw

310 :デフォルトの名無しさん:2006/12/29(金) 21:22:45
lista = ('a','b','c')
listb = ('1','2','3')
listc = ('A','B','C')
def go(amax):
for i in lista:
for j in listb:
rid = str(amax) + str(i) + str(j)
print "%s" % rid

def ge(amax):
for i in listc:
print "%s start" % (str(amax) + i)
go(str(amax)+i)
print "end"

↑をa.pyで保存して、a.ge(0)で実行で、

0Aa1
0Aa2
.
.
.
0Cc3までいく途中、例えば0Bb1でエラーで止ってしまった場合、次の0Bb2から
始めるにはどうしたら良いでしょうか?lista[開始位置]、listb[開始位置]と
するしかないのでしょうか。ご教示お願いします。

311 :デフォルトの名無しさん:2006/12/29(金) 21:34:15
どこまで終わったかを覚えておいて
途中から再スタートできるようなプログラムにすればいいんじゃね?

312 :デフォルトの名無しさん:2006/12/30(土) 02:31:40
失敗しても再チャレンジでき(ry

313 :310:2006/12/30(土) 06:22:40
よく解りません。もう少しヒント下さいっm(_ _)m

314 :デフォルトの名無しさん:2006/12/30(土) 09:38:57
>>310
ループの中に置く continue と、
例外処理( try, except, raise )あたりを調べてみるといいよ。
continue ならこんな感じ

list_a = [1, 2, 3, 4, 5]
for elem in list_a:
  if elem == 3:
    continue
  print elem,

1 2 4 5

315 :デフォルトの名無しさん:2006/12/30(土) 10:48:14
Pythonで書かれたWinnyのクローンがありますが
http://pyny.sourceforge.net/
GUIが実装されて無いんですな。
wxButtonボタンで検索、wxListCtrlで結果表示するだけの簡単なものって作れるかしら?

316 :デフォルトの名無しさん:2006/12/30(土) 13:17:31
トリプルクォートで括ったときに、

def foo():
 s = """
Hello
World
"""

こんな感じでインデックスが崩れるのはどうにかならないんですか?

317 :デフォルトの名無しさん:2006/12/30(土) 17:24:05
>>316
何のインデクス?
てかそのコード片にインデクスは使われていない
ように見えるのだが。

318 :316:2006/12/30(土) 17:26:26
ああ、インデクスじゃなくてインデントか。
見間違えた。
勘違いスマソ。

319 :316:2006/12/30(土) 18:07:17
ごめんなさい、インデントとインデックス書き間違えました。

要はトリプルクォートでくくった文字列で改行したときに、
行の先頭に文字が来るのが不細工で嫌なのです。
文字列もインデントで整形したいなと。

320 :デフォルトの名無しさん:2006/12/30(土) 18:21:25
画面に表示するときに、一行目以外は\tを一個取り除けばいいんじゃね
俺はこっちのほうが不細工で嫌だけど

321 :デフォルトの名無しさん:2006/12/30(土) 18:48:04
>>320
確かhelp()とかもdocstring出力するときに
そんな感じでやってるよね。

というわけでトリプルクウオート内では
インデント入れて書いて、出力時に整形に一票。

322 :デフォルトの名無しさん:2006/12/30(土) 20:19:33
タブ一個取り除いても変数定義分ずれるんだな
結構面倒くさくないか
トリプルクォート使うときは毎回一行目は改行することにして、
一行目をとっぱらうとか?

323 :316:2006/12/30(土) 20:39:01
特にこれといった良い方法はないんですね。
取り合えず現状のままで我慢しときます。
皆さんどうもありがとうございます。

324 :デフォルトの名無しさん:2006/12/30(土) 21:50:40
"""\
foo
bar
"""

325 :310:2006/12/30(土) 22:22:16
>>314
ありがとうございます。実はlista,b,cと0を組み合わせてリストの一つ一つを
パースしてるのですが、ADSLの回線切れで以下のエラーが起こります。
urllib2.HTTPError:HTTPerror 502: Cannot Connect

回線が繋がるまで待機するか、処理を繰り返すか、何か方法がないでしょうか。

326 :デフォルトの名無しさん:2006/12/30(土) 23:03:11
エラーの時の挙動をどうするか聞かれても。。。 「仕様書を読め」「自分で決めろ」としか。。。

327 :310:2006/12/30(土) 23:34:31
>>326
という事は、回線が切れても繰り返すか待機するかの処理ができるという事
ですね。頑張ってみます。

328 :デフォルトの名無しさん:2006/12/30(土) 23:51:30
slimeパターンを開発しました

class Slime:
  def split( self, *args, **keys ):
    return self.__class__(*args, **keys)

class Xxxx(Slime):
  blah...

x = Xxxx(*args,**keys)
...
...
...
y = x.split(*args,**keys)


329 :デフォルトの名無しさん:2006/12/31(日) 00:24:34
>316-324 を読んで
マニュアルとにらめっこしつつ

def triplequotes(cut
txt):
  ls = []
  for s in txt.splitlines():
    ls.append( s[cut:] )
  return "\n".join( ls[1:] )

…というコードを書いてみた。
あんまり自信ないけど、コレで良いのかな?
他言語は触ったりするけど
Python の作法に中々慣れないよ〜

330 :329:2006/12/31(日) 00:25:51
やっちまったorz
iMonaの半角カンマ→改行の仕様忘れてました…

331 :デフォルトの名無しさん:2006/12/31(日) 12:26:21
wxPythonでGUIプログラミングを始めようと思っています。
XRCedでwxTextCtrlを置いて、そのfont指定を有効にしてプレビューすると
12:16:47: PyAssertionError: C++ assertion "wxAssertFailure" failed in ../src/common/string.cpp(1070): Error converting multi-byte string to a wide-character string
12:16:47: Error loading resource
と表示され中止されてしまいます。
またfont指定しないでプレビューすると、実際に日本語を入力しても文字が豆腐になってしまいます。
日本語が一切表示できなくて非常に困っています。どなたかお助けください!

こちらの環境
Mac OS X 10.4.8
Python 2.3.5(プリインストール)
wxPython 2.5.3.1(プリインストール)

332 :デフォルトの名無しさん:2006/12/31(日) 13:01:43
winXPでpython使ってます。import resource とするとそんなパッケージはないと
エラーメッセージがでてくるのですがwinXP用のresourceはどこかに落ちてないで
しょうか?

333 :デフォルトの名無しさん:2006/12/31(日) 13:03:11
>>332
あたらしいバージョンのPythonに付属してくるのではないでしょうか?

334 :デフォルトの名無しさん:2006/12/31(日) 15:14:06
resourceのヘルプに"Availability: Unix."と書いてあるじゃないか

335 :デフォルトの名無しさん:2006/12/31(日) 22:05:09
Unicode版のwxPythonをインストール。

336 :デフォルトの名無しさん:2006/12/31(日) 22:07:24
ttp://d.hatena.ne.jp/chaiyya/20061231/1167540949

337 :デフォルトの名無しさん:2007/01/01(月) 00:16:10
>>331

あの、掘り炬燵の方がいいよ。
経験上。

338 :デフォルトの名無しさん:2007/01/01(月) 00:31:38
>>336
19ぐらいでしょ。そういう楽しいノリのまま大人になってほしい。

339 :デフォルトの名無しさん:2007/01/01(月) 00:59:43
perlで挫折するか普通?
ま、どうでもいいけど。

340 :デフォルトの名無しさん:2007/01/01(月) 05:00:25
ほっておいてよれ

341 :デフォルトの名無しさん:2007/01/01(月) 05:01:10
やれ

342 :デフォルトの名無しさん:2007/01/01(月) 05:55:27
>339
私はPerlやめてPythonに移ろうか考え中
長いコード書こうとして挫折したよ

343 :デフォルトの名無しさん:2007/01/01(月) 07:39:43
言語習得で「挫折」って、俺的にはよーわからん現象なんだよな。
他人との競争に負けたとか、経済的に続かないとかいう理由の挫折は人生に多々あるが、
やりたくて始めて、今でも好きなだけやってりゃいいものを勝手にやめて挫折って、
なによそれ、みたいな。

「やれる自分を夢想する」のが好きなだけであって、本当はやりたくないんじゃないかな。
プログラミングを。
プログラミングが好きなら、オナニーをやめるのと同じくらい学習やめるのも困難だと思うが。

344 :デフォルトの名無しさん:2007/01/01(月) 07:46:44
Perlで長いコードを書くには、
全部をサブルーチンで組み立てたらいいよ。
(要するに、C言語のつもりになって、メイン部のサブルーチンを設け、
 そこから呼び出すサブルーチンだけでプログラム全体を組む。
 そのとき、変数はグローバル変数は一切使わず、ローカル変数 my のみを使う
 というやり方。いわゆる構造化プログラミングだけど)

Pythonへ移行するなら、その前にJavaをちょっとだけかじった方がいいよ。
というのも、現状ではPythonの書籍だけではオブジェクト指向の概念を
理解するのは難しいから。(Python自体はオブジェクト指向でなくても組めるけど)

Javaをちょっとだけやって、そのとき、インプリメントだとエクステンド
だのえらい面倒だなと思ったら、Pythonを使い始めたらいいと思う。
オブジェクト指向してても、オブジェクトを直にコードに埋め込んだりするなら、
構造化とさして変わるとも思えないし、
そこまでやらないなら、Python使う意味も薄いと思うから。

345 :デフォルトの名無しさん:2007/01/01(月) 08:44:57
数学で「挫折」が理解できない人もいるだろうね

どうでもいいが>>336は12くらいだろ…

346 :デフォルトの名無しさん:2007/01/01(月) 09:50:16
>>336 の場合、
よく読んでみると、プログラムが目的なのではなくて、
エロサイトについての情報収集をしたい、
それには plagger というツールが便利のようだ。
それはperl で書かれている。
だからperl をやってみた、という流れみたいだよ。

その調子だと、
Python やってみた。さっぱりエロサイトの情報が
集められない。つかえない、という結論になるような。

すべての価値基準が、エロサイトの情報収集にどれだけ
役立つかに基づいているらしい。

いちおう >>336 になり代わって僕が聞いておこう。

数日前からPythonを使い始めました。
どうやったら、Pythonでエロサイトの情報が集められるか分りません。
誰か教えてください。よろ。

347 :デフォルトの名無しさん:2007/01/01(月) 09:54:40
>>337
掘り炬燵とは?何かの例えですか?

348 :デフォルトの名無しさん:2007/01/01(月) 10:43:56
えろサイト収集ならどう見てもperlだろ。
pythonでえろサイト用スパイダーのフレームワークでも書くのか?
urllib/2はバグだらけでまともに使えるのはhttplibかsocketだけだぞ。

349 :デフォルトの名無しさん:2007/01/01(月) 11:31:19
え?!
バグだらけなの?

350 :デフォルトの名無しさん:2007/01/01(月) 11:31:23
ぶっちゃけ zsh + wget でほとんどは片付くと思うのだが... > エロツール

perl だと謎の偽装ツール系も対処するライブラリとかがあるのかな?

だいぶスレ違いになってきたか…

351 :デフォルトの名無しさん:2007/01/01(月) 12:44:36
>>336
クローズドソースでしか書かない著作権馬鹿より数倍まし

352 :デフォルトの名無しさん:2007/01/01(月) 13:24:04
>>336-351
っBeautifulSoup


353 :デフォルトの名無しさん:2007/01/01(月) 13:25:44
>>350
いや、perlの連中の間では、Plaggerとかいうのを使って、
こんなことをするのが流行っているらしいんだ。
(スレ違いではあるかもしれんが)

Googleで「はらへった」と検索するとピザが届くようにするまで
http://e8y.net/blog/2006/07/25/p126.html

354 :デフォルトの名無しさん:2007/01/01(月) 13:54:47
>>350
curlで片付くぜ


355 :デフォルトの名無しさん:2007/01/01(月) 16:04:15
>>353
それ読んでも、Plaggerに一向に魅かれないのは
俺の感覚が鈍っているのか、そこの例がイマイチなのか、
どっちなのだろうか。

356 :デフォルトの名無しさん:2007/01/01(月) 17:22:30
ちゃんと 「エロい例」 で示してくれないと駄目だよな

357 :デフォルトの名無しさん:2007/01/01(月) 17:24:59
>354
curl ってなんか単純に url な jpg を持ってくる
っていうのがよくわからんかった記憶が。

一々 -o 指定か stdout に吐くしかなくて...

wget に対するアドバンテージって何なの?


358 :デフォルトの名無しさん:2007/01/01(月) 17:32:54
>>356
エロい例
ttp://yusukebe.com/archives/06/08/24/194057.html
ttp://yusukebe.com/archives/06/10/21/201644.html

エロくないけどなんとなく面白い
ttp://yusukebe.com/archives/06/12/03/230402.html

しかし、情報収集ぐらい手動でやりたい気もする・・・

359 :デフォルトの名無しさん:2007/01/01(月) 19:08:46
>>357
zshとか使わなくても連番を展開できる、などなど
curl http://www.hoge.com/hoge[012-125].jpg -O


360 :デフォルトの名無しさん:2007/01/01(月) 19:58:22
perlはそこそこやるんですが、pythonに興味持って、
いま勉強中なんだけど、もしかして無駄?

361 :デフォルトの名無しさん:2007/01/01(月) 20:24:35
curlってIrvineみたいだな

362 :デフォルトの名無しさん:2007/01/01(月) 21:45:59
逆っす

363 :デフォルトの名無しさん:2007/01/01(月) 21:47:41
>>360
今ならPerlやるよりPython覚えたほうがいいよ
Pythonのほうが圧倒的にプログラム書きやすい

364 :デフォルトの名無しさん:2007/01/01(月) 23:27:47
> 今ならPerlやるよりPython覚えたほうがいいよ
> Pythonのほうが圧倒的にプログラム書きやすい

そうなんだ!
書きやすいって、たとえばどんなかんじで書きやすいの?


365 :デフォルトの名無しさん:2007/01/01(月) 23:46:32
俺の場合、仕事でPython使ってるけど
書いてて楽しいよ。

366 :デフォルトの名無しさん:2007/01/02(火) 00:02:23
いまからやるならpythonよりrubyだよ

367 :デフォルトの名無しさん:2007/01/02(火) 00:09:58
Ruby遅いんでPythonに乗り換えた

368 :デフォルトの名無しさん:2007/01/02(火) 04:27:14
実行が早いだけなら、今でもperlに見所あるんだろうかね

369 :デフォルトの名無しさん:2007/01/02(火) 08:54:08
>>368
構造化プログラミングまででいいんなら、
Perl に不足するところはないと思うけどねぇ。
だいたい、総じてPython の方が書きやすいといっても、
正規表現とかPerl の方がやりやすいでしょ?
出来合いのモジュールも多いし、とっつきやすいし。
ただ、構造化プログラミングでは役不足で、
オブジェクト指向の助けが必要だと感じるなら、
やっぱりPython の採用を考えるべきだと思う。
ていうか、Perl のオブジェクト指向がも少し使える
ものだったらなぁ。
Java よりややこしいのでは、スクリプトでやる意味がないもん。

370 :デフォルトの名無しさん:2007/01/02(火) 09:29:12
別に自分(達)内ルールをしっかり決めてやればpythonのオブジェクト指向も
perlのオブジェクト指向も大して出来ることは変わらないと思う。
組み込みメソッドとかの関係で気分的な差はそこそこあるかもしれないけど
本質的な表現力の差は無いと思う。

371 :デフォルトの名無しさん:2007/01/02(火) 10:14:08
Perl の場合、単純なクラスの作成でも、ハッシュのリファレンスとか
使ったりして、もうそれだけで疲れ果てちゃうんだよね。
以下は、Python でのクラス作成の雛形めいたものだけど、
シンプルなキーワードと普通の関数だけで作れるのが分ると思う。

class my_class(object):
def __init__(self, v):
self.__value = v
# 加算
def add(self, v):
self.__value += v
# 減算
def sub(self, v):
self.__value -= v
def set_value(self, v):
self.__value = v
def get_value(self):
return self.__value


obj1 = my_class(1000)
obj2 = my_class(1000)

obj1.add(10)
obj2.sub(30)

print obj1.get_value(), obj2.get_value()

(実行結果)
1010 970

372 :371:2007/01/02(火) 10:26:54
見にくかったので、もう一度、Python のクラス作成の雛形ね。

class my_class(object):
    def __init__(self, v):
        self.__value = v
    # 加算
    def add(self, v):
        self.__value += v
    # 減算
    def sub(self, v):
        self.__value -= v
    def set_value(self, v):
        self.__value = v
    def get_value(self):
        return self.__value


373 :デフォルトの名無しさん:2007/01/02(火) 11:33:45
ま た お っ ぱ い か !

374 :デフォルトの名無しさん:2007/01/02(火) 11:34:05
そのクラスは単なる変数w

375 :373:2007/01/02(火) 11:34:18
うわあ、壮絶な誤爆をしてしまった・・・・・・
めちゃくちゃ恥ずかしいorz

376 :デフォルトの名無しさん:2007/01/02(火) 11:37:25
いや、おっぱいとぱいそんは切っても切れないので、あながち誤爆でもないぞ!気を落とすな!

377 :デフォルトの名無しさん:2007/01/02(火) 11:39:13
>>373
誤爆に見えなかった

378 :デフォルトの名無しさん:2007/01/02(火) 11:57:42
>370
>別に自分(達)内ルールをしっかり決めてやれば

やっぱりそういう前提条件が付くということこそが
致命的な弱点だと思う > perl

379 :デフォルトの名無しさん:2007/01/02(火) 13:15:42
>>370
Perl の場合、クラスの作成方法それ自体が複数あって、
自分が知らんやり方されたら、それが正しいのやら間違っているのやら
さえ、よく分からなくなってしまう。

それに、ハッシュのリファレンスとか駆使しなきゃいけないから、
単なる特殊記号(バックスラッシュとか)がすごい大きな意味を
持っていて、バグッたときとか、なにが起きているのか判断するのが
容易じゃない。

そもそも、クラスがなんで、コンストラクタがなんで、
オブジェクトやインスタンス、
フィールドやメソッドがなにを意味していて、
オブジェクト指向がどういうことなのか、ということを
理解している人がほとんどいないように見える。

というのも無理がなくて、
Perl でオブジェクト指向するのは、難しすぎるんだって。
(まー、Python でもオブジェクト指向分かってない人はいそうだけど。
 結局、Java やって覚えるのが一番簡単だよな)

自分もPerl6 は待っていたんだよ。でも、もう待ちきれないじゃん。

>>374
いいんだよ。サンプルなんだから。

380 :デフォルトの名無しさん:2007/01/02(火) 13:19:46
Perlはやっぱりちょっとしたツール書く方が向いてる気がするよ。
長いコード書くとぐちゃぐちゃになり易い。
ちょっとしたツールなら慣れりゃ高速で書けるし。

Rubyは俺使ってたし今も使うんだが
あれはモジュールとクラスを大量に作るには
悪くない言語だけど行く末がすっげぇ不安って感じ。
matzが痛いし暴走癖あるし儲も痛いし。

んで今はPythonに挑戦中。
まだあんまり解らんが案外細かいところに手が届くと思った。
(Rubyは結構細かいところが抜けてるから)

381 :デフォルトの名無しさん:2007/01/02(火) 13:56:48
Perlは十徳ナイフみたいなもんだよな
簡単なことは器用にこなせるけど、
それで家を建てるとなるとややこしい

382 :デフォルトの名無しさん:2007/01/02(火) 14:47:31
>>379
デバッグが怖いのは同意。
でかいperlコードのデバッグとか、もう2度とやりたくない。
けど、だからといって「perlには○○が出来ない」というのは違うと思う。

perl6はちゃんと今週も進化してる模様・・・
http://pugs.blogs.com/

なんとなく、出てすぐはpythonよりちょっと上をいってそうな気がする
けど、pythonチーム頭よすぎなのでw、すぐいいとこ取りすると思うけど・・・w

383 :デフォルトの名無しさん:2007/01/02(火) 15:43:31
「役不足」

384 :デフォルトの名無しさん:2007/01/02(火) 15:57:32
Pythonは使っててケチつけたくなる点が他より少ないから
コード書いてて気分がいいね。

385 :デフォルトの名無しさん:2007/01/02(火) 16:03:56
>>382
Perl6 vs Python ていう話は、Perl6 が出ないと、
なんともいえないでしょ。

ただ、はたから見ていて、Perl6 は迷宮に迷い込んでいるように
見えるよ。そもそも、仕様は確定してから作業しないと、
時間ばかりかかるように思う。

それに、いまどうするかというのが目の前の問題だからさ。
出ていないPerl6 をいつまで待てるのか。
一方で、一貫した作法でオブジェクト指向を扱える
Python がすでにあってだよ。

待てる人はPerl6 を待てばいいけど、ならPython を
選ぼうという人も多いと思う。

386 :Perl6知らないけど:2007/01/02(火) 17:16:50
python 使いから見てそんなに誉める余地のある
「Perl6」って既に 「perl」 じゃねーよな

387 :デフォルトの名無しさん:2007/01/02(火) 17:36:44
pythonって下位互換性みたいなのはどうなのかな?

テンプレートエンジンのKidとか使って何か勉強してみたいな
と思ってるんだけど石橋を叩いてここは2.5ではなくて
2.4をインストールしとくべきかな…2.5はstableって書いて
あるから2.5でも大丈夫な気もするんだけど…IronPythonの
チュートリアルとかみると2.4とか入れてるだよね…

IronpythonとかKidとか使って初心者がpythonを一から勉強
するなら2.4のほうがいいかな?

388 :デフォルトの名無しさん:2007/01/02(火) 19:13:11
Porting to Python 2.5
http://docs.python.org/whatsnew/porting.html

389 :331:2007/01/02(火) 20:06:50
>>335
お返事ありがとうございます。

Unicode版のPythonをインストールするだけで本当に解決するのですか?
というのもMac OS X 10.4にはインストールできるPython 2.3 Unicode版バイナリが無いためです。

390 :デフォルトの名無しさん:2007/01/02(火) 21:02:52
>>389
Unicode版のwxPython
        ~~

391 :デフォルトの名無しさん:2007/01/02(火) 22:46:28
さりげなくKidの宣伝をしたい奴がいるようだ

392 :331:2007/01/02(火) 22:58:39
>>390
ありがとうございます。つまりMac OS X 10.4.8に標準装備されているwxPythonとPythonは
なんと!「Unicode対応ビルドではない」ということでしょうか?
それはOSXが積極的にUnicodeに対応してきた歴史からみると変ですね。

現在インストールされている
Python 2.3.5(プリインストール)
wxPython 2.5.3.1(プリインストール)
がUnicode対応版かそうでないか、確認する方法は無いものでしょうか?

度々スレを汚してしまいすみませんが、よろしくお願いいたします。

393 :デフォルトの名無しさん:2007/01/02(火) 23:47:17
最近else:の代わりにelif 1:と書くのがマイブーム(チラ裏

394 :デフォルトの名無しさん:2007/01/03(水) 00:46:16
>>392
>>> import wx
>>> print wx.PlatformInfo
('__WXMSW__', 'wxMSW', 'unicode', 'wx-assertions-on', 'SWIG-1.3.27')

'unicode' が含まれていれば Unicode 対応ビルドです。

あと、文字がお豆腐になるならなるで最小限の再現コードを書いてくれると
答えやすいです( GUI なので厳しいかもですが)。

395 :331:2007/01/03(水) 01:06:04
>>392

>>> import wx
>>> print wx.PlatformInfo
('__WXMAC__', 'wxMac', 'unicode', 'wx-assertions-on')

でした!標準でUnicode対応していたんですね。wxPython側は。
最小限のコードですが、表示されたtextctrlに日本語を入力するとまんまと豆腐です。

import wx
app=wx.App()
frame=wx.Frame(None, -1)
text=wx.TextCtrl(frame)
frame.Show(True)
app.SetTopWindow(frame)
app.MainLoop()

396 :394:2007/01/03(水) 01:07:06
>>392
XRCed がどういうものか知らずに適当レスしました。すいません。
XML tree の encoding を utf-8 にしたらどうでしょうか。

397 :デフォルトの名無しさん:2007/01/03(水) 01:09:32
>393
独りでやる時だけにしてくれよw

398 :デフォルトの名無しさん:2007/01/03(水) 04:44:59
今にPerl6が出るぞ!
って3年前から言ってるじゃんw

399 :デフォルトの名無しさん:2007/01/03(水) 09:03:52
>398
それはラリーがむごもご

400 :デフォルトの名無しさん:2007/01/03(水) 10:03:46
>>395
僕はmacもwxもよく分からないけど、以下のページの情報は参考にならないかな。
http://ymasuda.jp/python/wxpython/index.html

401 :331:2007/01/03(水) 11:39:45
>>396
ありがとうございます。確認したところ既にUTF-8にしてありました。
XRCedは無視してかまわないので、XRCedを使わない先ほどのサンプルコードを起動して、
空白の入力欄に日本語を入力すると豆腐と化します。

>>400
ありがとうございます。そのページは確認しております。

402 :デフォルトの名無しさん:2007/01/03(水) 12:59:34
このページの人は、MacOSX 10.4.8 で wxPython2.8.0.1 を使って
問題なく日本語の表示を行っているねぇ。
http://www.harukaze.net/~haruka/wxpython/index.html

403 :331:2007/01/03(水) 13:20:45
>>402
ありがとうございました。リンク先の環境を再現することで無事解決しました。
プリインストールのPythonとwxPythonは一応Unicode対応してはいるものの
実際の表示は化けるビルドなんですね。

404 :デフォルトの名無しさん:2007/01/03(水) 13:34:29
b = x
a += b

↓↓↓

a += b = x

405 :デフォルトの名無しさん:2007/01/03(水) 15:01:38
404 not found

406 :デフォルトの名無しさん:2007/01/04(木) 10:59:01
クラス内でインスタンス変数にアクセスするときは絶対selfを付けなくちゃだめなの?
いちいちself付けるのめんどくさい・・・

407 :デフォルトの名無しさん:2007/01/04(木) 11:04:02
Windows 上で、ソースファイルを UTF-8 にしていて、
print u'あいう'
とすると、コンソールにちゃんと表示されるのに、
sys.stderr.write(u'あいう')
とすると、文字化けして表示されるのは何で?
どうしたら文字化けせずに表示できる?

408 :デフォルトの名無しさん:2007/01/04(木) 11:20:57
ttp://webos-goodies.jp/archives/51019710.html
これ面白いね。
C:\Program Files\Apache Group\Apache2\htdocs>ruby delichio.rb
delichio.rb:8: uninitialized constant JsonParser (NameError)
ってなって漏れはっヘタレだから実行できなかったけど…orz

409 :デフォルトの名無しさん:2007/01/04(木) 11:26:56
>>406
めんどくさいって、もしかして入力補完とか使ってないのか?
(エディタはなに?)

そもそも、クラス作成とかの定型作業なら、わざわざ打つ部分より
コピペしてる部分の方が多いと思うんだが。

410 :デフォルトの名無しさん:2007/01/04(木) 11:47:46
>>407
コンソールウィンドウの環境設定の表示用エンコーディングと
Pythonの入出力のデフォルトエンコーディングを一致させる

411 :デフォルトの名無しさん:2007/01/04(木) 11:50:20
それと
ソースコードのテキストのエンコーディングと
ソースコード行頭のエンコーディング宣言を一致させる

Pythonではその4つを正しく設定しておかないと文字化けしてしまいます。

412 :デフォルトの名無しさん:2007/01/04(木) 11:51:24
> クラス内でインスタンス変数にアクセスするときは絶対selfを付けなくちゃだめなの?
つけなくちゃだめです。以上。

413 :デフォルトの名無しさん:2007/01/04(木) 11:52:40
>めんどくさいって、もしかして入力補完とか使ってないのか?
Pythonの入力補完のあるエディタってどんなのがあるの?

414 :デフォルトの名無しさん:2007/01/04(木) 11:55:21
>>408
上のコードを jsonparser.rb として保存
下のコードに
require 'jsonparser'

415 :デフォルトの名無しさん:2007/01/04(木) 11:55:55
>>413
僕の場合は、サクラエディタでキーワードが少ないから、
自分で勝手にキーワード登録増やして使ってるけど。

416 :デフォルトの名無しさん:2007/01/04(木) 11:57:28
self.って打つの、補完するほど面倒か?

417 :デフォルトの名無しさん:2007/01/04(木) 12:39:35
っていうか補完以前に クラス変数かインスタンス変数かは
プログラマが意識して決めることなんだから
サボりようがないよな?

418 :デフォルトの名無しさん:2007/01/04(木) 12:49:18
>>415
俺はSyntaxHighlighterのキーワードが充実してるみたいだから
それを参考にしてキーワード増やして使おうと思ってる

419 :デフォルトの名無しさん:2007/01/04(木) 13:47:11
rubyなら@で澄むのにっていう話じゃないの?<selfめんど
自分もはじめそう思った。

420 :デフォルトの名無しさん:2007/01/04(木) 13:51:59
自分自分自分自分自分自分自分自分自分自分自分自分自分

421 :デフォルトの名無しさん:2007/01/04(木) 15:25:35
>>412以降self談義している人は皆微分積分。

422 :デフォルトの名無しさん:2007/01/04(木) 15:28:37
>>418
組み込み関数とかだけなら、これで得られるけどね。
import __builtin__
dir(__builtin__)

あと、必要なキーワード、一気に得られる方法があるといいのだけれど。
自分はちまちま、気のつくたびに登録してる。

423 :デフォルトの名無しさん:2007/01/04(木) 16:45:10
>>422
ん、\SyntaxHighlighter_1.4.1\Scripts\のshBrushPython.jsに
キーワードなら書いてあるからそれをコピペすればおkだよ

shBrushPython.js(登録キーワード一覧)->shCore.js(textaream->listタグ+hilight化エンジン)
->\Styles\SyntaxHighlighter.cssで下記のtagを色づけ

'keyword''builtins''magicmethods''exceptions''types''commonlibs'

424 :デフォルトの名無しさん:2007/01/04(木) 16:58:19
あー、これね。
http://www.dreamprojections.com/syntaxhighlighter/
うーむ。よさげなんだが、英語がわけわか… orz

425 :デフォルトの名無しさん:2007/01/04(木) 17:10:10
.py書けるのに英語わからないとかありえないから

426 :デフォルトの名無しさん:2007/01/04(木) 17:13:44
.py
ドットパイ
ドッパイ
オッパイ

427 :デフォルトの名無しさん:2007/01/04(木) 17:48:52
>424
Exciteでも使って頑張るヨロシ

>425
日本語のチュートリアルある以上
多少の.py書く程度なら出来るだろw

428 :デフォルトの名無しさん:2007/01/04(木) 18:59:16
# tateyomi.py
import re
import sys
import urllib

threadURL = "http://pc8.2ch.net/test/read.cgi/tech/1166050674/28"
url_parts = threadURL.split('/')

host, test, cgi, category, dat_no, res_no = url_parts[2:8]
dat_url = 'http://%s/%s/dat/%s.dat' % (host, category, dat_no)
lines = urllib.urlopen(dat_url).readlines()

# 本文の抽出 ' <> 本文 <> '
body = lines[int(res_no) - 1].split(' <> ')[1].decode('sjis')
# リンクタグのカット
body = re.sub(r'<.*?>.*?</.*?>', '', body)
# 行ごとに分割してその一文字目を出力
for line in body.split(' <br>'):
  print line[1]

ちょっと質問してみる

429 :デフォルトの名無しさん:2007/01/04(木) 19:06:52
続き...
>>37のが面白そうだったのですこし変えて
実行してみたら
#IndexError: string index out of range
となり上手くいきませんでした…orz

2chのdatの構造は
<>_行_<br>_
_行_<br>_
_行_<br>_
_行_<>
のようなので'<br>_'ではなくて'_<br>'で分割しても
上手くゆくと思うのですけれども上手く分割できず
理由がわからない…orz

430 :デフォルトの名無しさん:2007/01/04(木) 19:15:55
line[1]だろ。常識的に考えて・・・

431 :デフォルトの名無しさん:2007/01/04(木) 19:22:34
空行の存在を忘れてるようだ

432 :デフォルトの名無しさん:2007/01/04(木) 19:35:14
>>430
すみません張り間違えましたline[0]です…orz

>>431
'<br>_'ではなくて'_<br>'でも

<>_行_<br>_
_行_<br>_
_行_<br>_
_<br>_
_行_<>
が['_行_', '_行_', '_行_', '', '_行_']と同じように
分割されるように思うのですけれども…よくわからない…orz

433 :デフォルトの名無しさん:2007/01/04(木) 19:44:46
自己解決しましたお騒がせしてすみませんでした

<br>_の場合
['_行_', '_行_', '_行_', '_', '_行_']
_<br>の場合
['_行', '__行', '__行', '__行_', ''] <- 5つ目の要素が空となりline[0]で出力しようとするとerrorとなる


434 :デフォルトの名無しさん:2007/01/04(木) 20:00:28
某3835
> 2ch で聞こうと思ったのですが、アクセスできませんでした。人大杉と出て
> しまいます。

URL が変わったからかな。
古い URL にアクセスすると http://www2.2ch.net/live.html に飛ばされる。

ってここに書いても意味ない罠。

435 :デフォルトの名無しさん:2007/01/04(木) 20:36:26
>>421
トン
やっぱりそうですか・・・

436 :デフォルトの名無しさん:2007/01/04(木) 20:45:16
hoge = 0 # 取り得る値に関する説明や注意

pydoc で変数の説明を表示したいんだけど
書き方が分からない


437 :デフォルトの名無しさん:2007/01/04(木) 21:01:20
<>_
行_<br>_
行_<br>_
行_<br>_
_<br>_

_<>

<br>_の場合
['行_', '行_', '行_', '_', '行_']

_<br>の場合
['行', '_行', '_行', '_', '_行']

<br>の場合
['行_', '_行_', '_行_', '__', '_行']

□□□_□ 出力できる // □は2バイト _ は1バイト
□____ #IndexError: string index out of range
□____ #IndexError: string index out of range

なんか間違えてたみたいなので訂正して置く

438 :デフォルトの名無しさん:2007/01/04(木) 21:01:35
>>436
モジュール、クラス定義、または関数(メソッド)定義の最初に文字列を置いてその中に書く。
例えば pydoc.py の先頭とか pydoc モジュール内の関数の定義とかを見てみりん。

439 :デフォルトの名無しさん:2007/01/04(木) 21:12:56
いやいやいや、モジュールの変数ね
DATA セクションに表示される項目のところ


440 :デフォルトの名無しさん:2007/01/04(木) 22:29:15
インスタンスごとに doc を保持する仕組みがないと
pydoc 使うのは無理か。

doyxgen がいつの間にやら python に対応してたので
こっち使うことにするよ。


441 :デフォルトの名無しさん:2007/01/04(木) 22:51:55
意味が分らん… orz
インスタンスごとに、フィールド・メンバーの
解説をいろいろ書き分けて書くのん? いや、いいけど…

442 :デフォルトの名無しさん:2007/01/04(木) 23:31:52
class node:
  def __init__(self, id):
  self.id = id

l = [node(1), node(2), node(3)]
print node(1) in l

これ実行するとFalseになるんですがnodeクラスのidが含まれているときにTrueを返すよい方法はないでしょうか?
contain(id, list)
というlの各要素を順番に調べてidと等しいか調べる関数を自分で作ればよいと思うのですが効率的にinと比較してどうなんでしょうか?
ちなみにlistの要素数はものすごく大きいです。

443 :デフォルトの名無しさん:2007/01/04(木) 23:41:38
実態参照してるからFalseになる罠。
idが一意なら、ListやめてDictionaryにしたら?

444 :デフォルトの名無しさん:2007/01/04(木) 23:59:12
>>> class node(object):
... def __init__(self, id):
... self.id = id
...
>>> n1 = node(1)
>>> n2 = node(2)
>>> n3 = node(3)
>>>
>>> l = [n1, n2, n3]
>>> print n1 in l
True


445 :デフォルトの名無しさん:2007/01/05(金) 00:02:12
__eq__ と __ne__ を定義して id を比較


446 :デフォルトの名無しさん:2007/01/05(金) 00:12:06
>>443,444,445
アドバイスありがとうございます。

>>443
順番が重要なのでDictionaryはだめなんです・・・
>>444
keyで比較したかったので・・・

>>445
下のように__eq__を実装してできました。inも__eq__で実装されてるみたいですね。

class node:
 def __init__(self, id):
 self.id = id

 def __eq__(self, other):
  return self.id == other.id

l = [node(1), node(2), node(3)]
print node(1) in l



447 :デフォルトの名無しさん:2007/01/05(金) 00:33:55
順番が重要ってのは、ランダムアクセスしたいってこと?それとも最初から
順番にアクセスできればいいわけ?

448 :デフォルトの名無しさん:2007/01/05(金) 00:41:20
>>447
nodeのidが小さい順に並べておきたかったんです。
だから新しいノード追加するときはnodeのidが小さい順番に並ぶようにリストにinsert()してます。
辞書だと自分で追加した順番が保てないので・・・
はじめはSet使おうと思ったのですがnodeのような可変オブジェクトを入れられないみたいでだめでした。

449 :デフォルトの名無しさん:2007/01/05(金) 00:42:22
問題はそこじゃないし解決したからいいんでないか


>>> node(1) == node(1)
True
>>> node(1) != node(1)
True

うほっ


450 :デフォルトの名無しさん:2007/01/05(金) 00:43:23
ありがちな list+dic の折衷型クラスを使う(or自分で実装)

451 :デフォルトの名無しさん:2007/01/05(金) 00:56:11
>>448
setに入れるなら__hash__を定義する必要がある。(これも順番は保てないが)

class Node:
    def __init__(self, id):
        self.id = id
    def __hash__(self):
        return hash(self.id)
    def __cmp__(self, that):
        return cmp(self.id, that.id)

s = set()
s.add(Node(1))
s.add(Node(2))
print Node(1) in s
print Node(3) in s

452 :デフォルトの名無しさん:2007/01/05(金) 02:10:39
>438
お前どこの出身だッ、その方言は聞いたことがある
よもや愛知県三河地方ではあるまいな

453 :デフォルトの名無しさん:2007/01/05(金) 02:47:37
みりんは確かそうだな

454 :デフォルトの名無しさん:2007/01/05(金) 05:22:46
Pythonで10進数の数値を2進数に変換するには、どうやればいいのでしょうか?

PHPのdecbin()に相当する関数を持つモジュールがあればいいのですが。
http://jp.php.net/manual/ja/function.decbin.php

455 :デフォルトの名無しさん:2007/01/05(金) 09:48:38
>>448
bisectモジュールが役立つ鴨。

import bisect

class Node:
    def __init__(self, id):
        self.id = id
    def __cmp__(self, other):
        return cmp(self.id, other.id)
    def __repr__(self):
        return "<Node#%d>" % self.id

def insert(a, x):
    i = bisect.bisect_left(a, x)
    if a[i] == x:
        raise ValueError, "already there"
    a.insert(i, x)

def contains(a, x):
    i = bisect.bisect_left(a, x)
    return i < len(a) and a[i] == x

nodes = [Node(1), Node(3), Node(5)]

print contains(nodes, Node(2))
insert(nodes, Node(2))
print contains(nodes, Node(2))


456 :455:2007/01/05(金) 09:54:38
修正。
if i < len(a) and a[i] == x:
    raise ValueError, "already there"


457 :デフォルトの名無しさん:2007/01/05(金) 12:22:04
>>448
dictにしといて
使うときに、sorted(dict.values(), lambda x, y:x.id - y.id)で、番号順にすればいいと思う。

458 :デフォルトの名無しさん:2007/01/05(金) 12:34:38
>>420
自分の意見というか、matzがpythonのことおもちゃ言語っていう
根拠のひとつでもあるんじゃないの?たぶん、
cの構造体ポインタにあたるものが見えちゃってるみたいな

459 :デフォルトの名無しさん:2007/01/05(金) 12:47:06
ttp://groups.google.com/group/comp.lang.python/browse_thread/thread/0d18fda127741ae1/b34fcf6dd77852f6#b34fcf6dd77852f6

460 :デフォルトの名無しさん:2007/01/05(金) 13:33:13
>458
でも実際はRubyの方がよほどオモチャな件

461 :デフォルトの名無しさん:2007/01/05(金) 14:00:49
仲直りしてこい

Python厨とRuby厨が仲直りするスレッド
http://pc10.2ch.net/test/read.cgi/tech/1099804004/

462 :デフォルトの名無しさん:2007/01/05(金) 14:04:24
まぁPython使いは アニメキャラ・バトルロワイアル感想雑談スレ8 でも見てなさいってこった。

463 :デフォルトの名無しさん:2007/01/05(金) 14:26:08
見に行くのめんどうだから3行くらいで要約してくれ

464 :デフォルトの名無しさん:2007/01/05(金) 14:27:48
perlの方にはヒキ板のスレがあるなw
この機能煽るネタ提供するだけだな

465 :デフォルトの名無しさん:2007/01/05(金) 14:50:21
俺の見ているスレも出てるw

>>452-453
愛知の田舎に10年ほど住んでたもんでかんわ。たまに三河弁が口をついて出るw

466 :デフォルトの名無しさん:2007/01/05(金) 15:06:05
・・・これは流行る・・・!

467 :デフォルトの名無しさん:2007/01/05(金) 15:59:57
ここは超初心者もしつもんしていいですか?

468 :デフォルトの名無しさん:2007/01/05(金) 16:01:32
Python初心者なら。
PC初心者は(・∀・)カエレ!!


469 :デフォルトの名無しさん:2007/01/05(金) 16:09:35
PCは98の時からで5年です。
Python初心者の♀です。

470 :デフォルトの名無しさん:2007/01/05(金) 16:17:37
PC-98か

471 :デフォルトの名無しさん:2007/01/05(金) 16:21:37
1998 + 5 = 2003
2007年の話としてはおかしいよな...

( ゚д゚ )ハッ! 98才のときに始めてから5年のハカーばあさん!?

472 :デフォルトの名無しさん:2007/01/05(金) 16:27:51
ばあさんも質問していいでつか?

473 :デフォルトの名無しさん:2007/01/05(金) 16:29:27
ばさんはXPじゃ

474 :デフォルトの名無しさん:2007/01/05(金) 16:52:39
「質問してもいいですか?」って最初に言うヤツにはかかわらないほうが良い、の法則

475 :デフォルトの名無しさん:2007/01/05(金) 17:51:56
>>471を読んで
「そこは『コンピューターおばあちゃん』だろうが!」
と咄嗟に思う世代。

476 :デフォルトの名無しさん:2007/01/05(金) 18:28:51
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【AoE3】Age of Empires III 第76幕【TWC】 [PCゲーム]
アニメキャラ・バトルロワイアル感想雑談スレ8 [アニキャラ総合]
◆ ポルトガル語・総合スレッド 10 ◆ [外国語]
【MU】マヤ鯖攻城戦専用晒しスレpart10 [ネットwatch]
おい、魔王様階級ども!バンバンどうですか? [バイク]

(,,゚Д゚).o0(Pythonユーザって・・・・・・・・)

477 :デフォルトの名無しさん:2007/01/05(金) 18:34:07
Python使ってもいないのにこのスレ毎日覗いてる俺は
そんなの問題にならないくらいキモいスレに行きまくってるから
心配すんな。

478 :デフォルトの名無しさん:2007/01/05(金) 19:03:27
>>469
で、質問はなに? 待ちくたびれてきた。

479 :デフォルトの名無しさん:2007/01/05(金) 19:22:08
やりたいことは、python2.2という、サーバー内のCGIプログラムを使い

サイトマップを生成し、サイト内にyahoo,google,msnで採用された
登録用のサイトマップファイルを作ると言うものです。


1. python 用の実行プラグラムファイル、と
  データ用のファイルを作り

  自分のレンタルサーバの中のCGIフォルダの中にアップロードしました。


2. この後なのですが、サーバー内の python2.2 に実行コマンドを出し

  python2.2を実行させると書いてあるのですが、


どうやって、実行コマンドをサーバー内の python2.2 に出すのか分かりません。

説明には ssh 等を使ってと書いてあるのですが。

使用しているサーバーのOSは unix です。

よろしくお願いします。

480 :デフォルトの名無しさん:2007/01/05(金) 19:38:14
>>479
要するに、このへんの話なのかな?
俺はやろうと思ったことがないので知らないが。
http://www.google.co.jp/support/webmasters/bin/answer.py?answer=34636&topic=8517

481 :デフォルトの名無しさん:2007/01/05(金) 19:42:40
>>479
sshでログインしてプロンプトから
%cd 目的のフォルダ
%python 目的のスクリプト

482 :デフォルトの名無しさん:2007/01/05(金) 19:56:53
そのPythonスクリプトというのは、
http://safe-linux.homeip.net/seo/Google_sitemap_gen-03.html
で触れられている sitemap_gen.py ていうもののこと?

483 :482:2007/01/05(金) 20:04:32
あれ、2chからだとそのページ、アクセスできないなぁ。
しょうがないので、sitemap_gen.py でぐぐってみたら、
なにか情報得られるかもと、お茶を濁して去っていく。

http://www.google.com/search?client=opera&rls=ja&q=sitemap_gen.py&sourceid=opera&ie=utf-8&oe=utf-8


484 :デフォルトの名無しさん:2007/01/05(金) 21:01:49
479
(-_-;)ウー

485 :デフォルトの名無しさん:2007/01/05(金) 21:05:40
ttps://www.google.com/webmasters/tools/docs/ja/sitemap-generator.html

486 :デフォルトの名無しさん:2007/01/05(金) 21:48:15
むずかし〜

487 :デフォルトの名無しさん:2007/01/05(金) 21:51:18
> 説明には ssh 等を使ってと書いてあるのですが

ってのがどこなのか(サイトなのか本なのか)書いた方がいいね。
他の人が貼ってるリンク先そのものだったら、貼ってもらった手間が無駄になる。

488 :デフォルトの名無しさん:2007/01/05(金) 22:00:58
↓これの「4. サイトマップ生成ツールのスクリプトを実行する (sitemap_gen.py)」のところじゃまいか!?
https://www.google.com/webmasters/tools/docs/ja/sitemap-generator.html

>サイトマップ生成ツールを実行するには、ウェブ サーバーに接続する必要があります。
>接続環境により、サーバーへの接続方法は異なります。 たとえば、Unix ベースのサーバーの場合は、通常 SSH を使用して接続します。

489 :デフォルトの名無しさん:2007/01/05(金) 22:17:10
>>479
このサイトの情報が参考にならない?
http://www.vinapark.com/society/modules/news/article.php?storyid=113

ただね、はっきりいうとPythonももちろん関係はあるものの、
xmlとかそっち方面の知識の方が必要なんじゃない?
中途半端な知識じゃ、無理だと思う。
xmlなんて、僕も知らないしorz
しかもPythonの文法もなにも分からないということとなると、
絶望的に難しいと思うなー。

490 :デフォルトの名無しさん:2007/01/05(金) 22:20:50
あほー、Google、msnでは初心者はHPなぞ作るなってことかw

491 :デフォルトの名無しさん:2007/01/05(金) 22:25:26
>プラグラムファイル


492 :デフォルトの名無しさん:2007/01/05(金) 22:37:20
てか、何がわからないのかわからない。
リモートログインしてスクリプト走らせるだけの話じゃないのか・・・?
自動更新にしたいなら、cronしこむなりすればいいんじゃ

493 :デフォルトの名無しさん:2007/01/05(金) 22:52:25
リモートログインはどうやるの?

494 :デフォルトの名無しさん:2007/01/05(金) 22:54:10
スレ違い

495 :デフォルトの名無しさん:2007/01/05(金) 22:59:30
  @@@  パンパンパンパーン
 @@@@@ ∩
 6 -ω-ノ 彡
 (⊇ ⊂彡☆))д´)>>494

496 :デフォルトの名無しさん:2007/01/05(金) 23:02:25
ぐぐれ〜〜〜!

リモートログイン ssh
http://www.google.com/search?client=opera&rls=ja&q=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+ssh&sourceid=opera&ie=utf-8&oe=utf-8

そもそもPython をどうこういう前に、もうちょっと基本の知識が必要だと思うよ。
Python 動かせても、自分のサイトに合わせた xmlを用意しないといけないはず。
xml分る?

どっかそういう基本的知識を得られるまとめサイトはないのかね?
だれか知らない? ここはPython のスレだし。
プラットフォームはunix というけど、それはサーバの話で、

あなたのマシンはwindows?
その状況で、日常unixを使っているとは思えない…。
あー、mac osx ならありえるか…。

497 :デフォルトの名無しさん:2007/01/05(金) 23:09:06
>>496
もうググリ真下。
すみません。
xmlはあっぷしました。

498 :デフォルトの名無しさん:2007/01/05(金) 23:11:30
サーバーはリナックスらしいけどリモートログインってUNIXのばっかりじゃん。


499 :デフォルトの名無しさん:2007/01/05(金) 23:18:22
リモートログインなんてFFFTPなんかで自分のサーバーにログインするだけジャマイカ!!

500 :デフォルトの名無しさん:2007/01/05(金) 23:33:58
すまん。
俺はHomePageBuider を使うようになってから、
リモートログインなんて、忘れちまったよw
昔は、telnetで入ってviでmlのログの管理とか
してたんだけどな。
最初はftpを知らなくてさw ずっとtelnetでviしてた。
viのクソぶりには泣けたなぁ。
誰か、unixに秀○を移植してくれ、と思ったよ。
って、ここなんのスレよ!

501 :デフォルトの名無しさん:2007/01/05(金) 23:46:10
つまり、ナイス500ゲットということで。

502 :デフォルトの名無しさん:2007/01/06(土) 02:52:34
つkermit

503 :デフォルトの名無しさん:2007/01/06(土) 10:10:41
>498
ガッ

504 :デフォルトの名無しさん:2007/01/06(土) 12:53:47
>503
ぬ、ぬるぽどこッ?!

505 :デフォルトの名無しさん:2007/01/06(土) 12:54:30
>>454
def decbin(b):
    s = ""
    if b > 1 : s = decbin(b>>1)
    return s + "01"[b&1]

506 :デフォルトの名無しさん:2007/01/06(土) 13:26:47
>479
Pythonの話じゃないな

>474 の法則は正しいかもしれない。

507 :デフォルトの名無しさん:2007/01/06(土) 15:54:04
>>504
ガッ

508 :デフォルトの名無しさん:2007/01/06(土) 16:24:37
> 【AoE3】Age of Empires III 第76幕【TWC】 [PCゲーム]
> アニメキャラ・バトルロワイアル感想雑談スレ8 [アニキャラ総合]
> ◆ ポルトガル語・総合スレッド 10 ◆ [外国語]
> 【MU】マヤ鯖攻城戦専用晒しスレpart10 [ネットwatch]
> 【転職】−転職板@何でも質問所− その65 [転職]

今日は転職らしい

509 :デフォルトの名無しさん:2007/01/07(日) 03:07:14
お願いします。
htmlに含まれる表を配列に起こすプログラムを教えてください。

510 :デフォルトの名無しさん:2007/01/07(日) 04:26:03
>>509
import HTMLParser, urllib
class Parser(HTMLParser.HTMLParser):
  def __init__(self):
    HTMLParser.HTMLParser.__init__(self)
    self.tables = []
    self.data = None
  def handle_starttag(self, tag, attrs):
    if tag == "table":
      self.tables.append([])
    elif tag == "tr":
      self.tables[-1].append([])
    elif tag in ["th", "td"]:
      self.data = ""
  def handle_endtag(self, tag):
    if tag in ["th", "td"]:
      self.tables[-1][-1].append(self.data)
      self.data = None
  def handle_data(self, data):
    if self.data is not None:
      self.data += data
file = urllib.urlopen("http://www.python.org/doc/lib/typesseq.html")
parser = Parser()
parser.feed(file.read())
parser.close()
for n, table in enumerate(parser.tables):
  for i, row in enumerate(table):
    for j, data in enumerate(row):
      print 'table #%d (%d, %d) => "%s"' % (n, i, j, data)

511 :デフォルトの名無しさん:2007/01/07(日) 04:33:55
補足:
>>510のプログラムはもっとも単純な表を想定している。
複数行(複数列)にわたるセルがあっても何もしないし、
表の中に表が現れると破綻する。実体参照も無視してる。
文字コードも関知しない。あくまで参考程度に。

512 :509:2007/01/07(日) 04:47:34
どうもありがとうございます。

513 :デフォルトの名無しさん:2007/01/07(日) 08:28:40
Excelにコピペしてcsvで保存してcsvreader.

514 :デフォルトの名無しさん:2007/01/07(日) 14:23:14
Pythonのcsvモジュールは使い物にならないから困る

515 :デフォルトの名無しさん:2007/01/07(日) 15:28:05
>>514
kwsk

516 :デフォルトの名無しさん:2007/01/07(日) 16:04:05
Unicode未サポート
ゆえに日本語データが処理できない


517 :デフォルトの名無しさん:2007/01/07(日) 16:23:41
知ったか乙

日本語データでも処理できてるし

518 :デフォルトの名無しさん:2007/01/07(日) 16:52:40
"hoge,fuga",other data,30
みたいなのもイケるの?

ドキュメント見たけど、自分で実装するのと比べて
大したことはやってくれないよね、これ…

519 :デフォルトの名無しさん:2007/01/07(日) 17:20:31
>>506=>>474

520 :デフォルトの名無しさん:2007/01/07(日) 18:43:22
仕事を頼まれる

('A`)ヴァー という顔をしつつ、
内心 python+csvモジュールで楽勝(゚∀゚)
すでに定時帰宅ムード

使い方忘れてるので
読んで吐き出すだけのコードを書いてみる
日本語もOKなご様子

問題ないので本格的に書く

動かしてみたら期待通りに行かない
なんでunicodeでないのでありますか。こやつ。

モジュールを直そうと思うがC実装

やっぱ自分のソースを直す

あ、あれ?残業?!


521 :デフォルトの名無しさん:2007/01/07(日) 19:17:21
csvのように下種な作業で比較的用いられるような代物が
ちゃんと整備されていないとはどういうこっちゃ。

522 :デフォルトの名無しさん:2007/01/07(日) 19:22:49
>>521
多分、csv の方言が多すぎるからだろ。
csv の標準が規定されているのかどうか知らんが、
例え規定されていたとしてもそれに従っていないモノが多すぎるんだろ。

523 :デフォルトの名無しさん:2007/01/07(日) 21:15:20
>>522
> >>521
> 多分、csv の方言が多すぎるからだろ。
> csv の標準が規定されているのかどうか知らんが、
> 例え規定されていたとしてもそれに従っていないモノが多すぎるんだろ。
んだんだ。CSVは「Excelが読み書きできる」のが事実上の標準になっている状況だし。
RFC4180が2005年10月に公開されてるけど、まだ一般的ではないよね。

http://www.rfc-editor.org/rfc/rfc4180.txt
http://www.kasai.fm/wiki/rfc4180jp


524 :デフォルトの名無しさん:2007/01/07(日) 21:25:45
>>523
十年前でも遅いと思うが、2005年10月かよ。

525 :デフォルトの名無しさん:2007/01/07(日) 21:32:31
XMLで読み書きしろって流れなんだろうな
( ゚д゚)ハッ! XML-CSVブリッジ!?

526 :デフォルトの名無しさん:2007/01/07(日) 21:35:01
>>525
XMLがブレイクしだした時にその手のコンバータって山ほど作られていると思うけど。

527 :デフォルトの名無しさん:2007/01/07(日) 21:38:50
>>526
話を聞かないってことは流行んなかったんだよなきっと

528 :デフォルトの名無しさん:2007/01/07(日) 21:42:29
>>527
そりゃ csv 側に方言があり過ぎるから、みんな自分の用が足せる
コンバータをちょろちょろって書いておしまいだからだろ。

529 :デフォルトの名無しさん:2007/01/07(日) 21:50:32
2.5のマニュアル見たら文字コード変換のラッパー例が書いてあった。
2.4のときは無かったような〜。。。

csv モジュール、前は Python で書いてあったが
高速化のためにC実装になったと記憶している。

方言うんぬんより、このC実装の書き換えが大変なのだと思う。
文字列処理周りはバグとセキュリティホールの宝庫だし。
Pythonコード で書いてあれば codecs を通すだけで済むはず。

ElementTree も一癖あるので注意が必要(((´・ω・`)カックン…


530 :デフォルトの名無しさん:2007/01/07(日) 22:16:27
http://www.rfc-editor.org/rfc/rfc4180.txt
誰も守りません(w

531 :デフォルトの名無しさん:2007/01/07(日) 23:13:38
PythonのCSVモジュールだってRFC 4180準拠って書いてないしなw

532 :デフォルトの名無しさん:2007/01/08(月) 00:03:01
もともとの話は、>>509 の話を受けて >>513

エクセルにコピーして csv で書き出せば、html中の表を
配列に入れられるだろ といったことからだから、

むしろエクセル準拠のcsvでなければダメなんじゃない?

533 :デフォルトの名無しさん:2007/01/08(月) 00:25:14
Pythonのcsvモジュールはdialectってのでcsvの方言に対応できる.
セパレート文字列,改行コード,クォートの設定など.
で,デフォルトで使われるdialectはExcel準拠になってる.

Windows使いの人から渡されるExcelのCSVファイルを処理するプログラムを
最近作った.別に問題なく読めた.ちなみにPython2.4

534 :デフォルトの名無しさん:2007/01/08(月) 01:52:08
Excel以外から出力されたCSVがとても怖い。
「"」文字中の「"」文字はカンマと隣合っていないと文字列終端としない、
等等の訳ワカメ仕様を実装することになる。
そういう所は、CSV出力を考慮してちゃんとエスケープして欲しいんだよねぇ…。

そんな事を考えつつ詳細設計にEBNFを載せつつ実装をしてたら、レビュー時に
「えっ、そんな難しく考えちゃってるの?」、という突込みが。
一応弁解はしたが、分かってくれたか疑問。こんなことで仕事できない奴と思われたくない罠w

535 :デフォルトの名無しさん:2007/01/08(月) 01:58:34
>このスレを見ている人はこんなスレも見ています。(ver 0.20)
>◆ ポルトガル語・総合スレッド 10 ◆ [外国語]
>【PodCast】アキバ系!電脳空間カウボーイズ [プログラマー]
>【転職】−転職板@何でも質問所− その65 [転職]

おまえら器がでかいな。

536 :デフォルトの名無しさん:2007/01/08(月) 01:59:20
そんな怖いCSVファイルがあるのか...

537 :デフォルトの名無しさん:2007/01/08(月) 02:15:54
みんなCSVで何の受け渡ししてんの?
プログラム経験浅いんで、CSV=ダメ形式っていう認識しかないんだけど・・・

538 :デフォルトの名無しさん:2007/01/08(月) 02:17:09
M$製品が出力するCSVはだめだめだけど
それ以外の一般にはCSVは普通に使われるよ

539 :デフォルトの名無しさん:2007/01/08(月) 02:25:01
excelに読み込ませる以外の用途を列挙せよ。

540 :デフォルトの名無しさん:2007/01/08(月) 02:37:07
>このスレを見ている人はこんなスレも見ています。
専ブラ使ってる連中は集計されない。

Webブラウザ利用者と専ブラ利用者の間では
性格・行動に違いがあるから何とも云えん。


541 :デフォルトの名無しさん:2007/01/08(月) 03:00:25
pythonのまとめwikiのにくちゃんの過去ログもう読めなくなってるんだな
これからはdat落ちしたら●を買わないとログは見れないと。

あまり期待しないでこれ張って寝る
http://tmp6.2ch.net/test/read.cgi/download/1167375249/

542 :デフォルトの名無しさん:2007/01/08(月) 03:29:10
>>537
かといって総合的にそのcsvの代わりとなるうるものが存在しないのもまた事実。

543 :デフォルトの名無しさん:2007/01/08(月) 05:49:39
KSV = Kanpa Separating Values

544 :デフォルトの名無しさん:2007/01/08(月) 05:51:52
自分で使うときはタブ区切りばっかりつかってる

545 :デフォルトの名無しさん:2007/01/08(月) 06:02:39
>544
TSVとも呼ぶね

546 :デフォルトの名無しさん:2007/01/08(月) 06:40:09
個人的にCSVの代替はXMLだと思うが、何故か難しく捉えられる傾向にあるので躊躇する。
少しも難しくないのになぁ…。
要素の検証が面倒臭いという意見も良く聞くが、CSVの時は検証しなかったんかい!、と突っ込みたい。

ただXMLは、WindowsだとIEが絡んでよく強制終了に陥るのはどうにかして欲しい。

547 :デフォルトの名無しさん:2007/01/08(月) 06:47:57
>>546
XMLはどうしてもCSVよりパーザが重くなる。とくにDOMなんかはサーバアプリケーションで使うにゃ論外だし。
後、データがCSVに比べて膨れ上がり過ぎ。XMLってなにげにXSLTでもかますんじゃなきゃCSVより格下のデータ形式だと思う。

548 :546:2007/01/08(月) 07:02:49
>>547
半分同意。格下とまでは思わないけど…。

DOMの構築時間はDOM実装によるけど、MSXML4あたりが良い実測値弾いてた。
PythonでもXPathをほぼ完全に使いたい時はMSXML4を使っている。
並列読み込みに対応したライブラリならDOM構築の処理時間は苦にならない。
データ量は拡張可能な環境だったら問題ないよ。
問題はCSVと対比させた処理時間だけど、かなり最適化しても1.6倍ぐらいなる。
夜間バッチ処理なんかだと致命的かも。

DOM以外でXSLTかけた事はないけど、昔はXML>CSV変換をXSLT使ってやっていた。
恐らくXMLtoCSV変換で最速だと思う。

549 :デフォルトの名無しさん:2007/01/08(月) 10:01:07
csv だってなんだって "csvで吐くことを意識したデータ出力" に
気を使って設計・実装してあれば全然問題ないさ。

ほとんどが空白の数百columnを毎秒吐き出すヴァカとか
文字列処理がややこしくなるのに quote 仕様その他を
考えずに , だの " が入ったレコードを作る DQN がいなければ…

550 :デフォルトの名無しさん:2007/01/08(月) 10:20:46
>>549
XMLだと逆に複雑なデータ構造であろうともそのまんま記述できちゃうからって
ろくにデータ構造の正規化を行わずにデータ形式を決定し、
そのデータ形式の複雑さに比例した複雑さを持つデータ処理プログラムを書かなきゃならなくなる。



って、罠に一度嵌りましたよ、ええ。orz

551 :デフォルトの名無しさん:2007/01/08(月) 11:46:02
漏れも XML は CSV 以下だと思う
無駄大杉

そこで YAML ですよ


552 :デフォルトの名無しさん:2007/01/08(月) 11:46:18
>>550
あるあるwwww

XPathで取得⇒コレクションでループ、の流れをXML設計時に考えておかないと駄目なんだよな。
ref属性で他の要素を参照とか、あまり私を怒らせない方がいい…。
ElementTreeとかもまだまだなんだよなぁ。
今後に期待。特にXPath系。

553 :デフォルトの名無しさん:2007/01/08(月) 12:41:09
>>541
過去ログ見るにはにくちゃんねる以外の方法はないの?
他のサイトでサービスしてたりしない?


554 :デフォルトの名無しさん:2007/01/08(月) 13:08:00
>>551
Matz?

555 :デフォルトの名無しさん:2007/01/08(月) 19:24:09
S式パーサがあればXMLなんて不要。 
どうしようもなく冗長なXMLを使ってる馬鹿は考えを改めた方がいい。 


556 :デフォルトの名無しさん:2007/01/08(月) 19:50:15
馬鹿馬鹿しいほど冗長なくせに誤り訂正すら出来ないw


557 :デフォルトの名無しさん:2007/01/08(月) 20:10:30 ?2BP(0)
>>556
ビットじゃなくて、文字コードorテキストレベルで誤り訂正ができる
方法なんてあるの?

>>555
くまーに釣られてやる。
ttp://okmij.org/ftp/Scheme/SXML.html

558 :デフォルトの名無しさん:2007/01/08(月) 21:34:50
>>556 は誤り訂正という言葉を使ってみたかった説に清き1票

559 :デフォルトの名無しさん:2007/01/08(月) 22:42:44
>557
自分で固定長フィールドの形式を決めてやれば
出来ることはできるだろうけど…
聞かないね.

560 :デフォルトの名無しさん:2007/01/08(月) 23:48:01
どうでもいいが、いい加減スレ違い。

561 :デフォルトの名無しさん:2007/01/09(火) 00:18:56
>>560
野菜ジュースで盛り上がってるどっかのスレに比べればまだまし。

562 :デフォルトの名無しさん:2007/01/09(火) 00:32:46
ヨソはヨソ! ウチはウチ!

563 :デフォルトの名無しさん:2007/01/09(火) 00:38:06
下見て暮らすな、上見て暮らせ

564 :デフォルトの名無しさん:2007/01/09(火) 00:52:04
じゃあメタクラ(省略されました。続きを読む場合はおっぱいおっぱいと書き込んで下さい。)


565 :デフォルトの名無しさん:2007/01/09(火) 01:10:53
メタクラッシャー大岩・・・メタクラスだろうな…。

XMLもYAMLもS式も、Pythonで扱う観点で話題があれば有用だと思う。
XMLは先行技術なんで、色々なAPIと「繋がる」利点がある。今のところ
この利点以上の利点を他のフォーマットに見出せないのが現状。
単なるデータ形式と捉えれば、使いどころがあるからCSVの代用としての
フォーマットとしてはXMLよりアドバンテージがあるだろうよ。

ところでsqllite3て使ってる?こいつが面白くて、ポストAccessだと睨んでいるんだが。
今のところフロントアプリ組んで、理解を深めているところ。

566 :デフォルトの名無しさん:2007/01/09(火) 01:46:33
)スの話にはならなかったか。

他のDBは何かと縛りが出来るがsqliteだと気楽に使えるね。

ちょっと違うかも知れんが
C++を(バリバリに組むのでなく)便利なC言語として使うような感じで
データファイルをsqliteに組み換えちゃおうかと思ってる。


567 :デフォルトの名無しさん:2007/01/09(火) 01:54:53
SQLite面白いよね。
でもAccessとかFileMakerとか、GUIフロントエンド込でナンボのDBは
比較対象としては相応しくないような。
かといってDBM系ともサーバクライアント方式のRDBとも比較し難く、
良い意味で微妙なポジションだね。
直接SQLを書かず、O/Rマッパを使うことを前提とした場合の対抗馬はMetaKitかな。
Pythonバインディングもあるし。

568 :デフォルトの名無しさん:2007/01/09(火) 07:14:56
阿波波波波波

569 :デフォルトの名無しさん:2007/01/09(火) 12:34:56
いろいろはいるよ

570 :デフォルトの名無しさん:2007/01/09(火) 13:35:44
>>566
>ちょっと違うかも知れんが
>C++を(バリバリに組むのでなく)便利なC言語として使うような感じで
>データファイルをsqliteに組み換えちゃおうかと思ってる。

っshove

っdbm

っConfigParser

571 :デフォルトの名無しさん:2007/01/09(火) 21:42:32
2.3から追加されたos.walk()なんだけど、これって
txt_2ch_logとか2ch_logとか2chlogとか名前が不適切なpathを
引数に渡すと上手く動かないのかな?log2chにしたら動いたんだけど…

unixとかのフォルダの命名規則はよく分からないけど、C言語の
変数の宣言の時みたいに名前の最初を数字で始めてはいけない、
とかそういうルールがあったりするような気がするのでつが…

572 :デフォルトの名無しさん:2007/01/09(火) 21:50:23
環境は windows xp pro で
python2.4(c:\Python24\python.exe)です。書き忘れてました…orz

573 :デフォルトの名無しさん:2007/01/09(火) 22:49:28
ドキュメント読め

デフォルトでエラーは、無視される。
引数のonerrorにos.errorを受け取る関数を指定すれば、
エラー発生時に呼ばれる。

def func(e):
    print e

for x in os.walk("log2ch",onerror=func):
    print x

574 :デフォルトの名無しさん:2007/01/09(火) 23:05:40
pyExceleratorでExcelのデータを吸い出そうとしているのですが、以下の症状で困っています。

グラフがオブジェクトとして存在するシートが複数あるとき、(例えばsheet1,sheet2,sheet3)
pyExcelerator付属のxls2txt.pyで読み込むと、読まれないシートが出てくる(sheet1,3,5,7だけとか)

各シートのグラフを消去すると全シートを読み込むのですが。。。
グラフが載ったシートでもそのまま読ませたいです。
解決方法知っている方教えてください。お願いします。

環境は
OS winXP
(cygwinで走らせてます。)
python:ver2.4.3
pyExcelerator:ver0.6.3a

です。


575 :デフォルトの名無しさん:2007/01/09(火) 23:49:16
ねぇ、Jythonってもう進化は期待できないの?

576 :デフォルトの名無しさん:2007/01/10(水) 00:21:59
JavaVMはgroovyに夢中なのさ

577 :デフォルトの名無しさん:2007/01/10(水) 02:49:50
>>570
ConfigParserを頂きます


578 :デフォルトの名無しさん:2007/01/10(水) 06:57:49
>>571
その環境だけど普通に動くぞ

579 :デフォルトの名無しさん:2007/01/10(水) 09:33:54
ごめんConfigParserって撤廃対象だった気がする

580 :デフォルトの名無しさん:2007/01/10(水) 10:53:06
>579
そうなの!?

代わりに何を使うのが推奨?

581 :デフォルトの名無しさん:2007/01/10(水) 12:23:23
>>578
ん、そっかじゃあ起こるのはうちの環境だけなのかもしれないやね
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32

>>573
ありがd

582 :デフォルトの名無しさん:2007/01/10(水) 14:46:58
っsimplejson

583 :デフォルトの名無しさん:2007/01/10(水) 15:06:53
iPhoneにpythonが乗りますように(ー人ー)

584 :デフォルトの名無しさん:2007/01/10(水) 16:32:48
OSXが動くそうだから、乗るだけなら出来るんじゃね?
GUIとかがPythonで自由に作れれば面白そう

585 :デフォルトの名無しさん:2007/01/10(水) 18:30:27
あいふぉんとぱいそんってちょっとにてる

586 :デフォルトの名無しさん:2007/01/10(水) 19:14:54
Mac板に貼ってあった記事によると、アプリのインストールは出来ないそうだ
ttp://itpro.nikkeibp.co.jp/article/USNEWS/20070110/258323/

587 :デフォルトの名無しさん:2007/01/10(水) 22:10:26
それほどでもないよ

588 :デフォルトの名無しさん:2007/01/11(木) 01:14:19
PEP#3108
ConfigParserは名前が変わるだけ?


589 :デフォルトの名無しさん:2007/01/11(木) 01:33:00
って書いてあるじょん。

590 :デフォルトの名無しさん:2007/01/11(木) 11:21:25
John?

591 :デフォルトの名無しさん:2007/01/11(木) 11:31:41
無限にログを出力するプログラムに時刻をつけたいです(unix環境)

こんな timelabel.py をつくりました
## timelabe.py
import sys
for line in sys.stdin:
sys.stdout.write("%13.2f \t%s" % (time.time(), line) )

% logger | timelabel.py
とやっても,うまく出力されません(バッファリングのせい?).
logger は ^C を打つまで止まらないやつです.

% ls | timelabel.py
みたいな"stdin が eof までいくコマンド" なら動作するのですが,
このバッファリングをやめさせるにはどうすれば良いのでしょうか?

592 :デフォルトの名無しさん:2007/01/11(木) 11:46:13
logger -s


593 :デフォルトの名無しさん:2007/01/11(木) 12:13:15
>>591
loggerの使い方間違ってない?


594 :デフォルトの名無しさん:2007/01/11(木) 12:44:49
logger はログ吐きの仮想例のつもりだったんですが
同じ名前のコマンドがあったんですね。

実際には vmstat とかの出力を捕まえるイメージです...

結局こうすれば一応動いているみたいです。

while True:
line = sys.stdin.readline()
if line == '': break
sys.stdout.write("%13.2f \t%s" % (time.time(), line) )



595 :デフォルトの名無しさん:2007/01/12(金) 22:58:22
よいか、ジェラール
われわれはインペリアルクロスという陣形で戦う
お前は私の後ろに立て
お前のポジションが一番安全だ

596 :デフォルトの名無しさん:2007/01/12(金) 23:56:54
    |
   \  __  /
   _ (m) _ピコー
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく


597 :デフォルトの名無しさん:2007/01/13(土) 01:14:08
pythonで作られたguiアプリで有名なのはなんですか?

598 :デフォルトの名無しさん:2007/01/13(土) 01:41:05
>>597
BitTorrentです。

599 :デフォルトの名無しさん:2007/01/13(土) 09:13:36
redhat のインストーラじゃねーの?

あと sketch とか

600 :デフォルトの名無しさん:2007/01/13(土) 11:06:35
Access IBM

601 :デフォルトの名無しさん:2007/01/14(日) 22:39:11
Nokia S60で開発してる人いる?
705NK には Python for S60 はインストール不可能?

ttp://discussion.forum.nokia.com/forum/showthread.php?t=84373&page=3
ここでの fumihikoshibata 氏の804NKに関するやり取りを見る限り無理みたいだけど。
705NKでも同様に無理ってことかね。

すれ違いならごめんなさい。

602 :デフォルトの名無しさん:2007/01/14(日) 22:53:10
開発はしてないけど
インストールできるよ
705NKIIでも
Nokiaの型番で調べるといいかも(6630?6680?)
電車の時刻表のPythonアプリをかいたひとがいて
それ動かしてる
まとめサイトが今でもあるなら、そこに情報あるんでない


603 :デフォルトの名無しさん:2007/01/14(日) 23:22:22
質問です。
あるクラスのインスタンスを

MyClass('文字列')
MyClass(arg1, arg2)
MyClass(arg1, arg2, 真偽値)
# arg1, arg2 は別の独自クラスのインスタンス

の3つの形式で作成したいのですが
__init__ はどう定義すべきでしょうか?

後2者はデフォルト値で出来そうですが
最初の形式も受け入れたいのです。

604 :デフォルトの名無しさん:2007/01/14(日) 23:24:07
>>602
702NK(6630) S60 2nd Editon にはインストールできてるんですけど、
705NK(N73) S60 3rd Edition では Symbian Signed 版がまだリリースされてないのです。
3rd Edition は Self Signed 版しかなくて日本版の端末には単純にはインストール不可っぽい。
それで、誰か知ってる人居ないかなと思いまして。

もう少し調べてみます。

605 :デフォルトの名無しさん:2007/01/15(月) 00:33:53
>>603
class MyClass:
  def __init__(self, *args):
    argc = len(args)
    if argc == 1:
      print '形式1'
    elif argc == 2:
      print '形式2'
    elif argc == 3:
      print '形式3'
    else:
      raise TypeError('引数の数があってねーよ')

引数の型をチェックしたければisinstance関数で適当に。

606 :デフォルトの名無しさん:2007/01/15(月) 18:10:27
>605
ありがとうございます。
そんな感じで書けば良いんですね。

607 :デフォルトの名無しさん:2007/01/15(月) 21:44:11
urllib2使ってGoogleの単位換算機能を使おうと思ったが、403ではじかれる。
今日は疲れたのでもう寝る。

608 :デフォルトの名無しさん:2007/01/15(月) 21:46:54
また今度がんばってね☆

609 :デフォルトの名無しさん:2007/01/15(月) 22:43:30
>> 604
勘違いはなはだもうしわけない
705なんてあるのね

610 :デフォルトの名無しさん:2007/01/15(月) 22:55:32
>>607
いいことを教えてやろう。
googleはブラウザや公式APIを使わないリクエストを弾くのだ。
だからUserAgentをIEやFirefoxに変えてやればいいのでは。

611 :デフォルトの名無しさん:2007/01/15(月) 23:52:17
>>610
>>607じゃないけど早速試してきた。

from urllib2 import *
opener = build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
f = opener.open('http://www.google.co.jp/search?q=yard+to+feet')
print f.read()

開けたけど、こりゃきついわwww

612 :デフォルトの名無しさん:2007/01/15(月) 23:52:47
断定口調でよろしく

613 :デフォルトの名無しさん:2007/01/16(火) 20:29:21
>>611
ぐちゃぐちゃだな。いやがらせかこれは。

614 :デフォルトの名無しさん:2007/01/16(火) 20:35:36
開くとかきついとかぐちゃぐちゃとか、エロいなお前ら。

615 :デフォルトの名無しさん:2007/01/16(火) 23:49:46
めっちゃ強引になっちゃった
import re
import urllib
import urllib2

re_calc = re.compile("calc_img\.gif.+<font size=\+1><b>(.+)</b></td>")

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

base_url = "http://www.google.co.jp/search?q="

def urlencode(_s, _encoding="utf8"):
    return urllib.quote_plus(_s.encode(_encoding))

def main():
    query = raw_input(">>> ")

    if not query:main()
    elif query.strip().lower() == "exit":return

    rf = opener.open(base_url + urlencode(query))
    html = rf.readlines()
    for line in html:
        result = re_calc.search(line)
        if result:
            print result.group(1).replace("<font size=-2> </font>", "")
            break
    rf.close()
    main()
main()

616 :デフォルトの名無しさん:2007/01/16(火) 23:57:31
POSTに'num=0'をつけると、検索結果0件になるから、帰ってくるデータが少なくなるよ。

617 :デフォルトの名無しさん:2007/01/17(水) 00:02:08
だからおまいらそういうときはBeautifulSoupを使えと何度言ったr(ry

618 :デフォルトの名無しさん:2007/01/17(水) 01:45:32
使ったこと無いけど
つpygoogle

619 :デフォルトの名無しさん:2007/01/17(水) 03:24:13
C:\Python24\Tools\Scripts にgoogle.pyなんて
ファイルがあるのを知っているのは漏れだけで
いいと思うんだ…

620 :デフォルトの名無しさん:2007/01/17(水) 03:33:32
ttp://d.hatena.ne.jp/logomaru/20061022

このページのサンプルをpythonを使って書くとしたら
どんな風に書いたらいいかな

ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/const2.html
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/strcat.html
use Smart::Comments;と#use Readonly;を利用するのに必要なpmが
インストールされてないことに気が付かなくて少しはまりますた

621 :デフォルトの名無しさん:2007/01/17(水) 20:42:47
>>618
Youはこれ見なよ
http://japan.cnet.com/news/media/story/0,2000056023,20339947,00.htm

googlekey配布してないYO

622 :デフォルトの名無しさん:2007/01/17(水) 21:05:44
興味をもって調べたら数日前に新規受付停止してて泣いた

623 :デフォルトの名無しさん:2007/01/17(水) 22:23:41
な、なんだってー
もう配布してないのかよorz
やろうと思ってたのに

624 :デフォルトの名無しさん:2007/01/18(木) 05:16:56
ttp://www.wadax.ne.jp/senyou/function/web02.html

Ω ΩΩ

625 :デフォルトの名無しさん:2007/01/18(木) 05:41:36
ttp://www.wadax.ne.jp/senyou/function/web03.html

Ω ΩΩ

626 :デフォルトの名無しさん:2007/01/18(木) 14:16:07
なぜここで報告?

627 :デフォルトの名無しさん:2007/01/18(木) 18:25:34
ボウヤーだからさ

628 :デフォルトの名無しさん:2007/01/18(木) 18:26:01
ttp://d.hatena.ne.jp/faerie/20051108
これどうやってインストールするの?

> 3. curl http://d.hatena.ne.jp/faerie/20051108/1131380541 | uudecode すると tropy.tar.gz ができる
ここで躓いてる…orz (windows python2.4.4使用中)

629 :デフォルトの名無しさん:2007/01/18(木) 18:36:02
C:\Python24>curl http://d.hatena.ne.jp/faerie/20051108/1131380541 | uudecode
'uudecode' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

http://www.kaoriya.net/から cURL.exe for Windows を落としてきて
上のコマンド打ってみたけどうまくいかねー

630 :デフォルトの名無しさん:2007/01/18(木) 19:05:29
調べてみたらLhaplusとかのアーカイバでuuencodeに対応してるって
書いてあったからコピペしてきてテキストファイルに貼り付けて拡張子を
tar.gzに変えて無理やり解凍してみようとしたけどうまく行くわけもなく…orz

http://www.jp.freebsd.org/QandA/HTML/736.html
戻し方 :
% uudecode hogehoge.uue
uuencode されたファイルの前や後ろにいかなる情報があっても, それらを無視しますので,
ヘッダの除去などといった余計な操作はしなくても結構です.

cURL(htmlクライアントみたいなもの)でhtmlデータを落としてきてパイプで繋いで
uudecodeに喰わせればあとは勝手に解凍してくれるってわけね…windowsには
uudecodeなんてないよ…orz

631 :デフォルトの名無しさん:2007/01/18(木) 19:29:55
http://cgi37.plala.or.jp/lucier/cgi/nicky.cgi?DATE=200503?MODE=MONTH
マックだと大丈夫なのね…orz

632 :デフォルトの名無しさん:2007/01/18(木) 19:30:46
>>630
>書いてあったからコピペしてきてテキストファイルに貼り付けて拡張子を
>tar.gzに変えて無理やり解凍してみようとしたけどうまく行くわけもなく…orz

そこまでやってなんで最後ではまる?
拡張子を.uueにしてみれ


633 :デフォルトの名無しさん:2007/01/18(木) 19:41:13
python的にはuuモジュールかbinasciiモジュール使うのも有りかいね


634 :デフォルトの名無しさん:2007/01/18(木) 20:43:47
>>632
Lhaplusを入れ直して、拡張子を.uueに変えたら解凍できますた。
dくすです

635 :デフォルトの名無しさん:2007/01/18(木) 21:42:05
Pythonでレファレンス見ながら書いてみた
import uu
fs = file('aaa.uue', 'rb')
uu.decode(fs)
三行で解凍できそうでした
(error吐いてたけどtropy.tar.gzが空のファイルで出来てた)

File "C:\Python24\lib\uu.py", line 99, in decode
raise Error, 'No valid begin line found in input file'
uu.Error: No valid begin line found in input file

http://www.koders.com/python/fid7721A5C1D8AB627BBC9E66717A1434C1BFFEEC1B.aspx#L99
uu.pyの99行目をbeginからbegin-base64に書き換えてみた

File "C:\Python24\lib\uu.py", line 137, in decode
data = binascii.a2b_uu(s[:nbytes])
binascii.Error: Illegal char

「binascii」をJGrepでGrepしてみた

C:\Python24\Lib\test\test_binascii.py
"""Test the binascii C module."""

Cなのかというか何だそれどこからインポートしてるだよ…orz

636 :デフォルトの名無しさん:2007/01/18(木) 22:50:47
http://www.koders.com/python/fid92F5AF0C2077ADE05E0AE50E1B1DA97A02BE750E.aspx
beginではなくてbegin-base64だから、こっちのbase64を使うのね

import base64
fs = file('aaa.uue', 'rb')
fd = file('tropy.tar.gz', 'wb')
base64.decode(fs, fd)

4行で解凍できそうだった
(error吐かないで5KBのaaa.uueから4KBのtropy.tar.gzが出来てた)

ファイル"tropy.tar.gz"はアーカイブファイルではありません。
以降のファイルを圧縮しますか?(Lhaplus)

これはどういうことなんだかもう全然さっぱりだよ…orz

637 :633:2007/01/19(金) 01:12:39
おや。uuモジュールはbegin-base64扱えないみたいねスマソ
結局のところbase64なわけだから、元ネタの
>begin-base64 644 tropy.tar.gz
の**次**の行から、最後の
>====
の**前**の行までをbase64.decodeすれば良いだけの話。
(手元の環境で確認済み)


638 :デフォルトの名無しさん:2007/01/19(金) 03:22:49
>>637
解凍デキタ━━━(゚∀゚)━━━!!
base64圧縮ってなんか面白いですね。thxです!!

639 :デフォルトの名無しさん:2007/01/19(金) 14:13:27
Ubuntu 6.10 jaのtkinterのentryウィジェットでscim-anthyを使って
日本語入力できない。

640 :デフォルトの名無しさん:2007/01/19(金) 16:41:32
http://www.amazon.co.jp/gp/offer-listing/4900900966/ref=dp_olp_3/249-7762307-0917115
なんでこれ定価より高い値段がついてんの?

641 :デフォルトの名無しさん:2007/01/19(金) 17:00:30
そりゃ新品が手に入らないからに決まってる

642 :デフォルトの名無しさん:2007/01/19(金) 22:58:06
こっちでいいじゃん。
http://www.amazon.co.jp/exec/obidos/ASIN/0596009402/


643 :デフォルトの名無しさん:2007/01/20(土) 15:13:07
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
data = s.recv(1024)
としたら
data = '\xe5Jk*\x91\x98\xfa\xdf\x88m\n'
となりました。
実際受け取ったのは
E5 4A 6B 2A 91 98 FA DF 88 6D 0A
のようなバイナリデータですが
binascii.b2a_hex(data)とすれば一致するようです。
pythonでのバイナリデータの表現、扱いがわからないのですが
良い方法ありませんか?

644 :デフォルトの名無しさん:2007/01/20(土) 15:59:57
>>643
エスパーレスすると、
data = [ord(c) for c in data]
とかすれば望むものが得られるのではないか?

645 :デフォルトの名無しさん:2007/01/20(土) 15:59:58
>pythonでのバイナリデータの表現、扱いがわからないのですが
そのコードの最後でtype(data)をやれば分かる

>良い方法ありませんか?
何をする方法?

646 :デフォルトの名無しさん:2007/01/20(土) 22:15:00
>>645
日本語もろくに理解できないひとは黙っててください


647 :デフォルトの名無しさん:2007/01/20(土) 23:12:27
IDねえのにも慣れてるし、そのレベルのエサじゃ荒らせないよ。

648 :デフォルトの名無しさん:2007/01/21(日) 00:36:27
おまえらどんな環境で開発してますか?
参考にさせてください。

自分はJavaから流れてきたからeclipseでやってたけど、
お手軽にやりたいのにあんな巨大なIDE使うのもバカらしいなと思って、
最近xyzzyにしてみました。
でも、eclipseだと他のプラットフォームでも使い勝手が同じだからなー。

649 :デフォルトの名無しさん:2007/01/21(日) 00:37:40
Emacs

650 :デフォルトの名無しさん:2007/01/21(日) 00:40:13
IDLE

651 :デフォルトの名無しさん:2007/01/21(日) 00:57:44
iPython + vim

652 :デフォルトの名無しさん:2007/01/21(日) 03:51:24
Emacs

WideStudioってどう?

653 :648:2007/01/21(日) 09:14:23
みなさんありがと。
iPythonとWideStudioってちょっと面白そう。

654 :デフォルトの名無しさん:2007/01/21(日) 12:06:28
Stani's Python Editor とか Komodo とか。

655 :デフォルトの名無しさん:2007/01/21(日) 16:54:16
>>647
最近うんこAA見ないね。
なんか手を変え品を変えって感じだな。

656 :デフォルトの名無しさん:2007/01/21(日) 19:21:59
            !
               |    丶 _    .,!     ヽ
               >     ``‐.`ヽ、  .|、     |
             ゙'.     ,ト `i、  `i、    .、″
                |    .,.:/""  ゙‐,. `    /
             `  .,-''ヽ"`    ヽ,,,、   !
                、,、‐'゙l‐、      .丿 : ':、   <おまたせー
               、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
              ,r"ツぃ丶  ``````   ../  `i、
          ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
         _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
        ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
      、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
     .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
    ,、':゙l:、、`:ヽ、`:、  : `"```¬――'''"`゙^`     : ..、丶  .l゙ `ヽ
   ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
  ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
 j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
 ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
  `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
   ``ヽン'`"`  : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
      `"'゙―-、,,,,..、、                 : ..,、ー'"'`
           : `‘"`―---------‐ヽ``"''''''""


657 :デフォルトの名無しさん:2007/01/21(日) 19:31:00
昔win32にiPythonインスコして日本語使ったら
目も当てられない状況になったのだが今はどうなっているのやら。

658 :デフォルトの名無しさん:2007/01/21(日) 19:54:29
>>657
手元の環境で試してみた。

$ ipy
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.

IPython 0.7.2 -- An enhanced Interactive Python.
? -> Introduction to IPython's features.
%magic -> Information about IPython's 'magic' % functions.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.

In [1]: print "日本語"
日本語

In [2]:

OKみたい。

659 :デフォルトの名無しさん:2007/01/21(日) 19:56:15
出さんでええ

660 :デフォルトの名無しさん:2007/01/22(月) 07:46:40
本格なエディタと別にCopal使ってるよ。Windows限定でスマンな。
スクリプトを保存しないで実行できるし、plinkと組み合わせて
リモートのUNIXマシンのpythonだって実行できるし、
数行から数十行のスクリプトを試す場合、非常に便利。

661 :デフォルトの名無しさん:2007/01/23(火) 12:28:54
pythonで外部コマンドを使うにはどうすればよいのでしょうか?
perlでのsystem('ls')見たいな感じです。

662 :デフォルトの名無しさん:2007/01/23(火) 12:30:54
てか、今調べたらそのまんまでした。
宮崎マンセー

663 :デフォルトの名無しさん:2007/01/23(火) 16:53:20
>>615-617
いつの間に…
おおよそきれいにできました。とんくす

import urllib2
from BeautifulSoup import BeautifulSoup
query_url = 'http://www.google.co.jp/search?num=0&q=yard+to+feet')
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
soup = BeautifulSoup(''.join(opener.open(query_url)))
try:
  print soup.find('img', {"src":"/images/calc_img.gif"}).findNext('b').string
except:
  print "N/A"


664 :デフォルトの名無しさん:2007/01/23(火) 18:25:14
>>661-662
apacheと一緒に使うとくだらない仕様(あるいはバグ)があるのでよぷ注意

665 :デフォルトの名無しさん:2007/01/24(水) 03:10:49
>>643
array.array('B',data)


666 :デフォルトの名無しさん:2007/01/24(水) 07:06:39
日本語の文字列を文字列を文字参照(

667 :デフォルトの名無しさん:2007/01/24(水) 07:09:30
&が消えちったので書き直し

日本語の文字列を文字列を文字参照(&#xnnnn;みたいな形式)に
エンコードするにはどうしたらいいですか?

668 :デフォルトの名無しさん:2007/01/24(水) 07:39:03
へぇ、日本語なんて定義されてたんだ

669 :デフォルトの名無しさん:2007/01/24(水) 07:55:35
# -*- coding: utf-8 -*-
s = u'あいうえお'
s.encode('ascii', 'xmlcharrefreplace')

670 :デフォルトの名無しさん:2007/01/24(水) 10:44:49
>>668
定義っていうかユニコードの文字参照だお。

671 :デフォルトの名無しさん:2007/01/24(水) 12:11:11
ありがとうございますー

672 :デフォルトの名無しさん:2007/01/24(水) 16:17:48
>>667
別解:文字のコード値は ord() で得られる。
>>> text = unicode("あいうえお", "mbcs")
>>> for c in text: print "&#%d;" % ord(c) # まずは単純に for ループで

&#12354;
&#12356;
&#12358;
&#12360;
&#12362;
>>> ["&#%d;" % ord(c) for c in text] # リスト内包でも OK
['&#12354;', '&#12356;', '&#12358;', '&#12360;', '&#12362;']
>>> "".join(["&#%d;" % ord(c) for c in text]) # つなげて完成
'&#12354;&#12356;&#12358;&#12360;&#12362;'
>>> "".join("&#%d;" % ord(c) for c in text) # 2.5だと [] が省ける
'&#12354;&#12356;&#12358;&#12360;&#12362;'
>>>

673 :デフォルトの名無しさん:2007/01/24(水) 17:08:43
「今、Pythonスクリプトの何行目?」を知る方法はないかと調べてたら、
inspect モジュールの f_linenoというのがあったのですが、

#!/usr/local/bin/python
import inspect
ThisFrame = inspect.currentframe()

def LineNo():
 print "(1) %d in function" % ThisFrame.f_lineno
 print "(2) %d in function" % ThisFrame.f_lineno

print "%d in main script" % ThisFrame.f_lineno
LineNo()

これを実行すると
9 in main script
(1) 10 in function
(2) 10 in function
となり、これはこれで正しいですけど、関数定義の中の実際の行番号がわかりません。
もっと、スクリプトの中の絶対的な行番号を知る方法はないでしょうか。

674 :デフォルトの名無しさん:2007/01/24(水) 17:32:43
呼出し元(ひとつ上のフレーム)の行番号を参照してみるテスト。

import sys

def lineno():
 try:
  raise ValueError
 except:
  return sys.exc_info()[2].tb_frame.f_back.f_lineno

675 :デフォルトの名無しさん:2007/01/24(水) 17:43:16
>>674
意味はまだわかりませんけど、その定義を書いて下のようにしたらできました。
ありがとうございます。

def LineNo():
 print "(1) %d in function" % lineno()
 print "(2) %d in function" % lineno()

frameの意味とか勉強してみます。

676 :デフォルトの名無しさん:2007/01/24(水) 17:50:53
連続ですみません。
関数定義の中にinspect.currentframe()を書けば良かったです。

def LineNo():
 FuncFrame = inspect.currentframe()
 ・・・

もうちょっと実験すればよかった

677 :デフォルトの名無しさん:2007/01/24(水) 17:56:18
それだとframeが循環参照になって解放されないらしいから、まずいと思うよ。
Python2.5 ドキュメントの 26.10.4 The interpreter stack 曰く、最後に
del frame しなきゃいけないらしい。下のようにするべき?

import inspect

def lineno():
    frame = inspect.currentframe()
    try:
        return frame.f_back.f_lineno
    finally:
        del frame

def LineNo():
    print "(1) %d in function" % lineno()
    print "(2) %d in function" % lineno()

print "%d in main script" % lineno()
LineNo()


678 :673:2007/01/24(水) 18:12:44
奥が深いですね・・・
もうちょっと勉強してみます

679 :デフォルトの名無しさん:2007/01/24(水) 20:41:03
DevCamp、アプリケーションフレームワーク一色だな・・・

680 :デフォルトの名無しさん:2007/01/24(水) 22:16:59
もっとも他にどんなお題が設定できるかというと...

科学計算ネタとか?

681 :デフォルトの名無しさん:2007/01/24(水) 22:50:00
科学計算なあ。
計算対象(なんたら力学とか)のチョー専門的な話と
解法(離散化手法とか求解性能の分析とか)の割と専門的な話と
ハード(SMPクラスタとか)の話とソフト(SciPyとか)の話があって、
最初の2つは知らない人、使わない人にはワケワカメな可能性が高いし、
あとの2つはあんまり面白い話題がないんだよねえ。
フーンで終わってしまう。俺は好きだけどねえ、そういう話。

682 :デフォルトの名無しさん:2007/01/24(水) 23:16:29
よくわからんのだが、pythonでtask dispatchみたいな真似を
している奴はいないのか?

drubyってのは話には聞くが、rubyがわからないので使った
ことない。


683 :デフォルトの名無しさん:2007/01/24(水) 23:26:57
python distributed objectsでググればぼこぼこ出てくるって話だったな

684 :デフォルトの名無しさん:2007/01/24(水) 23:36:10
>683

おお、ほんとだ。どうもありがと。
ついでですいませんが、どれかお勧めのあったら教えてください。


685 :デフォルトの名無しさん:2007/01/25(木) 13:39:02
>684
ttp://twistedmatrix.com/trac/wiki/FoolsCap

686 :デフォルトの名無しさん:2007/01/25(木) 16:46:44
>684
ttp://www.zope.org/Products/ZODB3.6

687 :デフォルトの名無しさん:2007/01/25(木) 18:02:50
>684
http://docs.python.org/lib/module-DocXMLRPCServer.html
http://docs.python.org/lib/module-xmlrpclib.html

688 :デフォルトの名無しさん:2007/01/25(木) 18:06:38
SOAP とかそのほかいろいろ実装はあるよね

p2p型機構のもあるし

689 :677:2007/01/26(金) 15:19:47
>それだとframeが循環参照になって解放されないらしいから、まずいと思うよ。
ちょっと訂正。最近のPythonのGCは循環参照も検出できるからいつかは解放される。
ただ、循環参照してないオブジェクトが参照カウントが0になった途端に解放される
のに比べて、解放されるまでに時間がかかるのでメモリ的に嬉しくないのと(GCに負荷も
かかるはず)、循環参照検出機能がgc.disableなどでオフにされてると解放されないのとで、
「delしたほうがいい」ということみたい。(絶対じゃないみたい)

690 :デフォルトの名無しさん:2007/01/26(金) 19:11:18
Pythonすげーーーーーーーー!!!!!!
http://headlines.yahoo.co.jp/hl?a=20070126-00000384-reu-ent

691 :デフォルトの名無しさん:2007/01/26(金) 20:04:18
写真ないの?

以前の羊丸飲みネタは写真付きだったが、、、

692 :デフォルトの名無しさん:2007/01/26(金) 20:25:00
見つけた。まだトップにあるがそのうち見れなくなると思う。
http://www.nst.com.my/
直リンク。
http://www.nst.com.my/pix/pix_top_01261
でも思ったほどインパクトないな。こっちのほうが強烈。
http://10e.org/mt/archives/200510/070306.php

693 :デフォルトの名無しさん:2007/01/26(金) 20:57:19
↑画像、何がどうなってるのか分からないw

694 :デフォルトの名無しさん:2007/01/26(金) 22:53:21
結局は負けたも同然ってことか

ワニますこっと な言語ってあったっけ?

695 :デフォルトの名無しさん:2007/01/26(金) 23:06:45
>694
なに勝ち負けにこだわってんだよ。

696 :デフォルトの名無しさん:2007/01/26(金) 23:55:11
勝てないなと思うと
勝負事に興味の無いオレ、を表明するんだよね

697 :デフォルトの名無しさん:2007/01/27(土) 00:02:24
つか、そもそも何と何の勝負なのかわけわからんじゃないかw

698 :デフォルトの名無しさん:2007/01/27(土) 00:06:07
ttp://www.oreilly.co.jp/books/4873110548/

699 :デフォルトの名無しさん:2007/01/27(土) 00:58:12
2.5をmingwでコンパイルしようとしたのですが、うまくいきません。
mingwでコンパイルしてる方いらしたらconfigureのオプションを
教えていただけないでしょうか。次のようにすると、

configure --without-threads --with-pth --pregix=/home/im/python25

configureは通るんですが、

./Modules/posixmodule.c: In function `posix_mkdir':
./Modules/posixmodule.c:2199: error: too many arguments to function `mkdir'

というエラーで引っ掛かってしまいます・・・。mingwの問題のような気がしないでも
無いですが、ひょっとしてposixmodule.cを手で直すしかないのでしょうか・・・。

700 :デフォルトの名無しさん:2007/01/27(土) 01:08:42
>>699
pyMinGWというパッチが存在することからして、
Python.org謹製のtarballではコンパイルは通らない希ガス。

てか、なにゆえ自炊しているの?
拡張モジュールをMinGWでコンパイルして使いたいだけなら
本体側はPython.org謹製のWin32版をインストローリングすればいいわけだが。

701 :デフォルトの名無しさん:2007/01/27(土) 01:21:33
>>700
えっと自分でビルドしてるのは、pythonを組み込み言語として
使おうと思ってるからでして、本家配布のものはVC7で
コンパイルされてるらしいので、できればmsvcrt.dllにCランタイムを
統一したいからです。あとインストーラが嫌いなんです・・・
あとユーザーの環境と組み込みの環境でバージョンが異なる場合を
考えると、ユーザーに本家からダウンロードさせるよりも、
python25.dllをアプリと一緒に配布した方がいいかなと・・・。

pyMinGWはちょっとググって見ます。ありがとうございます。

702 :デフォルトの名無しさん:2007/01/27(土) 06:04:15
pythonとは微妙の異なるが、emacsでタブと、空白に色をつけたい場合はどうしたらいいでしょう?
python-modeとかにないですか?
時々、タブと空白を混ぜて書いてしまって、訳がわからなくなる。


703 :デフォルトの名無しさん:2007/01/27(土) 07:16:39
pythonと全く関係ないと思いますがfont-lock使えばいいと思います

704 :デフォルトの名無しさん:2007/01/27(土) 10:58:24
ところで聞いてくれ>>702よ、スレとあんまり関係ないけどさ。
あやしいリージョンを M-x untabify または M-x tabify すればいいと思われ。

705 :デフォルトの名無しさん:2007/01/27(土) 11:07:19
python-mode 使っていたらそもそもそんなことに悩まなくて済むはずだが

706 :デフォルトの名無しさん:2007/01/27(土) 12:06:02
俺は indent-tabs-mode を nil にして、インデントは空白で統一している

707 :デフォルトの名無しさん:2007/01/27(土) 18:05:28
個人的にはblank-mode.elが手軽だから、
たまーに確認程度に一時的onにする事はある

708 :デフォルトの名無しさん:2007/01/27(土) 23:29:01
pythonの使える、おすすめのホスティングサービス教えてください(海外可)。
できればTurboGearやDjangoのつかえるやつ。

709 :デフォルトの名無しさん:2007/01/27(土) 23:43:07
textdrive

710 :デフォルトの名無しさん:2007/01/28(日) 01:11:10
xreaはpython2.4.3が入ってておすすめ

711 :デフォルトの名無しさん:2007/01/28(日) 02:11:08
ttp://www.value-domain.com/xreaip.php

xreaはこれ見ると新旧入り混じってるように見えるんだが
新規アカウントは必ず新しいサーバーに割り当てられるの?

712 :デフォルトの名無しさん:2007/01/28(日) 06:45:39
>711
xreaはサーバアカウント取得する時に
どのサーバか選択出来るから無問題

713 :デフォルトの名無しさん:2007/01/28(日) 11:09:01
ttp://www.ymc.ne.jp/ のマネージドで Django 動いた.

714 :デフォルトの名無しさん:2007/01/28(日) 14:05:23
sakuraんとこのバージョンはどうなってんのかな
一通りFAQ見てもみつからないんだけど

715 :デフォルトの名無しさん:2007/01/28(日) 18:27:45
>>714
全サーバで同じかどうかは分からんけど

$ /usr/local/bin/python
Python 2.4.3 (#2, Nov 7 2006, 17:01:53)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4

でも、俺自分のホームディレクトリの下に 2.5 をビルドして使ってる.
何の問題もないよ.

716 :デフォルトの名無しさん:2007/01/28(日) 23:15:30
>>715
えっ!?
どうやって自分でビルドするの?
コンパイラ入ってるの?

717 :デフォルトの名無しさん:2007/01/28(日) 23:41:37
sakuraもxreaもgcc使えたはずだけど

718 :デフォルトの名無しさん:2007/01/29(月) 00:25:18
さくらでsqliteがコンパイルできんかった


719 :デフォルトの名無しさん:2007/01/29(月) 11:09:48
>>715
xreaってSSH使ってコンパイルできたっけ?
最近ためしたとき無理だったが。

720 :デフォルトの名無しさん:2007/01/29(月) 11:12:38
あれ?
それなんだったけかなぁ
3.4.xはだめとか3.2.xはいけるとか
そんなんだったきがする
さくらでtrac動かすページに情報あったような...

721 :デフォルトの名無しさん:2007/01/29(月) 11:13:21
すまんsqliteね >>720

722 :デフォルトの名無しさん:2007/01/29(月) 23:14:16
自分でgccからコンパイルせにゃならんのね
鯖の仲間よ、ちょっとだけ負荷かけるが許してくれ


723 :デフォルトの名無しさん:2007/01/30(火) 01:50:43
>>722
つ[nice]

724 :デフォルトの名無しさん:2007/01/30(火) 02:12:41
[nice]⊂(゜∀゜ )サンキュー

おいらブサイクなんで nice -20 で逝こうとした。
でも否定されました。

あ り が と う sakura たん


725 :勉強がてら字幕inのスクリプト書いてみますた:2007/01/30(火) 12:15:57
import cElementTree as ET
weblog = ET.parse(file('_OWv_Q_JNaU.xml')).getroot()

for e in weblog: # xml要素の列挙 これがないとe.findall()が使えない…
 print e.text

# XPath
items = [] # ここで定義しないと駄目、嵌った…orz
for i in e.findall('time'):
 secstr = i.find('sec').text
 sec = float(secstr) # sec = int(secstr)
 print sec      # ここでは元のデータと同じ桁数なのに
 #print "%.3f" % sec
 
 items.append([sec, i.find('comment').text.encode('sjis')]) # listに入れたらfloat表記
  
print items; items.sort(); print items

for e in items: # [[],[],[]] の 形式のリストから中身を取り出す
 print "%.3f\n%s" % (e[0],e[1])


726 :勉強がてら字幕inのスクリプト書いてみますた:2007/01/30(火) 12:17:14
ttp://dev.jimaku.in/rest/get_jimaku_api/ODshB09FQ8w/_OWv_Q_JNaU から
<timeline></timeline>の部分をコピーしてきてxmlファイルに保存して
実行すると、secで昇順にsortされたセリフが出力されます

実数->文字列変換, リスト内でのデータの格納のされ方, 拡張された?print文
リストデータのsortの仕方, 色々勉強になりますた…orz

XPathの使い方は正直いまいち良く分かりませんでした><

727 :デフォルトの名無しさん:2007/01/30(火) 14:56:44
>>>all

おまえらみんな合宿だ
http://www.python.jp/Zope/PyLog//1169034548/index_html

728 :デフォルトの名無しさん:2007/01/30(火) 17:57:12
> ○募集期間
> 1月末まで。

明日までか・・・・。

729 :デフォルトの名無しさん:2007/01/30(火) 18:12:57
柴田淳はもっと評価されてもいい★2
http://news23.2ch.net/test/read.cgi/news/1170148161/l50

730 :デフォルトの名無しさん:2007/01/30(火) 18:18:16
アタマくせえ

731 :デフォルトの名無しさん:2007/01/30(火) 19:59:20
python 2.5.1 は4月まで延期 from python-dev

732 :デフォルトの名無しさん:2007/01/30(火) 20:21:44
Pythonが流行るかどうかはgoogle次第か


733 :デフォルトの名無しさん:2007/01/30(火) 20:38:38
バージョンアップについていけん・・・頭がまだ2.3なんですけど

734 :デフォルトの名無しさん:2007/01/30(火) 21:15:53
>>726
ElementTree に XPath は実装されてないよ。
find() なんかの引数に渡せるのは、 'body/div/p' みたいに
要素名をスラッシュで区切った文字列だけだと思ってほぼ問題なし。

root = ET.fromstring(xml)
items = []
for time in root.findall('timeline/time'):
sec = time.find('sec')
comment = time.find('comment')
items.append([float(sec.text), comment.text])

ElementTree 公式のドキュメントと、urllib, urllib2 を調べると吉です。

735 :デフォルトの名無しさん:2007/01/30(火) 21:37:01
>>733
俺なんて2.1以前だぜ

736 :デフォルトの名無しさん:2007/01/30(火) 21:40:50
XPath Support in ElementTree 1.2
http://effbot.org/zone/element-xpath.htm

737 :726:2007/01/30(火) 22:17:18
>>734
ありがd ちょっと調べてみるyo

738 :デフォルトの名無しさん:2007/01/31(水) 08:27:33
>>733
1.6で勉強したから、それ以降のことはよくわからない
Perlも4まで

739 :デフォルトの名無しさん:2007/01/31(水) 10:45:46
>Perlも4まで

( ゚∀゚)人(゚∀゚ )ナカマー!

>1.6で勉強したから、それ以降のことはよくわからない

ヽ(´ー`)人(´ー`)ノナカーマ


740 :デフォルトの名無しさん:2007/01/31(水) 13:02:41
Jythonと共に2.1で進化が止まったヨー


741 :デフォルトの名無しさん:2007/01/31(水) 13:15:47
sorted関数が便利

742 :デフォルトの名無しさん:2007/01/31(水) 15:39:06
枯れた環境が最高です

743 :デフォルトの名無しさん:2007/01/31(水) 17:37:52
>>744
                        |
                        |
         ___ ,-────-、  |   最高ですか〜〜〜〜!?
       /     `         \ |
       /ヾ ヾ .,! !,,!_´,,//_//    ヽ|
      /=/`''~~       /彡-      |\
      |=.|    二     | 三-     |  \______
      ヽ|   ──     \三-    |
       | ヽ ,,   、ー ̄   \     |
       / /      \   |=/\- (
      |    /         |/ /  ,,|
      |    ( 。つ\       ノ   ||
      .|    /     丶ー    ヽ | |
       |   /____」      | ! ! .|
       |    |/    /     /  ノノノノ
        |    |__/    //   /\_
      //⌒丶 -─      /   /≒/
       ( ヘ )____/_ノ   /≒ /≒
       / /-'          /≒ / ≒
     / ̄ ̄\_____/ ≒, / ≒≒
    /─     \      / ≒ / ≒≒

744 :デフォルトの名無しさん:2007/01/31(水) 18:04:45
       ,,.-- 、
      /   ,-、ヽ /l
      l   !;;ノ |' 〈  < うるせえ
      |      |ヽ.|
      /      ヽ
     ./       l
     l  l      |

745 :デフォルトの名無しさん:2007/01/31(水) 20:49:04
SciPyが使いたくて、Enthought Pythonをインストールしました。
で、IDLEを起動しようとしたんですが、
"tk84.dllが見つからなかったため、このアプリケーションを開始できませんでした。"
とエラーが出て起動できません。
import Tkinterすると159と同じエラーが出ます。
IDLE以外にもTkを使ってるパッケージは同様のエラーで使えない状態です。
何か解決策があれば教えていただけますか。

746 :デフォルトの名無しさん:2007/01/31(水) 23:08:20
tk84.dllを拾ってきたらいいんじゃね?
activetclに入ってるらしいよ

ググる先生が教えてくれたから間違いないよ

747 :デフォルトの名無しさん:2007/01/31(水) 23:30:46
本家のpythonにSciPyを
http://www.scipy.org/
から入れたらダメなの?

748 :デフォルトの名無しさん:2007/02/01(木) 00:31:59
[Python-Dev] Happy Birthday, Guido!

749 :745:2007/02/01(木) 09:26:17
>746-747
ありがとうございます。

>746
とりあえず試してみます。

>747
仕事で個人的に使おうかと思っているのですが、
周りの人間が「オレもそれ使いたい」という状況になったときに、
導入障壁が低い環境にしたかったからです。
Scipy単体で入れるには、LAPACKなどのライブラリも含めて
ビルドする必要があるらしいので。


750 :デフォルトの名無しさん:2007/02/01(木) 15:04:51
単純に python.org の python-2.5.msi と
scipy.org の scipy-0.5.2.win32-py2.5.exe と numpy-1.0.1.win32-py2.5.exe を
拾ってきてインスコすればいいんじゃないの?

751 :745:2007/02/01(木) 17:11:34
>750
downloadにバイナリが置いてあったんですね。
installのページしか見てなかった。orz


752 :デフォルトの名無しさん:2007/02/02(金) 01:33:12
>>751
ところで SciPy 使ってどういう計算をする予定?
スクリプト言語で科学技術計算をやろうとするところに興味がある。

753 :デフォルトの名無しさん:2007/02/02(金) 02:16:16
>スクリプト言語で科学技術計算をやろうとするところに興味がある。

いまや "フツー" じゃねーの?

754 :デフォルトの名無しさん:2007/02/02(金) 03:42:33
matlabみたいに使うんじゃね?

755 :745:2007/02/02(金) 21:18:47
どういう計算かと言われると今の時点では特に無いのですが、
研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。
matlabは職場にあるんですがライセンスが限られているので、
フリーで使えるのはありがたいです。
計算時間が問題になるような用途には
専用のツールやらシミュレータやらで対応します。

756 :デフォルトの名無しさん:2007/02/03(土) 00:46:14
>>755
>どういう計算かと言われると今の時点では特に無いのですが、
>研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。
>matlabは職場にあるんですがライセンスが限られているので、
>フリーで使えるのはありがたいです。
>計算時間が問題になるような用途には
>専用のツールやらシミュレータやらで対応します。

matlabを買った方がいいよ.

757 :デフォルトの名無しさん:2007/02/03(土) 04:11:26
>>755
レスありがとう。なるほど、行列が扱える高機能電卓として使うってことね。

>>753
フツーなのかなあ。
pure Python スクリプトとして計算プログラムを書くの?
それとも C/Fortran コードを呼び出すためのグルー言語扱い?
並列化とかフツーはどーしてんだろう。。。

758 :デフォルトの名無しさん:2007/02/03(土) 10:19:15
分野にもよるんだろうけど、ぐぐってたら
高エネルギー系かなにかの学会(シンポジウム?)での
発表資料で大規模なデータ処理・分析に python を
大々的に使ってるよーというような資料を見たことはあるな.

それを探してっていうよりさりげなく引っ掛かってきた例だし
numeric のスライドとかにも使われている例とか
出てなかったっけ?



759 :デフォルトの名無しさん:2007/02/03(土) 12:14:13
python本家サイトのトップはNASAで採用が表示されているが

760 :デフォルトの名無しさん:2007/02/03(土) 13:36:13
>>757
計算ごりごりのとこはCか何かで書いて、それの貼り合わせ用にPythonでしょ。
特に分業化が進むと有り難みがわかるよ。

761 :デフォルトの名無しさん:2007/02/03(土) 19:13:19
>>758-760
レスどうも。
そーいや、シミュレータの制御全般に Python を使っている、という事例が以前 PyJUG のニュースに載ってたね。
その研究グループを率いている東大のD先生は大の Python 好きなのだそーな(直接うかがった)。
また先日、PyGTK でシミュレータのインタフェースを書いている別の研究グループのポスター発表を見かけた。

ところで、シミュレーション目的に使われる言語のデファクトスタンダードは MATLAB なんだよね。
インタラクティブな開発環境がシミュレーションの方法・アルゴリズムを考える研究者にとって便利なんだろう。
しかし、MATLAB は基本的に逐次の処理系なので、昨今安価に利用可能になってきている SMP マシンや
PC クラスタの並列計算性能が活かせない。じゃーどうするかというと、研究者が MATLAB で書いたアルゴリズムを
プログラマが時間をかけて C や Fortran に書き直して並列化していた。開発効率が恐ろしく悪いので何とかしたい、
ってんで Star-P なんて製品が出てきたけど、まだ発展途上っぽい。

個人的に Python が科学技術計算分野での役割は MATLAB とかなりかぶっていると思ってる。でもって
MATLAB と同じ問題を抱えている気がする。つまり、研究者がインタラクティブな開発環境としてプロトタイプに
使うにはうってつけだけど、いざ並列計算環境で実問題を解きましょうという段になると、結局 C や Fortran による
書き直しが必要になってくる。Star-P に Python/NumPy バージョンが存在するのもうなずける。

でね、「Python で科学技術計算」とゆーのをちょくちょく耳にするようになってきたので、
インタラクティブな pure Python の逐次環境と C/Fortran でゴリゴリ書かざるを得ない並列環境とのギャップを
みんなどーやって埋めてんのかなあ、と思うわけです。そのギャップに対して俺は何ができるのかなあ、と。
そもそも誰も Python でプロトタイピングなんかしてなくて、単なるグルー言語、貼り合わせ用なのかも知れない。
でもそれって「Python で科学技術計算」って言えるのかなあ、と。取り留めのはなしでスマソ。

762 :デフォルトの名無しさん:2007/02/03(土) 19:20:48
PyGTK ぢゃなくて WxPython だった。もひとつ訂正:
Python が科学技術計算分野での役割 → Python の科学技術計算分野での役割

763 :デフォルトの名無しさん:2007/02/03(土) 20:37:59
761の話は並列でするような高度な計算でないと科学技術計算と言えないという
ものが前提になってると思うんだけど、そうなの?

764 :デフォルトの名無しさん:2007/02/03(土) 21:09:23
>>763
んー、俺の関心が主に並列計算にあって、逐次よりも並列の方が C/Fortran で書く必要性が顕著だから
761みたいな書き方になった(言い訳)。並列化のために云々というところを「高速(逐次)計算のために」と
読み替えても761の趣旨は変わらないです。

765 :デフォルトの名無しさん:2007/02/03(土) 21:13:18
行列計算みたいなのは numeric とかの場合でも
実際には C で書いたライブラリに放り投げるから
そんなに遅くはないんですよね?

766 :デフォルトの名無しさん:2007/02/03(土) 21:13:40
そういうことなら
>「Python で科学技術計算」って言えるのかなあ
言えるんじゃね?761の興味には適さないかもしれんが、一般的には言える。



767 :デフォルトの名無しさん:2007/02/03(土) 21:14:50
あれ、ageてしまった。>>764は答えになってないかも。
pure Python (pure MATLAB) で十分間に合う程度の計算は科学技術計算とは言えない、とか
そういう意図は全然ないので念のため。俺の関心が HPC 方面にあるというだけのことです。

768 :デフォルトの名無しさん:2007/02/03(土) 21:17:46
本気で高速化しようとしたらキャッシュ効率なども考慮すべきなので、
C などの言語で書くのは必然になる。「Python で科学技術計算」 なら
それほど真剣に高速化する必要はないけど、それなりの速度が出て、
しかもちゃらっと書ける、ってのが落としどころなんだと思う。

そう考えると、いわゆるスケルトン系のアプローチなんかは向いてる
ような気がする。言語の性質にも適合するところが多そうだし。

769 :デフォルトの名無しさん:2007/02/03(土) 21:52:54
>>765
そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは
Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、
そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。

>>766
> 761の興味には適さないかもしれんが、一般的には言える。

そーなんだよね、やっぱ。これからは相手の趣旨を確かめるようにしないとなあ。

>>768
そこが落としどころだと俺も思う。
たぶん「本気の高速化」が必要な人には Python の「貼り合わせアプローチ」はアピールしないんだろうなあ。

770 :デフォルトの名無しさん:2007/02/03(土) 22:12:15
ちょっと話が変わるけど、先日 High Performance Ruby (HPR) の開発者の話を聞いた。
MPI でコリコリ並列プログラムを書くのはたいへんなんで、もっと抽象度を上げましょう、
とゆーことで、逐次の Ruby を並列プログラムが書けるように拡張してますよーという内容。
1.クラスタを構成する個々の計算ノードを place オブジェクトとして抽象化
2.for ループを並列化して、ループ内のコード(クロージャ)を place オブジェクトに割り当てて並列実行
てなことをやるという話だった。

Python もこういうアプローチを進めてみると「本気の高速化」が必要な人にもアピールするかもなあ。
インタラクティブな逐次環境と高性能計算(HPC)用途の並列環境のあいだのギャップを埋める可能性は
こっちの方向にある気がしてきた。

みんな、取り留めのないはなしに乗ってくれてありがとう。

771 :デフォルトの名無しさん:2007/02/03(土) 22:26:59
や は り R u b y か

772 :デフォルトの名無しさん:2007/02/03(土) 22:31:26
>そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは
>Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、
>そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。

「ボトルネックはCで書くからRubyの遅さは問題にならない」はむしろRubyの売り文句だった
希ガス。「逆に考えるんだ。RubyをGCのついたCライブラリと考えるんだ」というのもあったね。

773 :デフォルトの名無しさん:2007/02/03(土) 22:35:53
あー、えーと、俺は自他共に認める根っからの Python 使いなので念のためw

774 :デフォルトの名無しさん:2007/02/03(土) 22:40:08
「〜なあ」ってMatzの口調にそっくり。もしかして本人?

775 :デフォルトの名無しさん:2007/02/03(土) 22:46:53
770=773です。

>>772
Ruby のことは知らないけど、
少なくとも Python では「遅さは問題にならない」というわけにはいかなくて、
Cで書かれたライブラリを呼んでいても数パーセントの呼び出しオーバヘッドが乗ってくる。
結局のところ、生産性を取るか高速性を取るかという話になってるんだよねえ。
ぶっちゃけ、グルー言語としての Python はほぼ完成の域にあって
技術的にはあまり面白みがないし、前述のギャップも埋められそうにない。
じゃあどういうアプローチなら可能で、俺にも貢献ができそうかなあと思ったわけです。

776 :デフォルトの名無しさん:2007/02/03(土) 22:49:07
>>773
確かに多いな(www
http://www.google.co.jp/search?as_q=%E3%81%AA%E3%81%82&hl=ja&as_sitesearch=www.rubyist.net

777 :デフォルトの名無しさん:2007/02/04(日) 02:23:41
>>770
そういう話であれば Fortress の今後に期待

778 :デフォルトの名無しさん:2007/02/04(日) 02:58:11
>>777
先日 Sun のインタプリタがフリーソフトになったし有望株だね。
昨年の春に Guy L. Steele Jr. の講演を聞いたよ。
開発目的は To Do for Fortran What Java Did for C なんだと言ってた。
数式っぽくコーディングできるあたりは MATLAB ユーザにも受けるかもね。

HPR の開発者の人も Fortress を含め DARPA HPCS 言語を引き合いに出して
並列プログラミングの生産性を上げることが HPR の目標だと言ってた。

この方面は今後面白くなりそうだね。
Python ベースの分散並列プログラミングのフレームワーク作りとかやったらチョー楽しそう。

779 :デフォルトの名無しさん:2007/02/04(日) 05:05:18
誰も使わないに200ルピー

780 :デフォルトの名無しさん:2007/02/04(日) 11:21:55
ttp://www.cbook24.com/bm_detail.asp?sku=9784774130422

3月2日発売だとさ.

781 :デフォルトの名無しさん:2007/02/04(日) 11:30:30
なんかガキっぽいタイトルだなw

782 :デフォルトの名無しさん:2007/02/04(日) 12:38:18
ガキっぽい脊髄反射しかできないやつにそういわれると説得力あるな(wwwwwww

783 :デフォルトの名無しさん:2007/02/04(日) 14:15:14
>RubyやPerlを習得した若年層のWeb開発者を中心に、Pythonへの関心が高まってきています。
この表現に何か引っ掛かるものが・・・w

784 :デフォルトの名無しさん:2007/02/04(日) 14:21:52
ルビーやパールはリナックスだからな
パイソンはABCから派生したらしいね
パイソンはスクリプト言語で速度重視では
ないだろ

785 :デフォルトの名無しさん:2007/02/04(日) 14:23:43
>>783
あんまり粘着するとZOPE関係者だと疑われるよ

786 :すげーしっくり来ないんだけど:2007/02/04(日) 14:26:36
>784
どこのコピペ?

787 :デフォルトの名無しさん:2007/02/04(日) 14:37:40
コピペじゃないよ
ルビーやパールはリナックスの人が使うから
パソコンユーザーのほとんどがウインドーズの人
だからパイソンを使うという話

788 :デフォルトの名無しさん:2007/02/04(日) 14:46:36
そういう意味ではパイソンもリナックスだよ。たいてい標準装備だし。

789 :デフォルトの名無しさん:2007/02/04(日) 15:10:45
>>780
> Software Design、LLフレームワーク、.Net Expertの既存コンテンツからの再録を中心にすえることで、コストを抑えた製作を行う予定です。
激しく萎える説明文ですな.

790 :デフォルトの名無しさん:2007/02/04(日) 15:14:03
>>789
www
企画書かなんかをそのまま写しちゃったのかな

791 :デフォルトの名無しさん:2007/02/04(日) 15:25:04
>>780
Djangoって書いてあるけど,これまでSDの記事になったことってあったっけ?
どこからの再録なんだろう?


792 :デフォルトの名無しさん:2007/02/04(日) 15:32:41
>>791
書き下ろしの記事もあるみたいだね.
雑誌のMOOKなんだから、再録があるのは普通.

いずれにしろ、ここに巣くってる貧乏人のITドカタ共には関係のない話だけど.

793 :デフォルトの名無しさん:2007/02/04(日) 17:35:18
IT貴族もいるお\(^o^)/

794 :デフォルトの名無しさん:2007/02/05(月) 03:09:19
>>792
プログラミングなんか仕事にするかよ、失礼なw

795 :デフォルトの名無しさん:2007/02/05(月) 03:35:03
老後の趣味です

796 :デフォルトの名無しさん:2007/02/05(月) 04:50:12
pythonをinteractive modeで起動したときに、C-pやC-nって使えるはずですよね?
MacOS X (MacBook intel core duo) でPython2.5をコンパイルしたら、C-pもC-nも使えないから困ってます。

$ cd Python-2.5/
$ ./configure --prefix=/usr/local
$ grep readline config.log
...
ac_cv_lib_readline_readline=yes
ac_cv_lib_readline_rl_callback_handler_install=yes
ac_cv_lib_readline_rl_completion_matches=no
ac_cv_lib_readline_rl_pre_input_hook=yes
#define HAVE_LIBREADLINE 1

readlineはちゃんと検出されてるんだけどなあ。
なんかアドバイスちょーだい。


797 :デフォルトの名無しさん:2007/02/05(月) 06:33:27
大変っスねw

798 :デフォルトの名無しさん:2007/02/05(月) 07:39:34
>>794
早寝早起きからはじめような。

799 :デフォルトの名無しさん:2007/02/05(月) 08:03:46
なにそのつまらん返しw

800 :デフォルトの名無しさん:2007/02/05(月) 08:10:47
>>796
OSX(10.3.9)ですが、普通に使えてますよ。
ターミナルの設定なんかを見直してみては?

801 :デフォルトの名無しさん:2007/02/05(月) 14:32:57
unix 上の python で

str = '\hoge\real\path' # window系の path 文字
idx = str.find('real')

ってことをやりたいんですが '\r' として
解釈されてしまうんでどうにもマッチできません。

re.escape() ってのがソレかと思ったんですが \r は
そのまま残ってしまいました... orz

どうやって加工すればいいのでしょうか?

802 :デフォルトの名無しさん:2007/02/05(月) 14:41:36
Rubyとは違い、シングルクオートでもエスケープ文字は有効になる。
>>> '\n' == "\n"
True
だから
'\\hoge\\real\\path'
とするか
r'\hoge\real\path'
とするといい。

803 :726:2007/02/05(月) 14:43:37
>>801
エスケープシーケンス \r python で google!

http://systama.blog52.fc2.com/blog-entry-23.html(要点)
http://www.m-takagi.org/docs/python/tut/node5.html(詳細)

804 :デフォルトの名無しさん:2007/02/05(月) 14:46:31
「'\r' として解釈されてしまう」ということまで判っているのに解決できないという
というのが興味深い。

805 :デフォルトの名無しさん:2007/02/05(月) 15:00:28
ごめんなさい....
>802,803 を読んでそっかーと思って調べなおいてみたら...

読み込んだ時点で '\\r' に変換されていたのに
自分のコード片のテストを '\r' な文字を突っ込んで
やろうとしていた自分の勘違いミスでした...

アドバイスありがとうございます

806 :デフォルトの名無しさん:2007/02/05(月) 17:12:35
>>775
なんか、話を蒸し返すようで悪いが、
言語がスレッドセーフであるのも大事なんだろうけど、
プログラムする側も、マルチスレッドのデザインパターンが
使えないとまずいんじゃないの?
結城氏の本にデザパタのマルチスレッド版があったが(java本だけど)。
もっとも、自分の場合は普通のデザパタを学ぶので、手一杯。
いつか余力があったら、マルチスレッドのデザパタもやりたい…。

807 :デフォルトの名無しさん:2007/02/05(月) 17:39:10
プログラミングの鬼門一覧

・ポインタ(リファレンス)
・構造体
・オブジェクト指向
・マルチスレッド

すべての鬼門を越えられないと,デザパタを学んでも"設計"ができるようにはならない.
できない人は手足君として一生こき使われる運命.

808 :デフォルトの名無しさん:2007/02/05(月) 17:49:53
デザパタ=劣化オブジェクト指向
どうしてみんな自分の手足を縛りたがるのかが不明

809 :デフォルトの名無しさん:2007/02/05(月) 17:50:27
>>807
そんな基本的なことを知らない馬鹿はまずいないw

810 :デフォルトの名無しさん:2007/02/05(月) 17:51:44
オブジェクト指向の知ったかが多いことは過去スレが示している

811 :デフォルトの名無しさん:2007/02/05(月) 17:52:16
うーん、Cの方かと思うけど、
Pythonの場合は、
・ポインタ(リファレンス)
・構造体
はいらないよ。
Pythonは変数は基本的に参照渡しがデフォだし、
構造体は、メソッドのないクラスで代用だと思う。

オブジェクト指向とマルチスレッドは必須じゃないけど、
使えるようにはなりたいねー。
ただ、マルチスレッドの優先度は低いでしょ。

デザパタ本は、Pythonで書かれた本がほしいよね。
もっとも、慣れればjavaをPythonに直すのはたいした事も
ないけど。

みんなして、デザパタ本のJavaをPythonで組みなおしてるのは
無駄の極みだと思うので、誰か本ででもwebででも公開して
ほしい…。

812 :デフォルトの名無しさん:2007/02/05(月) 17:58:10
>>808
大丈夫かよ。
メソッドで直接インスタンスの生成とかしてないだろうね?

813 :デフォルトの名無しさん:2007/02/05(月) 17:58:13
「みんなして」ってことは>>811氏は当然してるってことだよね。
それを本やwebで公開したら良いと思ってるんだよね。
だったら自分でするべきことは決まってるよね?

814 :デフォルトの名無しさん:2007/02/05(月) 18:09:29
         _,,..,,,,_ . _
        ./ ,' 3 /   ヽ--、
        l   /        ヽ、
       /`'ー/_____/
        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

815 :デフォルトの名無しさん:2007/02/05(月) 18:16:12
>>811
http://www.amazon.com/dp/0130409561

表紙にワロタ
http://www.amazon.com/dp/1932394621


816 :811:2007/02/05(月) 18:20:35
じゃ、Template Method パターンを。

>>> import sys
>>> import exceptions
>>>
>>> class _Template(object): # Abstract なつもり
... def write(self): # public なつもり
... self._writeHeader()
... self.__writeBody()
... self._writeFooter()
... def _writeHeader(self): # protected なつもり
... raise exceptions.NotImplementedError, '%s' %`self.__class__`
... def _writeFooter(self): # protected なつもり
... raise exceptions.NotImplementedError, '%s' %`self.__class__`
... def __writeBody(self): # private なつもり
... sys.stdout.write(self._message)
...
>>> class Implement1(_Template):
... def __init__(self, message):
... self._message = message
... def _writeHeader(self):
... sys.stdout.write('/ ')
... def _writeFooter(self):
... sys.stdout.write(' /\n')


817 :デフォルトの名無しさん:2007/02/05(月) 18:20:54
なんだよそれw

818 :811:2007/02/05(月) 18:21:31
>>> class Implement2(_Template):
... def __init__(self, message):
... self._message = message
... def _writeHeader(self):
... sys.stdout.write('+-' + '-' * len(self._message) + '-+\n| ')
... def _writeFooter(self):
... sys.stdout.write(' |\n+-' + '-' * len(self._message) + '-+\n')
...
>>> x = Implement1('test1')
>>> x.write()
/ test1 /
>>> x = Implement2('test2')
>>> x.write()
+-------+
| test2 |
+-------+

ホントは、どっかで拾ってきたものだけどなw

819 :デフォルトの名無しさん:2007/02/05(月) 18:26:24
やれやれ、
インデント崩さずに持ってくるのは、難しい…org

820 :デフォルトの名無しさん:2007/02/05(月) 18:29:30
ファイルロックについてお尋ねします。
Windows, MacOS, UNIXの各プラットフォーム間で可搬性を
なるべく失わずにファイルロックを行うにはどうしたら良いですか?
file.flock(FILE::LOCK_SH) のようなことがしたいのです。
os.open()でいけるかとも思ったのですが、ファイルオブジェクトを
返すのではなくディスクリプタを返すらしく、使うのに躊躇しています。

821 :デフォルトの名無しさん:2007/02/05(月) 18:38:57
ファイルディスクリプタの扱いがわからんレベルなら、
マルチプラットフォームは諦めたほうがいい。

822 :デフォルトの名無しさん:2007/02/05(月) 19:08:33
>>816>>818
そういうのって、先に、Implement1と2があって、共通部分を自然に抽出
したら、_Templateが出てきました。っていうのが本来の流れであって、
はじめから_Templateありきで書き始めるのは、むしろ生産性が落ちると思う。
そして、本当に、_writeFooter、_writeHeaderが必要なのかどうか(この場合必要ない。
を考えなくなるから、いつまでたってもコードがきれいにならない

823 :デフォルトの名無しさん:2007/02/05(月) 19:45:51
テンプレート・パターンの重要な点は、
細部なんかどう書くのか分らないけど、
これこれこういう筋道で組み立ててよ、と指し示すためのものだ
ということでしょ。

テンプレートは作ったから、あとは君、頼むね、っていうか。
エラーが出るようになっているのは、そうなっているかを
チャックするためだし。

一般的にいって、オブジェクト指向ではクラスを作る人と
使う人が別にいて、クラスを作る人は苦労をしょいこみ、
クラスを作る人は楽をするようにする、というものでしょ。

気がついたら、ほとんどフレームワークのようになっていた
というのが理想なんじゃないかな。もちろん、そんなにうまく
いくもんじゃないけど。

クラスを作る人が苦労を背負い込めば、使う人は楽をできる。
それが基本の考えと思うよ。
あるいは、一度苦労してクラスを作っておけば、
あとで何度でも楽ができるというか。

クラスを作るのは一度だけ、でも、インスタンスは何でも
使うもんだし。

824 :デフォルトの名無しさん:2007/02/05(月) 19:49:16
>>811
ポインタが分からないヤツにどうやって参照渡しを説明しろと?
構造体が分からないヤツにどうやってオブジェクト指向のデータ構造を説明しろと?

825 :デフォルトの名無しさん:2007/02/05(月) 19:58:04
>>824
いや、だって、cならそうだろうけど、
Pythonでは基本的に参照渡ししかないし、
構造体はないから、メソッドを省いたクラスを使うしかないし。

もちろん c ならお説のとおりと思いますが。

826 :デフォルトの名無しさん:2007/02/05(月) 19:58:52
オレはVBで参照渡し覚えたけどな
だからCをやったときすぐにポインタが理解できた

827 :デフォルトの名無しさん:2007/02/05(月) 20:09:24
>>821
お手軽な手段を求めてしまった自分が恥ずかしいです。
とりあえずこれを試してみることにします。ありがとうございました。
ttp://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203
# os.open()はNTではO_EXLOCKが定義されていないのでそもそもアウト

>>824
参照っていう概念さえ説明してしまえば、ポインタ抜きでデータ構造について
説明できるのがPythonみたいな言語のメリットのような気がします。
ttp://www.ibiblio.org/obp/thinkCSpy/
構造体の知識はstructモジュールとか使うときに必須?

828 :デフォルトの名無しさん:2007/02/05(月) 20:13:10
775です。流れを無視して遅レス。

>>806
えーと、あまり網羅的に見ているわけじゃないけど、
すくなくとも俺の知る限り、科学技術計算、特に高性能計算(HPC)の分野では
オブジェクト指向のオの字もないです。もちろんデザパタもね。
MPI とか OpenMP といった並列化技術が主流で、
みんな C/Fortran でゴリゴリと構造化プログラミング(笑)してます。
つまり、「デザパタ」と呼べるようなオブジェクト指向的共通認識が全然ない。
もちろん MPI や OpenMP には各々「定石」の書き方、たとえば all-to-all とか
reduction みたいな各種の常套手段があって、知らないと困るわけだけど、
そういうのはデザパタとは呼ばない気がする。
でもって、今ある道具や定石は抽象度が低くて生産性があまりよろしくない。
それで Fortress とか HPR とか>>778の「分散Python」みたいな話が出てくるわけです。

829 :デフォルトの名無しさん:2007/02/05(月) 21:49:59
所詮何が必須かなんて何をやりたいかによって変わってくるんだろうけど、
参照渡しと値渡しの違いが判らないと、pythonでも困る場合が多いような。
値渡し相当にしたくて、リスト[:]でコピーして渡す場合も多いよね。


830 :デフォルトの名無しさん:2007/02/05(月) 21:52:28
それに、デザパタってのは右も左もわからないような新兵どもを
それなりに使える駒の集団にするための道具であって、
一人で動くプログラマにはあまり関係ない。
「珠玉の〜」であろうとKnuth本であろうと先人の生きたコード
読んで学ぶのだろうと、好きなやりかたで学べばだいたい同じような
所に落着くしね。


831 :デフォルトの名無しさん:2007/02/05(月) 22:37:09
>>830
そうそう、デザパタなんて色んなスキルのヤツが沢山いる開発チームで使う
コミュニケーションの道具に過ぎない
プログラミングの神髄はもっと深いところにあるし
誰でも神髄に触れられるわけではない

832 :デフォルトの名無しさん:2007/02/05(月) 22:40:30
>ポインタ抜きでデータ構造について説明できる

参照渡しにしろポインタにしろ同じものを別の単語で説明しているだけだし
「ポインタ抜き」に拘る理由も[ポインタを抜いてもいい」理由もないと思う

むしろ ぽいんた というのがハッキリ見えているのは
概念の説明には便利だと思う。

833 :デフォルトの名無しさん:2007/02/06(火) 00:17:56
>>828
オブジェクト指向の前に構造化設計/分析が先じゃないかな。


834 :デフォルトの名無しさん:2007/02/06(火) 01:02:53
>>833
んー、たぶん、C/Fortranでゴリゴリってのが現場の要求に一番見合ってる分野なんだと思う。
読みやすくーとか、保守性がーとか言ってたらコードがどんどん遅くなって、
大枚はたいて買った計算時間が無駄になる世界だからね。とても保守的で旧態依然としてる。
そういう世界だと Python みたいな「速度はそこそこだけど書きやすい」的な言語は
はっきり言って異端で、使っている人がいると目立つのです。

並列計算機が安くなって計算時間を金で買わなくてもよくなった人が増えた一方で、
解くべき問題が複雑になって生産性が速度に優先するようになってきたってことなんだろうなあ。
いい流れだ。

835 :デフォルトの名無しさん:2007/02/06(火) 01:07:37
横からだけど、構造化設計/分析って、
UMLなどのオブジェクト指向・分析設計のこと?
それとも、構造化プログラミングの設計のこと?

僕としては、ぱっぱと関数にわけでくみ上げていける
構造化プログラミングの良さをもっと見直してもいいんじゃないかな、
という気もしてる。
UMLでいつまでも足踏みしてるのも馬鹿らしいし。
いったん構造化でコードを組んでから、必要な部分だけクラス化して
いくというような手法がいいんじゃないかと思うんだけど、
邪道かなぁ。
リファクタリングが手法として認められるなら、
これだって、よほどマトモな考えと思うんだが。

あー、もとの話はマルチスレッドによる高速化の話だったんだよね。
デザパタのマルチスレッド版の話を持ち出したのは、スレッドの同期を
いちいち手作業で考えていたのではやってられないと思ったので。
形式をあわせるだけで、スレッドの同期やロックが安心できるなら、
その方がいいかなと。
Javaではマルチスレッドのデザパタがあるようだし。(結城氏の本ね)

ところでその前に、Python自体がスレッドセーフなのかどうかが
分らないんだけどw

836 :デフォルトの名無しさん:2007/02/06(火) 01:17:39
「科学技術計算」というのがどこからどこまでを指すのかわからないけど、大学なんかで実験データを
加工したりといった用途ならPythonで十分な希ガス。漏れはC++で組んだけど、結構大変だった。

そういえば「電脳Ruby」とかいう数値計算にRubyを使う話があるけど、この分野なんかでもPythonで
十分といえるのではないだろうか。


837 :デフォルトの名無しさん:2007/02/06(火) 01:20:14
無政府状態

手続きの抽象化

[構造化プログラミング]

データ構造の抽象化

[オブジェクト指向プログラミング]

データ構造の抽象化を前提とした手続きの抽象化

[関数型プログラミング] ← 今このへん

?????

838 :デフォルトの名無しさん:2007/02/06(火) 01:29:04
>835
オブジェクト指向を含めず構造化のみで組むってこと?
俺は逆に構造化のみのプログラミングの方が
データと手続きを分離しなくちゃいけなくて面倒だと思うのだが…

839 :デフォルトの名無しさん:2007/02/06(火) 01:33:43
もうちょっとふさわしいスレでやってくれよ。邪魔。

840 :デフォルトの名無しさん:2007/02/06(火) 01:35:18
>>838
スキルも経験も作りたいものも様々だから一概には言えない。
明らかに不毛な議論。

841 :デフォルトの名無しさん:2007/02/06(火) 02:34:51
>>821
おれも調べたけど、Pythonではwindowsとunixとで共通に使えるfile lockは提供されてないみたい。
これぐらいあってもおかしくないのにね。Rubyにはあるからできないはずないんだけど。file descriptor関係なく。
おれは
fcntl = msvcrt = None
try:
 import fcntl
except ImportError, ex:
 try:
  import msvcrt
 except ImportError, ex:
  pass
として、あとはfcntl is not Noneならfcntl.flock()を、msvcrt is not Noneならmsvcrt.locking()を呼び出す関数を定義している。
>>827の方法だとうまくいかないと思うけど、うまくいったら教えて。

842 :デフォルトの名無しさん:2007/02/06(火) 05:57:08
>>838
>オブジェクト指向を含めず構造化のみで組むってこと?

じゃなくて、Pythonではオブジェクト指向が強制されてないのを逆手にとって、
構造化プログラミングを基本としつつ、必要なところだけオブジェクト指向に
するという考えもあっていいんじゃないかなといってみただけだよ。

構造化は、とにかく簡単に手がつけられるからね。
オブジェクト指向だと最初の設計ですべて前倒しにくるから、
やんなるときもあるなあと。

843 :デフォルトの名無しさん:2007/02/06(火) 14:35:17
Pythonの勉強をしています
以下のようにしたのですがうまくいきません

>>> keys = ['a', 'b']
>>> vals = []
>>> index = {}
>>> for i in keys:
... index[i] = vals
...
>>> index
{'a': [], 'b': []}
>>> index['a'].append('hoge')
>>> index
{'a': ['hoge'], 'b': ['hoge']}

キー a の要素である空リストに hoge 文字列を追加したいのですが
b にも追加されてしまいます。

>>> index
{'a': ['hoge'], 'b': []}
こうなってほしいのですが、ご助言お願いします。

844 :デフォルトの名無しさん:2007/02/06(火) 14:54:22
for i in keys:
 index[i] = []

とか。
あと、keys とか index は辞書やリストのメソッド名になってるから
使わない方がいい。

845 :デフォルトの名無しさん:2007/02/06(火) 15:07:08
844さん
ありがとうございます。
index[i] = [] でできました。
自分でも調べてみまして、Python ライブラリリファレンス の
シーケンス型ってとこに「注意しなさい」とかいてありました。
index = range(0)
とやっても大丈夫でした。

なぜ駄目なのかはよくわかっていません。
ists = [[]] * 3 と lists = [[] for i in range(3)]の違いです。
同じ場所をみてしまう?
もう少し自分で調べてみます。

あと、keysとかindexとか普通につかってました。
どうもありがとうございました。

846 :デフォルトの名無しさん:2007/02/06(火) 17:15:41
参照渡しがどうのこうのってはなしじゃないの?

847 :デフォルトの名無しさん:2007/02/06(火) 17:43:59
プログラミングの基本はなんでも同じなんだよ。
だってハードウエアのアーキテクチャはもう何十年も変わってないんだから。
ポインタとかリファレンスの概念が分からない人は壁にぶち当たって挫折する。


848 :デフォルトの名無しさん:2007/02/06(火) 17:48:56
>845
>同じ場所をみてしまう?

そういうことです。詳しくはほかの人がいっている
参照渡しとかポインタと化のキーワードについても調べると
ためになると思うよ

849 :デフォルトの名無しさん:2007/02/06(火) 17:58:52
あまりにもドンピシャな質問だったので、ネタかと思ったぐらいだ。


850 :デフォルトの名無しさん:2007/02/06(火) 18:04:42
>>843を生かすのであれば

index[i] = vals[:]

かね

851 :デフォルトの名無しさん:2007/02/06(火) 19:27:20
>>> index = {}
>>> vals = [[]]
>>> index["a"] = vals[:]
>>> index["b"] = vals[:]
>>> index
{'a': [[]], 'b': [[]]}
>>> index["a"][0].append(1)
>>> index
{'a': [[1]], 'b': [[1]]}
>>>

マジレス禁止だからねっ

852 :827:2007/02/06(火) 19:32:33
>>841
WinXP SP2 + Python2.5 + pywin32-210 で試してみました。結果は、
win32file.LockFileEx(hfile, flags, 0, 0xffff0000, __overlapped)
OverflowError: long int too large to convert to int
お察しのとおり、動きませんでした・・・。

msvcrt.locking()は排他ロックしかないのが気になります。
RubyだとWin95ならLockFile()、NTならLockFileEX()を呼んで
File::flock()しているようなので、ctypesをで同様のことができないか調べてみます。
いろいろと勉強になりました。ありがとうございました。 >>821 >>841

853 :デフォルトの名無しさん:2007/02/06(火) 20:56:23
>>844
>あと、keys とか index は辞書やリストのメソッド名になってるから
>使わない方がいい。
別にビルトイン関数じゃないし、問題ない希ガス。
>>> index
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'index' is not defined
それに、仮にindexがビルトインで自前で定義した変数・関数が
それを隠しても、モジュールなり関数なりの中だけ(スコープの中だけ)
だから気にする必要なさげ。(自分が使わなければ問題ない)

854 :デフォルトの名無しさん:2007/02/06(火) 21:02:11
>>843
keys = ['a', 'b']
index = dict([(k, []) for k in keys])


855 :デフォルトの名無しさん:2007/02/06(火) 21:02:14
>>> def foo():
... def list(*a): # ビルトイン関数を隠す
... print "list"
... list([1,2,3])
...
>>> foo()
list
>>> list([1,2,3]) # 関数の外は俺list()のスコープ外だから影響なし
[1, 2, 3]

Rubyとかだと、うっかりトップレベルでindex定義しちゃうと悲惨なことに
なるけどね。

856 :デフォルトの名無しさん:2007/02/06(火) 21:05:23
メソッド名を使うのはへっちゃらだな。ビルトイン関数名はハマる場合あり。

857 :デフォルトの名無しさん:2007/02/06(火) 21:15:09
Pythonはスコープのルールがシンプルだからいいよね
selfもまんざら捨てたものじゃない

858 :デフォルトの名無しさん:2007/02/06(火) 21:58:07
>>857
卒業おめでとう.成人おめでとう.

859 :デフォルトの名無しさん:2007/02/06(火) 23:30:01
843です
皆さんありがとうございます
本当に参考になります

>>854さん
!これかっこいいですね
これ使います
ありがとうございました

860 :デフォルトの名無しさん:2007/02/07(水) 01:01:48
へー、dictってタプルのリストで初期化できるんだ。知らんかった。


861 :デフォルトの名無しさん:2007/02/07(水) 01:17:36
>>860
入門書くらい嫁。

862 :860:2007/02/07(水) 02:46:45
>861

スマン。Tutorialに書いてあるの斜め読みで読み落してた。


863 :デフォルトの名無しさん:2007/02/07(水) 04:46:37
ジェネレータ式が使える。
index = dict(((k, []) for k in keys))


864 :デフォルトの名無しさん:2007/02/07(水) 05:00:56
>>852
成功したら教えて。

865 :デフォルトの名無しさん:2007/02/07(水) 11:57:37
>>862
俺も知らんかった。今ちょうど下のようなのが欲しかったから、こりゃ便利。
Keys = ('K1','K2')
ValsA = ('V1A','V2A')
ValsB = ('V1B','V2B')
DictA = dict(zip(Keys,ValsA))
DictB = dict(zip(Keys,ValsB))

866 :デフォルトの名無しさん:2007/02/07(水) 13:26:17
>>865
おまえはついでにPEP8を嫁。

867 :デフォルトの名無しさん:2007/02/07(水) 23:41:39
コンソールからディレクトリ名を入力させてやる時に、入力補完
とかするにはどうしたらいいですか。

868 :デフォルトの名無しさん:2007/02/07(水) 23:56:33
IPythonを使う

869 :デフォルトの名無しさん:2007/02/08(木) 00:04:03
>>863
一番外側の括弧は要らないね。

870 :デフォルトの名無しさん:2007/02/08(木) 13:38:01
下らない質問ですいません。
ipython 0.7.3 + python 2.5 ですが。

In [23]: s = '@'.decode('cp932'); print s, type(s), hex(ord(s))
@ <type 'unicode'> 0x2460

これあってますよね。でも

In [24]: s = u'@'; print s
<type 'exceptions.UnicodeEncodeError'>: 'cp932' codec can't encode character u'\x87' in po
sition 0: illegal multibyte sequence

In [27]: print type(s), hex(ord(s[0])*0x100+ord(s[1]))
<type 'unicode'> 0x8740

タイプはunicodeなのにコードはsjis。どうして?

python 2.5だと
>>> s = '@'.decode('cp932'); print s, type(s), hex(ord(s))
@ <type 'unicode'> 0x2460
>>> s = u'@'; print s, type(s), hex(ord(s))
@ <type 'unicode'> 0x2460
で望んだ結果になるんですけど。

871 :デフォルトの名無しさん:2007/02/08(木) 19:55:59
Python3000wktk

872 :デフォルトの名無しさん:2007/02/08(木) 19:58:42
>>870
一般に、対話環境において、s = u'@' が s = u'\x87\x40' と等価になるか
s = u'\u2460' と等価になるかは個々の対話環境の実装・バージョン依存だと思われ。
だめなものはだめ。

(もちろんソースファイルに書く場合は # -*- coding: spamspam -*- の設定次第。
これはまた別問題。)

873 :デフォルトの名無しさん:2007/02/08(木) 21:50:51
>>410-411
http://python.matrix.jp/tips/compatibility/interact_encoding.html

対話モードのエンコードについてはこの辺がよくまとまめられてる と思われ。

874 :デフォルトの名無しさん:2007/02/09(金) 11:00:40
>>872
わかりました、とりあえず対話環境ではこういうものだということで理解しました。
どうもありがとうございます。

875 :デフォルトの名無しさん:2007/02/09(金) 23:24:57
Some クラスのインスタンス
s = Some()
に、メソッドを追加することはできますか?
s.Foo = メソッド
のようにしたいのですが。

876 :デフォルトの名無しさん:2007/02/09(金) 23:36:53
メソッドを定義して代入しちゃいなよ、you

877 :デフォルトの名無しさん:2007/02/09(金) 23:40:42
どんな風に書いたらよろしいでしょうか。

878 :デフォルトの名無しさん:2007/02/09(金) 23:48:24
>>> import new
>>> S = type('S', (), {})
>>> s = S()
>>> s.amethod = new.instancemethod(lambda x, y: y, s, S)
>>> s.amethod(10)
10
>>>

879 :デフォルトの名無しさん:2007/02/10(土) 04:53:18
pythonスクリプトのなかでPythonのバージョン番号を調べる方法はありますか

880 :デフォルトの名無しさん:2007/02/10(土) 05:10:21
import os
os.system('python -V')

881 :デフォルトの名無しさん:2007/02/10(土) 05:23:59
import sys
version = sys.version.split(' ')[0]

882 :デフォルトの名無しさん:2007/02/10(土) 06:47:50
import sys
print sys.version_info

883 :デフォルトの名無しさん:2007/02/10(土) 08:31:55
import commands
print commands.getoutput("python -V")

884 :デフォルトの名無しさん:2007/02/10(土) 09:05:59
>880
/usr/local/bin/python2.3 とかを起動してたら?

885 :デフォルトの名無しさん:2007/02/10(土) 10:30:41
TMTOWTDI!

886 :デフォルトの名無しさん:2007/02/10(土) 11:36:34
いつも思うんだけど読めない略語なんかつくってどうするつもりなんだろう

887 :デフォルトの名無しさん:2007/02/10(土) 12:55:11
ああいうのは、読めるかどうか、知ってるかどうかで
何か差別化をしたい人が使いたがるだけ。

888 :デフォルトの名無しさん:2007/02/10(土) 13:22:29
ということにしたいのですね。

889 :デフォルトの名無しさん:2007/02/10(土) 13:57:13
作った本人は、その分かりづらさに気付いてない。それだけのことです。
BGNとかVRSNとか。なんのことやら。

890 :デフォルトの名無しさん:2007/02/10(土) 14:10:09
はみちちです

891 :デフォルトの名無しさん:2007/02/10(土) 14:12:56
>>886
読んで貰えなければそれはそれで構わないと思っているのだろう。
公共の場を使って非常に狭い範囲の読者だけに伝えるという非効率的な行為に
喜びを覚える種類の人間だと思われる。

892 :デフォルトの名無しさん:2007/02/10(土) 14:28:18
別にプロファイリングでオナニーする必要は無いと思うんだ。

893 :デフォルトの名無しさん:2007/02/10(土) 16:29:32
pythonの正規表現めんどくせええええええええええええええええ

894 :デフォルトの名無しさん:2007/02/10(土) 16:49:45
Perlへお帰りください

895 :デフォルトの名無しさん:2007/02/10(土) 19:14:50
入力を一行ずつ処理
http://gotou-sci.blogspot.com/2007/02/blog-post.html

fileってopenの(openってfileの?) alias なのね…

896 :デフォルトの名無しさん:2007/02/10(土) 19:28:10
と言うより、openが組み込みクラスオブジェクトfileの別名だな。

897 :デフォルトの名無しさん:2007/02/10(土) 19:55:17
未だに codecs.open のまんま

898 :デフォルトの名無しさん:2007/02/12(月) 22:33:46
数値を2進数表記に変換する関数はありますか?
16進数や8進数に変換する事はできるのに・・・
うーん・・・


899 :デフォルトの名無しさん:2007/02/13(火) 00:09:13
自分で作ってた

900 :デフォルトの名無しさん:2007/02/13(火) 01:14:26
関数、ライブラリになかったら自分で作るものだと思ってた

901 :デフォルトの名無しさん:2007/02/13(火) 01:20:36
2chで教えてくれると思ってたッ

902 :デフォルトの名無しさん:2007/02/13(火) 01:27:28
def a(n,s='')return s if n == 0 and s else a(n/2, str(n%2)+s)

903 :デフォルトの名無しさん:2007/02/13(火) 01:28:31
def a(n,s=''):return s if n == 0 and s else a(n/2, str(n%2)+s)

904 :デフォルトの名無しさん:2007/02/13(火) 01:41:19
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/111286

905 :デフォルトの名無しさん:2007/02/13(火) 05:52:38
pythonでFortranのunformattedのバイナリファイルを
読み込むにはどうすればいいのでしょうか?

906 :デフォルトの名無しさん:2007/02/13(火) 07:40:32
>>903みたいな表記って難しい・・・
とくにif n == 0 and sのあたりがどうにも・・・

907 :デフォルトの名無しさん:2007/02/13(火) 08:57:10
lambda x: ''.join( [(x>>i and str(x>>i & 0x1) or '') for i in range(32)][::-1])

908 :デフォルトの名無しさん:2007/02/13(火) 11:10:26
def a(n,s=''): return s if n == 0 and s else a(n/2, str(n%2)+s) if n >= 0 else '-'+a(-n)

909 :デフォルトの名無しさん:2007/02/13(火) 12:01:38
>>905
see http://scipy.dip.jp/index.php?SciPy

910 :デフォルトの名無しさん:2007/02/13(火) 12:21:59
Pythonの奴らってドSの集団だな(WWWWWWWWWWWWWWW

911 :デフォルトの名無しさん:2007/02/13(火) 12:37:42
勉強にはなるし使えるかも知れないけど
きちんと関数名を考えて docstring をつけておかないと
後で絶対分からない代物だな

912 :デフォルトの名無しさん:2007/02/13(火) 14:27:18
pythonの良さって可読性とかじゃなかった?w

913 :デフォルトの名無しさん:2007/02/13(火) 14:39:42
>912
>>902-903 >>907-908
Pythonの可読性を敢えて無視した結果だろw

ワンライナーで書くなら、読みにくいと言われるPerlや
キモイと言われるRubyの方がマシに書けてしまうよ。
普通にPythonで書くなら >>904 かと。

914 :デフォルトの名無しさん:2007/02/13(火) 14:46:11
俺はPython を2.5(win)からしか知らないが、
コメントに日本語を使うと落ちてしまうというのは、
昔からなの?
対話モードだと、ちゃんと動くんだけどな。
悲しい…。
なぜ落ちるのか分らなくて(対話モードでは問題ないだけに)、
デバッグ・モードにすら入れないし、分らなくて非常に悩んだ。

915 :デフォルトの名無しさん:2007/02/13(火) 14:47:47
codingの指定ちょんとしてないだけだろ・・・

916 :デフォルトの名無しさん:2007/02/13(火) 14:49:46
>>914
昔も今もそんな現象はないと思う。
参考までにエンコーディングとコメントに書いた文字列は何?

917 :914:2007/02/13(火) 15:28:49
いろいろ調べたところ、不具合の理由は、
site-packages の中に置いた sitecustomize.py

中身
import sys
sys.setdefaultencoding("mbcs")

が、なにも効いていないようなのが理由だと思えます。

当方 winですが、実行したいプログラムの冒頭に
# -*- encoding:mbcs -*-
と置けば、問題ないのを確認しました。

初歩的躓きに、付き合ってくれてありがとう。

918 :デフォルトの名無しさん:2007/02/13(火) 15:34:35
>>917
いや、setdefaultencodingはソースファイルのエンコーディングとは無関係だから…orz

PEP-0263。

919 :デフォルトの名無しさん:2007/02/13(火) 16:25:29
ちょんとする…

920 :デフォルトの名無しさん:2007/02/13(火) 21:02:07
lambda以外をやっと解読した・・・

921 :デフォルトの名無しさん:2007/02/14(水) 05:51:59
ライブラリの中の関数とか変数を
変えるにはどうやればいいですか?
再定義みたいなことって出来ます?

922 :デフォルトの名無しさん:2007/02/14(水) 09:13:50
その行為が良いか悪いは置いといて普通に代入すればいいでしょ

923 :デフォルトの名無しさん:2007/02/14(水) 09:14:13
>>> mod = open('/tmp/lovespam.py', 'w').write("print 'I love spam!'¥n")
>>> import lovespam
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named lovespam
>>> import sys
>>> sys.path = sys.path + ['/tmp']
>>> import lovespam
I love spam!
>>>

924 :デフォルトの名無しさん:2007/02/14(水) 11:35:08
fromとかimportとかの名前の取り方がよく解らん。
階層構造?なんでしょうか?

925 :デフォルトの名無しさん:2007/02/14(水) 11:49:36
>>924
君の質問がよくわからん。
日本語?なんでしょうか?

926 :デフォルトの名無しさん:2007/02/14(水) 12:01:05
階層構造とか何を言ってるのかよくわからん。
単なる名前指定?なんでしょうか?

927 :デフォルトの名無しさん:2007/02/14(水) 12:17:48
質問に対して煽りで応えるpythonクオリティ
ま、phpかrubyつかっとけ

928 :デフォルトの名無しさん:2007/02/14(水) 12:23:18
これが永久凍土の問題ってやつか

929 :デフォルトの名無しさん:2007/02/14(水) 12:42:43
>>927
質問なんてどこかにあった?

930 :デフォルトの名無しさん:2007/02/14(水) 12:51:03
冷えるなぁ

931 :デフォルトの名無しさん:2007/02/14(水) 12:56:15
では、ここでエスパーの俺が答えよう

>>924
はい。階層構造なんです。

932 :デフォルトの名無しさん:2007/02/14(水) 13:17:07
エスは余計だな。

933 :デフォルトの名無しさん:2007/02/14(水) 13:26:56
>>> import sys
>>> sys.ps1 = '+++'
+++ import os
+++ for d in ['foo', 'foo/bar', 'foo/bar/baz']:
... os.mkdir(d)
... open(os.path.join(d, '__init__.py'), 'w').write('')
...
+++ open('foo/bar/baz/qux.py', 'w').write('quux="5"')
+++ import foo.bar.baz.qux.quux
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named quux
+++ from foo.bar.baz.qux import quux
+++ quux
'5'
+++ foo.bar.baz.qux
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'foo' is not defined
+++ from foo.bar import baz
+++ baz.qux.quux
'5'
+++ foo.bar.baz.qux.quux
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'foo' is not defined
+++ import foo
+++ foo.bar.baz.qux.quux
'5'



934 :デフォルトの名無しさん:2007/02/14(水) 15:04:19
分からん奴はRubyなりPerlなり使っとけということで

935 :デフォルトの名無しさん:2007/02/14(水) 15:21:00
そこで躓くならRubyだろうがPerlだろうが駄目な気もするが・・・

936 :デフォルトの名無しさん:2007/02/14(水) 15:35:16
* phpかruby
* RubyなりPerl
共通項:Ruby
わかりやすい自演だな(www

937 :デフォルトの名無しさん:2007/02/14(水) 15:38:41
同一人物ならRubyのRは両方大文字だろ・・・常識的に考えて

938 :デフォルトの名無しさん:2007/02/14(水) 15:39:09
じゃあ、phpかPerlってことで。

939 :デフォルトの名無しさん:2007/02/14(水) 18:17:15
>>924
まずはPython2.4JPドキュメントのチュートリアル6「モジュール」を読んでみるんだ。
読んだら>>933の書いてくれたサンプルコードを試してみる。
そのときはfoo/bar/bazがディレクトリ(パッケージ)、qux.pyがファイル(モジュール)、
quuxが変数(名前)であることを確認してからimportを試すこと。

誰でも多少はつまづくところだと思うからがんばって。

940 :デフォルトの名無しさん:2007/02/14(水) 19:16:35
画面付きアプリも作れますか?

941 :デフォルトの名無しさん:2007/02/14(水) 19:44:57
ウィンドウやボタンとかのGUIプログラムのこと?
つくれるよ。
Tkinter とか wxPython とかでググれ

942 :デフォルトの名無しさん:2007/02/14(水) 19:50:49
cursesでぐぐるのも可。呪いの言葉ではないよ。

943 :デフォルトの名無しさん:2007/02/14(水) 23:08:49
cursesは素人にはお勧めできないと思う‥‥‥。
sttyって何? みたいな。



944 :デフォルトの名無しさん:2007/02/14(水) 23:32:12
Tkinter なら、とりあえずここじゃないかな。
http://www.shido.info/py/index.html

wxPython Index なら、とりあえずここと思う。
http://www.harukaze.net/~haruka/wxpython/index.html


私見ながら、wxPythonは悪くない選択ではあるだろうけど、
安定性とか日本語とか、まだまだ安心して使えない気がする。

一方、tk はmac でもネイティブ・アプリ風の外観を備えるなど、
言われているほど悪くない。

将来、どちらに本格的に進むにしても、
最初は Tkinter を選ぶ方が幸せになれそうな気がする。

945 :デフォルトの名無しさん:2007/02/15(木) 00:15:07
Tkinterはtcl/tkの知識があれば扱いやすいのかもしれないけど、他の言語の
常識的なGUIライブラリに触れたことがある人はwxPythonのほうが絶対扱い易いでしょ。

946 :デフォルトの名無しさん:2007/02/15(木) 00:26:14
>945
>他の言語の常識的なGUIライブラリ

MFCのことかーーーーーーっっ!!
# あれを常識的と言われてもその、なんだ。困る(異端とまでは言わんが……なぁ)

947 :デフォルトの名無しさん:2007/02/15(木) 01:23:54
>>946
> MFCのことかーーーーーーっっ!!

違うと思う

948 :デフォルトの名無しさん:2007/02/15(木) 08:14:56
Windows用なら wx  その他重視なら tk

Windows用GUIを作ったことがあるなら もしくは使い慣れているのが
Windowsならばなら wxの

949 :940:2007/02/15(木) 08:42:24
>>946
MFCは異端でしょう。存在が間違いというか。

950 :デフォルトの名無しさん:2007/02/15(木) 08:55:44
Jestem Tkinterski.
(私は Tkinter 好きです。)

951 :デフォルトの名無しさん:2007/02/15(木) 10:21:38
そこでPyQtですよ。

952 :デフォルトの名無しさん:2007/02/15(木) 10:47:56
Flexは?

Hybridizing Java
http://www.artima.com/weblogs/viewpost.jsp?thread=193593
> Thus, you can create an application in any language you prefer,
> even a dynamic language like Python or Ruby, and use Flex to build
> a beautiful UI.

953 :940:2007/02/15(木) 10:53:37
wx, tk, PyQt, Flexという単語は頭に入りましたが、何が何だか...

954 :デフォルトの名無しさん:2007/02/15(木) 11:20:22
>>953
・・・とりあえず、Pythonに最初からついてくるGUIライブラリはTkinterだけなので、
そこから始めてみるのがいいと思うよ。
他のGUIライブラリに手を出すのはTkinterで不満が出てきてからでも遅くないし。

ttp://www.pythonware.com/library/an-introduction-to-tkinter.htm
Tkinterのチュートリアル。英語読めるならお勧め。

955 :デフォルトの名無しさん:2007/02/15(木) 11:31:09
>>954
>Pythonに最初からついてくるGUIライブラリはTkinterだけ

そしてそれが何故かと言うと・・・
http://www.wxpython.org/quotes.php
> wxPython is the best and most mature cross-platform GUI toolkit,
> given a number of constraints. The only reason wxPython isn't the
> standard Python GUI toolkit is that Tkinter was there first.
> -- Guido van Rossum
Tkinterが始めにあったからという理由だけなんだね。

956 :デフォルトの名無しさん:2007/02/15(木) 11:50:04
これから始めるなら wxPython のほうが断然お勧めだけどなぁ・・・

957 :デフォルトの名無しさん:2007/02/15(木) 11:52:12
>>956
IDEは何使われてますか?

958 :デフォルトの名無しさん:2007/02/15(木) 11:54:47
そういえばpy2exeのサンプルもTkinterじゃなくて、wxだったなあ

959 :デフォルトの名無しさん:2007/02/15(木) 11:58:50
>>957
使ってない。エディタでソースごりごり。w

960 :デフォルトの名無しさん:2007/02/15(木) 12:00:40
エディタゴリゴリで高機能GUI作れるんかなぁ?

VisualWxとかどうよ?
見つけただけで使った事無いんだけど。

961 :デフォルトの名無しさん:2007/02/15(木) 12:04:37
>>960
「高機能」って意味がわからんけど、Sizerとかの扱いに慣れれば却って楽だよ。
「見た目」で設計しちゃうと、クロスプラットフォームで破綻しやすいよ。
プログラムには論理情報を書いて、ツールキットにレイアウトさせたほうが良い。

962 :デフォルトの名無しさん:2007/02/15(木) 12:21:19
あ、クロスプラットフォームで使われてますか?

じゃあ、どういうアプリをどういう風に作るのかアーキテクチャーとか教えて下さい。

実行環境も教えて?

963 :デフォルトの名無しさん:2007/02/15(木) 12:23:06
最近どのスレもこんな感じだ・・・

964 :デフォルトの名無しさん:2007/02/15(木) 13:07:07
ttp://www.atransia.co.jp/home/fukamachi/Diary/2006/02/12/
>Google で使われている言語は、C++, Python, Java が主なもの。

ググルが提供しているアプリでPythonモノってありましたっけ?

965 :デフォルトの名無しさん:2007/02/15(木) 13:50:01
最近、時間発展の数値シミュレーションの可視化に Tkinter を使ったお。
数値シミュレーションの部分は C で書いてある。
これを C で書いた拡張モジュール経由で Python 側から呼び出す。
Python 側では一定時間毎に C の数値計算コードを呼び出して
計算結果を Tkinter の Canvas で描画。
シミュレーションの制御は start, stop, ステップ実行の3つのボタンで。
これぐらいシンプルだとどのツールキットでも大差ない。

       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   だから標準添付の Tkinter でやるお!
  |     |r┬-|     |
  \      `ー'´     /


もちろん拡張モジュールは標準添付の distutils を使ってビルド。
Windows でも Linux でも素の Python だけでビルド&実行できるお。

966 :デフォルトの名無しさん:2007/02/15(木) 13:53:10
ソースと画像うpしる!
ブログでも良いお。

967 :デフォルトの名無しさん:2007/02/15(木) 13:59:47
>>964
Adsenseヘルプ関係はPythonですよ

968 :デフォルトの名無しさん:2007/02/15(木) 14:06:54
ウェブサイトじゃなくてデスクトップアプリが知りたいでつ。

969 :デフォルトの名無しさん:2007/02/15(木) 14:07:38
じゃあ、自分で調べろとしか

970 :デフォルトの名無しさん:2007/02/15(木) 14:08:41
今自分でウェブで調べてるんですが、何か?

971 :デフォルトの名無しさん:2007/02/15(木) 14:14:07
>>970
ならここで聞くなでFA
人に聞く態度じゃない。

972 :デフォルトの名無しさん:2007/02/15(木) 15:40:21
>>966
       ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとはうpしたいんだお…
  |     (__人__)    |
  \     ` ⌒´     /



       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でもまだバグってて流体粒子が爆発したり壁をすり抜けたりするんだお…
  |     (__人__)    |  
  \     ` ⌒´     /

973 :デフォルトの名無しさん:2007/02/15(木) 16:57:54
Sitemap作るのもPythonじゃなかったっけ

974 :デフォルトの名無しさん:2007/02/15(木) 19:45:50
Gtk+ の OS X 対応状況ってどう?

975 :デフォルトの名無しさん:2007/02/15(木) 20:39:13
tk はエディタで書くのがいいと思うけど、
他はIDE の支援がないと、辛いんじゃない?

976 :デフォルトの名無しさん:2007/02/15(木) 21:23:53
pythonでGUIの需要が以外と高いことに驚いた
俺も勉強する。Tkinter

977 :デフォルトの名無しさん:2007/02/15(木) 21:42:24
GUIはRADで切り貼り、ってイメージがどうも強い。いつ刷り込まれたんだろ。
あと、JAVAの貧相なGUIセット(Sun OSみたいな奴)の悪い印象も。

978 :デフォルトの名無しさん:2007/02/15(木) 22:33:19
>>975
wxでもへっちゃらだす。

979 :デフォルトの名無しさん:2007/02/15(木) 23:36:29
>947
いや、wxはどーにもMFC臭がするもんで、つい。

980 :デフォルトの名無しさん:2007/02/15(木) 23:39:44
>>979
MFCに無かった重要な概念として、wxにはSizerってのがある。
要するにレイアウトマネージャだな。

981 :デフォルトの名無しさん:2007/02/16(金) 00:04:20
glade + pygtk が一応お手軽ですが、
windows + py2exeでexeにしようとすると、pango関係のエラーで
日本語が豆腐になってしまうんですよ。
hoge.pyだと動作するんですが、、、なやましいです。

982 :デフォルトの名無しさん:2007/02/16(金) 00:09:21
紙でレイアウト+テキストエディタでコーディング最強!!
WindowsもLinuxもMacもばっちこーい!!

983 :デフォルトの名無しさん:2007/02/16(金) 01:24:32
pygame‥‥‥はちょっとちがうか。
とある環境のモニタプログラム(グラフとかトラフィックとか出力する)を
書いたときに使ったなぁ。


984 :デフォルトの名無しさん:2007/02/16(金) 01:48:31
ボタンとかリストとかのGUI部品が要求されてない状態で、
単純に線を引くとか面を貼るだけが目的なら、
地味に最強だもんなあpygame

985 :デフォルトの名無しさん:2007/02/16(金) 05:18:12
実際にFlexとTurbogearsを使ってウェブアプリのGUIを作っているデモ:
http://www.adobe.com/devnet/flex/articles/eckel_video.html

http://www.artima.com/weblogs/viewpost.jsp?thread=193593
によると、Flex使ったら綺麗なGUIがウェブアプリとデスクトップアプリ両方
でできるみたいだね。一つのツールを勉強すれば環境を無視してどこでも使える
のは魅力。

986 :デフォルトの名無しさん:2007/02/16(金) 06:28:06
pythonでWinkeyやF1などのkeyを押した状態にするプログラムを作りたいのですがどうすればいいのでしょうか。

987 :デフォルトの名無しさん:2007/02/16(金) 06:34:31
1 python関係のテキストを買ってくる。消しゴムも買う。
2 押した状態にしたいキーの上に消しゴムを置く。
3 その上に本を置く。
4 (゚Д゚)ウマー

それはそれとして、win32はここ。
https://sourceforge.net/project/showfiles.php?group_id=78018

988 :986:2007/02/16(金) 07:17:22
Python Extensions for Windowsというモジュールを使えばいいのですね。ありがとうございます。

989 :デフォルトの名無しさん:2007/02/16(金) 08:52:46
>>979

MFC(正確にはAppWizardか)には、resource.hがあって、
プロジェクト超えてダイアログ使いまわせないが、
VisualWxはそれが無い分”MFCらしさが無い”と言えたりしない?

990 :デフォルトの名無しさん:2007/02/16(金) 16:40:13
im3 = ImageChops.difference(im1,im2)

ValueError: image has wrong mode
になる
サイズは同じはずなのに。何がいけないのだろう

991 :デフォルトの名無しさん:2007/02/16(金) 17:02:57
modeがおかしいって言ってるよ。インデクスカラーとトゥルーカラー画像diffしてない?

992 :ミスターパイソン:2007/02/16(金) 17:05:56
新スレ立てました
よろしくお願いします

Pythonのお勉強 Part17
http://pc10.2ch.net/test/read.cgi/tech/1171613101/

993 :デフォルトの名無しさん:2007/02/16(金) 17:21:23
>>992
乙乙

994 :デフォルトの名無しさん:2007/02/17(土) 00:19:59
アップルに対抗してPyPhone希望

995 :デフォルトの名無しさん:2007/02/17(土) 01:14:55
pyPodもいいなぁ。って、iPodLinuxでいいのか‥‥‥。


996 :デフォルトの名無しさん:2007/02/17(土) 01:53:40
pyを付けただけで
なんかこう……

997 :デフォルトの名無しさん:2007/02/17(土) 02:20:37
なんだよ

998 :デフォルトの名無しさん:2007/02/17(土) 05:07:58
(*´д`*)ハァハァ

999 :デフォルトの名無しさん:2007/02/17(土) 08:13:33
埋め

1000 :デフォルトの名無しさん:2007/02/17(土) 08:47:11
1000ソン

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

259 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)