Pythonのお勉強 Part21
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/10/20(土) 21:54:57http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
FrontPage - Pythonのお勉強
http://python.rdy.jp/
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1187317688/
◆関連スレッド
Microsoft IronPython 1.0
http://pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
◆関連サイト
Python ドキュメント
http://www.python.jp/doc/release/
Index of Python Enhancement Proposals (PEPs)
http://www.python.org/dev/peps/
参考サイト - Pythonのお勉強
http://python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8
以上
0002デフォルトの名無しさん
2007/10/20(土) 21:57:360003デフォルトの名無しさん
2007/10/21(日) 00:01:480004デフォルトの名無しさん
2007/10/21(日) 00:20:060005デフォルトの名無しさん
2007/10/21(日) 07:17:24, -‐' ´ __, -―‐ 、 r‐,―` ‐、
/ , - '  ̄/!\ ̄ \_
/ /、!∠ _, - ´ ̄ ̄ ̄ ̄`´ヽー、_フ
_/ / /!`イ / ヽ \
/ \! // ,/ / | ヽ
 ̄`<,ト/ _、i/ / / ,./ / /l! ト、
/ ,) /!! , / / / / / , .! ! !
! l! | | f --,ノ_-_,,∠ , /// / ∧ lノ
li l | ! ̄、-..==、- /´//,< | ! l'
//li ! |リ r:ッr/ ノメ、._`j / /
/ //! \, ! /// `ー' トジ/ / /
/ / ! liヽ│/ lト、 \ ` j/,イ
/ / l li ‐┼‐ li \`ー` __ ´ .ィイ .| おっ、Pythonスレですぅ。
!/ |イ!/│ヽ.l! | \ 'ー' , イ | |
!! / ∧! liノ! ` 、__, イ_ /:| │ |
i' /:| ! リ / ` 、_,. -―'´ ̄V /ヽ/ ::| │ |
//:::| j:/ リ三f::::f三ヽ / ,,/ヽr、! | |
//rーfく /!/イ!!l::\ \ヽ! / r ' / フ |
0006デフォルトの名無しさん
2007/10/22(月) 02:40:000007デフォルトの名無しさん
2007/10/22(月) 09:34:28ed?
0008デフォルトの名無しさん
2007/10/22(月) 10:52:05誰かカッコヨク解いてくれまいか。
0009デフォルトの名無しさん
2007/10/22(月) 11:58:23リストにしたいんですが
[ url_re.match(line).group(1) for line in some_file if url_re.match(line)]
もっとシンプルに書く方法は無いでしょうか?
0010デフォルトの名無しさん
2007/10/22(月) 12:02:32for 展開したらもっとシンプルだと思う。
0011デフォルトの名無しさん
2007/10/22(月) 12:11:11(ruby | perl)は正規表現を明示的にコンパイルする必要ない
0012デフォルトの名無しさん
2007/10/22(月) 12:23:10>(ruby | perl)は正規表現を明示的にコンパイルする必要ない
それはオブジェクト指向言語として正しいのか?
0013デフォルトの名無しさん
2007/10/22(月) 12:37:38手軽であるが故に,あらゆるテキストのパースを正規表現で行おうとする力学が働く
結果として,再利用性が低いブラックボックスなコードが量産される
そのバッドノウハウを受け継いじゃったのがRubyというわけだなwwwwwwww
0014デフォルトの名無しさん
2007/10/22(月) 12:47:37その場合なら一気読みしちゃうとか
import re
url_re = re.compile(url_re_ptn)
html = open(some_file_name).read()
url_re.findall(html)
>>12
Rubyはリテラルで /abc/ みたいに生成もできるし
r = Regexp.compile('abc') みたいにもできる
ただ面倒だから誰も使わないだけ
Perlはそもそもオブジェクト指向言語を標榜していないはず
0015デフォルトの名無しさん
2007/10/22(月) 13:11:27ありがとうございます
0016デフォルトの名無しさん
2007/10/22(月) 13:21:30ま、釣りなんだろうけど、それにしても間違ってるので。
0017OSは何を使ってますか?
2007/10/22(月) 13:30:37した俺が質問です。みんなOSは何を使ってますか?
0018デフォルトの名無しさん
2007/10/22(月) 14:56:280019デフォルトの名無しさん
2007/10/22(月) 15:31:36逆に考えるんだ
言語仕様にバッドノウハウが組み込まれていると考えるんだ
0020デフォルトの名無しさん
2007/10/22(月) 15:53:560021デフォルトの名無しさん
2007/10/22(月) 15:56:13【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
Python厨とRuby厨が仲直りするスレッド
http://pc11.2ch.net/test/read.cgi/tech/1099804004/
0022デフォルトの名無しさん
2007/10/22(月) 15:59:16そうじゃない
0023デフォルトの名無しさん
2007/10/22(月) 16:27:35稚拙
0024デフォルトの名無しさん
2007/10/22(月) 17:44:400025デフォルトの名無しさん
2007/10/22(月) 18:15:37ダサクなら解けた
import sys
def sameval_in_list(lst):
if len(lst) == 0: yield [ str(0),str(0) ]
n, c = 0, 1
for cnt in xrange(0,len(lst)):
if len(lst)-1 == n or lst[n] != lst[n+1]:
yield [ lst[n], str(c) ]
c = 1
else:
c += 1
n += 1
def lookandsay(ilist):
res = []
for line in ilist:
for exl in sameval_in_list(line):
res.extend(exl)
return res
sl = [x.strip() for x in sys.stdin]
for c in xrange(0, 12):
print("".join(sl))
sl = ["".join(lookandsay(sl))]
0026デフォルトの名無しさん
2007/10/22(月) 18:39:29FreeBSD。
0027デフォルトの名無しさん
2007/10/22(月) 19:35:350028デフォルトの名無しさん
2007/10/22(月) 19:56:540029デフォルトの名無しさん
2007/10/22(月) 20:46:220030デフォルトの名無しさん
2007/10/22(月) 23:01:560031デフォルトの名無しさん
2007/10/22(月) 23:07:060032デフォルトの名無しさん
2007/10/22(月) 23:40:000033デフォルトの名無しさん
2007/10/22(月) 23:48:25願望としては予約語の少ないperlみたいのが欲しかった
0034デフォルトの名無しさん
2007/10/23(火) 00:01:050035デフォルトの名無しさん
2007/10/23(火) 00:28:070036デフォルトの名無しさん
2007/10/23(火) 00:36:41PHP使えよ。
0037デフォルトの名無しさん
2007/10/23(火) 01:36:170038デフォルトの名無しさん
2007/10/23(火) 01:38:13正規表現を組み込んでいるのなんて出ないだろ。
0039デフォルトの名無しさん
2007/10/23(火) 02:09:510040デフォルトの名無しさん
2007/10/23(火) 02:19:38を参考にしてやってみたよ。
v = raw_input("")
for t in [0] * 12:
print v
s = v + "."
v = ""
h = ""
d = 0
for c in s:
if d and c != h:
v += str(d) + h
d = 0
h = c
d += 1
TsXcって名前で入れといた。
難しい。
0041デフォルトの名無しさん
2007/10/23(火) 03:15:27やってみたけど100が切れない
0042デフォルトの名無しさん
2007/10/23(火) 09:45:51g=lambda s,i=0:len(s)==1 and str(i+1)+s[0] or s[0]==s[1] and g(s[1:],i+1) or str(i+1)+s[0]+g(s[1:],0)
a=raw_input("")
for i in range(12):
print a
a=g(a)
0043デフォルトの名無しさん
2007/10/23(火) 09:55:46ちなみに or や and 前の半スペは削れるよ。
0044デフォルトの名無しさん
2007/10/23(火) 09:57:58日本国内だけだろ。
海外の開発者はみんな「Perlはもういやだ」と言っている。
0045デフォルトの名無しさん
2007/10/23(火) 10:05:11内容変えずにゴルフの定番的に短くしてみた。
v=raw_input("")
for t in [0]*12:
print v;s=v+".";v,h,d="","",0
for c in s:
if d and c!=h:
v+=str(d)+h;d=0
h=c;d+=1
0046デフォルトの名無しさん
2007/10/23(火) 10:27:04もう一発
v=raw_input()
for t in[0]*12:
print v;s=v+".";v=h="";d=0
for c in s:
if d and c!=h:v+=str(d)+h;d=0
h=c;d+=1
0047デフォルトの名無しさん
2007/10/23(火) 10:29:27あぁー、俺はまた邪悪な技を覚えてしまったw
1andなんて書き方だとIDLEで色がつかない
ところでルール見るとホワイトスペースは計上しないらしいので、これで131となりました。
g=lambda s,i=0: len(s)==1and str(i+1)+s[0]or s[0]==s[1]and g(s[1:],i+1)or str(i+1)+s[0]+g(s[1:])
a=raw_input()
for i in range(12):
print a
a=g(a)
0048デフォルトの名無しさん
2007/10/23(火) 10:39:26それにしても python でゴルフって python の思想に反すること甚だしいなw
0049デフォルトの名無しさん
2007/10/23(火) 15:07:100050デフォルトの名無しさん
2007/10/23(火) 17:14:30c=raw_input()
for n in [1]*12:
print c;t,c=c,''
for a,b in zip(t,t[1:]+'.'): n,c=a!=b and (1,c+str(n)+a) or (n+1,c)
forの中身をifにすれば92くらい?
c=raw_input()
for n in [1]*12:
print c;t,c=c,''
for a,b in zip(t,t[1:]+'.'):
if a!=b: c+=str(n)+a;n=0
n+=1
0051デフォルトの名無しさん
2007/10/23(火) 21:07:05import re;a="0123456789 ";v=raw_input()
for t in a:print v;v="".join(a[len(u)]+u[0]for u in re.findall("+|".join(a),v))
0052デフォルトの名無しさん
2007/10/24(水) 10:31:400053デフォルトの名無しさん
2007/10/24(水) 10:49:49セミコロンは数えるからむしろ増えているw
0054デフォルトの名無しさん
2007/10/24(水) 11:02:400055デフォルトの名無しさん
2007/10/24(水) 14:41:102007-10-16 - lambda {|diary| lambda { diary += 1 } }.call(hatena)
http://d.hatena.ne.jp/winebarrel/20071016
joinの使い方が思いつかなかったな…
ちょっと理解するのに手間取ったw
0056デフォルトの名無しさん
2007/10/24(水) 15:08:00a='0123456789 ' がrangeの代わりとstr()の代わりを兼ねてるのに感心した。
0057デフォルトの名無しさん
2007/10/24(水) 20:02:07http://pc11.2ch.net/test/read.cgi/software/1193166124/
0058デフォルトの名無しさん
2007/10/24(水) 20:46:50まるで安価で付けたような名前だな
0059デフォルトの名無しさん
2007/10/24(水) 20:52:05納得した
0060デフォルトの名無しさん
2007/10/25(木) 03:38:10いまさらAFXそっくりでWindowsしか動かないファイラーを出しても使わないなあ。
Windows以外でも動くようだったら使いたいけど。
0061デフォルトの名無しさん
2007/10/25(木) 06:03:480062デフォルトの名無しさん
2007/10/25(木) 14:40:11まるでAFXだ。DYNA派なのでスルー。
>>61
基本となるバージョンと、javaバインディングのアリナシくらいし違わないでしょ。
じゃないと、意味ないし。。。
ていうか、Jython ってあまり開発してないっぽいよね。今2.2だっけ
0063デフォルトの名無しさん
2007/10/25(木) 20:10:010064デフォルトの名無しさん
2007/10/25(木) 22:53:09今は、2.2.1。2.2は正式バージョンをリリースしたのに、
日本語がまったく使えなかったんだよなwww
次は2.5で 、Django Pylons TurboGears Twistedを動くようにするらしい。
0065デフォルトの名無しさん
2007/10/26(金) 20:23:530066デフォルトの名無しさん
2007/10/26(金) 20:44:140067デフォルトの名無しさん
2007/10/26(金) 22:25:42サンクスできました。
はじぱいには普通に実行すればできる、と書いてあったのでとまどいました。
0068デフォルトの名無しさん
2007/10/26(金) 22:43:53普通に実行してもpycはできないよ。
0069デフォルトの名無しさん
2007/10/26(金) 22:47:18実行してもpycを生成しないってきっちり書いてあったと思うぞ
そういえば海の向こうじゃ新版出るんだよね
0070デフォルトの名無しさん
2007/10/26(金) 23:40:34MySQLdbを使ってデータベース処理をするプログラムを練習がてらに組んでいるのですが、
データを取り出すときに、どうもよくわからない文字コードになってしまいます。
具体的には、utf-8をMySQLに叩き込むのはうまくいき、ターミナルで確認しても文字化けは既知のやつ(utf-8)が出るだけです。
おそらくデータベース内に登録されているデータには問題はなさそうです。
ちなみに、その文字化けはファイルに書き出すと問題がないからターミナルの都合みたいです。
ですが、select文でutf-8のデータをとりだすと、
asciiをunicodeに出来ませんみたいなエラーが出ます。
unicode()でエンコーディングしてみても、状況は何もかわらず、このunicode()の文でエラーが出てしまいます。
ファイル処理の場合は読み出す時にエンコーディングを指定する方法は知っているのですが、
MySQLからデータを取り出す時は同じ方法が使えません。
何かいい解決方法はあるでしょうか?
よろしくお願いします。
0071デフォルトの名無しさん
2007/10/27(土) 00:30:580072デフォルトの名無しさん
2007/10/27(土) 01:09:26環境は
MacOSX
Python2.5
MySQL4.0
コネクタは最新版です(昨日落としたので)
即興で作ったコードでちょっと汚いのですが、
#!/usr/bin/env python
import MySQLdb
import sys
import codecs
db_name = "nounindex"
user_name = "root"
mypasswd = ""
writePage = "/Users/yuichi/Desktop/dbOutput.txt"
charCode = "utf-8"
o = codecs.open(writePage,"w",charCode)
sys.stdout = codecs.getwriter(charCode)(sys.stdout)
print "getConnection"
con = MySQLdb.connect(db=db_name, #host="localhost", port=3306,
user=user_name, passwd=mypasswd)
0073デフォルトの名無しさん
2007/10/27(土) 01:09:57s = "SELECT * FROM mytable"
cur.execute(s)
r = cur.fetchone()
while r != None:
print r
o.write(str(r) + "n")
r = cur.fetchone()
cur.close()
print "disConnect"
con.close()
print "disConnected"
o.close
print "all processes are finished. good bye!"
です。
0074デフォルトの名無しさん
2007/10/27(土) 01:16:16File "output.py", line 37, in <module>
o.write(item);o.write(" ")
File "/usr/local/lib/python2.5/codecs.py", line 638, in write
return self.writer.write(data)
File "/usr/local/lib/python2.5/codecs.py", line 303, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 1: ordinal not in range(128)
出力(listの直出し)はこうなりました。stringに変換しようとしたらエラーが出てしまって。
上のエラーは、これをストリングにしようとしたらおきたものです。
この出力を得られた時はエラー無しですが、役に立ちませんので。
(1L, 'test', 'a', 3L, 8L)
(2L, 'test', 'a', 3L, 8L)
(3L, 'test', ' \x82X\n', 2L, 10L)
(4L, 'test', ' \x8bB\n', 2L, 10L)
(5L, 'test', ' \x83\x8c\x83|\x81[\x83g\n', 1L, 10L)
(6L, 'test', ' \x91\xac\x95\xf1\n', 1L, 10L)
(7L, 'test', ' \x8d\xb6\x8a\xdd\n', 1L, 10L)
(8L, 'test', ' \x93\x9d\x8d\x87\n', 1L, 10L)
(9L, 'test', ' \x91O\n', 4L, 10L)
(10L, 'test', ' \x89\xba\x97\x8e\n', 3L, 10L)
(11L, 'test', ' \x8d\xec\x90\xed\n', 1L, 10L)
0075デフォルトの名無しさん
2007/10/27(土) 01:18:16バンドル版はライブラリをインストール(?)できなかったので、新しくPython2.5を入れ直しました。
0076デフォルトの名無しさん
2007/10/27(土) 01:20:57ちなみにこの問題はOSには依存しないようだ。
0077デフォルトの名無しさん
2007/10/27(土) 01:25:31色々調べてみたんですけど、
sys.setdefalutencoding()
ってのがあれば、楽勝みたいなんですけど、
どうも入ってないようなんですね。
pythonを始めたのも数日前ですので、ライブラリの中まで調べるのはきつそう。
ググリ疲れた。
0078デフォルトの名無しさん
2007/10/27(土) 01:38:16http://www.centosfan.com/modules/tinyd0/index.php?id=8
0079デフォルトの名無しさん
2007/10/27(土) 01:48:00つ sitecustomize.py
つかMySQL関連のとこで聞いた方がいいと思うよ
0080デフォルトの名無しさん
2007/10/27(土) 01:49:35コメントアウトを#にしてみても特に反応しない。
もう一回インストールし直すとか必要ないですよね?
ライブラリもスクリプトだから関係ない気がするんだけど。
よくよく考えたら、エラーがおきている場所を修正すりゃいいんですね。初体験だwww
もう少し試行錯誤してみますね。
解決できても出来なくてもまた来ます。
ありがとうございました。
0081デフォルトの名無しさん
2007/10/27(土) 01:52:38それもなかったんで、自分で作ってみたんですけど、
スクリプト内にsetdefaultencoding()が必要みたいですね。
卵と鶏の論争みたい。
そうですね、MySQLからutf-8で抜き出せりゃ万事OKですから。
こういうエラーが一番面倒ですね。
ありがとうございます。
0082デフォルトの名無しさん
2007/10/27(土) 01:59:36#data, consumed = self.encode(object, self.errors)
としているのに、
File "/usr/local/lib/python2.5/codecs.py", line 303, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 1: ordinal not in range(128)
ってなってしまう。パスも合っているはずなのに。
なぜ?
0083デフォルトの名無しさん
2007/10/27(土) 02:04:13sitecustomize.pyはユーザが設定する初期化コードだよ
そこでsys.setdefalutencoding呼べばいいだけ
0084デフォルトの名無しさん
2007/10/27(土) 02:06:06そいつが環境によっては常時latinを返しやがるんだ。
0085デフォルトの名無しさん
2007/10/27(土) 02:09:39そもそも、それができない。
スクリプトが書いてあるサイトを見つけて、その通りにやってみた
import sys
sys.setdefalutencoding('utf-8')
みたいな感じなんだけど、
それを
python2.5 sitecustomize.py
とやると、エラーがでる。
0086デフォルトの名無しさん
2007/10/27(土) 02:23:32どんな環境だよ
>>85
sitecustomize.pyは
>>> sys.path
ってやって出てくるパスの中に突っ込むもの
ユーザ定義の環境初期化 'モジュール' だから
あとsetdefalutencodingじゃなくてsetdefaultencodingだから
0087デフォルトの名無しさん
2007/10/27(土) 02:35:42環境を作るための環境みたいなものか。
それはただのタイプミスだwww
間違えないようにコピペで作った。
結局、もう一回pythonをビルドしてみることにしました。
0088デフォルトの名無しさん
2007/10/27(土) 02:40:320089デフォルトの名無しさん
2007/10/27(土) 02:55:02気づいたんだけど、ライブラリってPython2.5の下にあるわけじゃないみたいだ。
libってとこの下にあった。
パスが似ていたから気づかなかった。
で、変更したら呪いにあってしまった。
出力が
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
ってのが続いている。
0090デフォルトの名無しさん
2007/10/27(土) 03:19:37o = codecs.open(writePage,"w","utf-8")
o.write("sample")
ってやると、
utf-8
と書き込まれている。なんて無情なんだ。
0091デフォルトの名無しさん
2007/10/27(土) 03:24:06o = codecs.open(writePage,"w")
って、エンコード指定を外すと解決した。
printも同様で、utf-8でエンコードをかけると全てアウトになる。
本当にありがとうございました。
やっと寝れる。
0092デフォルトの名無しさん
2007/10/27(土) 03:32:190093デフォルトの名無しさん
2007/10/27(土) 17:05:46昨日お世話になったものです。
ライブラリを書き換えたら、今度は他の物が動かなくなって、
バグがバグを呼ぶというような状態になってしまいました。
無理矢理utf-8にこじつけるのではなく、きちんとライブラリを読んでから変更することにします。
ありがとうございました。
0094デフォルトの名無しさん
2007/10/27(土) 17:12:14おとなしくインストーラを使うか、macport使った方がいい。
0095デフォルトの名無しさん
2007/10/27(土) 17:16:46そこまでするぐらいなら、MySQLとその周辺の上手く動く組み合わせを探したほうが楽そうだわ。
0096デフォルトの名無しさん
2007/10/27(土) 21:35:360097デフォルトの名無しさん
2007/10/28(日) 19:23:13斬新なギャグを閃いた
おっぱいそん
0098デフォルトの名無しさん
2007/10/28(日) 19:25:06もったいぶらずに書いてくれよ。
0099デフォルトの名無しさん
2007/10/28(日) 19:26:00速くかけよ?
下のおっぱいそんってのがそれじゃないだろうな?
0100デフォルトの名無しさん
2007/10/28(日) 20:29:430101デフォルトの名無しさん
2007/10/28(日) 20:55:350102デフォルトの名無しさん
2007/10/28(日) 21:21:030103デフォルトの名無しさん
2007/10/28(日) 21:47:590104デフォルトの名無しさん
2007/10/29(月) 10:18:37期待してるぞ
斬新なギャグを
0105デフォルトの名無しさん
2007/10/29(月) 11:35:430106デフォルトの名無しさん
2007/10/29(月) 12:50:27ここの住人にはレベルが高すぎたようだね。
0107デフォルトの名無しさん
2007/10/29(月) 13:20:41|∀゚)
|⊂ノ
0108デフォルトの名無しさん
2007/10/29(月) 16:11:14叩かれるかもしれないけど、Rubyで作ったら一瞬で作れました。
Pythonでは日本語処理以外を扱うようにします。フレームワークが良さげです。
0109デフォルトの名無しさん
2007/10/29(月) 16:26:39両方使えるっていいなあ
0110デフォルトの名無しさん
2007/10/29(月) 17:25:000111デフォルトの名無しさん
2007/10/29(月) 17:48:51「Rubyでやれ」って返そうぜ
AAよろしく
0112デフォルトの名無しさん
2007/10/29(月) 18:02:03基本的に文法に違いはないですね。たいして。
Javaに似ているんで、Javaを使えりゃ余裕で覚えられるような気がします。
C++とはちょっと違うような気がする。
0113デフォルトの名無しさん
2007/10/29(月) 18:05:150114デフォルトの名無しさん
2007/10/29(月) 21:43:360115デフォルトの名無しさん
2007/10/29(月) 22:01:380116デフォルトの名無しさん
2007/10/29(月) 22:06:40できるのとできないやつとの違いは何ですか?
0117デフォルトの名無しさん
2007/10/29(月) 23:00:120118デフォルトの名無しさん
2007/10/29(月) 23:11:00MacPortsのPythonは腐ってね?
自分でコンパイルした方が断然いい。
簡単にベンチマークしたらかなり違いがでた。
011994
2007/10/30(火) 06:52:57macportsのは確かに速度以外にも色々な面でおすすめできないけど、
自力ビルドで失敗してるようだったから紹介してみた。
普通に使うなら、インストーラからで十分だと思う。
関係ないけどLeopard標準搭載のPythonは2.5になってるそうな。
0120デフォルトの名無しさん
2007/10/30(火) 22:10:29fuck!=you
except:
print(1)
0121デフォルトの名無しさん
2007/10/30(火) 23:45:38IronPythonはCPythonの30分の一の速さと書かれているんだけど本当?
前はCPythonより速いと言っていたような気がするんだけど。
0122デフォルトの名無しさん
2007/10/31(水) 00:47:51言ってる事変わってなくね?
でも.NETのロードとか含めるとCPythonより遅くなるんだろ、どうせ・・・
0123デフォルトの名無しさん
2007/10/31(水) 18:59:53変わってるね。
>ronPythonを開発したのは、動的言語が.NETでうまく走らないという説が間違っていることを暴くためだったと語った。
これは元々自身の論文(動的言語が.NETでうまく走らない)を証明するために開発したらうまく動いたのが開発経緯だったはず。
記事自体が信用できない。
0124デフォルトの名無しさん
2007/10/31(水) 20:33:140125デフォルトの名無しさん
2007/10/31(水) 20:42:18CPython関係ない
0126デフォルトの名無しさん
2007/10/31(水) 21:05:030127デフォルトの名無しさん
2007/10/31(水) 22:37:550128デフォルトの名無しさん
2007/10/31(水) 22:39:37それくらいも分からないのか、氏ね。
0129デフォルトの名無しさん
2007/10/31(水) 23:41:58どなたか教えていただけませんか?
0130デフォルトの名無しさん
2007/11/01(木) 04:12:58一つずつ取り出して比較しないとダメですか?
0131デフォルトの名無しさん
2007/11/01(木) 04:29:230132デフォルトの名無しさん
2007/11/01(木) 06:34:420133デフォルトの名無しさん
2007/11/01(木) 06:51:06そのsetの要素数が元のリストの合計より少なければ共通要素がある。
0134デフォルトの名無しさん
2007/11/01(木) 11:22:52sets.Set使ってる。
import sets
as = sets.Set(al)
ds = sets.Set(bl)
dif = as - ds
if len(dif): print "diff"
0135デフォルトの名無しさん
2007/11/01(木) 12:39:430136デフォルトの名無しさん
2007/11/01(木) 12:42:540137デフォルトの名無しさん
2007/11/01(木) 13:39:210138デフォルトの名無しさん
2007/11/02(金) 09:52:20for i in range(len(seq)-1):
item0 = seq[i]
item1 = seq[i+1]
item0 と item1 を比較•処理
っていうのをもっとエレガントにイテレータを使って書くことはできますか。
ぱっと思いつくのは
item0 = seq[0]
for item1 in seq[1:]:
item0 と item1 を比較•処理
item0 = item1
とかしかないんだけど。。。
0139デフォルトの名無しさん
2007/11/02(金) 10:11:33print a,b
しかしコピーを伴うのが気にいらん
0140デフォルトの名無しさん
2007/11/02(金) 10:26:240141デフォルトの名無しさん
2007/11/02(金) 10:29:25Pythonの記事としてはそれ、致命的だろと
0142デフォルトの名無しさん
2007/11/02(金) 10:30:40def zipped(a, b):
for i in xrange(min(len(a), len(b))):
yield a[i], b[i]
とするとか。
0143デフォルトの名無しさん
2007/11/02(金) 10:44:01seq = [ 'a', 'b', 'c', 'd', 'e' ]
for a, b in zip(seq, itertools.islice(seq, 1, len(seq))):
print a, b
0144143
2007/11/02(金) 10:50:160145デフォルトの名無しさん
2007/11/02(金) 11:20:440146デフォルトの名無しさん
2007/11/02(金) 13:33:13んじゃ次は
よーしパパ python のワンライナー記事書いちゃうぞー
0147デフォルトの名無しさん
2007/11/02(金) 14:35:55Plone厨と一緒に死ねよwww
0148デフォルトの名無しさん
2007/11/02(金) 14:46:500149デフォルトの名無しさん
2007/11/02(金) 16:03:05PyMOTW: itertools - O'Reilly ONLamp Blog
http://www.oreillynet.com/onlamp/blog/2007/10/pymotw_itertools.html?CMP=OTC-6YE827253101&ATT=PyMOTW+itertools
PyMOTW - Python Module of the Week
http://www.doughellmann.com/projects/PyMOTW/
標準ライブラリを紹介してくれてるサイト。
ワンライナーもいいけど標準ライブラリの
使い方とかも忘れないであげてください…
0150デフォルトの名無しさん
2007/11/02(金) 17:44:510151デフォルトの名無しさん
2007/11/02(金) 18:13:49ワンライナー厨は典型的な中二病。
0152デフォルトの名無しさん
2007/11/02(金) 18:42:53辞書のキーにできないとかそんな風に覚えておけばおk
0153デフォルトの名無しさん
2007/11/02(金) 18:43:360154デフォルトの名無しさん
2007/11/02(金) 18:48:01見づらいとか分かりづらいといった意見を読めないアホが悪いと無視するマジもんのアホです。
別にワンライナー以外が高尚でもなんでもなくただワンライナーがDWNなのです。
0155デフォルトの名無しさん
2007/11/02(金) 18:48:370156デフォルトの名無しさん
2007/11/02(金) 19:12:45微笑ましいよな。
0157デフォルトの名無しさん
2007/11/02(金) 19:54:330158デフォルトの名無しさん
2007/11/02(金) 20:11:250159デフォルトの名無しさん
2007/11/02(金) 20:20:280160デフォルトの名無しさん
2007/11/02(金) 20:36:32なぜ皆さんはRubyじゃなくてPythonを選んだのですか?
0161デフォルトの名無しさん
2007/11/02(金) 20:37:510162デフォルトの名無しさん
2007/11/02(金) 20:53:07今は出て来るね。
リニューアルしたみたいだからタイミングが悪かったんじゃない?
0163デフォルトの名無しさん
2007/11/02(金) 20:55:03素で使えてフリーなアプリとも大体友達
連携もイケるからRubyでは未来栄光体感し得ないほどに楽チン
カルトでねーマジもんの軽くて軽量、手軽なライトウェイト言語なのよ
0164デフォルトの名無しさん
2007/11/02(金) 21:01:560165デフォルトの名無しさん
2007/11/02(金) 21:05:22昔、RubyはMacOS9で使える実用的なのがなかったからさ
0166デフォルトの名無しさん
2007/11/02(金) 21:12:01http://www.rubyist.net/~matz/20071011.html
一目瞭然
0167デフォルトの名無しさん
2007/11/02(金) 21:12:25個人的には
・記号が少なく明快。
・Rubyよりスタンドアローン分野に強い。
というところだろうか。
0168デフォルトの名無しさん
2007/11/02(金) 21:46:150169デフォルトの名無しさん
2007/11/02(金) 21:48:16悪意を持って言えば
お前みたいのがいないから
他の言語をこき下ろす人間が作ってないから
0170デフォルトの名無しさん
2007/11/02(金) 21:50:430171デフォルトの名無しさん
2007/11/02(金) 22:08:32⊂二二二( ^ω^)二⊃ ブーン
とかやらないから
すまん俺両方使ってる
0172デフォルトの名無しさん
2007/11/02(金) 22:16:52データ構造がネストの予感あればPython。
Rubyは使い道がない
0173デフォルトの名無しさん
2007/11/02(金) 22:19:24おれも、というか正直このオッサンの
「○○地獄」の感性には学ぶべき何かの匂いがない…
0174デフォルトの名無しさん
2007/11/02(金) 22:26:49多言語は全部ポアしないと気が済まないんだろ。
0175デフォルトの名無しさん
2007/11/02(金) 22:28:420176デフォルトの名無しさん
2007/11/02(金) 22:37:16Python厨とRuby厨が仲直りするスレッド
http://pc11.2ch.net/test/read.cgi/tech/1099804004/
0177デフォルトの名無しさん
2007/11/02(金) 22:38:38jijixi's diary - Ruby に比べて Python の面倒なところ
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071010#p01
リンク先くらいみれ。(ちょっとリンクの張り方がわかり難かったけど)
jijixiさんのエントリに対してmatzさんが感想を述べてるだけですよ、と。
というかの locals() でスコープ内の?ローカル変数が取ってこれる
のは知らなかったのでためになったな…jijixiさん感謝
0178デフォルトの名無しさん
2007/11/02(金) 22:40:21「proc.call」を「proc.()」と書けてもちっとも嬉しくない人はPython向き。
つーかProcイラネ、関数内関数よこせって人は間違いなくPython向き。
でもlambdaはもう少し便利になって欲しいなって人もPython向き。
0179デフォルトの名無しさん
2007/11/02(金) 22:56:09RubyはWEB屋ばっかりでつまらん(しかもおっさんの声がでかいし)
0180デフォルトの名無しさん
2007/11/02(金) 22:56:55新規のコードで使うことある?
0181デフォルトの名無しさん
2007/11/02(金) 23:00:47lambdaのかわりに何を使ってるの?
0182デフォルトの名無しさん
2007/11/02(金) 23:09:59名前付き関数を直前に書く。
0183デフォルトの名無しさん
2007/11/02(金) 23:13:15lambdaならデフォルト引数にも出来るし(それがいいやり方かどうかはともかく)
0184デフォルトの名無しさん
2007/11/03(土) 00:13:29class Fruit:
class _Base:
pass
class Banana(_Base):
pass
class Apple(_Base):
pass
a = Fruit.Apple()
b = Fruit.Banana()
みたいな階層構造にできるとうれしいんだけど。
0185デフォルトの名無しさん
2007/11/03(土) 00:17:35とくにpred funcを引数にする関数に対して。
0186デフォルトの名無しさん
2007/11/03(土) 00:24:30moduleで何か不満があるの?
0187デフォルトの名無しさん
2007/11/03(土) 00:30:22class B:
def __init__(self):
pass
class C(B):
def __init__(self):
A.B.__init__(self)
class D(B):
def __init__(self):
A.B.__init__(self)
0188デフォルトの名無しさん
2007/11/03(土) 00:56:33だってGUIアプリをやろうとすると
hoge.method(:fuga)を沢山書くかProcを使わないといけないwwww
0189デフォルトの名無しさん
2007/11/03(土) 09:44:47Rubyみたいな認定試験がないから。
日本産のプログラミング言語だから盛り上げていきましょう、
っていうお金のにおいみたいなのがないから。
0190デフォルトの名無しさん
2007/11/03(土) 09:47:43> 未来栄光
「未来永劫」な。
0191デフォルトの名無しさん
2007/11/03(土) 12:28:54>っていうお金のにおいみたいなのがないから。
「お金のにおい」ってRuby使いが一番嫌ってた言葉じゃね?
0192デフォルトの名無しさん
2007/11/03(土) 15:58:09GUIのコールバック関数を組むときに名前つきの関数を使うと
手がつけられないほど関数が増えるから自分はlambdaをよく使う
0193デフォルトの名無しさん
2007/11/03(土) 16:04:44そんなわけなだろ。
リファレンスマニュアルを書かずに同程度の本を大量に出版させる奴らだぞwww
0194デフォルトの名無しさん
2007/11/03(土) 16:28:16「同程度の本」を具体的に挙げてみれ
0195デフォルトの名無しさん
2007/11/03(土) 21:12:02Rubyを256倍…
0196デフォルトの名無しさん
2007/11/03(土) 21:19:51最初の章すら読めなかった…
まあ俺の問題なんだろうけどさ…
0197デフォルトの名無しさん
2007/11/03(土) 21:56:490198デフォルトの名無しさん
2007/11/03(土) 21:59:290199デフォルトの名無しさん
2007/11/03(土) 22:18:530200デフォルトの名無しさん
2007/11/03(土) 22:24:13Pythonは可読性で優れているだろうが・・・・Rubyはオブジェクト化が徹底してるとかその程度か?
0201デフォルトの名無しさん
2007/11/03(土) 22:25:590202デフォルトの名無しさん
2007/11/04(日) 07:59:43•自分の欲する機能が標準で提供されているかどうか
•ライセンスはどうなっているか ソースを公開しなくても良いのか 商用利用可能なのか
•GUIアプリを作ろうとしたときに対応はどうなっているのか
•優秀なGUIデバッガが存在するかどうか
•Cアプリに組み込もうとしたとき、APIをどれだけ簡単に利用できるか
•日本語ドキュメント(せめてチュートリアルだけでも)の充実度
•Eclipse のプラグインが存在するか(俺にとっては結構重要)
あとは優先順位の付け方と好み。
0203デフォルトの名無しさん
2007/11/04(日) 10:25:59いまどきアプリ開発にC/C++を使うメリットも薄いし。
0204デフォルトの名無しさん
2007/11/04(日) 10:29:52あんたの言う「アプリ」がどんなだかわからん
Webアプリだの携帯アプリだの請負システムの専用アプリなら、
C/C++はいらんだろうな確かに
0205デフォルトの名無しさん
2007/11/04(日) 10:40:52自分のやりたいことを全部自分でプログラム組まなきゃいけないのはだるい
その点ではruby, python, perl, javaはどれもレベル高いよなぁ
まあrubyは比較的新しいからライブラリは他の言語に比べると見劣りするけど
なんかrubyの話題で盛り上がってるけど、rubyにできてでPythonでできな
いことのうち、あったらいいなと思うものはある?個人的にはlambdaの中
で文を書きたい。あと関数呼び出しの括弧を省略できるようになると楽だ
と思っているんだけど。
0206デフォルトの名無しさん
2007/11/04(日) 10:45:18お前にはrubyがオススメって言われるだけだと思うよ
0207デフォルトの名無しさん
2007/11/04(日) 13:24:28ありえない。
0208デフォルトの名無しさん
2007/11/04(日) 13:28:280209デフォルトの名無しさん
2007/11/04(日) 13:53:01lambdaじゃ役に立たん。
0210デフォルトの名無しさん
2007/11/04(日) 14:13:10あと有効性も。
おせーて
0211デフォルトの名無しさん
2007/11/04(日) 14:14:34クロージャの定義によるのかもしれんが
普通の関数自体がクロージャの性質をもってるよ?
それとも無名じゃなくいやってこと?
0212デフォルトの名無しさん
2007/11/04(日) 14:58:47def _hoge(i):
_hoge.n = _hoge.n+i
return _hoge.n
_hoge.n = n
return _hoge
a = hoge(5)
b = hoge(100)
print a(1), b(2)
print a(3), b(4)
0213デフォルトの名無しさん
2007/11/04(日) 15:12:480214デフォルトの名無しさん
2007/11/04(日) 15:24:080215デフォルトの名無しさん
2007/11/04(日) 15:33:02python好きだけど、どっちもやだ
0216デフォルトの名無しさん
2007/11/04(日) 15:41:150217デフォルトの名無しさん
2007/11/04(日) 15:42:120218デフォルトの名無しさん
2007/11/04(日) 16:00:47うい。無名こそ正義。
0219デフォルトの名無しさん
2007/11/04(日) 16:45:060220デフォルトの名無しさん
2007/11/04(日) 16:48:07ホームページのアドレスをおしえてもらえないでしょうか?
よろしくお願いします。
0221デフォルトの名無しさん
2007/11/04(日) 17:11:11http://www.google.com/
0222デフォルトの名無しさん
2007/11/04(日) 17:14:49どさくさに紛れて何を言ってるんだ
0223デフォルトの名無しさん
2007/11/04(日) 17:26:25$ret = `cat hoge`;
とか
open(IN, "cat hoge | tail -n 5 |");
pythonでどうやんの?
0224223
2007/11/04(日) 17:33:49わりぃ、無視してくれ。
検索不足だった。
ttp://omake.accense.com/wiki/Python/Snippet/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
0225デフォルトの名無しさん
2007/11/04(日) 18:06:26Rubyは括弧省略出来る換わりに
関数への参照を取り出すのが method(:名前) なんて言う
面倒な書き方になってしまってる。
0226デフォルトの名無しさん
2007/11/04(日) 18:08:29これか?
http://pypi.python.org/pypi/Surukuku/Pre-Alpha
0227デフォルトの名無しさん
2007/11/04(日) 18:13:24括弧を省略したかったらエディタで関数を入力した後、自動的に括弧を入力させればいいだろ。
0228デフォルトの名無しさん
2007/11/04(日) 18:36:56括弧があれば変数の参照とメソッド呼び出しを明確に区別できるし。
・・・.emacsいじるの面倒なんだよなぁ。meadowより設定をしやすくて
しかも高機能なエディタあるよって人いない?
0229デフォルトの名無しさん
2007/11/04(日) 18:44:16TextMate
Scribes
0230デフォルトの名無しさん
2007/11/04(日) 19:33:51scribesちょっと使ってみたけど良い感じ。しばらく使ってみるよ
サンクス
0231デフォルトの名無しさん
2007/11/04(日) 19:56:340232デフォルトの名無しさん
2007/11/04(日) 20:12:46http://japan.zdnet.com/news/devsys/story/0,2000056182,20360255,00.htm
0233デフォルトの名無しさん
2007/11/04(日) 20:52:15いつのまにかTabが混じってたりして困る。なんとかして。
0234デフォルトの名無しさん
2007/11/04(日) 22:21:01使ってるSCMにタブとっぱらうフィルタ仕込んだら?
0235デフォルトの名無しさん
2007/11/05(月) 01:01:410236デフォルトの名無しさん
2007/11/05(月) 01:04:040237デフォルトの名無しさん
2007/11/05(月) 01:07:010238デフォルトの名無しさん
2007/11/05(月) 01:25:580239デフォルトの名無しさん
2007/11/05(月) 01:26:540240デフォルトの名無しさん
2007/11/05(月) 02:32:40どうしたら…(+ФyФ)?良いのですか…
0241デフォルトの名無しさん
2007/11/05(月) 02:35:380242デフォルトの名無しさん
2007/11/05(月) 06:32:34どなたか教えていただけませんか?
0243デフォルトの名無しさん
2007/11/05(月) 06:46:580244デフォルトの名無しさん
2007/11/05(月) 19:23:23中学2年になるんです、パソコンを覚えようと思ってPHPの参考書を買ったんです
はじめにCentOSをインストールまでは友達に聞いて出来たけど、その友達がそれから先を教えてくれないくて携帯で2chを知ったのですけど、ここで聞いて教えてもらえるのですか?
0245デフォルトの名無しさん
2007/11/05(月) 19:32:15死ね役立たず。
人の足引っ張って楽しいかゴミクズ。
今すぐ死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。v死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
0246デフォルトの名無しさん
2007/11/05(月) 19:32:230247デフォルトの名無しさん
2007/11/05(月) 19:33:110248デフォルトの名無しさん
2007/11/05(月) 19:47:260249デフォルトの名無しさん
2007/11/05(月) 19:59:110250デフォルトの名無しさん
2007/11/05(月) 20:04:030251デフォルトの名無しさん
2007/11/05(月) 20:12:570252デフォルトの名無しさん
2007/11/05(月) 20:18:150253デフォルトの名無しさん
2007/11/05(月) 20:51:46(゚д゚ )
(| y |)
彼の言ったPHPという字をよく見てみよう
PH ( ゚д゚) P
\/| y |\/
PHはPhishingの略であることは間違いない
( ゚д゚) PHishing
(\/\/
日本語で言うと
( ゚д゚) 釣り
(\/\/
一方、残ったPはPythonスレであることは疑いようがない
Pythonスレ( ゚д゚)
\/\/)
つまり、そういうことだ。
(゚д゚ )
(| y |)
0254デフォルトの名無しさん
2007/11/05(月) 21:10:24どんな質問だったら良いんですか
0255デフォルトの名無しさん
2007/11/05(月) 21:25:07もういいからどっかいけよ、つまらん
0256デフォルトの名無しさん
2007/11/05(月) 21:47:11良く分からんが、普通にやるなら、・・・
class Hoge:
def __init__(self, n):
self.n = n
def __call__(self, i):
self.n += i
return self.n
a = Hoge(5)
b = Hoge(100)
print a(1), b(2)
print a(3), b(4)
0257デフォルトの名無しさん
2007/11/05(月) 21:57:160258デフォルトの名無しさん
2007/11/05(月) 22:12:58関数がオブジェクトであることを利用して、関数の属性を明示的に設定してる
だけだよな
普通、関数が定義されたときの環境(ローカル変数とか)を後で参照できるように
封じ込める仕組みをクロージャっていうんじゃないの
そういう意味のクロージャはPythonにもあるだろ
クロージャから束縛されてるレキシカル変数を「変更」する際の制限はあるけど
>>257
関数を返す関数ってのは、単に高階関数っていわないか?
0259デフォルトの名無しさん
2007/11/05(月) 22:50:23クロージャの"実装"を書かないとあかん。
使う側からだとクロージャではある。
0260デフォルトの名無しさん
2007/11/05(月) 23:00:04import re
reobj = re.compile(pattern, flags)
return lambda x: reobj.sub(replacement, x)
こんなのは普通にクロージャと言っていいんじゃないの。
0261デフォルトの名無しさん
2007/11/05(月) 23:00:14変数nを後から参照しているだろ
0262261
2007/11/05(月) 23:12:00nじゃなくて_hoge.n
0263デフォルトの名無しさん
2007/11/05(月) 23:19:07それは関数オブジェクトの属性を参照しているだけなので、
クロージャが無い言語でも動くと思われる。
例としてあまり適当ではないのでは。
勘違いならすまん。
0264デフォルトの名無しさん
2007/11/05(月) 23:23:19だとすると自分でクロージャの実装を書いておいて
それがクロージャだと気づいてないように思えるだがw
0265デフォルトの名無しさん
2007/11/05(月) 23:23:2101: import sys
02:
03: f = open(sys.argv[i])
04: x = f.read()
05: f.close()
06:
07: y = x.split('\n')
08: for i in range(len(y)):
09: z = y[i].split(',')
10: print '%4d: %s' % (i, '\t'.join(z))
のテキストを作って
a,b,c
d,e,f
g,h,i
のテキストを作ったら
pytmp>sample.py data1.txt
のコマンドライン実行で
0: a b(空白)c
1: d e(空白)f
2: g h(空白)i
3:
の結果が見れないんです
何故ですか?
0267デフォルトの名無しさん
2007/11/05(月) 23:27:57俺は>>258=>>260=>>263
だよ。
「自分でクロージャの実装を書いておいて」ってのはどれのこと?
>>260は普通にクロージャだと思ってるよ
0268デフォルトの名無しさん
2007/11/05(月) 23:45:48>>256
Pythonのレキシカル変数ごにょごにょあたりは同意。
0269デフォルトの名無しさん
2007/11/05(月) 23:46:21ああ、そのレスなら俺じゃないし
0270デフォルトの名無しさん
2007/11/05(月) 23:55:28タブ使ってるから。言葉じゃ説明しづらいけど
タブが8文字分なら import sys のあとに
print ('*' + '-' * 7) * 5
とか書き加えてからそのプログラム実行したらわかると思うよ
0271デフォルトの名無しさん
2007/11/06(火) 05:32:3001: import sys print ('*' + '-' + 7) * 5
02:
03: f = open(sys.argv[1])
のでいいのですか?
0272デフォルトの名無しさん
2007/11/06(火) 06:56:36実現出来る事はどっちも変わらんように見える。
0273デフォルトの名無しさん
2007/11/06(火) 07:17:0701: import sys
02:
03: f = open(sys.argv[1])
のテキストを実行したら
SyntaxError: invalid syntax
となります何故ですか?
0274デフォルトの名無しさん
2007/11/06(火) 07:22:3101: などの行番号はいらないぞ
ともかくもう少し勉強してから質問しろ
0275デフォルトの名無しさん
2007/11/06(火) 07:51:43行番号Basicしか知らないような初心者なら仕方ないかもしれん。
0276デフォルトの名無しさん
2007/11/06(火) 08:37:10同じことを、少ない手間でできるのがポイント。
Cプログラマが、C++のclassとCのstructの違いが判らないのと同じ。
0277デフォルトの名無しさん
2007/11/06(火) 09:14:07関数にデータがついたのがクロージャ
と見ることもできる。
0278デフォルトの名無しさん
2007/11/06(火) 09:31:16実現方法が身も蓋もない
0279デフォルトの名無しさん
2007/11/06(火) 10:52:50関数にデータが付けられるということだけじゃない。
関数を変数に入れて持ち運べる言語で、
関数を宣言したときに、関数の外側にある変数を関数宣言の中で使用したら、
自動的にその変数が関数にくっついて持ち運べるようになる。
>>212は_hoge.nを手動でくっつけてるからクロージャじゃない
>>260は自動でreobjとreplacementがくっついてるからクロージャ
0280デフォルトの名無しさん
2007/11/06(火) 11:13:45分かりやすいかどうかはともかく、
Perlのクロージャは$f->()
のように呼び出さなければならないのが美しくないんだよな。
Pythonのように、関数もメンバ関数もクロージャも__call__を持つ
ファンクタも同じように扱えて、単に()で呼べたほうがいい。
デリゲートが、単に
f = obj.memfunc
だけで済んでしまうのは素晴らしい。
0281デフォルトの名無しさん
2007/11/06(火) 12:48:24でもクロージャの説明って難しいよね。>>279の説明読んでもふつうは分からない。
ところでPythonの場合、クロージャの外側の変数は、参照はできても代入はできないじゃん?こんな場合でもクロージャっていえるのかな?
個人的にはPythonのそれは厳密にはクロージャといえないと思っていたから。
0282デフォルトの名無しさん
2007/11/06(火) 12:52:26破壊的代入はできんが、破壊的操作は出来るので、別に困らないといえば困らない
クロージャからレキシカル変数を変更したいようなケースでは、リストを使えば良い
リストの中身は変更できるから
レキシカル変数を変更できるかどうかってのは、別にクロージャの要件では
ないような
0283デフォルトの名無しさん
2007/11/06(火) 13:08:100284デフォルトの名無しさん
2007/11/06(火) 13:20:38その理解は疑わしい。
i = 1
f = lambda x: x + i
f(0)
---> 1
i = 2
f(0)
---> 2
MLのように単一代入の関数型言語では、このような動作にはならない。
PerlやJavaScript, C#のようにクロージャが使える手続き型言語では、
Pythonと同じ動作になるのがほとんどだと思う。
0285デフォルトの名無しさん
2007/11/06(火) 14:06:30代入と束縛を比較してるのか、よく分からない俺ガイル。
0286デフォルトの名無しさん
2007/11/06(火) 14:23:59あの本のやつでしょ?
俺もそれで困ってる。
まったく0から言語学ぶの難しいよな。
0287284
2007/11/06(火) 14:26:24Pythonの代入が少なくとも破壊的であって、単一代入でないのは>>284を
見れば明らかだと思う。
普通は束縛と言えば単一代入のことだと思うが、
>>283が一体何を代入/束縛だと考えているのか、
Pythonが束縛であるというのは何を根拠に言っているのかは俺は知らない。
>>283に聞いてくれ。
0288デフォルトの名無しさん
2007/11/06(火) 19:07:24なんの本の話題かしらんけど、最初のsys.arg[i]のところを写し間違ってるんじゃない?
念のため言っておくが、行番号は書くなよ。
0289デフォルトの名無しさん
2007/11/06(火) 21:26:19>>265の01〜09までは理解できたんだが
10: print '%4d: %s' % (i, '\t'.join(z))
これがわからん。
'%4d: %s' ってなに?
0290デフォルトの名無しさん
2007/11/06(火) 21:39:24ttp://www.python.jp/doc/release/lib/typesseq-strings.html
ここにも書いてるけどC言語のsprintf()相当なもの。
0291デフォルトの名無しさん
2007/11/06(火) 23:27:59=演算子はJavaの参照型に対する=と同じで単一代入。
そんでもってPython整数はimmutable object。
>>284のlambdaは、1への参照を持っているのではなく、毎回global名前空間
からiを解決してオブジェクトへの参照を取得しているので、globalの影響を受ける。
del i
f(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
NameError: global name 'i' is not defined
0292デフォルトの名無しさん
2007/11/07(水) 00:48:24コマンドラインからならきちんと思い通りに動作するんですが。
上手く日本語のメッセージを表示させられてる人はいますか?
0293デフォルトの名無しさん
2007/11/07(水) 01:08:42言語に依存しないなんか一般的な名称ってなかったっけ?
0294デフォルトの名無しさん
2007/11/07(水) 02:56:03y
^
SyntaxError
になってしまいます…
0295デフォルトの名無しさん
2007/11/07(水) 06:32:43簡単に進められました買った参考書が説明不足だっただけでした
続けて質問です
pythonを起動して
>>>print y
をしたら
2ch管理人は実は鬘を必要とします
とpythonが出力したのはどうしてですか?
0296デフォルトの名無しさん
2007/11/07(水) 08:18:19for i in xrange(0, len(seq), n):
x = seq[i: i+n]
print x
ってやるしかない?なんかこう、もっとうまくできる気がするんだけど。。。
0297デフォルトの名無しさん
2007/11/07(水) 08:30:09print seq[:4]
seq = seq[4:]
0298デフォルトの名無しさん
2007/11/07(水) 09:15:47>=演算子はJavaの参照型に対する=と同じで単一代入。
これ、ほんと?
というか、何をもって単一代入といってる?
>そんでもってPython整数はimmutable object。
>>>284のlambdaは、1への参照を持っているのではなく、毎回global名前空間
>からiを解決してオブジェクトへの参照を取得しているので、globalの影響を受ける。
1行目と、この3行とのつながりがわからん。
0299291
2007/11/07(水) 09:19:420300デフォルトの名無しさん
2007/11/07(水) 09:44:08安易にクロージャを使うとバグの温床になるんじゃないか、
という気がした。
0301デフォルトの名無しさん
2007/11/07(水) 10:05:31安易にクラスを使っても、安易に代入を使っても、安易にPythonを使ってもバグの温床になる、
それらと同じ程度には。
0302デフォルトの名無しさん
2007/11/07(水) 10:46:45少なくともPythonのクロージャは、代入不可能だし外から勝手に別の
オブジェクトに変更されることもないから、Java7のクロージャ以上に
安全だよ。
(Java7のクロージャは多分代入可能)
0303デフォルトの名無しさん
2007/11/07(水) 10:51:210304デフォルトの名無しさん
2007/11/07(水) 11:20:580305デフォルトの名無しさん
2007/11/07(水) 12:12:17n = 3
seq = range(10)
for i in seq[0::n]:
print i
# 0
# 3
# 6
# 9
0306デフォルトの名無しさん
2007/11/07(水) 12:21:36そうじゃないだろ
0307デフォルトの名無しさん
2007/11/07(水) 12:36:02個人的には折りたたみジェネレータを作るのがいいんじゃないかと思ってる。
ビルトインでコレって言うのはない気がする
def fold(x, n):
i = 0
j = len(x)
while i < j:
yield x[i:i+n]
i += n
for x in fold(range(100), 7):
print x
297
みたいなseq = seq[4:]なやり方は多分アルゴリズム的に微妙に遅いので、
素直にインデックス計算したほうがいいと思う
0308デフォルトの名無しさん
2007/11/07(水) 13:18:00頭の使い方を考えろwwwwwwwwwww
0309デフォルトの名無しさん
2007/11/07(水) 13:25:500310デフォルトの名無しさん
2007/11/07(水) 13:30:22>>296のお題は「任意のシークエンス」となっているのに
いつの間に「高々数個」に化けたんだ
0311308
2007/11/07(水) 13:33:060312デフォルトの名無しさん
2007/11/07(水) 13:52:500313デフォルトの名無しさん
2007/11/07(水) 14:03:310314デフォルトの名無しさん
2007/11/07(水) 16:16:07簡単に理解できます
アレだった…
忘れてください
質問です
h = open(...)
y = h.read()
hをオブジェクトに追加出来るのは知れました
オブジェクトを二桁にしてもPC.壊れ無いですか?
0315デフォルトの名無しさん
2007/11/07(水) 16:37:140316デフォルトの名無しさん
2007/11/07(水) 16:48:000317デフォルトの名無しさん
2007/11/07(水) 18:08:30病院ってなんの事ですか?
中学2年になるし、日本語は喋れます
0318デフォルトの名無しさん
2007/11/07(水) 18:35:350319デフォルトの名無しさん
2007/11/07(水) 19:00:17もうちょとさぁ・・・なんていうかさぁ・・・
Python厨が顔真っ赤にして反論しそうな感じでいかない?
この板ID無いんだしさ
0320デフォルトの名無しさん
2007/11/07(水) 19:13:2410000回くらい氏んでいいよ
どうせ暇なんだろwwwwwwwwwwwwwwwwwwwwww
氏んで暇つぶせwwwwwwww
0321デフォルトの名無しさん
2007/11/08(木) 10:47:34->['1', ' ', '2', ' ', '3']
これを、一発で下記のようにする方法ありますか?
->['1', '2', '3']
join の逆ができればいいのに。。。
0322デフォルトの名無しさん
2007/11/08(木) 10:52:500323デフォルトの名無しさん
2007/11/08(木) 12:59:27質問です
友達の所に来てPHP.教えて貰ってるんだけど
基礎構文て言ってたかな?
それは教えてくれるんだけど
基礎構文に附いて聞くと教えてくれない
どううしてですか?
あ、書き込みも友達のデスクトップ借りています
0324デフォルトの名無しさん
2007/11/08(木) 13:51:12>>> filter(lambda b:b != " ",a)
['1', '2', '3']
>>> a=['1', '', '2', '', '3']
>>> filter(None,a)
['1', '2', '3']
0325デフォルトの名無しさん
2007/11/08(木) 14:26:06>>> [s for s in a if s.strip()]
['1', '2', '3']
>>> [s for s in a if s != ' ']
['1', '2', '3']
0326デフォルトの名無しさん
2007/11/08(木) 15:56:250327デフォルトの名無しさん
2007/11/08(木) 17:42:390328CERN
2007/11/08(木) 18:03:04Pythonチャレンジをやりたい人↓どうぞ
http://test-iq.web.cern.ch/test-iq/step1.php?lang=en
よろしくお願いします。
0329デフォルトの名無しさん
2007/11/08(木) 18:11:10すれ違い消えろ
0330デフォルトの名無しさん
2007/11/08(木) 21:51:44"".join(L).split(' ')
0331デフォルトの名無しさん
2007/11/08(木) 21:56:40>>> re.findall(r'(\b\w+?\b)',"".join(a))
['a', 'b', 'c']
0332デフォルトの名無しさん
2007/11/08(木) 22:12:390333デフォルトの名無しさん
2007/11/08(木) 23:40:15a = a[::2]
0334デフォルトの名無しさん
2007/11/09(金) 00:19:54del a[1::2]
0335デフォルトの名無しさん
2007/11/09(金) 00:32:120336デフォルトの名無しさん
2007/11/09(金) 01:03:220337デフォルトの名無しさん
2007/11/09(金) 01:16:18filter(lambda x : x != min(a) and x, a)
>>327
次の質問は
list("あ い う") がうまく表示されません
と予想
0338デフォルトの名無しさん
2007/11/09(金) 12:13:55質問です
中学2年になるので
PHP.
を覚えているのですが?
s = 'I`m a boy'
で読むには問題ないと思うのですが?
此れでは駄目なのですか?
0339デフォルトの名無しさん
2007/11/09(金) 12:24:11‘バーカ
>>329 名前:デフォルトの名無しさん :2007/11/08(木) 18:11:10
すれ違い消えろ
0340デフォルトの名無しさん
2007/11/09(金) 13:22:03俺小学生だけど年下に聞いて恥ずかしくない?
0341デフォルトの名無しさん
2007/11/09(金) 14:07:04pythonでは多次元配列を扱うときはリストのリストを使いますよね。
[ [1,0,2],[-1,2,3],[5,7,2] ]こんな風に。
リストのリストで、ある要素が何行目に入っているのか調べるにはどうしたらよいでしょうか?
例えば上の場合は「5」を入力すると「3」を返すような。
要素は数字だけに限らず文字列の場合もあります。
どなたか上手い方法を教えてください。お願いします。
0342デフォルトの名無しさん
2007/11/09(金) 14:32:22>>> (lambda x, lst: [x in s for s in lst])(5, lst).index(True) + 1
3
冗談だ。
0343デフォルトの名無しさん
2007/11/09(金) 14:57:35a=[ [1,0,2],[-1,2,3],[5,7,2] ]
普通(.は半スペね)
for n,l in enumerate(a):
.if 5 in l:
..print n+1
リスト内包大好き
sum([1 for l in a if not 5 in l])+1
0344デフォルトの名無しさん
2007/11/09(金) 14:57:42a=[[1,0,2],[-1,2,3],[5,7,2]]
for x,y in enumerate(a):
if 5 in y:
print x+1
0345344
2007/11/09(金) 14:59:030346343
2007/11/09(金) 15:04:46だが、enumerate 使うのが正しい思考だと確認できてご満悦。
0347デフォルトの名無しさん
2007/11/09(金) 15:10:03最初の一個ならenumerateって気がする
関数化してもいいかも
def findif(seq, pred):
for i, x in enumerate(seq):
if pred(x):
return i
return -1
0348デフォルトの名無しさん
2007/11/09(金) 15:17:52俺小学生だけど年下に聞いて恥ずかしくない?
すみません
私の先生が小学生が教えられる言語だから小学生に聞けと言っています
0349デフォルトの名無しさん
2007/11/09(金) 15:29:26暇人は氏ねよw
10000回くらい氏んでいいよ
どうせ暇なんだろwwwwwwwwwwwwwwwwwwwwww
氏んで暇つぶせwwwwwwww
0350デフォルトの名無しさん
2007/11/09(金) 15:44:11いやん、超かぶった・・・
0351デフォルトの名無しさん
2007/11/09(金) 15:44:35PHPとPythonはまったく別の言語です
0352デフォルトの名無しさん
2007/11/09(金) 15:53:15「ネット関連」カテゴリー
のWebProg板 に
PHP.
関連のスレッドが?
たくさんあるので、
そっちで聞いたほうが
丁寧に教えてくれると思うよ
0353デフォルトの名無しさん
2007/11/09(金) 16:13:540354デフォルトの名無しさん
2007/11/09(金) 16:22:520355デフォルトの名無しさん
2007/11/09(金) 17:20:55ありがとうございます。今までリスト内包記はめんどくさそうなので敬遠してました。
勉強します。
0356デフォルトの名無しさん
2007/11/09(金) 17:22:28条件に適合する全てのインデクスのリストが欲しいんなら、俺ならこう書く
seq = [[1,2,3],[4,5,6],[7,8,9]]
found = [i for i, x in enumerate(seq) if 5 in seq]
0357デフォルトの名無しさん
2007/11/09(金) 17:30:31>>352 名前:デフォルトの名無しさん :2007/11/09(金) 15:53:15
>> 338
「ネット関連」カテゴリー
のWebProg板
0358デフォルトの名無しさん
2007/11/09(金) 17:36:40最後のseqはxかな?
でも簡潔でいいねそれ
0359デフォルトの名無しさん
2007/11/09(金) 17:43:48スマソ間違えた><
0360デフォルトの名無しさん
2007/11/09(金) 17:55:23最近ファイルから読み込むときも無意味に
allist=[l for l in sys.stdin]
for l in allist:
...
って書いちゃう。イミネー
0361デフォルトの名無しさん
2007/11/09(金) 18:22:20def search(mtx, cmp_v, idx=0):
if isinstance(mtx, list):
hitidx = []
for rowidx,item in enumerate(mtx):
srchidx = search(item, cmp_v, rowidx)
if isinstance(item, list):
tmp = []
for i in srchidx:
if isinstance(i, list):
tmp.append([rowidx]+i)
else:
tmp.append([rowidx]+[i])
srchidx = tmp
else:
srchidx = srchidx
hitidx = hitidx + srchidx
return hitidx
else:
if callable(cmp_v) and cmp_v(mtx) or cmp_v == mtx:
return [idx]
else:
return []
0362デフォルトの名無しさん
2007/11/09(金) 18:24:06b = [[ 1,5,5],
[-1,2,5],
[ 5,7,2],
[ 0,1,2],
[ 8,5,0]]
c = [[ 1,5,5],
[3,4],
[4,8,[0,2,5],2],
[5,4,7,2]]
d = [[1,5,5],
[3,4],
[4,8,[[0,8,7,6,5],2,5],2],
[5,4,7,2]]
>> print search(a, 5)
[1, 5, 9]
>> print search(b, 5)
[[0, 1], [0, 2], [1, 2], [2, 0], [4, 1]]
>> print search(c, lambda x: x==5)
[[0, 1], [0, 2], [2, 2, 2], [3, 0]]
>> print search(d, lambda x: x==5)
[[0, 1], [0, 2], [2, 2, 0, 4], [2, 2, 2], [3, 0]]
0363デフォルトの名無しさん
2007/11/09(金) 20:40:50ジェネレータ式なら頻繁に使う。
0364デフォルトの名無しさん
2007/11/10(土) 01:04:44そういうのはジェネレータで作らないと、調べたいリストがでかいときに不便になる。
あと、再帰してるのに3回もlist判定をするのはなんかおかしいと思う
0365デフォルトの名無しさん
2007/11/10(土) 01:28:19if isinstance(x, list):
for n, y in enumerate(x):
for i in search(y, test, index+(n,)):
yield i
elif x == test or (callable(test) and test(x)):
yield index
...
>>> d=[[1,5,5],[3,4],[4,8,[[0,8,7,6,5],2,5],2],[5,4,7,2]]
>>> list(search(d, 5))
[(0, 1), (0, 2), (2, 2, 0, 4), (2, 2, 2), (3, 0)]
0366デフォルトの名無しさん
2007/11/10(土) 11:33:34$ref2 = Crypt::RC4->new( $passphrase );
$decrypted = $ref2->RC4( $encrypted );
pythonこのような可逆暗号モジュールってあるのでしょうか。
0367デフォルトの名無しさん
2007/11/10(土) 11:37:110368デフォルトの名無しさん
2007/11/10(土) 11:56:16opensslの実装に使われてるはずなんだが、標準では
暗号モジュールとしての機能がエクスポートされてないようだねえ
非標準のは探せば色々あると思うよ
python cryptography
とかでぐぐれ
0369デフォルトの名無しさん
2007/11/10(土) 12:08:43ありがとうございます。ぐぐります。
0370デフォルトの名無しさん
2007/11/10(土) 15:32:180371デフォルトの名無しさん
2007/11/10(土) 19:20:34pythonの利点ってなんですか?
0372デフォルトの名無しさん
2007/11/10(土) 19:33:57むしろ、そこまでしてPythonを使おうとする理由は何ですか?
0373デフォルトの名無しさん
2007/11/10(土) 19:51:240374デフォルトの名無しさん
2007/11/10(土) 19:52:21python勉強したらjava使う理由が見当たらなくなってしまったのですが
javaの利点ってなんですか?
0375デフォルトの名無しさん
2007/11/10(土) 19:54:45つ jython
マルチプロセスのサーバアプリのようなものなら、別にどんな言語の
組み合わせだろうと可能だけどね。
0376デフォルトの名無しさん
2007/11/10(土) 19:55:54BitTorrentとか使うとJavaよりよさそうと思えるけど。
0377デフォルトの名無しさん
2007/11/10(土) 19:57:100378デフォルトの名無しさん
2007/11/10(土) 20:05:42ベンチマークサイトなんていくらでもあるだろ。
単純に言語自体の機能を使って計算能力を比較したら、お話にならないほど
Javaのが速い。
とは言っても、I/O律速になるタイプのプログラム(ネットワークやらDBやら
を使うようなプログラムは大体そうだ)ではその違いは大した問題ではないし、
メインのボトルネックになる部分をCで書かれたライブラリに丸投げできるなら、
同じく大した問題ではない。
0379デフォルトの名無しさん
2007/11/10(土) 20:09:02http://ja.uncyclopedia.info/wiki/Python
見るとPythonのほうが1000倍速いってよ!
0380デフォルトの名無しさん
2007/11/10(土) 20:13:49そんなのもあるんじゃない?
0381デフォルトの名無しさん
2007/11/10(土) 20:19:17俺そこ大好き。愛してる。
0382デフォルトの名無しさん
2007/11/10(土) 20:30:06アンサイクロペディアになってるぞ
0383デフォルトの名無しさん
2007/11/10(土) 20:31:520384デフォルトの名無しさん
2007/11/10(土) 20:32:37むしろJavaにワロタw
0385デフォルトの名無しさん
2007/11/10(土) 20:44:04この文章書いた人天才w
0386デフォルトの名無しさん
2007/11/10(土) 21:06:400387デフォルトの名無しさん
2007/11/10(土) 21:19:240388デフォルトの名無しさん
2007/11/10(土) 21:23:170389デフォルトの名無しさん
2007/11/10(土) 21:24:29JavaとPerlの特徴がマッチしすぎだな
0390デフォルトの名無しさん
2007/11/10(土) 23:44:32http://www.math.tohoku.ac.jp/~kuroki/keijiban/a0060.html
こんなのが出てきたのだが。
0391デフォルトの名無しさん
2007/11/11(日) 08:19:39何か別の人っぽいな
新山ってpygame実況中継の人だったんだね
0392デフォルトの名無しさん
2007/11/11(日) 09:34:16その実況中継戸やらも中途半端だし
390みたいなパーソナリティ、日記を見てても愚痴ばっかり
リアルでは絡みたくない人種だなwwww
0393デフォルトの名無しさん
2007/11/11(日) 11:02:17それまでpython知っててもさわる気になれなかったけど。
pygame実況中継が俺にとってのきっかけになった。
大変感謝している。
0394デフォルトの名無しさん
2007/11/11(日) 11:41:02わろた。しかしこれを書いてる人の労力がもったいないような。
0395デフォルトの名無しさん
2007/11/11(日) 12:01:22労力が余ってる奴だから大丈夫。
0396デフォルトの名無しさん
2007/11/11(日) 12:09:00は何なんでしょうか?単にos.write()で全バイト書き込まれるのでは
ないのでしょうか?
def writeall(fd, data):
while len(data) != 0:
n = os.write(fd, data)
data = buffer(data, n)
0397デフォルトの名無しさん
2007/11/11(日) 12:29:15os.write()はシステムコールを直接呼ぶから、一般には1度の呼び出しで
全バイト書き込まれることは保障されていない。特にfdがソケットであったり
するような場合は、partial writeはごく普通に発生する。
本当はEINTRの場合の処理もやったほうがいい筈だが、割り込まれた時に
システムコールのwrite()を自動的に再送するかどうか、といった挙動が
Unixでもシステムによって様々なので、移植性のあるコードを書くのは
難しいかもしれん。
0398デフォルトの名無しさん
2007/11/11(日) 13:15:12open('db/data.dat') と書いてみたのですが、'db/data.dat'をmain.pyを実行したディレクトリを基点とした
相対パスと解釈されてしまうらしく、意図どおりの動作をしてくれません。
foo ディレクトリ以下をコピーさえすれば、main.py がどのディレクトリパス上にあっても
使用できるようにしたいため、open() に渡すパスをフルパスにはしたくありません。
何かよい方法はないでしょうか?
0399デフォルトの名無しさん
2007/11/11(日) 13:32:07__file__ は zipimport できなくなるのでオススメしない
0400デフォルトの名無しさん
2007/11/11(日) 14:49:23やっぱemacs
0402デフォルトの名無しさん
2007/11/11(日) 19:12:11しんやまさんは昔から香ばしい人だったんだな(www
0403デフォルトの名無しさん
2007/11/11(日) 23:18:56pythonの利点ってなんですか?
0404デフォルトの名無しさん
2007/11/11(日) 23:27:300405デフォルトの名無しさん
2007/11/11(日) 23:32:01Lispなど勉強されては?
Lispを極めれば他の言語など無用の長物にございまするよ
0406デフォルトの名無しさん
2007/11/11(日) 23:40:090407デフォルトの名無しさん
2007/11/12(月) 00:01:22pythonの利点ってなんですか?
0408デフォルトの名無しさん
2007/11/12(月) 00:19:18ブラジリアンが気に入ったのならLuaにでもしとけ
0409デフォルトの名無しさん
2007/11/12(月) 00:50:25def sample1():
for x in range(1000000):
ary.append(DummyClass1('TestTest%09d' % (x)))
print "last"
def sample2():
for x in range(1000000):
ary.append(DummyClass2('TestTest%09d' % (x)))
print "last"
def sample3():
for x in range(1000000):
ary.append('TestTest%09d' % (x))
print "last"
sample1()
time.sleep(5)
DummyClass1, DummyClass2 ともに引数の値をインスタンス変数に渡すだけですが、
DummyClass2 のほうでは10個以上のメソッドを作ってあります。
今編集中のプログラムに上記と似たような箇所があり、(実際はループも引数ももっと意味のあるものですが)
クラスの処理がクラスメソッドでなく関数で行われていたためクラスに移動しようかと思いましたが、
クラスのメソッドの数で更にメモリを使うものかと思って上記のようなものを作った次第です。
タスクマネージャで見た結果では sample1(), sample2() が250MB超えるのに対して sample3() は80MB程度で済みます。
できれば今のままクラスで扱いたいと思っていましたが、こんな差が出るなら見直しは必要かと思います。
オプションか何かでクラスインスタンスの使うメモリの量を減らすことってできませんかね?
0410デフォルトの名無しさん
2007/11/12(月) 00:59:47新クラスか旧クラスかで全然違うと思うけど
0411デフォルトの名無しさん
2007/11/12(月) 01:00:56重要なのはsample1とsample2の差なんじゃないの?
sample3が小さいのは当たり前の話
0412デフォルトの名無しさん
2007/11/12(月) 01:06:47それっとわりと優秀じゃんとか思った。
(仮想メモリサイズじゃなくてメモリ使用量見てるとかかな)
例示のように結果としてインスタンスを保持する必要があるなら
メモリ使うのはしょうがないけど
メソッドの返り値だけほしいならコーディングが悪いな。
0413デフォルトの名無しさん
2007/11/12(月) 02:28:09object継承してるんで新クラスですかね。
でも上の例だと継承してるほうが20MBほど軽くなってるみたいです。
>>411
その通りなんですが、効果があるなら配列&辞書にしてしまってもいいかなと。
コードは多少汚くなりますが、今のクラスでは特別な処理はしてないんで軽量化も狙えると思いまして。
>>412
最大メモリ使用量見てました。
クラスへのメソッド追加はメモリ使用量に殆ど関係ないようなので、
当初の目的通りの修正を入れたあと状況を見て作り直そうかと思います。
0414デフォルトの名無しさん
2007/11/12(月) 05:10:19そうすればIMEの使い勝手がよくなるのに。
0415デフォルトの名無しさん
2007/11/12(月) 05:43:21import os
datafile = os.path.join(os.path.dirname(__file__), 'db/data.dat')
でどうでしょう?
0416デフォルトの名無しさん
2007/11/12(月) 05:58:14この数値を信用するとして、sample1()とsample2()は100万個のオブジェクトの配列、sample3()は100万個の文字列の配列だから
文字列1コあたり 80MB / 1,000,000コ = 80byte/コ
オブジェクトのほうは 250MB / 1,000,000コ = 250byte/コ
オブジェクトはインスタンス変数として文字列を含んでいるからそれを除いても 250 - 80 = 170byte/コ
配列のメモリ消費量を考慮していない大雑把な計算だけど、こんなものではないの?減らす方法はなさげ。
インスタンス変数が文字列ひとつだけで、大量のオブジェクトを生成し、メモリも節約したいということなら、クラスを使わないという選択肢はありでしょう。
0417デフォルトの名無しさん
2007/11/12(月) 06:18:55rangeだけで相当メモリ食ってそうだな
0418デフォルトの名無しさん
2007/11/12(月) 07:23:24a=range(1000000) # <= 17M
a=['TestTest%09d'%x for x in range(1000000)] # <= 66M
class X:
def __init__(self,x): self.x=x
a=[X('TestTest%09d'%x)for x in range(1000000)] # <= 242M
って感じだった・・・
ちなみにニュースタイルクラスにしてもサイズはほぼ変わらなかった(1M差以内)
0419デフォルトの名無しさん
2007/11/12(月) 08:03:24PythonのGCはreference count方式だから、range() がつくるlistはすぐに解放されるため、計測するときにはでてこないと思う。
xrange()にかえても結果は一緒だよ。この場合は。
0420デフォルトの名無しさん
2007/11/12(月) 10:10:57C++の利点ってなんですか?
0421デフォルトの名無しさん
2007/11/12(月) 14:20:41バカには使えないところ
0422デフォルトの名無しさん
2007/11/12(月) 16:04:090423デフォルトの名無しさん
2007/11/12(月) 17:26:50確かにバカには使えないところ。ってのは面白い。間違ってないよw
0424デフォルトの名無しさん
2007/11/12(月) 17:38:490425デフォルトの名無しさん
2007/11/12(月) 17:56:48Rubyの利点ってなんですか?
0426デフォルトの名無しさん
2007/11/12(月) 17:59:370427デフォルトの名無しさん
2007/11/12(月) 18:06:160428デフォルトの名無しさん
2007/11/12(月) 18:37:22いかに便利かを鼻息荒く力説できる
YARVキタコレとか言える
0429デフォルトの名無しさん
2007/11/12(月) 19:39:52import urllib
for a, b, c in re.findall('(.*)(p|P)ython(.*)', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()): print a + b + 'ython' + c
0430デフォルトの名無しさん
2007/11/12(月) 20:11:39バカにc++触らせたらとんでもないことになる。
本当にpythonは素晴らしい。
別にrubyでもいいんだけどさ
0431デフォルトの名無しさん
2007/11/12(月) 20:20:05言葉攻めにしてみたり
半年前に自分で書いた<>とか使いまくったソースの意味がさっぱり分からなくて
うろたえたりとかして遊べるよ
0432デフォルトの名無しさん
2007/11/12(月) 21:36:02PythonだろうがRubyだろうがC++だろうがHSPだろうがね。
> バカはバカなりに使えるのが素晴らしいんだよpython。
ユーザーにこういう勘違いさせてしまうんだったらPythonは糞言語の一角だな。
0433デフォルトの名無しさん
2007/11/12(月) 21:42:490434デフォルトの名無しさん
2007/11/12(月) 21:43:170435デフォルトの名無しさん
2007/11/12(月) 22:15:180436デフォルトの名無しさん
2007/11/12(月) 22:19:210437デフォルトの名無しさん
2007/11/12(月) 22:31:00バカは面白いな(wwwwwwwwwww
0438デフォルトの名無しさん
2007/11/12(月) 22:51:53430みたいなバカのいる大集団の開発チームではJavaとか使った方がいいぞ。
0439デフォルトの名無しさん
2007/11/12(月) 23:01:170440デフォルトの名無しさん
2007/11/12(月) 23:13:020441デフォルトの名無しさん
2007/11/12(月) 23:13:45賢いこと言えないハンデを単語レベルのトゲでカバーしても
あんまりかっこよく見えないですよ
0442デフォルトの名無しさん
2007/11/12(月) 23:20:56バカは面白いな(wwwwwwwwwww
0443デフォルトの名無しさん
2007/11/12(月) 23:22:310444デフォルトの名無しさん
2007/11/12(月) 23:23:20バカだからそんな反論しかできないんですね.ご愁傷様です...
0445デフォルトの名無しさん
2007/11/12(月) 23:36:20( ゚∀゚)彡 おっぱい!おっぱい!
⊂彡
0446デフォルトの名無しさん
2007/11/12(月) 23:37:46441が「論に対して反論してる」ように見えてるのは君だけだと思うよ。
他の人には「ヒステリーをたしなめてる」ように見えているもの。
0447デフォルトの名無しさん
2007/11/12(月) 23:41:45バカ呼ばわりされたら相手をたしなめないと気が済まないよね
もっともなことだ
0448デフォルトの名無しさん
2007/11/12(月) 23:43:290449デフォルトの名無しさん
2007/11/12(月) 23:45:06喧嘩売られたからって全力で買ってんじゃないって言ってんだって。
0450デフォルトの名無しさん
2007/11/12(月) 23:48:10449(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0451デフォルトの名無しさん
2007/11/12(月) 23:50:08んー、それは熱くなっちゃってる人の発想だと思うよ。
一所懸命逆撫でを頑張ろうとするのはわかるけど(今さら冷静になると負けた気になるものね)、
あんまり意味無いよ。他の人喧嘩する気無いし。
0452デフォルトの名無しさん
2007/11/12(月) 23:52:22他の人には「バカをからかって遊んでいる」ように見えているもの。
0453デフォルトの名無しさん
2007/11/12(月) 23:52:54( ゚∀゚)彡 おっぱい!おっぱい!
⊂彡
0454デフォルトの名無しさん
2007/11/12(月) 23:55:05Pythonとちっとも関係ない話題な時点で大差ないだろそれは。
暇つぶしならMixiでやってろ。
0455デフォルトの名無しさん
2007/11/12(月) 23:55:32仕事でストレス溜まってんのか?おっさんにいってみろw
0456デフォルトの名無しさん
2007/11/12(月) 23:57:000457デフォルトの名無しさん
2007/11/12(月) 23:57:50( ゚∀゚)彡 おっぱい!おっぱい!
⊂彡
0458デフォルトの名無しさん
2007/11/12(月) 23:58:46ところでオパーイはどこにあるのだ?
0459デフォルトの名無しさん
2007/11/12(月) 23:58:50溜まってるのかもねえ。なんかオウム返しとか始めちゃってるし。
0460デフォルトの名無しさん
2007/11/12(月) 23:59:33( ゚∀゚)彡 PyPy!PyPy!
⊂彡
0461デフォルトの名無しさん
2007/11/12(月) 23:59:53やっと理解できたw
0462デフォルトの名無しさん
2007/11/13(火) 00:00:22ごめん俺他の人だけど超必死にしか見えないw
このレスに対するキャラ付けもだいたい読めるから期待してるw
0463デフォルトの名無しさん
2007/11/13(火) 00:05:410464デフォルトの名無しさん
2007/11/13(火) 00:06:56( ゚∀゚)彡 おっぱいそん!おっぱいそん!
⊂彡
0465デフォルトの名無しさん
2007/11/13(火) 00:08:120466デフォルトの名無しさん
2007/11/13(火) 00:09:28>他の人だけど
ウンウンw
>キャラ付けもだいたい読めるから
で?w
0467デフォルトの名無しさん
2007/11/13(火) 00:17:580468デフォルトの名無しさん
2007/11/13(火) 00:20:230469デフォルトの名無しさん
2007/11/13(火) 00:22:280470デフォルトの名無しさん
2007/11/13(火) 01:01:200471デフォルトの名無しさん
2007/11/13(火) 06:42:440472デフォルトの名無しさん
2007/11/13(火) 06:57:010473デフォルトの名無しさん
2007/11/13(火) 08:34:15今日もがんばって煽ってください
0474デフォルトの名無しさん
2007/11/13(火) 08:48:56今日もよろしくお願いします
0475デフォルトの名無しさん
2007/11/13(火) 09:30:320476デフォルトの名無しさん
2007/11/13(火) 10:36:220477デフォルトの名無しさん
2007/11/13(火) 10:37:50やや短く
import re,urllib
for x in re.findall('(.*(P|p)ython.*)',urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()):print x[0]
0478デフォルトの名無しさん
2007/11/13(火) 13:48:12for x in re.findall('.*python.*', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read(), re.I): print x
のほうが分かりやすいような。
0479デフォルトの名無しさん
2007/11/13(火) 17:59:45Perlほど人間性が露になる言語も珍しいよなw
0480デフォルトの名無しさん
2007/11/14(水) 00:13:01初心者なんですけど
得られた値がunicodeかどうかって調べる方法あります?
それともそんなの気にしなくてもいいんですか?
0481デフォルトの名無しさん
2007/11/14(水) 00:15:02for x in re.findall('.*ython.*', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()): print x
こうしないと同じ結果にならないケースが出てくると思う
0482デフォルトの名無しさん
2007/11/14(水) 00:19:330483デフォルトの名無しさん
2007/11/14(水) 00:26:120484デフォルトの名無しさん
2007/11/14(水) 00:33:45s = "foo"
print isinstance(s, str) #=> True
s = u"foo"
print isinstance(s, unicode) #=> True
0485デフォルトの名無しさん
2007/11/14(水) 01:24:49unicode かどうかは大いに気にする必要がある。
うっかり str と混ぜると暗黙の unicode → str 変換が起こって
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
みたいなエラーが出る羽目になる。要注意。
0486デフォルトの名無しさん
2007/11/14(水) 02:56:35>>> u"うにこーど" + "ばいとれつ"
u'\u3046\u306b\u3053\u30fc\u3069\u3070\u3044\u3068\u308c\u3064'
起こらない。
0487デフォルトの名無しさん
2007/11/14(水) 03:46:41Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> u"うに" + "ばい"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 0: ordinal
not in range(128)
>>> "うに" + "ばい"
'\x82\xa4\x82\xc9\x82\xce\x82\xa2'
>>> u"うに" + u"ばい"
u'\u3046\u306b\u3070\u3044'
>>>
0488デフォルトの名無しさん
2007/11/14(水) 05:28:09ありがとうございましt
0489デフォルトの名無しさん
2007/11/14(水) 05:33:16fullpath = u'%s/%s' % (os.path.abspath(os.path.dirname(sys.argv[0])), file)
みたいな書き方をしたとき、
実行ファイルの場所のパス名がすべて半角英数なら問題なさそうなのですが、
日本語が含まれていると、
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
が出てきてしまいます。
0490デフォルトの名無しさん
2007/11/14(水) 05:34:100491デフォルトの名無しさん
2007/11/14(水) 05:44:23path = os.path.abspath(os.path.dirname(sys.argv[0]))
print isinstance(path, str)
print isinstance(path, unicode)
if isinstance(path, str): path = unicode(path, 'mbcs')
file = u'デスマ.txt'
fullpath = u'%s/%s' % (path, file)
print fullpath
とりあえずこれでどちらでも正常に動くことが確認出来ました。
0492デフォルトの名無しさん
2007/11/14(水) 07:51:020493デフォルトの名無しさん
2007/11/14(水) 11:55:13sitecustomize.pyに
sys.setdefaultencoding('cp932')
とか記述汁
詳細はsitecustomize.pyでぐぐれ
0494デフォルトの名無しさん
2007/11/14(水) 12:28:35>sitecustomize.pyに
>sys.setdefaultencoding('cp932')
とやったら文字が化け化けになっちゃいました。
僕は中学二年生だけどMac Book Proに4Gバイトメモリを載せて使っています。
家がお金持ちです。
アドバイスください。
0495デフォルトの名無しさん
2007/11/14(水) 12:36:40utf-8とかeuc-jpとかな
0496デフォルトの名無しさん
2007/11/14(水) 12:36:46おれは親子丼だよ
0497デフォルトの名無しさん
2007/11/14(水) 13:53:160498デフォルトの名無しさん
2007/11/14(水) 15:17:23浮動小数点の精度の悪さにムカついているのですが、分数をちゃんと扱えるライブラリはないですか?
0499デフォルトの名無しさん
2007/11/14(水) 15:30:51精度を問題にするならDecimalモジュールをどうぞ
http://www.python.jp/doc/2.4/lib/module-decimal.html
分数を扱うモジュールは標準ではなさそう。「python fraction」でぐぐると
http://www.spiritone.com/~english/code/fraction.py
というのがあった。
もしかしたら科学技術計算用のモジュールが役に立つかも。
0500デフォルトの名無しさん
2007/11/14(水) 15:40:55なんか理解してない気がするな
0501デフォルトの名無しさん
2007/11/14(水) 16:10:490502デフォルトの名無しさん
2007/11/14(水) 16:14:02別に苦手ってほどのものでもないと思うが。
ちゃんとUnicodeに対応していて、それが使いにくいわけでもない。
個人的には、Javaよりは落ちる。Perlよりはマシ。という印象。
0503デフォルトの名無しさん
2007/11/14(水) 18:48:42現状でもちゃんと調教すれば素直なんだけど、それがめんどくさい。
0504デフォルトの名無しさん
2007/11/14(水) 19:09:460505デフォルトの名無しさん
2007/11/14(水) 20:00:150506デフォルトの名無しさん
2007/11/14(水) 20:17:260507デフォルトの名無しさん
2007/11/14(水) 20:17:30ひょっとして、人に渡すスクリプトには、
assert sys.getdefaultencoding() == 'cp932'
とか書くのだろうか。
0508デフォルトの名無しさん
2007/11/14(水) 20:29:03print は本番コードには使わない。
動作をちょっと見たりとか、
デバッグの時だけしか使わんから無問題。
0509デフォルトの名無しさん
2007/11/14(水) 20:55:12デフォルトのエンコーディングが ascii であることを前提として
書かれているモジュールなんていくらでもありそうだし
0510デフォルトの名無しさん
2007/11/14(水) 22:04:21pythonが解釈して処理する話かとオモタ…
0511デフォルトの名無しさん
2007/11/14(水) 22:15:43sys.setdefaultencoding('utf-8')
にしてるよ
0512デフォルトの名無しさん
2007/11/14(水) 23:33:56まぁ、文系出身のオレなので、理解してないかもしれないが、理解しているかもしれない。
単に分数で厳密に扱える量を含む行列を1000乗ぐらいしたいだけなんだがな‥‥‥。
>499
ありがと。Numeric.dot 相当は自分で書かなきゃだめかね...
0513デフォルトの名無しさん
2007/11/15(木) 00:37:56ttp://ysserve.int-univ.com/Lecture/Dsys/node2.html
この辺の技は?
0514デフォルトの名無しさん
2007/11/15(木) 00:56:130515デフォルトの名無しさん
2007/11/15(木) 01:30:11asciiならまだまし
pymacsなんてLatin-1前提に作ってたからsetup.pyすら動かなかったwww
0516デフォルトの名無しさん
2007/11/15(木) 02:22:02こっち使ったらど?
ttp://practical-scheme.net/gauche/index-j.html
0517デフォルトの名無しさん
2007/11/15(木) 06:25:01賢いこと言えないハンデを単語レベルのトゲでカバーしても
あんまりかっこよく見えないですよ
0518デフォルトの名無しさん
2007/11/15(木) 06:37:20出来がいいかはともかく
0519デフォルトの名無しさん
2007/11/15(木) 18:41:540520デフォルトの名無しさん
2007/11/15(木) 18:58:51矛盾してるがなwww
0521デフォルトの名無しさん
2007/11/15(木) 20:24:150522デフォルトの名無しさん
2007/11/15(木) 21:37:50や、意外と矛盾しないんじゃないか?
「無駄な車輪の再開発を避ける」って意味なら。
0523デフォルトの名無しさん
2007/11/15(木) 22:17:09たしかに。
同じものを延々と作ってるうちの会社の某氏にいってやりたいw
0524デフォルトの名無しさん
2007/11/16(金) 01:14:40直接言えよこの社内ヒキコモリめwwwwwwwwwww
言えないなら氏ねよM字ハゲwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0525デフォルトの名無しさん
2007/11/16(金) 01:25:250526デフォルトの名無しさん
2007/11/16(金) 02:09:41gdb だと
http://flex.phys.tohoku.ac.jp/texi/gdb-j/gdb-j_16.html#SEC23
$ handle SIGINT stop
とかしておけばできた覚えがあるのですが。
0527デフォルトの名無しさん
2007/11/16(金) 12:13:18なんか心当たりがあったんじゃない?
0528デフォルトの名無しさん
2007/11/16(金) 22:16:28メソッドを呼び出す前に初期化を行う(C#の静的コンストラクタ)みたいなものって作れますか?
0529デフォルトの名無しさん
2007/11/16(金) 22:21:40自己レス
class Hoge:
の下にそのまま処理を書いていけばいいだけだった
0530デフォルトの名無しさん
2007/11/16(金) 22:53:480531デフォルトの名無しさん
2007/11/17(土) 00:38:08他に作図ソフトでpythonで操作しやすいインターフェースの充実した
ソフトはないでしょうか?
図はtexに貼り付けるので texのままかepsで出力できるとうれしいです
0532デフォルトの名無しさん
2007/11/17(土) 02:03:02epsで出せたかしらんけど、ダミーのPSプリンタセットアップしてそこへ印刷掛けて
出力をファイルにできればPostScriptファイルは得られるでそ。
0533デフォルトの名無しさん
2007/11/17(土) 03:02:52OOo Draw
0534デフォルトの名無しさん
2007/11/17(土) 05:50:23Inkscape
0535デフォルトの名無しさん
2007/11/17(土) 10:36:36Pythonで操作しやすいって、Pythonでお絵かきしたいってことじゃなくて
Pythonでドローソフトやのマクロみたいなのを書きたいってこと?
使ったことは無いが、Python製のSkencilというドローソフトもあるよ
ファイルのフォーマットは、pstoeditで変換すれば、大概どうにかなるんじゃね
0536デフォルトの名無しさん
2007/11/17(土) 13:48:21GIMP の Python-Fu
0537デフォルトの名無しさん
2007/11/17(土) 18:00:45SkencilはWindowsで動くのか?
0538デフォルトの名無しさん
2007/11/17(土) 19:15:00X 鯖立てて Linux box からディスプレイ飛ばす・・・・・のは動くうちに入らないよな、やっぱw
0539デフォルトの名無しさん
2007/11/17(土) 19:39:350540デフォルトの名無しさん
2007/11/18(日) 01:27:090541デフォルトの名無しさん
2007/11/18(日) 04:35:57vmwareでubuntu linux動かしてskencil動かそうと思ったら駄目でした
0542デフォルトの名無しさん
2007/11/18(日) 09:39:570543デフォルトの名無しさん
2007/11/18(日) 21:14:56例)
x = " "
y = henkan(x) # ASCIIでスペースは20なので、yには数値で20が入ってほしい
0544デフォルトの名無しさん
2007/11/18(日) 21:19:24SPACEは数値32、16進で0x20
0545デフォルトの名無しさん
2007/11/18(日) 21:19:290546デフォルトの名無しさん
2007/11/18(日) 21:21:080547デフォルトの名無しさん
2007/11/18(日) 21:51:04例)
x="hoge"
for y in x:
print "%c" % ord(y),
出力:
h o g e
0548デフォルトの名無しさん
2007/11/18(日) 21:56:380549デフォルトの名無しさん
2007/11/18(日) 22:10:06くっつけたいなら、print''.join("%c" % ord(y) for y in x)
0550デフォルトの名無しさん
2007/11/18(日) 22:15:110551デフォルトの名無しさん
2007/11/18(日) 22:34:110552デフォルトの名無しさん
2007/11/18(日) 23:41:45> みんなのPython Webアプリ編
0553デフォルトの名無しさん
2007/11/18(日) 23:47:50ttp://www.amazon.co.jp/dp/4797341815/
アマゾソでもハッケソしたぉ
0554デフォルトの名無しさん
2007/11/19(月) 00:34:150555デフォルトの名無しさん
2007/11/19(月) 00:35:050556デフォルトの名無しさん
2007/11/19(月) 11:45:02pythonのレベルの低さを露呈してるよなwww
0557デフォルトの名無しさん
2007/11/19(月) 12:16:380558デフォルトの名無しさん
2007/11/19(月) 12:21:300559デフォルトの名無しさん
2007/11/19(月) 14:59:36ttp://mashable.com/2007/11/17/ide-toolbox/
ttp://japan.zdnet.com/news/devsys/story/0,2000056182,20361311,00.htm
* BlackAdder
ttp://www.thekompany.com/products/blackadder/
* Boa Constructor
ttp://boa-constructor.sourceforge.net/
* Eric
ttp://www.die-offenbachs.de/eric/index.html
* IDLE
ttp://en.wikipedia.org/wiki/IDLE_%28Python%29
* SPE IDE
ttp://pythonide.blogspot.com/
* Wing IDE
ttp://wingware.com/
* xRope
ttp://en.wikipedia.org/w/index.php?title=XRope&action=edit
* PyDev (Eclipse)
ttp://pydev.sourceforge.net/
* Gel
ttp://www.gexperts.com/gel.html
* Zeus
ttp://www.zeusedit.com/lookmain.html
0560デフォルトの名無しさん
2007/11/19(月) 15:14:31そうなの? 買ってないからシラネ。
0561デフォルトの名無しさん
2007/11/19(月) 15:22:02ttp://www.python.jp/Zope/workshop/200706/turbogears.pdf
0562デフォルトの名無しさん
2007/11/19(月) 17:09:16これが売れないとPython関係の本が出にくくなりそうで嫌だから
良書であることを願うよ・・・
0563デフォルトの名無しさん
2007/11/19(月) 17:26:370564デフォルトの名無しさん
2007/11/19(月) 18:13:270565デフォルトの名無しさん
2007/11/19(月) 18:41:140566デフォルトの名無しさん
2007/11/19(月) 18:48:50Pythonではなく「プログラミング」初心者なら知らね。
0567デフォルトの名無しさん
2007/11/19(月) 18:54:440568デフォルトの名無しさん
2007/11/19(月) 19:02:150569デフォルトの名無しさん
2007/11/19(月) 19:17:150570デフォルトの名無しさん
2007/11/19(月) 19:17:210571デフォルトの名無しさん
2007/11/19(月) 19:20:07x = [1,2,3]
y = x
はポインタコピー?
0572デフォルトの名無しさん
2007/11/19(月) 19:28:54これ読んで考えてみな。
0573デフォルトの名無しさん
2007/11/19(月) 19:44:220574デフォルトの名無しさん
2007/11/19(月) 19:45:17それ読んでも、いつdeep copyが起きて、いつshallow copyが起きるかはわからないよ。
言語仕様書のどこかに書いてなかったっけ?
0575デフォルトの名無しさん
2007/11/19(月) 19:59:11int,long,complex,bool,basestringとか。こういうのなんて言うんだっけ?
0576デフォルトの名無しさん
2007/11/19(月) 20:01:060577デフォルトの名無しさん
2007/11/19(月) 20:09:17略)プッwwww リミティブ
0578デフォルトの名無しさん
2007/11/19(月) 20:11:390579デフォルトの名無しさん
2007/11/19(月) 21:48:37>>> x=[1,2,3]
>>> y=x
>>> id(x)
11749376
>>> id(y)
11749376
0580デフォルトの名無しさん
2007/11/20(火) 01:21:11差し当たって浅いコピーだけ考えればいい。
まず代入文でコピーが起こることはない。
変更不能なオブジェクトがコピーされるかどうかはどうでもいい。
変更可能なオブジェクトを返す関数や演算はコピー以外を返すことはない。
組み込みの挙動についてはこれで全部だろう。
0581デフォルトの名無しさん
2007/11/20(火) 10:27:410582デフォルトの名無しさん
2007/11/20(火) 14:13:14変数の(ユーザが)予期しない書き換えが起こるときがあってかなり悩む時があるから
>>> lst = [[0] * 3] * 3
>>> lst
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> lst[0][0] = 1
>>> lst
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
これが複雑なルーチンの中に入り込むと・・・
0583デフォルトの名無しさん
2007/11/20(火) 14:15:26○理解できていない
0584デフォルトの名無しさん
2007/11/20(火) 14:22:04◎日本語でおk
0585デフォルトの名無しさん
2007/11/20(火) 15:07:57タプルとリストがあるのは潔くない、というのなら分かるけど。
Pythonで悩むなら、JavaでもC#でも悩みそうなもんだ。
0586デフォルトの名無しさん
2007/11/20(火) 17:00:56くやしいのう(w
くやしいのう(w
0587デフォルトの名無しさん
2007/11/20(火) 17:12:43本の上ではなんとなく分かるような分からないような状態で・・・・何かトレーニングに向きそうな練習問題か何かないでしょうか?
0588デフォルトの名無しさん
2007/11/20(火) 17:46:380589デフォルトの名無しさん
2007/11/20(火) 17:48:42b=[1,2,3]
def F( ar1, ar2 ):
ar1[0] = 9;
ar2[0] = 9;
F( a, b[:] );
でどうかな
0590デフォルトの名無しさん
2007/11/20(火) 18:46:19俺もPythonの練習問題ほしい!
0591デフォルトの名無しさん
2007/11/20(火) 18:51:53http://pc11.2ch.net/test/read.cgi/tech/1175919288/
0592デフォルトの名無しさん
2007/11/20(火) 18:59:540593デフォルトの名無しさん
2007/11/20(火) 19:01:430594デフォルトの名無しさん
2007/11/20(火) 20:16:07アルゴリズムとデータ構造関連の本に掲載されている例題や練習問題なんかは手頃なんじゃないかな?
ソート、グラフアルゴリズム、動的計画法とか何か他の問題に取り組むにしても、考え方として参考になる
ものが多いかと。
これらをやり尽くして退屈しているんだったら、パズルのソルバを作ってみたりするのも面白いかも知れないよ。
ニコリっていうパズルの本が有名かな。ここでも見てごらんよ。
http://www.nikoli.co.jp/ja/
0595デフォルトの名無しさん
2007/11/20(火) 21:32:50なんてコードを見つけた
これで動いちゃうんだな・・・
0596デフォルトの名無しさん
2007/11/20(火) 21:38:440597デフォルトの名無しさん
2007/11/20(火) 21:42:45(C言語方面の)ポインタの話をつらつら見れば…
0598デフォルトの名無しさん
2007/11/20(火) 23:54:27ポインタの概念を理解できない奴は参照渡しも理解できないと思う。
0599デフォルトの名無しさん
2007/11/21(水) 00:00:51それは言語として腐ってないか?
0600デフォルトの名無しさん
2007/11/21(水) 00:03:38ポインタはもっと低レベルな感だな。
型のサイズやメモリ配置を意識しないといけない。
0601デフォルトの名無しさん
2007/11/21(水) 00:39:41オブジェクトの中身→箱の中身
参照→ひも
変数→ひもに付けたラベル
変数への代入→もう一本ひもを用意して同じ箱に結び付ける
(関数/メソッド呼び出し時の引数も代入相当)
とかじゃダメかね?
>>> a = [10] # (・▽・)/<a>~~~[10]
>>> b = a # (・▽・)/<a>~~~[10]~~~<b>\(-▽-)
>>> a += [20] # (・▽・)/<a>~~~[10, 20]~~~<b>\(-▽-)
>>> print b
[10, 20]
0602デフォルトの名無しさん
2007/11/21(水) 00:42:56みんぱいにもそういう解説が図入りであったな。
他の入門書はどうだかしらんが。
0603デフォルトの名無しさん
2007/11/21(水) 02:14:44ポインタはただのメモリ上のアドレス(プロセスに割り当てられた仮想アドレスでも良いけど)。
0604デフォルトの名無しさん
2007/11/21(水) 02:56:020605デフォルトの名無しさん
2007/11/21(水) 03:46:27これはひどい
0606デフォルトの名無しさん
2007/11/21(水) 10:27:53list = [ value1, value2 ]
とあった時に 下記のように出力するには
どうすればいいですか?
value1 = ...
value2 = ...
要は、Cのマクロで言うところの
#に該当する機能が欲しいのですが・・・。
0607デフォルトの名無しさん
2007/11/21(水) 10:42:33質問がさっぱりわからない。
Cの#って何?#includeでも#defでもなさそう。
0608デフォルトの名無しさん
2007/11/21(水) 10:49:25char a[] = "string";
printdebug(a);
という風に使うときの # です。
変数名を動的に出力したいってことなんですが。
0609デフォルトの名無しさん
2007/11/21(水) 11:36:25printdebug("a")
とかじゃだめ?
0610デフォルトの名無しさん
2007/11/21(水) 11:48:17それ、Cでも出来ないっしょ。
出来そうな言語ってLispぐらいか?
0611デフォルトの名無しさん
2007/11/21(水) 12:37:40それの逆がしたいんです・・・。
printdebug(a)
0612デフォルトの名無しさん
2007/11/21(水) 12:38:52マクロでできるんです。
# は文字列化のマクロなので。
0613597
2007/11/21(水) 13:20:59なるほどね.そういわれればそういう側面もあるかな.
(ポインタが難しいとかいわれるのはその辺も絡むからか?)
ま,実態としてどういう受け渡し(参照先の情報だけ or 中身丸ごと)
ってとこは当然ながら同じだよね
>601
そういうのを否定はしないけど、得てして置き換えすぎて
よく分からなくなることってある気がする
0614デフォルトの名無しさん
2007/11/21(水) 14:51:47Cみたいにプリプロセッサ使うか、
Lisp みたいにシンボル型が扱える言語じゃないと無理じゃね?
0615デフォルトの名無しさん
2007/11/21(水) 15:31:14Cで配列に突っ込んだ変数から、どうやって名前を引っ張ってくるんだorz
ぎぶみーmacro
#define PRT(N) printf("%s %i\n", #(N[0]), N[0])
int main()
{
int value1=1, value2=2;
int lst[] = {value1,value2};
PRT(lst);
}
0616デフォルトの名無しさん
2007/11/21(水) 15:33:09これは無理だ・・・
0617デフォルトの名無しさん
2007/11/21(水) 15:34:22#define prn(N) printf("%s is %s", #N, N);
int a = 1;
prn(a)
0618デフォルトの名無しさん
2007/11/21(水) 16:37:18PythonでLispを動かそうZE
0619デフォルトの名無しさん
2007/11/21(水) 16:57:01文字列の中で文字数一番でかいのを知りたいのですが、
def m(x, y):
return max(len(x), len(y))
print reduce(m, [u'あああ', u'いいい', u'うう'])
とすると
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in m
TypeError: len() of unsized object
となります。どこが悪いんでしょうか?
0620デフォルトの名無しさん
2007/11/21(水) 17:10:37そもそもの状態を文字列にして
>>609さんのようにすることにしました。
0621デフォルトの名無しさん
2007/11/21(水) 17:24:16m(x,y)の返値が整数になってる。
文字列を返したいんでしょ?
0622デフォルトの名無しさん
2007/11/21(水) 17:27:59reduce 使わなくても
max([u'あああ', u'いいい', u'うう'], key=lambda o: len(o))
0623デフォルトの名無しさん
2007/11/21(水) 17:28:270624デフォルトの名無しさん
2007/11/21(水) 19:00:11csvライブラリだとfileオブジェクトを渡してwriterつくってwriterow
みたいな流れですが、これだと改行までcsvライブラリが出力しちゃう
のでどこで手を出していいかわかりません。
perlの:crlfレイヤみたいのがあればいいんですけどね。
0625デフォルトの名無しさん
2007/11/21(水) 19:09:13コマンドラインから、
pyinstall USPP
とかでUSPPがインストールされちゃうみたいなヤツです
0626624
2007/11/21(水) 19:33:54Dialectのlineterminator属性で指定する。そしてデフォルトのDialectがexcelなので
特に何もしなくてもcrlf改行になる。
0627デフォルトの名無しさん
2007/11/21(水) 20:17:33setuptools の easy_install
0628デフォルトの名無しさん
2007/11/21(水) 22:46:59listじゃなくていいなら、python的には辞書じゃないか?
d = dict(value1=value1,value2=value2)
print d
0629デフォルトの名無しさん
2007/11/22(木) 01:47:252.4以前の三項代用構文A and B or Cって、なんで働くのかよくわかんない。
後ろから評価してんのかな?Aが偽でもCに飛べない気がする。
いつも一行で書くの諦めて、普通にif else使ってるけど。
0630デフォルトの名無しさん
2007/11/22(木) 01:49:44最近かなり頻繁にspam投稿されてるから履歴が消える前に
管理人さんが気づいて凍結してくれるといいな…(´・ω・`)
0631デフォルトの名無しさん
2007/11/22(木) 03:04:39A and B or C は
(A and B) or C と同じ。
X = A and B
X or C
だと思えばおけ。
0632デフォルトの名無しさん
2007/11/22(木) 11:37:45for line in text:
text.append(line.rstrip().decode('utf-8'))
を map を使って書き直した場合、どうなりますか?
0633デフォルトの名無しさん
2007/11/22(木) 12:12:410634デフォルトの名無しさん
2007/11/22(木) 12:15:390635デフォルトの名無しさん
2007/11/22(木) 13:58:43text = map(lambda line: line.rstrip().decode('utf-8'), text)
みたいなのを期待してるんじゃないのかなあ。
mapを使わないで、無限ループにすることもできるけど。
text.extend(line.rstrip().decode('utf-8') for line in text)
0636デフォルトの名無しさん
2007/11/22(木) 15:17:46これってどういう意味? 初めてみた・・・。
0637デフォルトの名無しさん
2007/11/22(木) 15:21:570638デフォルトの名無しさん
2007/11/22(木) 15:27:520639デフォルトの名無しさん
2007/11/22(木) 16:56:57でも当然シェルというかファイルには触れない、ソースで落とすしかない
一括修正できないから、書式変えるたびに個別手作業で泣けてた
分量は1000ページ弱で、ただでさえ応答が遅く怪しく、手動DLは論外
例え終わっても、他のwikiと文法違い、エディタ手修正じゃ追いつかん
Pythonをやらなきゃと思ったきっかけ、しかし借り先鯖完全崩壊までに、
こんなの作れるほどの上達が間に合うか…、ダメか…
今度はファイル触れるように、自鯖wiki設営も勉強せなならんし
チラ裏愚痴でお目汚しすまん
0640デフォルトの名無しさん
2007/11/22(木) 17:06:26面白そうだなあ
ここじゃチラ裏どころかスレ違いっぽいので
WikiのURL晒せるならPythonの宿題スレにでも持っていったら?
0641デフォルトの名無しさん
2007/11/22(木) 17:11:25しかし、データ抜き出しまではクローリングのツール設定で何とかならんかな?
抜き出したデータをいじる、としたほうが敷居は低い気がする。
0642デフォルトの名無しさん
2007/11/22(木) 17:31:44新鯖側でDjangoでも使って
旧鯖から吸い上げと同時に
修正まで済ましてしまうのが吉
0643デフォルトの名無しさん
2007/11/22(木) 17:36:46≡
d = {"value1":value1, "value2":value2}
かー。
dict の初期化の仕方が納得できないが、そういうものか。
ていうか、>>606 のやりたがってた変数の文字定数化って
この過程がわかればできそうだ。
0644デフォルトの名無しさん
2007/11/22(木) 19:26:43あるファイルの中身を日付ごとに分割して保存するには、
どんな感じでやればいいでしょうか?
ちなみに日付は
200711221930
のような感じです。(2007: 年, 11: 月, 22: 日, 19: 時, 30: 分)
0645デフォルトの名無しさん
2007/11/22(木) 21:14:21こういうのも面白いかも。
>>> def values():
... value1=1
... value2=2
... return locals()
...
>>> print values()
{'value2': 2, 'value1': 1}
0646デフォルトの名無しさん
2007/11/22(木) 21:43:42import traceback
import re
def debugprint(value):
stack = traceback.extract_stack(limit=2)
name = re.search(r"debugprint\((.*?)\)", stack[0][3]).group(1)
print "%s: %s" % (name, value)
def f():
a = 5
debugprint(a)
b = "hoge"
debugprint(b)
debugprint("foo")
f()
0647デフォルトの名無しさん
2007/11/22(木) 22:37:43の逆の操作(リストを文字列に戻す)をしたいのですが、効率のいい方法を教えてください。
t = u''
for c in list(u'あいうえお'):
t += c
では効率が悪いような気がして...
0648デフォルトの名無しさん
2007/11/22(木) 22:40:48t = ''.join(list(u'あいうえお'))
0649デフォルトの名無しさん
2007/11/22(木) 23:01:18>>> print u
[u'\u3042', u'\u3044', u'\u3046', u'\u3048', u'\u304a']
>>> t = list(u'あいうえお')
>>> print t
[u'\u3042', u'\u3044', u'\u3046', u'\u3048', u'\u304a']
>>> for c in t: print c
...
あ
い
う
え
お
>>> if (t != u): print 'yes'
...
yes
>>>
なぜですか?
0650デフォルトの名無しさん
2007/11/22(木) 23:07:22print t
print u
0651デフォルトの名無しさん
2007/11/22(木) 23:08:220652デフォルトの名無しさん
2007/11/22(木) 23:08:370653デフォルトの名無しさん
2007/11/22(木) 23:11:04>>> type(u)
<type 'str'>
>>> type(t)
<type 'list'>
0654デフォルトの名無しさん
2007/11/22(木) 23:13:44これやると大変なことに・・・
0655デフォルトの名無しさん
2007/11/23(金) 00:29:36Pythonを、ローカル環境でCGI稼動させるには
どーいう感じにしたら良いんでしょうか?
OSは窓なんですが。
0656デフォルトの名無しさん
2007/11/23(金) 00:34:54or
VMwareなどでLinuxやFreeBSDを動かす
0657デフォルトの名無しさん
2007/11/23(金) 00:38:29import BaseHTTPServer
import CGIHTTPServer
BaseHTTPServer.HTTPServer(('', 80), CGIHTTPServer.CGIHTTPRequestHandler).serve_forever()
0658デフォルトの名無しさん
2007/11/23(金) 00:40:02ありがとうございます。
やってみます〜
0659デフォルトの名無しさん
2007/11/23(金) 05:23:13どうすればいいかな?
ファイルを書き換えてもう一度importしても
うまく変更を反映してくれません… >IDLE
0660デフォルトの名無しさん
2007/11/23(金) 05:27:350661デフォルトの名無しさん
2007/11/23(金) 10:38:50どもIDLEだとCtrl+F6でrestart shellみたいなのが
ありました�d
0662デフォルトの名無しさん
2007/11/23(金) 11:50:17めでたくCGI稼働はしたんですが、
この場合だとcgi-binフォルダ以外(下部階層も含め)が
読み込めないっぽいですが、仕様なんですかね?
下部フォルダから画像とか読み込みたいんで、
できればアクセスできるようになりたいんですが、
win側の設定かなぁとかいう気もするんですが、
お教えいただけたら嬉しいです。
0663デフォルトの名無しさん
2007/11/23(金) 12:24:19Apacheなら仕様だよ。他は知らない。
HTMLや画像を置くフォルダとスクリプトを置くフォルダは分けるのが原則。
それが嫌ならAddHandlerやOptionsなどの設定が必要。
Pythonとはまったく関係ない話なので、以後はHTTPサーバのスレにどうぞ。
0664デフォルトの名無しさん
2007/11/23(金) 12:26:18だとしたら>>663はスルーで
0665デフォルトの名無しさん
2007/11/23(金) 14:52:33Django
をおすすめしますよ
0666デフォルトの名無しさん
2007/11/23(金) 14:53:530667デフォルトの名無しさん
2007/11/23(金) 15:09:11CGIHTTPRequestHandler を継承して
適当に機能を上書きすればできるようになるけど、
正直 Apache や他の簡易ウェブサーバを使ったほうが早いと思う。
0668デフォルトの名無しさん
2007/11/23(金) 16:33:55以下のようなことはやってみました。
>>> 'hello'.translate(string.maketrans('l', '_'))
'he__o'
>>> u'hello'.translate(string.maketrans(u'l', u'_'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
0669デフォルトの名無しさん
2007/11/23(金) 16:43:05s = u'hello'
print re.sub(u'l', u'_', s)
0670デフォルトの名無しさん
2007/11/23(金) 16:52:05u'he__o'
0671デフォルトの名無しさん
2007/11/23(金) 17:15:12引数順はre.subに沿って書いた。
最適化の余地はまだあるかな?
def tr(pattern, repl, string):
m = dict(((p,r) for p,r in zip(pattern, repl)))
return ''.join((m.get(c,c) for c in string))
print tr('lo', '_0', u'Hello, world')
0672デフォルトの名無しさん
2007/11/23(金) 17:18:34- m = dict(((p,r) for p,r in zip(pattern, repl)))
+ m = dict(zip(pattern, repl))
0673デフォルトの名無しさん
2007/11/23(金) 17:31:05def tr(pattern, repr, text):
return text.translate(dict(((ord(p), r) for p, r in zip(pattern, repr))))
print tr(u'lo', u'_0', u'Hello, world') # => He__0, w0r_d
0674デフォルトの名無しさん
2007/11/23(金) 17:37:260675デフォルトの名無しさん
2007/11/23(金) 17:55:570676デフォルトの名無しさん
2007/11/23(金) 18:00:50集合をA-Zで略記できるのってキモくない?
そういうのはテキスト処理系ツールの中だけでいいよ。
tr(f('a-z'), f('A-Z'))で精一杯でしょ。
0677デフォルトの名無しさん
2007/11/23(金) 18:05:06正規表現を否定されても困る
0678デフォルトの名無しさん
2007/11/23(金) 18:39:20>>669は2つ以上の文字置換ができん
>>673
変なものを混ぜるなwww
というわけで、>>671-672を混ぜてみた
def tr(pattern, repl, string):
m = dict(zip(pattern, repl))
return ''.join((m.get(c,c) for c in string))
0679デフォルトの名無しさん
2007/11/23(金) 18:44:01s = u'1富士2鷹3茄子'
for frm, to in zip(u'123', u'一ニ三'):
s = re.sub(frm, to, s)
0680デフォルトの名無しさん
2007/11/23(金) 18:50:09- return ''.join((m.get(c,c) for c in string))
+ return ''.join(m.get(c,c) for c in string)
0681デフォルトの名無しさん
2007/11/23(金) 19:11:44- return ''.join(m.get(c,c) for c in string)
+ return ''.join((m.get(c,c) for c in string))
0682デフォルトの名無しさん
2007/11/23(金) 19:16:15>>> *bcdef
まともに動きませんwww
0683デフォルトの名無しさん
2007/11/23(金) 21:49:16こうですか?!わかりません><
>>> u"Hello, world".translate(dict(zip(map(ord, string.lowercase), map(ord, string.uppercase))))
u'HELLO, WORLD'
0684デフォルトの名無しさん
2007/11/23(金) 21:53:14こうですか?!わかりません><
>>> u"Hello, World.".upper()
u'HELLO, WORLD.'
0685デフォルトの名無しさん
2007/11/23(金) 21:54:220686デフォルトの名無しさん
2007/11/23(金) 21:57:38eclipse 3.3 に PyDev を突っ込もうとしたのですが
PyDev のページをみると Python 2.3 とか 2.4 とか書いてあるのに
2.5 は何も書かれていないので心配です
ちゃんと動きますか?使ってるひといますか?
0687デフォルトの名無しさん
2007/11/23(金) 22:01:46featuresのとこ
0688デフォルトの名無しさん
2007/11/23(金) 22:05:01print u"\u00e1gua".upper()
結果が違う。
0689デフォルトの名無しさん
2007/11/23(金) 22:37:42うちは
Python2.5
PyDev1.3.10
eclipse3.2 (PyDev本家では3.3使えと書いてあるけど)
で問題なく動いてるよ
ProjectでPython2.5選べる
0690デフォルトの名無しさん
2007/11/23(金) 22:42:54つまりもっと回りくどくしろと言うのだな!?
0691デフォルトの名無しさん
2007/11/23(金) 23:59:53ar2 = [[0] * 16] * 8
とかやって、2時間ぐらいはまったところ。
0692デフォルトの名無しさん
2007/11/24(土) 00:01:430693デフォルトの名無しさん
2007/11/24(土) 00:10:16def tr(pattern, repr, text): return text.join(pattern.split(repr))
でやってる
0694デフォルトの名無しさん
2007/11/24(土) 00:11:51わかるわかるw
>>692がいいと思うけど、
とりあえず っ numarray, numeric, numpy
でもこっちもはまるぜw
0695デフォルトの名無しさん
2007/11/24(土) 00:14:10import numpy
ar2 = numpy.zeros((8,16),numpy.int).tolist()
0696デフォルトの名無しさん
2007/11/24(土) 00:14:48冗長でもいいからわかりやすいコードの生成関数をつくる。
そっちのがスマート。
0697デフォルトの名無しさん
2007/11/24(土) 00:20:26>そっちのがスマート。
でも696はデブオタ。
0698デフォルトの名無しさん
2007/11/24(土) 00:52:42    msg = b.join(msg.split(a))
for a,b in dict.iteritems():
    msg = b.join(msg.split(a))
どっちのほうが速いかな?
iteritems() はあまり速くない印象があるけど…
0699デフォルトの名無しさん
2007/11/24(土) 00:53:410700デフォルトの名無しさん
2007/11/24(土) 01:23:44テストデータの喰わせかたが思いつかない罠…
2004-02-05 - はてなダイアリー日記
http://d.hatena.ne.jp/hatenadiary/20040205#1075960162
EUC_JPかつちょっと古いやね。むぅ
0701デフォルトの名無しさん
2007/11/24(土) 01:23:45で、浅いコピーが起こらない
[[0] * 16] * 8
だと、(行列とみなせば)各行は同じものになる
0702デフォルトの名無しさん
2007/11/24(土) 01:33:34つうか、その処理の前の時点で、alist、blist、dict、が全部あるのっておかしくないか?
alist = dict.keys(); blist = dict.values()で作るんだったら多分遅くなるでしょ
0703デフォルトの名無しさん
2007/11/24(土) 07:31:21解りにくいと思うので解説します。仕様の問題ともいえるのですが、
区切り文字列候補が [abc,b,bcd] のように重複する部分があると
この処理コードは大変複雑になり、区切り文字を含む解モードでは
非決定性のアルゴリズム(プログラム)になります。具体的にいうと、
頭から、abcが見つかったとして、それ以後の文字列を処理してしまうと
bcdのd部分を見失ってしまうということです。それ以後ではなくabcを
含んだそれ以後の文字列を対象にしなくてはなりません。しかもそこで
いきなり現れるabcは無視して2文字目以降に[abc,c,bcd]が現れるか
調べますが、今度はa+bcd+...のaをどう処理すればよいかの問題も生じます。
abcdを区切り文字と見なして良いのなら事前にそう作り替えておけば
済みますが。Prologのsub_atom/5はこの問題を一述語でやってしまうので、
splitに初めて使ってみましたが、そんなにうまくはいきませんでした。
詳しくは知りませんが一般には、split の区切り候補にこのような重複を
含むことを仕様で禁じることでこの問題を回避しているのではないかと
思います。
0704デフォルトの名無しさん
2007/11/24(土) 07:58:410705デフォルトの名無しさん
2007/11/24(土) 08:06:21では駄目なの?
prologならbacktrackで素直にかけそうだが。
0706デフォルトの名無しさん
2007/11/24(土) 12:14:55他のプロセスを排他するやり方が分かりません。
import mmap
FNAME="hoge"
f = open(FNAME, "r+")
data = mmap.mmap(f.fileno(), 20)
data[0:3] = "foo"
data[10:13] = "bar"
最後の2行の実行を他のプロセスから見てアトミックにしたいんですが、
どんな感じに書けばいいんでしょうか。
0707デフォルトの名無しさん
2007/11/24(土) 12:26:54MMAPしたファイルはロックされないし、ふつうファイルロックの
実装はアドバイザリロックだったりで完全にアトミックではないけど。
0708デフォルトの名無しさん
2007/11/24(土) 13:05:33https://codespeak.net/viewvc/pypy/dist/pypy/lang/scheme/
0709デフォルトの名無しさん
2007/11/24(土) 13:07:24mutex
0710デフォルトの名無しさん
2007/11/24(土) 13:21:50それって標準モジュールのmutex?それとも広義の?
前者ならサンプルコードちょっと書いてみてよ。
0711706
2007/11/24(土) 13:23:40レスありがとうございます。
ロックファイルは使ったこと無いんですが、
(Cのセマフォしか経験がない)
完全に排他的にできるかが不安です。
mutexは使ってみましたが、
ttp://www.python.jp/doc/2.4/lib/module-mutex.html
を読んでも、他のpythonやCのプロセスと、
どうやって排他処理するのか分かりませんでした。
マルチプロセスではなくて、
マルチスレッドのみでmutexは働くんでしょうか。
0712706
2007/11/24(土) 13:24:30Linuxです。
0713デフォルトの名無しさん
2007/11/24(土) 13:30:17エラーが発生したときの
ロックファイル消し忘れに注意。
Pythonライブラリのmutexはスレッド系のもので他のプロセスには無理。
0714デフォルトの名無しさん
2007/11/24(土) 13:32:260715デフォルトの名無しさん
2007/11/24(土) 13:33:12ここ見るとスレッド制御に使えないって書いてあるなぁ
一体どこで使うんだよw
0716706
2007/11/24(土) 13:54:56こういうのを見つけました。
標準モジュール以外はちょっと不安ですが、
これを試して駄目そうだったらロックファイルを試してみます。
皆さん、どうもありがとうございました。
もしこのモジュール使ったことある方いらっしゃれば、
何かコメント頂けると有り難いです。
0717デフォルトの名無しさん
2007/11/24(土) 14:09:13Python-2.5.1/Lib/test/test_sundry.py: import mutex
どう見ても使われていません。本当に(ry
0718デフォルトの名無しさん
2007/11/24(土) 15:57:23ロック用のファイルは適当に作っておく。何ならスクリプト自身でも良い。
ロックはディスクリプタをクローズしたときに解除される。
プロセスが死ぬ時は、いずれにせよkernelによってディスクリプタは
クローズされるので、kill -KILLで殺されようが何しようが、ロックが
残ったままにはならずに済むよ。
これより移植性が高いが後始末を考えると面倒くさいプロセス間排他制御の
手段としては、mkdir()などが考えられる。
0719デフォルトの名無しさん
2007/11/24(土) 17:28:40誰か誘導して。
0720デフォルトの名無しさん
2007/11/24(土) 17:39:470721デフォルトの名無しさん
2007/11/24(土) 17:44:300722デフォルトの名無しさん
2007/11/24(土) 17:45:18Pythonスレの底力を見た
0723デフォルトの名無しさん
2007/11/24(土) 18:10:14pythonで通信状態の監視って出来ますか?
0725719
2007/11/24(土) 18:28:13興味のある人のために一応リンク張っておくよ。
habu - ttp://sourceforge.jp/projects/pyhabu/wiki/FrontPage
熊野古道 - ttp://kawasaq.from.tv/blog/Python/Kumanokodo/kumanokodo.html
0726デフォルトの名無しさん
2007/11/24(土) 18:31:460727デフォルトの名無しさん
2007/11/24(土) 18:32:29自前のsocketなら自明だからNICの通信状態ってこと?
Win32ならパフォーマンスカウンタ
Linuxとかなら/procか/devあたり読めばいけるんでない?
0728デフォルトの名無しさん
2007/11/24(土) 21:56:11matplotで折れ線グラフ描いてskencilで編集ってできるなら便利なんだけど
0729デフォルトの名無しさん
2007/11/24(土) 22:18:16作りっぱなしの放置プロジェクトに興味示すのなんて、今時幼稚園児くらいですよ。
0730デフォルトの名無しさん
2007/11/25(日) 00:20:440731デフォルトの名無しさん
2007/11/25(日) 08:51:44#!/usr/bin/env python
import thread
def threadA():
for i in range(100):
print "threadA()"
def threadB():
for i in range(100):
print "threadA()"
def main():
thread.start_new_thread(threadA, ())
thread.start_new_thread(threadB, ())
if __name__=="__main__":
main()
を走らせると、
Unhandled exception in thread started by
Error in sys.excepthook:
Original exception was:
Unhandled exception in thread started by
Error in sys.excepthook:
Original exception was:
となってしまいます。
Linux/OS X(python 2.5)ともに同じ症状です。
どこが使い方間違っているんでしょうか。
0732デフォルトの名無しさん
2007/11/25(日) 08:57:38Set()があるからいらないこ
0733デフォルトの名無しさん
2007/11/25(日) 09:19:18プログラムを終える前にthreadの終了を待つんだ。
0734デフォルトの名無しさん
2007/11/25(日) 09:44:03ああ、なるほど。ありがとうございます。
メインのスレッドが先に終わっちゃうわけですね。
ttp://www.python.jp/doc/2.4/lib/module-thread.html
を読むと、子スレッド同士をjoinさせる機能がないんですが、
Cみたいにスレッドを待機する機能を使うためには、
threadじゃなくてthreadingを使えってことでしょうか。
0735731=734
2007/11/25(日) 09:54:24で、期待通りに動きました。
0736デフォルトの名無しさん
2007/11/25(日) 10:15:51Set()はsetsモジュールに定義されている訳だが。この知ったかバカが。
入門書くらい嫁。おまえがいらないこ。
0737706
2007/11/25(日) 14:41:25Cの知識と同じでうまく動作しました。
ただし、threadingを使ってマルチスレッドにしようとすると、
Pythonの疑似マルチスレッド?のせいか、
P()とP()がぶつかり合いデッドロックするという問題があります。
2つのセマフォを用意して、
それぞれが異なるスレッドで走るのは問題ないですが、
1つのセマフォが複数のスレッドに現れると駄目です。
この問題を除いては、なかなか便利そうです。
0738デフォルトの名無しさん
2007/11/25(日) 18:44:010739デフォルトの名無しさん
2007/11/25(日) 19:01:31スレチだが、muti threadのものをmulti processで走らせる場合は?
で、全部のthreadで協調動作。
0740デフォルトの名無しさん
2007/11/25(日) 20:37:17setの間違い
setsモジュールなくても使える
http://www.python.jp/doc/release/lib/types-set.html
0741デフォルトの名無しさん
2007/11/26(月) 01:19:33このタイトルは
オライリーに怒られないのだろうか・・・
0742デフォルトの名無しさん
2007/11/26(月) 01:25:06駄目だろwww
0743デフォルトの名無しさん
2007/11/26(月) 01:34:03(この数ヶ月ホームページの更新をサボっていたのはこの本を書いているためでした。)
はじめての Python という本で工学社から出ています。
題名が O'Relly Japan の "初めての Python" にそっくりですが、
細かいことは気にしないでください。
0744デフォルトの名無しさん
2007/11/26(月) 01:40:19>細かいことは気にしないでください。
わざとかよ。糞野郎氏ね。
0745デフォルトの名無しさん
2007/11/26(月) 01:51:09最低なやつだな。
0746デフォルトの名無しさん
2007/11/26(月) 01:54:480747デフォルトの名無しさん
2007/11/26(月) 01:57:190748デフォルトの名無しさん
2007/11/26(月) 01:59:36まあ、タイトルは出版社が決めたんじゃないかなぁ・・・
0749デフォルトの名無しさん
2007/11/26(月) 02:07:34内容はどうなんだろうな(wwwwwwwwwwwww
0750デフォルトの名無しさん
2007/11/26(月) 02:17:00●Python2.5.1(Windows)
●Python2.5 ドキュメント(英語) ←英語のままですか?^^;
●Python2.4 ドキュメント(日本語)
●本文ソースコード ●解答 収録
0751デフォルトの名無しさん
2007/11/26(月) 02:24:30>最低なやつだな。
>特殊メゾット・・・
>題名、出版社、著者とも三流(w
>内容はどうなんだろうな(wwwwwwwwwwwww
紫藤涙目wwww
0752デフォルトの名無しさん
2007/11/26(月) 02:39:21http://www.kohgakusha.co.jp/samples/3605/download/python_060.jpg
3.2.3 ブール演算子
Pythonでも他の言語と同様に、「論理積(and)」「論理和(or)」「否定(not)」
などのブール演算を行うことが出来ます。
「and」と「or」は真偽値を返すのではなく、右側か左側の変数の値をそのまま返します。
■not
否定を返します。
not True → False
not False → True
否定には、以下の構文糖衣注が使えます。
not (a is b) ⇔ a is not b
not (a ==b) ⇔ a !- b
not (a in b) ⇔ a not in b
0753デフォルトの名無しさん
2007/11/26(月) 02:40:29きょうたまたま立ち読みしてきたけど
糞本だったので別のを買ってきた
0754デフォルトの名無しさん
2007/11/26(月) 03:09:09>>752
>>> 1 == 1
True
>>> 1 or 1
1 # True じゃなくて
知らなかった。
0755デフォルトの名無しさん
2007/11/26(月) 04:01:19hoge() or die();
みたいなことができるようになってんだな。
0756デフォルトの名無しさん
2007/11/26(月) 04:27:23あと、純粋に1冊よりは3冊ぐらいあったほうが分かりやすいという人も居るし・・
0757デフォルトの名無しさん
2007/11/26(月) 04:57:27それって bit 演算とどう違うの?
0758デフォルトの名無しさん
2007/11/26(月) 05:00:133
>>> 5 or 3
5
>>> 3 | 5
7
>>> 5 | 3
7
>>> 0 or 1
1
>>> 1 or 0
1
0759デフォルトの名無しさん
2007/11/26(月) 05:01:33True
>>> False or True
True
>>> False or 3
3
>>> 3 or False
3
>>> False or 0
0
>>> 0 or False
False
>>>
0760デフォルトの名無しさん
2007/11/26(月) 05:05:40some() or else
ready() and go()
こんなんでTrue/Falseが返ってきたらおかしいだろうと。
0761デフォルトの名無しさん
2007/11/26(月) 11:32:22しかし過去のtexのドキュメントとか図とかも活用したい
困ったな
0762デフォルトの名無しさん
2007/11/26(月) 14:37:100763デフォルトの名無しさん
2007/11/26(月) 19:20:28Pythonでシンタックスシュガー?について書いている時点で糞だし
そもそもシンタックスシュガーじゃなくて式展開してるだけだしwww
0764デフォルトの名無しさん
2007/11/26(月) 20:11:03本来 not (a is b) と書けば済むところを、
プログラマの利便のためにわざわざ is not なんて比較演算子を用意してる
そういうのをシンタックスシュガーっていうんだろうから別に噛み付くところじゃないと思うけどな
0765デフォルトの名無しさん
2007/11/26(月) 20:16:030766デフォルトの名無しさん
2007/11/26(月) 20:45:430767デフォルトの名無しさん
2007/11/26(月) 21:03:54>>> b = [0]
>>> a == b
True
>>> a is b
False
"is"はオブジェクトが一致するかどうか
0768デフォルトの名無しさん
2007/11/26(月) 21:08:430769デフォルトの名無しさん
2007/11/26(月) 21:20:40TeXの偏執狂みたいな「割り付け」へのこだわりは、やっぱり
使ってて安心感があるんだけど、そこらへんいかがでしょうか > 761
とは言え俺も、これpythonでやりました、って言いたい気もするな :-D
仕様書ジェネレータみたいなの書くのは趣味と実益を兼ねてていいかもしれん。
0770デフォルトの名無しさん
2007/11/26(月) 21:26:58図を書いたり張ったりしたい人たちには足りないのかなあと思うy
0771デフォルトの名無しさん
2007/11/26(月) 21:38:190772デフォルトの名無しさん
2007/11/26(月) 21:57:33print repr(obj)
なんだけど、インスタンス変数が表示されないんだよな。そこが残念。
まあインスタンス変数とインスタンスメソッドの区別がないから仕方ないけど。
0773デフォルトの名無しさん
2007/11/26(月) 22:03:460774デフォルトの名無しさん
2007/11/26(月) 22:12:46ありがとうございます。
すっきりしました。
0775デフォルトの名無しさん
2007/11/26(月) 22:29:12整数や文字列はメソッドを持っていないんですか?
型変換をstr()のような関数を使わず
それ自体のメソッドでやりたいんですが
0776デフォルトの名無しさん
2007/11/26(月) 22:32:290777デフォルトの名無しさん
2007/11/26(月) 22:37:13rubyはどうも好きになれなくてpythonをはじめたのですが…
0778デフォルトの名無しさん
2007/11/26(月) 22:49:540779デフォルトの名無しさん
2007/11/26(月) 22:54:10ruby とかゴリゴリに高級言語してるような言語よりは
C++ のようなものに近い感覚。
0780デフォルトの名無しさん
2007/11/26(月) 23:02:280781デフォルトの名無しさん
2007/11/26(月) 23:08:32たしかにそれ欲しいよな。
俺なんか、strタイプするの苦手だから、str関数ラップしたsっていう関数作ってそれ使ってるぜ。
これならマジ簡単。お前もやってみな。
0782デフォルトの名無しさん
2007/11/26(月) 23:15:53print u'しね'.endoce('utf-8')
0783デフォルトの名無しさん
2007/11/26(月) 23:23:39str(obj)は、実際には obj.__str__() を呼び出している。
ただ、RubyのようにすべてのルートとなるObjectクラスみたいなのがPythonにはないから、RubyのようにObjectにメソッド定義すればどのクラスでも使えるようになるという便利機能はない。
0784デフォルトの名無しさん
2007/11/26(月) 23:23:43とりあえず
マルチバイト文字列は内部的に「Unicode(UTF-8)」として扱われます。
なんて記述が許せないなら跨いで通った方がいいよ
0785デフォルトの名無しさん
2007/11/26(月) 23:44:460786デフォルトの名無しさん
2007/11/26(月) 23:50:55Rubyってルートオブジェクトに属性追加して拡張するのが普通なの?
だとしたらとてもuglyだね
0787デフォルトの名無しさん
2007/11/26(月) 23:51:34そうなのか。初めて知ったよ。
ずっとファイルで指定したエンコーディングか
sys.getdefaultencodingが使われていると思っていたよ。
0788デフォルトの名無しさん
2007/11/26(月) 23:53:19strもobjectを継承してるだろ
0789デフォルトの名無しさん
2007/11/26(月) 23:55:250790デフォルトの名無しさん
2007/11/27(火) 00:05:40サロゲートペアに対応してない気がするが
0791デフォルトの名無しさん
2007/11/27(火) 00:13:02UCS-4の可能性もあるみたいだな。
UTF-8はありえないが。
0792デフォルトの名無しさん
2007/11/27(火) 00:14:55すくなくとも著者はコンピュータ素人
たまたま何かのきっかけでPython触って
俺にも書けそうだと思って本書いただけ
本の中身だけじゃなくてネーミングが許せない
0793デフォルトの名無しさん
2007/11/27(火) 00:15:06と思ったら、ビルトインなクラスは無理なんだな
ちなみに>>786さんはAOP嫌い?
メタクラスプログラミングは賛否両論あると思うけど
他のプログラムに対して影響を与えないのなら、ありだと思うけどね
0794デフォルトの名無しさん
2007/11/27(火) 00:22:09ここに出てくるUnicodeっていうのが具体的に何を指すのかわからないので
漏れは読んでいていまひとつピンとこないのだが
Unicodeにデコード、って言ってるぐらいだからエンコーディングスキームっぽいけど
0795デフォルトの名無しさん
2007/11/27(火) 00:22:40ライブラリ探すの大変なんだよ
0796デフォルトの名無しさん
2007/11/27(火) 00:25:29Objectへのメソッド追加以外にも
未知のメソッドが呼ばれたときにでも
それをあるものとして実行する方法があったよね
0797デフォルトの名無しさん
2007/11/27(火) 00:32:15これなんかどうだろう
ttp://www.amazon.com/dp/0672328623/
ジュンク堂でみたときは6000円くらいで売ってたけど
日本のamazonで買ったらもっと安いはず
0798デフォルトの名無しさん
2007/11/27(火) 00:33:41すまそ
直輸入してください
0799デフォルトの名無しさん
2007/11/27(火) 00:34:01中身が分からんものが多いよな。
公式配布のCPythonは>>791のUCS-2(16bit)orUCS-4(32bit)相当。
どれだか忘れたけどUCS-4コンパイルされているLinuxディストリも確かにある。
サロゲートペアなどには対応してないから、UTF-16ではない。
JythonはJavaに準じるのかな?
0800デフォルトの名無しさん
2007/11/27(火) 00:34:11configureで--enable-ucs4を付けたらUCS-4で、デフォルトはUCS-2だったと思う。(うろ覚え)
0801デフォルトの名無しさん
2007/11/27(火) 00:46:050802デフォルトの名無しさん
2007/11/27(火) 00:48:44これUnicode喰ってくれないんだぜ……
0803デフォルトの名無しさん
2007/11/27(火) 00:59:35あちこちのブログで書かれてるんだけど
1)それは過去の話で今のPythonはそんなことはない
2)いまだにその状況は続いている
3)プログラム書く香具師が分かってないのでPythonに濡れ衣
どれだと思いますか?
私的には 1)-3) だと思ってるんですが
0804デフォルトの名無しさん
2007/11/27(火) 01:03:470805デフォルトの名無しさん
2007/11/27(火) 01:03:54UTF-8みたいな、可変長文字コードは内部形式としては扱いにくいんじゃないか・・・
でもPerlはUTF-8なんだよな。
もともとはUnicode イコール UCS-2のことだったはずだが、
今は必ずしもそうとはいえない・・・まあ、UCS-2が多いと思うんだけど。
>>794 は書いてあるとおりソースコードの文字コードを処理系に認識させる仕組みの話。
最近の言語処理系はソースコードをUTF-8で書くことが推奨されているものが多いけど、
内部形式はまた別の話。文字コードを認識したら処理系は内部形式に変換してしまう。
あと、python の defaultencoding は、標準入出力なんかのデフォルトコードを指定して
いるだけ。terminal出力時の文字化けなんかへの対応に使われる。ロケールってやつ?
処理系内部の文字コードが制御できるわけではない。
0806デフォルトの名無しさん
2007/11/27(火) 01:04:00未だに尾を引いてるように感じる
0807デフォルトの名無しさん
2007/11/27(火) 01:12:02それはSJISの問題だろ
0808デフォルトの名無しさん
2007/11/27(火) 01:13:190809デフォルトの名無しさん
2007/11/27(火) 01:20:20str(obj) はちゃんと __str__() の返値をチェックしてるのが好き
そんなワケで俺はRでも String(obj) 派だな
0810デフォルトの名無しさん
2007/11/27(火) 01:23:11ちゃんと Unicode に変換すればそんな事にならないよ
つまり ascii のみと Unicode 文字列にしか対応しない
という点で首尾一貫している
0811デフォルトの名無しさん
2007/11/27(火) 01:37:07if !式:
みたいな書き方できないの?
0812デフォルトの名無しさん
2007/11/27(火) 01:38:200813デフォルトの名無しさん
2007/11/27(火) 01:42:39どんだけセンシティブだよ
ガラスの小瓶か
0814デフォルトの名無しさん
2007/11/27(火) 01:53:31Python だとバイト文字列をバイト文字列のまま扱おうとするとはまる
でもスクリプト言語だとそれが出来る
(本当は出来てないけどたまたま通ってしまうというのも含めて)
のが多いから
そこらへんの常識のギャップでそういうイメージが出来てしまっているのだと思う
0815デフォルトの名無しさん
2007/11/27(火) 01:55:18ttp://python.matrix.jp/tips/string/encoding.html
0816デフォルトの名無しさん
2007/11/27(火) 01:59:22それはSJISの問題であってPythonの問題ではないし
Windowsの環境だけで動けばいいやっていうひとは
(そういうひとにとって)意味不明なトラブルを回避するために
プログラム中ではすべてutf-8で処理して
入出力だけsjisにする習慣にするといいと思う
(決して内部コードがutf-8という意味ではないよ)
0817デフォルトの名無しさん
2007/11/27(火) 04:31:49内部的にUCS-2orUCS-4に変換してるのか。
0818デフォルトの名無しさん
2007/11/27(火) 04:42:37そこにマルチバイト入れるのは勝手だけど。
>>816
Unicodeじゃなくてutf-8(str)なの?
まんどいことこの上ない。
0819デフォルトの名無しさん
2007/11/27(火) 06:08:43整数や文字列はメソッドを持っていないんですか?
型変換をstr()のような関数を使わず
それ自体のメソッドでやりたいんですが
0820デフォルトの名無しさん
2007/11/27(火) 06:22:24おれはキャストしてるような今の形の方が自然に感じるなあ
0821デフォルトの名無しさん
2007/11/27(火) 08:57:320822デフォルトの名無しさん
2007/11/27(火) 09:20:32命名規則で悩むんだけど、WxPython を組み込む時って
WxPythonの流儀(キャメルスタイル)に合わせる?
それとも、あくまでも Python標準と思われる小文字+アンダースコアで統一する?
0823デフォルトの名無しさん
2007/11/27(火) 09:23:01Python標準にしてる。
それと、WxPythonじゃなくてwxPythonだろ。
0824デフォルトの名無しさん
2007/11/27(火) 09:41:28•レイヤ0 -- アプリケーション根幹部分を実装したモジュール(プラットフォーム非依存)
•レイヤ1 -- コマンドラインによってアプリケーション根幹部分を操作するためのCUIモジュール(プラットフォーム非依存)
•レイヤ2 -- マウスからの入力情報をコマンドライン文字列に変換したり、描画のための情報を生成するGUIモジュール(プラットフォーム非依存)
•レイヤ3 -- WxPython や Win32Api などを使って実際に GUI 情報を生成するためのモジュール(プラットフォーム依存)
俺は今
core/main.py
core/sub.py
cui/main.py
cui/sub.py
gui/main.py
gui/sub.py
wx/main.py
wx/sub.py
こんな感じにしてるんだけど、wx っていうパッケージ名(wxライブラリと同じ名前)とか、
パッケージ名が違うだけでフィアル名は同じとか、なんか混乱の元になりそうな気がする。
みんなだったらどういうふうにファイル&パッケージ命名する?
0825デフォルトの名無しさん
2007/11/27(火) 09:42:43あ、失礼 wxWidgets/wxPython だった
やっぱりPython側で統一か
0826824
2007/11/27(火) 09:48:13それぞれの sub.py には class Sub があるんだけど、このクラス名も
同じ名前がたくさんあって
確かにパッケージ名によって区別は付けられるんだけど、
なんか混乱の元になりそうで怖い。
0827デフォルトの名無しさん
2007/11/27(火) 10:07:56>>> a.__str__()
'1'
>>> b='abc'
>>> b.__len__()
3
0828デフォルトの名無しさん
2007/11/27(火) 10:12:01使ってますよ
あと WxPython じゃなくて wxPython だよ
0829デフォルトの名無しさん
2007/11/27(火) 10:15:17core/main.py
core/sub.py
cui/main.py
cui/sub.py
gui/main.py
gui/sub.py
frontend/main.py
frontend/sub.py
とか
>>824 に追加。それぞれの main.py には class Main が、
>それぞれの sub.py には class Sub があるんだけど、このクラス名も
>同じ名前がたくさんあって
>確かにパッケージ名によって区別は付けられるんだけど、
>なんか混乱の元になりそうで怖い。
ここは同感
0830デフォルトの名無しさん
2007/11/27(火) 11:08:320831デフォルトの名無しさん
2007/11/27(火) 11:14:47コマンドラインでアクセスすると desktop って名前になってる。
> cd デスクトップ
ってやってもアクセスできない。
本名は desktop だけど、GUI上でのみ通用する別名が定義されている感じ
そういうシステムが windows にもあればなあって思う事が多々ある
0832デフォルトの名無しさん
2007/11/27(火) 11:29:25> そういうシステムが windows にもあればなあって思う事が多々ある
あるよ。「マイ ビデオ」とかはそうなってる。
でもなぜかデスクトップの実体は「デスクトップ」なんだよ。
API経由で特殊パス取得すればいいんだけど謎ではある。
>>830
ubuntuは基本utf-8だから問題はおこらないような。
0833デフォルトの名無しさん
2007/11/27(火) 11:43:17>ただ、RubyのようにすべてのルートとなるObjectクラスみたいなのがPythonにはないから
Pythonで「ほぼ」すべてのオブジェクトのルートになってるのは「object」だろ。
アトリビュート追加したりして変更できないけど。
0834デフォルトの名無しさん
2007/11/27(火) 11:46:28何かと便利になる
0835デフォルトの名無しさん
2007/11/27(火) 13:14:280836デフォルトの名無しさん
2007/11/27(火) 15:50:310837デフォルトの名無しさん
2007/11/27(火) 16:21:34ものすごいデザインだな・・・
0838デフォルトの名無しさん
2007/11/27(火) 16:27:380839デフォルトの名無しさん
2007/11/27(火) 16:37:290840デフォルトの名無しさん
2007/11/27(火) 16:38:41大事なのは中身だよ!中身!
0841デフォルトの名無しさん
2007/11/27(火) 16:40:330842デフォルトの名無しさん
2007/11/27(火) 17:11:52システム管理に使ってるので削除しない方がいいらしいです
パッケージ版とソースからと二ついれるのが普通ですか?
0843デフォルトの名無しさん
2007/11/27(火) 17:15:370844デフォルトの名無しさん
2007/11/27(火) 17:19:18こうjなるとネーミングに問題ありと言わざるを得ない
自分はとりあえずApressから出るDjango本に期待。
0845デフォルトの名無しさん
2007/11/27(火) 17:26:080846デフォルトの名無しさん
2007/11/27(火) 17:28:180847デフォルトの名無しさん
2007/11/27(火) 17:31:01この本↓持ってるかたがいらっしゃったらお伺いしたいのですが、
ttp://www.amazon.jp/products/dp/1932394621/
これのサンプルって最新のバージョン(wx.hogehoge の記述の方)ですか?
0848デフォルトの名無しさん
2007/11/27(火) 17:32:210849デフォルトの名無しさん
2007/11/27(火) 17:34:04./configure --prefix=$HOME
0850デフォルトの名無しさん
2007/11/27(火) 17:47:13ttp://www.manning-source.com/books/rappin/rappin_ch02.pdf
ttp://www.manning-source.com/books/rappin/rappin_ch09.pdf
ttp://www.manning.com/rappin/
ttp://www.manning.com/foord/
0851デフォルトの名無しさん
2007/11/27(火) 18:02:25サンプルはみんな import wx 前提だよ。
from wxPython import wx とかはしてない。
0852デフォルトの名無しさん
2007/11/27(火) 18:20:51ありがとうございました
0853デフォルトの名無しさん
2007/11/27(火) 18:21:28ありがとうございました
0854デフォルトの名無しさん
2007/11/27(火) 18:23:07なんかこの本もほしくなってきました
0855デフォルトの名無しさん
2007/11/27(火) 18:51:30>http://www.amazon.co.jp/gp/product/images/4797341815/
>
>ものすごいデザインだな・・・
デザインっつーか色な、色。
0856デフォルトの名無しさん
2007/11/27(火) 19:14:260857デフォルトの名無しさん
2007/11/27(火) 19:36:26その略称は「初めてのPython」のためのものです
似たようなタイトルの本は存在しません
0858デフォルトの名無しさん
2007/11/27(火) 20:01:09にしようよ
0859デフォルトの名無しさん
2007/11/27(火) 22:35:21俺の脳内略称にはそれ採用させてもらうよ
0860デフォルトの名無しさん
2007/11/27(火) 22:57:13なんというためになりそうな本。
ぜひみんな購入するべき。
0861デフォルトの名無しさん
2007/11/27(火) 23:06:46[開始インデックス:終了インデックス+1]
のようですが、何故終了インデックス+1なんでしょう?
わかりにくくないですか?
[開始インデックス:終了インデックス]
にしたらいいのに。
0862デフォルトの名無しさん
2007/11/27(火) 23:08:230863デフォルトの名無しさん
2007/11/27(火) 23:10:54ここからCDE(index:2,3,4)を取り出すとしたら、index:2とindex:5の仕切りでスライスするから。
0864デフォルトの名無しさん
2007/11/28(水) 00:04:54[2,5)
みたいな表記だと分かりやすかったとは思う
0865デフォルトの名無しさん
2007/11/28(水) 00:14:290866デフォルトの名無しさん
2007/11/28(水) 00:16:32他の言語とも違うし。
0867デフォルトの名無しさん
2007/11/28(水) 01:00:410868デフォルトの名無しさん
2007/11/28(水) 01:46:14空っぽの区間も表現できるので表現力が高いし
0869デフォルトの名無しさん
2007/11/28(水) 04:25:47C++もSTLも知らない人間には何の根拠にもならん
0870デフォルトの名無しさん
2007/11/28(水) 04:33:43空っぽの区間が表現できるということか・・
0871デフォルトの名無しさん
2007/11/28(水) 04:38:05ここでいう「C++やSTLのしきたり」は決して独特なものではないから、
それは「C++もSTLも知らない人間」の意見というより、それも含めてろくにモノを知らない人間の意見、
という感じだね。
0872デフォルトの名無しさん
2007/11/28(水) 04:39:47うっかりインデントを削除しすぎてしまった時に
その行がどのブロックに属するのか分からなくならない?
0873デフォルトの名無しさん
2007/11/28(水) 05:19:440874デフォルトの名無しさん
2007/11/28(水) 06:36:130875デフォルトの名無しさん
2007/11/28(水) 07:00:10意味分かって書いてたらそんなことない
0876デフォルトの名無しさん
2007/11/28(水) 07:07:580877デフォルトの名無しさん
2007/11/28(水) 07:25:09つ Ctrl+Z
0878デフォルトの名無しさん
2007/11/28(水) 07:38:23if、while、defの次ならインデントとか、勝手にきまるんじゃね?
つか、コロンで終わる行の次がインデントな希ガス。
0879デフォルトの名無しさん
2007/11/28(水) 08:06:02ttp://www.cafepress.com/wxpython
0880デフォルトの名無しさん
2007/11/28(水) 08:07:06インデントは決まるけどアンインデント(インデントを1個引っ込める)のは決まらない
0881デフォルトの名無しさん
2007/11/28(水) 08:07:18終わりが一意に決まらない
意図的に空行で切ってるケースもあるみたいだけど
0882デフォルトの名無しさん
2007/11/28(水) 09:39:130883デフォルトの名無しさん
2007/11/28(水) 10:10:12マグカップの文は何て書いてあるんだろう
商品説明みても全文がわからん
0884デフォルトの名無しさん
2007/11/28(水) 10:34:55ビット演算のための演算子[&, |, ^, ~, >>, <<]が存在することに
違和感を感じるようになった。
ビット演算の対象はビット幅固定だと思うが、
組み込みの数値は型拡張される。
バグが混入しやすいし、気づきにくい。
(安全にやるには、専用のクラスと関数を用意することになる)
もう非推奨→廃止にしてもいいと思わね?
で、そのあとに新しい使い道でも…
0885デフォルトの名無しさん
2007/11/28(水) 10:39:330886デフォルトの名無しさん
2007/11/28(水) 10:42:390887デフォルトの名無しさん
2007/11/28(水) 10:44:30すばらしい洞察
0888デフォルトの名無しさん
2007/11/28(水) 10:48:090889デフォルトの名無しさん
2007/11/28(水) 10:57:11だからpassを書けばオートインデントも効くのだけど
毎回passを書くのはちょっとpythonらしくない。
rubyのendを思い出してしまう。
0890デフォルトの名無しさん
2007/11/28(水) 11:51:29pass は書きたくないけど、書いたほうがなんとなく安全だなあ。
と、最近思い始めてる。
ただ、下記のようなコードが
if 0:
if 0:
exec(...)
passで明示するために下記にまでなるってことだよね。。。ひどい。
if 0:
if 0:
exec(...)
pass
else
pass
else
pass
0891デフォルトの名無しさん
2007/11/28(水) 12:21:390892デフォルトの名無しさん
2007/11/28(水) 12:40:39社内ヒキコモリのおまえらには関係ないと、念のため思うけど張っておきますね。
0893デフォルトの名無しさん
2007/11/28(水) 12:46:230894デフォルトの名無しさん
2007/11/28(水) 14:08:11ttp://www.cafepress.com/cp/moredetails.aspx?showBleed=false&ProductNo=68879669&colorNo=0&pr=F
ttp://www.cafepress.com/cp/moredetails.aspx?showBleed=false&ProductNo=6588019&colorNo=0&pr=F
Relax with wxPython!
Java give you jitters?
Feeling stressed out?
0895デフォルトの名無しさん
2007/11/28(水) 14:18:58>>890 は else: を else と書いている時点でモグリ
0896デフォルトの名無しさん
2007/11/28(水) 14:20:100897デフォルトの名無しさん
2007/11/28(水) 14:34:110898デフォルトの名無しさん
2007/11/28(水) 14:46:130899デフォルトの名無しさん
2007/11/28(水) 14:54:360900デフォルトの名無しさん
2007/11/28(水) 15:00:300901デフォルトの名無しさん
2007/11/28(水) 15:01:29ダメじゃない?
0902デフォルトの名無しさん
2007/11/28(水) 15:06:27if 0:
exec(...)
pass
pass
pass
これはOK
0903デフォルトの名無しさん
2007/11/28(水) 15:21:180904デフォルトの名無しさん
2007/11/28(水) 15:34:54最後の一つは要らなくね?
0905デフォルトの名無しさん
2007/11/28(水) 15:50:36ttp://pc11.2ch.net/test/read.cgi/tech/1169473442/
たまにはオレのことも思い出してください。
0906デフォルトの名無しさん
2007/11/28(水) 16:26:50pass 入れるっていう選択肢は選びにくいな。
実際のところ、たまに ruby とか書くと end がウザいな
ってちょっとは思う。ってことはやっぱ python のインデント
式はオレに合ってる。それだけのこと。
0907デフォルトの名無しさん
2007/11/28(水) 16:42:32これでどんなことができるんでしょうか。。
0908デフォルトの名無しさん
2007/11/28(水) 16:46:24ブロックが壊れるリスクのトレードオフってことっすか
0909デフォルトの名無しさん
2007/11/28(水) 16:47:020910デフォルトの名無しさん
2007/11/28(水) 17:31:06発症すると画面上の文字が左に落ちる。
環境: MS-DOS
0911デフォルトの名無しさん
2007/11/28(水) 18:14:01ビット演算を使う時というのはビット毎に意味のある場合だから
最初にマスクしてから使うのでそんな事が問題にはならない
そこらへんは INT のビット数が処理系で変わる C でも同じ
0912デフォルトの名無しさん
2007/11/28(水) 18:28:52壊れるリスクってのは python 使ってない
脳内君の世界での話だと思う…
0913デフォルトの名無しさん
2007/11/28(水) 18:39:17うっかり壊すことあるじゃん
0914デフォルトの名無しさん
2007/11/28(水) 18:49:27インデントするときに参考にしたいのですが
a)タブ4
b)タブ8
c)スペース2
d)スペース4
e)それ以外
みなさんどれですか?
あとスペース2とタブ2を同時に使うと
見た目は同じ位置でも
インデント違うとみなされますよね?
0915デフォルトの名無しさん
2007/11/28(水) 19:10:20逆じゃない?
壊れるリスクがないって言ってるのは使ってても趣味レベル
0916デフォルトの名無しさん
2007/11/28(水) 19:17:14こんな所で下らんこと聞いてる暇があったら以下を読むべきでは?
ttp://oldriver.org/python/pep-0008j.html
0917624
2007/11/28(水) 19:18:55ときにもう片方があるとなにかと心強いんだよな。ソースは基本的に人間がいじるもの
なのでいくら気をつけたつもりでもたまには間違う。
pythonのようにインデントのみだとずれたらそれっきりで、相当気合入れて読まないと
直せないのがつらいね。
0918デフォルトの名無しさん
2007/11/28(水) 19:21:45cascadeか・・・懐かしい。実際に見たことはないけど(そして落ちる方向違うけど)
0919デフォルトの名無しさん
2007/11/28(水) 19:22:36俺は d だ。
「タブは使わないほうが良い」とかなんとかというのが、どっかPEPかなんかに書いてあったと思う。
0920デフォルトの名無しさん
2007/11/28(水) 19:29:19いや、読んで理解してからいじれよ
>>885
つかコピペすんな
0921デフォルトの名無しさん
2007/11/28(水) 20:31:47なんというためになりそうな本。
ぜひみんな購入するべき。
0922デフォルトの名無しさん
2007/11/28(水) 20:33:29ありがとうございました
0923デフォルトの名無しさん
2007/11/28(水) 20:38:42ありがとうございました
0924デフォルトの名無しさん
2007/11/28(水) 20:56:48上の方で俺の気分を害すレスが合ったが、なんか癒された。
ありがとうございました
0925デフォルトの名無しさん
2007/11/28(水) 21:54:11反応あってよかった。
C だと変数に型があるから、マスクしないケースがあるじゃない。
int のビット数も typedef で依存を吸収しようとするし。
そうでない場合でも、アーキテクチャの自然の大きさに収まることを当てにしていると思う。
Python の int は多倍長拡張されて、どこまでーも大きくなっていくけど。
それに C と Python を比較すると、
ビット演算の頻度・重要性が逆方向を向いてると思うんだ。
0926デフォルトの名無しさん
2007/11/28(水) 21:58:24> UINT8 ch = 0xAA
0xAA
> ch = ch << 4
0xA0
> ch = ch >> 5
0x05
> ch = ch * ret_float_fn(1.1)
0x05
Pythonの組込み数値だと、うれしくない現象が何かとある。
> ch = 0xAA
0xAA
> ch = ch << 4 # どこまでも大きくなっていく
0xAA0
> ch = ch >> 5 # 当然↑の値で右シフトされる
0x55
> ch = 0x05
> ch = ch * ret_float_fn(1.1) # floatになってしまう
5.5
0927デフォルトの名無しさん
2007/11/28(水) 22:00:220928デフォルトの名無しさん
2007/11/28(水) 22:01:03クラスとメソッドと関数の方がいろいろと便利な気がする。
> ch = Bit(0xAA,width=8)
0xAA
> ch = ch.sft_l_logic(4) # 論理左シフト
0xA0
> ch = ch.sft_r_arithmetic(4) # 算術右シフト
0xFA
> ch = ch.rot_l(ch, 1) # ローテートだって出来る
0xF5
> ch = Bit(0x05,width=8)
> ch = ch * ret_float_fn(1.1)
RuntimeError
> ch = int(ch) * ret_float_fn(1.1)
5.5
> ch = Bit(ch, width=8)
0x05
このケースだと、別に演算子を使ってもいいけど、
使わなくてもいい訳で。
少なくとも組込み数値に対しては、C のような簡便な記法にはないない。
マスクの必要があったり、型が変わったりしないかと心配事が多い。
それで自由になった演算子を、さて、何に使うか……
0929デフォルトの名無しさん
2007/11/28(水) 22:02:25[x,y,z | x <- xs, y <- ys, z <- zs, z > 0]
Python
[x,y,z for x in xs for y in ys for z in zs if z > 0]
Haskellに嫉妬中w
[x,y,x | x << xs, y << ys, z << zs, z > 0]
例えば、こんな感じに使えないかなーとか妄想。('|'の右のコンマは無理か?)
長文 糸冬 了..._〆(゚▽゚*)
0930デフォルトの名無しさん
2007/11/28(水) 22:05:31C言語との互換性を気にしてる癖にわけわかんないことしてるし
0931デフォルトの名無しさん
2007/11/28(水) 22:11:590932デフォルトの名無しさん
2007/11/28(水) 22:19:55その唯一の要素を取り出す上手い方法はないでしょうか?
今は
for x in singleton_set:
the_element = x
とやっていますが、もう少しましな方法があれば教えてください。
0933デフォルトの名無しさん
2007/11/28(水) 22:33:05tuple(singleton_set)[0]
singleton_set.__iter__().next()
0934デフォルトの名無しさん
2007/11/28(水) 22:35:530935デフォルトの名無しさん
2007/11/28(水) 23:27:00C言語との互換性を気にした理由は、
・Pythonのビット演算に対して影響がある
・アセンブラの次にビット演算を多用している言語
・ビット演算子はC言語のように振る舞うべき
(同じ表現に対して同じ結果が得られるべき)
と考えているから。
でも、Pythonで3番目の結果を得られない。
似てるようで似ていないというのが、
いい状態なのかという疑問がある。
マスクの必要性があるというのは、C言語から乖離があるわけだし、
いちいちマスクするなら、専用のクラスを設けた方が楽になる。
そしてビット演算子を無くしてしまえば、C言語のそれと混同することがない。
>>929は、無くなったら別の使い道もあるだろうという、一石二鳥の考え。
まぁ、今のPythonの(劣化)ビット演算が無くなって、
混乱する人がゼロになるだけでもいいと思うんだけど。
0936デフォルトの名無しさん
2007/11/28(水) 23:36:00要するにこういうことか。
bit演算で俺は混乱した。俺は悪くない。悪いのは言語仕様だ。
0937デフォルトの名無しさん
2007/11/28(水) 23:39:170938デフォルトの名無しさん
2007/11/28(水) 23:41:04PythonでBitクラスを作ったが遅い。
Cで実装したやつを配布しろ。
[x,y,z for x in xs for y in ys for z in zs if z > 0]
それとこれは自分で書いても読めないぞ。
Haskell程度にしてくれ。
この2点だ。
0939デフォルトの名無しさん
2007/11/28(水) 23:45:48いきなり投げられないからここに投げたんよ。
[x,y,x | x << xs, y << ys, z << zs, z > 0]
こういうのが書けるか俺には分からんし。
0940デフォルトの名無しさん
2007/11/28(水) 23:47:350941デフォルトの名無しさん
2007/11/29(木) 00:19:000942デフォルトの名無しさん
2007/11/29(木) 00:21:16amazonにどんなレビューが載るかwktkが止まらないwww
0943デフォルトの名無しさん
2007/11/29(木) 02:55:49C言語のように振る舞ってるだろ
ビット数決め打ちのCソースがそもそも間違っているわけだから
本来CでもPythonでやるようにしないと駄目なわけで
0944デフォルトの名無しさん
2007/11/29(木) 07:28:21理解できるし部分的には賛同するけど理想論だね。
個人的には Python の << 演算子でビット長がどんどん拡張される仕様は合理的だと思う。
C で同じ挙動を得ようと思ったらかなり大変だけど、Python で C と同じ挙動を得るのは
簡単(マスクするだけ)だから。
0945デフォルトの名無しさん
2007/11/29(木) 08:46:49するからであって、ビット演算だけでなく足し算のオーバーフローの挙動が違う。
0xffffffff + 1 が 0x100000000 なのに、 0xffffffff << 1 が 0xfffffffe になるべき
とかいうヤツはバカ。
だいたい、C言語なんていう環境依存を許容しまくりの言語の挙動をマネる
なんて理想からかけ離れている。
0946デフォルトの名無しさん
2007/11/29(木) 09:22:01同意。Cの制限をわざわざPythonに持ち込む必要はないと思う。
Cにマシン依存の制限がでるのはしょうがない。でもPythonはより高水準な言語なんだからそういうのはうれしくない。
CとPythonは違うもんだと思えばよくね?
0947デフォルトの名無しさん
2007/11/29(木) 10:17:51CがUnix記述のために作られて
今は全てのハードに使われていることを考えると、
Cは間違ってないし、
またCがPythonのように振舞うべきでもないと思う。
>>944
マイナス値なども合理的かつ有用な振る舞いだよね。
# ----
ところでビットが左に成長するなら、
右の成長も小数点を中心にして
あるんじゃないかと思うんだけど。
> ((1 << 100) >> 100)
1
> ((1 >> 100) << 100)
0
> 1.0 >> 1
TypeError
0948デフォルトの名無しさん
2007/11/29(木) 10:27:25確かに、将来 3/2 が 1.5 になったら、その仕様もアリかもね。
でも、基本的に数値とbit列は違う概念で、bit列を扱うのに整数の
型に入れると便利というだけだから、bit演算を実数の世界に
持ち込む必要は無いと個人的に思う。
0949デフォルトの名無しさん
2007/11/29(木) 13:17:24チョビッとだけ興味深い気がするけど
ビット演算の意味を考えると意味がない気がする
0950デフォルトの名無しさん
2007/11/29(木) 13:52:41TypeError
このTypeErrorpは浮動小数点数はshift出来ないっていう意味であたりまえ
問題は
1.0 が binary だということを明示したとき
たとえば
0b1.0 >> 1
とかを許すか
ということ
0951デフォルトの名無しさん
2007/11/29(木) 14:30:27str()自体のタイプ数が少ないせいか
ありがたみを感じないけど、使っている人いる?
(変なディスプレイとフォントだと'シングルクォート'と間違えそう)
↓特殊効果があるかと思ったけど違うみたいだし……
>> a = 1
>> b = 2
>> print "a+b=`a+b`"
a+b=`a+b`
a+b=3 ×
0952デフォルトの名無しさん
2007/11/29(木) 14:54:50str()じゃなくてrepr()といっしょ。
ttp://www.python.jp/doc/release/ref/customization.html#l2h-179
0953デフォルトの名無しさん
2007/11/29(木) 15:08:32thx
特に効能は無いのですな。残念。
でもよく考えると
>>951はセキュリティホール…
0954デフォルトの名無しさん
2007/11/29(木) 15:53:310955デフォルトの名無しさん
2007/11/29(木) 17:05:360956デフォルトの名無しさん
2007/11/29(木) 18:32:280957デフォルトの名無しさん
2007/11/29(木) 19:25:23ビット数を制限できるようにもできたら面白いかも
0958デフォルトの名無しさん
2007/11/29(木) 20:15:17>> b = 2
>> print "a+b=%d" % a + b
0959デフォルトの名無しさん
2007/11/29(木) 20:54:220960デフォルトの名無しさん
2007/11/29(木) 21:38:07>> b = 2
>> c = 1000
>> print "(a + b) * c = %d" % (a + b) * c
0961デフォルトの名無しさん
2007/11/29(木) 23:03:59int(str(val), N)
をつかっているのですが、もしよりよい方法があったら教えてください。
0962デフォルトの名無しさん
2007/11/29(木) 23:12:13すみません、これ間違いですね。これだとN進数を10進数に変換してしまいます。
やべー、今まで大間違いしてた。
0963デフォルトの名無しさん
2007/11/29(木) 23:22:33もっともよいか知らんが
easy_install gmpy
で、入れて
from gmpy import digits
digits(val,N)
っていうのだったらあるよ。
0964デフォルトの名無しさん
2007/11/30(金) 05:43:4510進数をN進数というか、10進数だったものを無理やりN進数とみなして、更にそれをまた10進数に戻してるなw
最近もpython-ideaで、そのことが話題になったけど、
結論は、2,8,10,16進数以外は使い道がないから不要、ということらしい。
[Python-ideas] str(<int>, base=<int>) as complement to int(<str>, base=<int>)
http://mail.python.org/pipermail/python-ideas/2007-October/001112.html
http://mail.python.org/pipermail/python-ideas/2007-November/001118.html
0965デフォルトの名無しさん
2007/11/30(金) 10:21:12今回は取り急ぎじゃないのか。
0966デフォルトの名無しさん
2007/11/30(金) 10:36:390967デフォルトの名無しさん
2007/11/30(金) 10:39:07本のタイトルパクったり、萌え絵を表紙に使うよりマシだと思う.
0968デフォルトの名無しさん
2007/11/30(金) 13:00:55くやしいのうwww
くやしいのうwwwwwww
0969デフォルトの名無しさん
2007/11/30(金) 17:51:12http://framework.g.hatena.ne.jp/soundkitchen/20070321/1174486359
このページの通りやってみたんだけど
シンタックスハイライトできないんだ…
[mimeviewer]
enscript_modes = text/x-dylan:dylan:4,text/x-php:php:4
enscript_path = /usr/bin/enscript
max_preview_size = 262144
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb,text/x-php:php, 'rb':'text/x-ruby'
php_path = /usr/bin/php
silvercity_modes =
tab_width = 4
[components]
tracpygments.* = enabled
php も rubyも駄目ぽ… orz
0970969
2007/11/30(金) 19:03:43/usr/lib/python2.3/site-packages/TracPygments-0.3-py2.3.egg
2007-11-30 19:32:31,528 Trac[loader] ERROR: Failed to load plugin tracpygments from
/usr/lib/python2.3/site-packages/TracPygments-0.3-py2.3.egg
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/trac/loader.py", line 101, in load_components
entry_point.load()
File "/usr/lib/python2.3/site-packages/setuptools-0.6c7-py2.3.egg/pkg_resources.py", line 1912, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named tracpygments
trac.log みたら、こんなのが出力されてました
モジュールがロードされてない…
0971969
2007/11/30(金) 20:33:01sudo python setup.py install で site-packagesに入れた
TracPygments-0.3-py2.3.egg に何故か __init__.py が入って
なかったのが原因のようでした
というかTracのpluginって site-packages にzipを展開して
出てきたフォルダ、この場合は
ERROR: Failed to load plugin tracpygments
tracpygmentsフォルダを入れてあげればいいだけなんですね。
pluginが外部モジュールと全く同じ扱いになってるのが意外な
かんじがしますた。シンプルすぎる…
0972デフォルトの名無しさん
2007/11/30(金) 20:38:38Type "help", "copyright", "credits" or "license" for more information.
>>> u'hogÉfuga'
u'hogEfuga'
これって仕方ないんでしょうか
0973デフォルトの名無しさん
2007/11/30(金) 21:24:120974デフォルトの名無しさん
2007/11/30(金) 21:48:29# -*- coding: utf-8 -*-
#
# ファイルは utf-8 で保存 (cp932 で保存するとその時点で E に化ける)
#
# Python インタプリタで実行すると u'hogÉfuga' -> u'hogEfuga' になるが
# コマンドプロンプトで runoncp932.py を実行すると
#
# UnicodeEncodeError: 'cp932' codec can't encode character u'\xc9' in position 5: illegal multibyte sequence
#
# 自分で例外ちゃんと処理するしかない?
#
print u'ほげ%sふが' % u'hogÉfuga'
0975名無しさん@いたづらはいやづら
2007/11/30(金) 21:56:32Pythonのお勉強 Part22
http://pc11.2ch.net/test/read.cgi/tech/1196426978/
0976デフォルトの名無しさん
2007/11/30(金) 22:07:030977デフォルトの名無しさん
2007/11/30(金) 22:09:320978デフォルトの名無しさん
2007/11/30(金) 22:19:24コマンドラインからUnicodeファイル指定できなくて困るんだよねあれ
0979デフォルトの名無しさん
2007/11/30(金) 22:19:38別に言語仕様を責めてる訳じゃないんだが
もし責められてると思たのなら
そっちの方がやばくね
0980デフォルトの名無しさん
2007/11/30(金) 22:23:10try:
print u'argv = %s' % sys.argv
except UnicodeEncodeError, (e):
print u'例外', sys.exc_info()[0]
print e
print e.args
else:
print u'イ�`'
0981デフォルトの名無しさん
2007/12/01(土) 07:30:541. ある関数が投げるexceptionおよび戻り値の一覧を知りたいときには、
どうしたらいいでしょう。help()みたいなのがある?
2. 以下のコードで、変数の値が変わらないのは何故でしょう。
>>> a = 100
>>> b = 200
>>> for p, i in (a, 1), (b, 2):
>>> p = i
>>>print a, b
100 200
3. 以下のコードのような感じで、変数名をstringで取り出すにはどうすればいいでしょう。
>>> for val in foo bar:
>>> print val # <= ここで、変数の中身じゃなくて変数名を取り出したい。
"foo"
"bar"
0982デフォルトの名無しさん
2007/12/01(土) 08:02:55> 1. ある関数が投げるexceptionおよび戻り値の一覧を知りたいときには
動的に任意の例外も値も生成できるからわかりようがないしPythonは感知してない。
ホワイトボックスなら仕様どおりに動くと思うしかないね。
もしかしたら高度なIDEやソース解析器があるのかもしれないけど。
> 2. 以下のコードで、変数の値が変わらないのは何故でしょう。
for ... inで、aやb自身をpに結び付けてるわけではなく
aやbの値をpに結び付け(代入)してるから。
# a=100; p=a; p=1 ←これでaが変わったらいやでしょ?
> 3. 以下のコードのような感じで、変数名をstringで取り出すにはどうすればいいでしょう。
2.と同様だけど、値を代入したらvalは変数fooやbarとは無関係になるから
そんな情報は保持しておらず取り出せない。
0983981
2007/12/01(土) 08:18:08即レスありがとうございます。
1.
例えば、標準moduleのmmapを使いたいとして、
ttp://www.python.jp/doc/2.4/lib/module-mmap.html
を読んでもどんな例外が投げられるか書いていません。
そういうときには、一体どうやって例外処理をするものなのですか?
C/C++だと、manpageして説明読んで終わりだったんですが、
Pythonではどうやって例外をちゃんと扱えばいいのか悩んでいます。
2.
class hoge:
def __init__(self, val):
self.val = val
A = hoge(100)
B = hoge(100)
C = hoge(100)
print A.val, B.val, C.val
for p, i in (A, "1"), (B, "2"), (C, "3"):
p.val = i
print A.val, B.val, C.val
これだと、ちゃんとvalの中身が書き変わるんで、
intとかstringの時だけ違うんですかね。
このpをCのポインタ的に扱いたいんですよね。
クラスの時だけポインタ的にpが振る舞う?
0984デフォルトの名無しさん
2007/12/01(土) 09:06:57> 1.
ごめんさっきホワイトボックスと書いたのはブラックのまちがい。
その場合マニュアルにないとどうしようもない。
動かしてみて記載のない例外がでる可能性もあるにはある。
でもそれってC/C++のmanpageと事情は一緒でない?
JavaだったらRuntime以外でないことを保証できるけど。
> 2,
数値も値毎に(普遍で不変な)オブジェクトが存在していると考えるといいです。
a=100; p=a は
p → 数値100 ← a
という関係をつくってる。(わかりにくいけどごめん)
そこでp=1とすると
p → 数値1 / 数値100 ← a
と関係が変わることになる。
Pythonだとできないから意味ないけど
数値`100'自体を数値'1'に変更することができたら
pもaも`1'になると思います。
0985981
2007/12/01(土) 09:10:15なるほど。納得できました。
ありがとうございます。
0986デフォルトの名無しさん
2007/12/01(土) 10:03:43乙
0987デフォルトの名無しさん
2007/12/01(土) 11:05:020988デフォルトの名無しさん
2007/12/01(土) 13:01:302.と3.がどんな言語でできるのか知りたい
0989デフォルトの名無しさん
2007/12/01(土) 13:17:17ポインタ
0990デフォルトの名無しさん
2007/12/01(土) 13:39:09>>> a = 100
>>> p = a
>>> p = 1
>>> a, p
(100, 1)
>>> p = a
>>> a = 1
>>> a, p
(1, 100)
2回目の a, p で 1, 1 になると思ってしまった自分がいる orz
0991デフォルトの名無しさん
2007/12/01(土) 13:42:370992デフォルトの名無しさん
2007/12/01(土) 14:53:21一体何を読めば言語仕様としてそういうの書いてあるの?
C/C++から俺も入って勉強中なんだけど、
変数のスコープの概念だとか、ポインタはないの?とか、
そういう情報がPythonの公式のドキュメント読んでもいまいち分からん。
0993デフォルトの名無しさん
2007/12/01(土) 14:55:318.5.?locals and globals
http://www.diveintopython.org/html_processing/locals_and_globals.html
3は、これとかで行けそうな予感
0994デフォルトの名無しさん
2007/12/01(土) 14:57:540995デフォルトの名無しさん
2007/12/01(土) 15:15:43http://www.python.jp/doc/release/ref/objects.html
0996992
2007/12/01(土) 16:33:32.soとかで配布されてるものは、元のCのソース読んでる?
>>995
さんくす。
結局、>>981の2.はmutableかどうかなわけだな。
この発想はC++からだと俺はなかったわ。(俺だけ?)
もっと精進せねば。
0997デフォルトの名無しさん
2007/12/01(土) 17:06:53何でもかんでも復帰できるなら例外じゃないだろ
0998デフォルトの名無しさん
2007/12/01(土) 17:09:47ユーザがどう対処するかを判断するときに、
どういう例外が投げられうるのかを知っておきたい、
というのが話の流れなのでは?
0999デフォルトの名無しさん
2007/12/01(土) 17:21:251000デフォルトの名無しさん
2007/12/01(土) 17:22:1410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。