【実験台】 Python 3.0 のお勉強 Part 1 【非互換】

■ このスレッドは過去ログ倉庫に格納されています
2009/02/19(木) 22:30:15
Python 3.0 は隔離スレを作るべきだと思うのは俺だけかな?
そもそもあれは実用で使うには時期が早すぎるわけで、ここで
普通に語られても困る。
--------
別に
--------
細分化する必要性が全く感じられない。
各自がレスの内容を収拾選択すればいいだけ。
2010/02/18(木) 00:20:00
>>122
程度問題の話をしてるんだから
そういうコメントは野暮というもの
2010/02/18(木) 00:40:49
122はかわいそうなお莫迦さん。
125デフォルトの名無しさん
垢版 |
2010/02/18(木) 18:44:43
最新ビジネスソフト入荷!
激安販売中!
  http://wwttww.hostrator.com
2010/02/18(木) 22:59:29
2.6と3ってそんなに違うのか。
2010/02/18(木) 23:16:26
>2.6ならそうならないでしょ。

どこが程度の話だよw
2010/02/18(木) 23:22:14
122はかわいそうなお莫迦さん。
2010/02/19(金) 00:48:20
うん、どう読んでも程度の話だな。
2010/02/19(金) 17:41:59
3だけなのか知らないけど、Windowsでリダイレクトからの標準入力が欲しくて、
for line in sys.stdin:
 pass
と書いたのだけれど、普通に実行したときは問題ないのに、
hoge.rb < file.txt
と実行したら、sys.stdinがNoneになってるんだよね。
標準入力を読み込むにはどうしたらいいの?
2010/02/19(金) 19:19:57
>>130
rbかよ!
python hoge.py < file.txt
ってしてみ?
2010/02/19(金) 20:15:24
>>131
> rbかよ!
すまない。ついうっかり癖で、、、

ちゃんと標準入力読めました。ありがとう。
2010/02/19(金) 20:18:55
なんで
hoge.py < file.txt
で読めないのかな
バグ?
2010/02/19(金) 21:04:57
>>133
Windowsの有名なバグ。
なんか当てたら直ったと思う。
Vista以降だとなんも当てなくても直ってたかもしれない。
2010/02/19(金) 21:11:39
これだな

STDIN/STDOUT リダイレクトは、ファイルの関連付けから起動すると動作しないことがある
http://support.microsoft.com/?scid=kb%3Bja%3B321788&x=21&y=13
2010/02/26(金) 12:24:12
Python3kの教えやすさは異常。

DjangoもGAEもいつかは3kがメインになるのかなぁ
2010/02/26(金) 13:07:31
>>136
そうだよね。Python2のUnicodeはエッジケースが多すぎて、初心者じゃなくても
切り傷だらけになる。初心者なら脱落してもおかしくない。

print u"あいうえお" はできるのに raw_input(u"あいうえお") ができないとか、
os.listdir(u'.') しても filesystemencoding でデコードできないファイル名は
バイト列としてリストに入るとか。
2010/02/26(金) 14:54:40
# Python 2.6.4
>>> os.listdir('.')
['a', '\xff']
>>> os.listdir(u'.')
[u'a', '\xff']

# Python3.1.1
>>> os.listdir('.')
['a', '\udcff']
>>> os.listdir(b'.')
[b'a', b'\xff']

U+DCxx に置換されるんだね(PEP383)
2010/02/27(土) 01:29:01
は?
2010/02/28(日) 18:37:24
Python3.xで俺が期待したこと

ライブラリの命名規則を統一してほしかった...orz

classmethod, assertEqual, set_autholizer

orzorzorz
2010/02/28(日) 22:46:10
標準に関してはしたと思ってたのだが……
142140
垢版 |
2010/03/01(月) 00:51:30
Rubyがここら辺が完璧なだけに痛い。
2.x -> 3.xのタイミングでしかできないような変更だからまじで悲しい。

欧米人はあんまり気にしないのだろうか?
2010/03/01(月) 01:23:19
非標準なライブラリ使えばすぐに汚染される程度だからな
だんだん慣れて来たしもうどうにでもなーれ
2010/03/03(水) 01:13:20
コーディング規則で一応決まっていたりしないの?
2010/03/09(火) 22:48:42
過疎ってるな。

>>144
これから書くなら、できるだけ区切らないorアンダースコア使えってPEPに書いてあった。

Javaとかから持ってきたライブラリだとhasKeyみたいに、大文字区切りになってる。
2010/03/09(火) 23:06:57
命名規則を標準でがっちり決めてくれれば、それをエディタの機能強化に回せるんだろうけどな。
標準から外れるとエディタ支援を受けれなくなるから、みんな同じような書き方になって見やすくなるはず。
2010/03/20(土) 00:09:04
http://www.nomadjourney.com/2009/08/windows-7-64-bit-python-and-easy_install/
http://groups.google.co.jp/group/modwsgi/browse_thread/thread/213a778dff791a98
http://gasser.blog114.fc2.com/blog-entry-391.html
http://ozsys.cocolog-nifty.com/blog/2010/03/pythonpyserial-.html
http://twistedmatrix.com/trac/ticket/3352

本体は大丈夫かもしれないけど
インストーラでコケルとか周辺ソフトとの連携とかでコケルいう
事例は、しばらく続くのだろうなぁ…
148デフォルトの名無しさん
垢版 |
2010/04/05(月) 04:03:46
一体いつになったら主流になるのか・・・
2010/04/05(月) 15:53:11
まだ2.7も出てないし
少なくともまだ1年はかかると思う
2010/04/05(月) 16:34:01
2.5,2.6とか出さないほうが良かったのかな。
地デジと同じでズルズル先延ばしで、移行期間があっても移行しない。
2010/04/05(月) 16:36:54
2.4 は糞だから 2.5 出したのは正解だと思う
2.6 は微妙
152デフォルトの名無しさん
垢版 |
2010/04/05(月) 19:05:54
3.xの日本語リファレンスが欲しいのに入門書ばっかだ
2010/04/16(金) 22:23:19
日本語の解説サイト教えろよゴミども
154デフォルトの名無しさん
垢版 |
2010/04/16(金) 23:15:45
ほれ
http://diveintopython3-ja.rdy.jp/index.html
2010/04/17(土) 18:32:09
もっと簡単なの出せよ
無能かよ
2010/04/18(日) 00:34:25
>>155
これで分からなかったら、何見ても分からん。
2010/04/18(日) 02:37:21
いやいや、そういう意味じゃなくて。
ほれ、
http://www.python.jp/Zope/download/pythoncore
これだろ。
そのものだけど。
2010/05/01(土) 13:56:25
Rubyでいうところのredoが欲しんだけどないかな。
while True: のループで代用しないとだめですかね。
2010/05/03(月) 01:13:26
任意の数より大きい数を表す定数みたいなのない?

なにかの最小値を求めるときに下のような処理はよくあるとおもうんだけどminvの初期値に設定したいんだ。

minv = すごくでかい数
for x in seq:
 v = func(x)
 if v < minv:
  minv = v

min(func(x) for x in seq) で常にかければいいんだけど、書けないこともよくあるので。
2010/05/03(月) 01:35:57
sys.maxint
とかなかったっけ?
2010/05/03(月) 02:41:24
float("inf") ?
2010/05/03(月) 02:49:42
>>160
3では削除されたし、2でも多倍長整数の最大値はないよ。
大抵の場合はそれで十分だと思うし、なくても
HUGE_VAL = 2**31
とでもしとけば、大抵の用途では十分だと思うけど。

>>159
型が重要でないなら、
float('inf')
で、不動点小数型の無限大が得られる。

float('inf') > 2**10000000
---> True

整数型であることが重要なら、クラス継承して比較演算子を書き換えるか。
2010/05/03(月) 09:31:38
Python3ってもう使っても大丈夫?
2010/05/03(月) 10:37:04
>>163
使いたいライブラリが対応してるなら。
2010/05/03(月) 11:33:32
>>164
Python2の標準ライブラリー相当品は3でもOKなんだよね?
その他の3rdPartyライブラリーは殆ど使わないんだ
2010/05/03(月) 12:23:41
>>165
基本的にはそうだけど、いくつかは廃止・統合されてるから標準については公式行って確認するといいよ。
サードパーティーの使わないなら、対応状況はかなりいいはず。
2010/05/03(月) 12:37:49
>>159
minv = func(seq[0])
2010/05/03(月) 12:47:21
>>166
ありがとう!
ちょっとやる気が出た
2010/05/03(月) 14:01:21
>>167
それ、seqがコピーしづらいイテレータだったとき面倒にならない?
2010/05/03(月) 15:12:44
for i, x in enumerate(seq):
  v = func(x)
  if i == 0:
    minv = v
  elif v < minv:
    minv = v
2010/05/03(月) 15:14:05
なんか違和感あるなw

こっちのが分かりやすいか

for i, x in enumerate(seq):
  v = func(x)
  if i == 0 or v < minv:
    minv = v
2010/05/09(日) 18:01:53
Keep it simple, stupid!
2010/05/09(日) 21:38:50
python3でグラフ書くのに何使ってる?
やっぱりgnuか?
2010/05/10(月) 15:17:24
python2.xでmatplotlib
175デフォルトの名無しさん
垢版 |
2010/05/12(水) 00:07:01
3.xのライブラリが2.x並になるのって、あと何年かかるんだろうか
2010/05/12(水) 23:35:01
googleで対応してほしい
2010/05/15(土) 01:12:03
最近python関係の書籍が色々と出てるね。
python2.6.2って・・・。
2010/05/15(土) 13:04:59
う、うん……(´・ω・`)
179デフォルトの名無しさん
垢版 |
2010/05/18(火) 09:44:30
なんで俺たち3.xなんか始めちゃったんだろう……
2010/05/19(水) 01:30:56
しかし今更後戻りなど…
181デフォルトの名無しさん
垢版 |
2010/05/19(水) 01:37:20
>>171
のプログラムみたら、
やりたいことは値の設定なのであって、複文を実行することじゃないから、
minv = func(x) if i == 0 or func(x) < minv else minv
って書きたいけど、中でfunc(x)が2回出てるから、func(x)がすっごい重い処理だと
性能悪いなー

って思うのは正しい?
func(x)の値は内部的に保持され、2度実行されないよう最適化してくれるのかな?
2010/05/19(水) 02:40:26
そんな最適化してくれるコンパイラはCでもないと思うぞ
2010/05/19(水) 06:55:06
どうもスクリプト言語は互換性を一度ぶった切りたくなるものみたいだなぁ
Rubyは一見その点では有利そうなんだが、実際にはバージョン間の互換性がさっぱりで、
単に同じこと(過去の微妙な仕様の切り捨て)を小分けに毎回やってるようなもんだから
ある意味余計に悪いし
まぁでも、俺は当分3kは使わないけど、いずれ移行するような気はするけどな
2010/05/19(水) 08:21:19
いつまでも保守的ではいられないのさ
2010/05/19(水) 10:10:03
CやC++も最初のころは仕様がコロコロ変わっていたような覚えがあるのだが
2010/05/19(水) 11:17:13
いまでもコロコロ変わってますが
2010/05/19(水) 15:28:45
せめてnumpyがないと移行できないなー
188181
垢版 |
2010/05/20(木) 00:49:13
>>182
やぱCでもgcc:O2でもfuncの中身までは解析しなかった
変数の出現が関数外ではありえない、みたいな
extern宣言が出来ると、イケチャウ雰囲気あるんだけどな〜
動的スコープだとほんと無理なのかな

誰か天才いないかーーーー
2010/05/20(木) 06:04:42
>>181
else のときは
minv = minv
になるから
アホなコードだなぁ
と思う
2010/05/20(木) 13:53:03
>>181
こういうコードはダメ。Ruby厨に惑わされるな。
2010/05/20(木) 15:27:14
>>159
> min(func(x) for x in seq) で常にかければいいんだけど、
> 書けないこともよくあるので。
これってどんなとき?
2010/05/20(木) 18:17:37
>>159
reduce使え
min(seq)は
reduce(min, seq)と同じ

その手のやつは大概適当なfを用意してやれば
reduce(f, seq)
に書き換えられる
2010/05/20(木) 18:19:04
ストリームデータから最小値を見つけるとか。
ファイルシステムを捜査しながら最大サイズのファイルを見つけるとか。
かな
2010/05/20(木) 18:21:20
>>193
それminで何でだめなんだ?
min()はiterable受け取れるけど
2010/05/20(木) 21:12:50
うーむ
2010/05/20(木) 22:55:28
>>189 >>190
俺も同意だと思ったけど、内部的にはmin関数もまったく同じなんだよね。
趣味の問題かな?
197デフォルトの名無しさん
垢版 |
2010/05/21(金) 08:11:23
初心者のお試しレベルなら問題ない
パフォーマンス考えたら避けるべき
2010/05/21(金) 10:58:04
関数型言語ならletする場面だから、
Pythonでは潔く2行にするのが良いんじゃないの
2010/05/23(日) 11:35:37
unko
2010/05/23(日) 14:44:46
>>140
パイソンってこういうコーディングルール統一されてると勝手に思ってたけど、汚いんだな

統一されてないのは書いてて気になるし、推測でメソッド名書けなくなるから、やっぱりそういうところちゃんとしてるルビーのほうが良さそうか

理路整然としてるイメージを勝手に持ってたけど、rubyのほうがそゆとこしっかりしてんのかな
2010/05/23(日) 15:12:39
ああ、Ruby最高だよ
2010/05/23(日) 15:36:16
>>200
classmethod みたいな、1つの単語と呼べるものは、アンダースコアで区切らない。
set_autholizer みたいな、複数の語でなる句は、アンダースコアで区切る。
JUnit みたいに、別のリファレンスに従う設計になっているライブラリは、そのリファレンスの命名に従う。

理路整然としてるけど?
2010/05/23(日) 17:27:52
なるへそ
204デフォルトの名無しさん
垢版 |
2010/06/02(水) 21:48:16
なんかpython3始めたいのにまともな書籍が売ってない。
いつになったら普及するのよ。
205デフォルトの名無しさん
垢版 |
2010/06/02(水) 21:49:45
java-jaの人が執筆したJython本で我慢しろよ
2010/06/03(木) 03:44:37
>>205
本スレにカエレ

>>204
もうちょっとかかりそうだな。
このスレでも何度か出てきてるDive into Python3は、英語版なら書籍でも出てる。
書籍の形で欲しいのなら適さないけど、内容的に書籍レベルのものが欲しいのならWebの日本語訳がいいと思う。
ttp://diveintopython3-ja.rdy.jp/index.html
2010/06/03(木) 13:11:07
http://www.amazon.co.jp/dp/4873114489
208デフォルトの名無しさん
垢版 |
2010/06/05(土) 05:47:05
>>207
2.5じゃねーかハゲ
2010/06/05(土) 17:10:52
>>202
> 理路整然としてるけど?

で、結果としてばらばらのネーミングルールになってると。

馬鹿か。
2010/06/05(土) 20:50:51
>>209
馬鹿はお前だ
2010/06/05(土) 21:16:35
まあ、馬鹿は言い過ぎと思うが、>>202 の理由が正しいとしても結果として
統一されてないのは事実だし、おれも >>200 のようにいまいち汚いと思う。
212デフォルトの名無しさん
垢版 |
2010/06/09(水) 05:54:43
べき集合をスマートな一行で書く方法ないかね
2010/06/10(木) 00:42:28
>>212
1行じゃないけどこんなの見つけた
http://mail.python.org/pipermail/tutor/2004-April/029413.html
2010/06/10(木) 01:15:00
ttp://docs.python.org/py3k/library/itertools.html
レシピのpowerset
2010/06/10(木) 01:47:42
できたと思ったらまともなのが出てた。
t = set(range(3))
(lambda st: (lambda ls: set(frozenset(ls[j] for j in range(len(st)) if (i >> j) & 1) for i in range(2**len(st))))(list(st)))(t)

# ==>set([frozenset([0]), frozenset([1, 2]), frozenset([]), frozenset([0, 2]), frozenset([1]), frozenset([0, 1, 2]),
# frozenset([2]), frozenset([0, 1])])
2010/06/10(木) 15:37:58
今年出たpaython本が2.6対応なのにはワラタ。
2010/06/10(木) 16:47:12
>>216
Python3の本もたくさん出はじめてるよ。
どの本がPython3用になって欲しかった?
2010/06/18(金) 09:59:07
ぶっちゃけ入門レベルで、2.6も3.0もたいした違いはないし、
もっと他に気を掛けることがあるだろうに。
2010/06/18(金) 14:14:05
なにごとも初心者は、自分の進め方が正しいかどうかで迷ってしまうからねぇ。
2010/06/18(金) 14:29:00
そういえば、Pythonスタートブックっていう書籍が出たけど、
あの手の書籍は最新python3で出して欲しかったな。
初心者向けみたいだし、プログラミング入門者でも分かりやすい内容だったから。
仕事で使うのではなく、ただなんとなくPython始めたいような人は
最新環境で学ぶべきだと思うよ。
俺らが3の仕様変更を知らされたときに受けた失望感を
初心者にまで与えるのはあまりにも酷だろ。

それでも2.Xが優勢だということは、
おそらく3は当分普及しないってことだろうね。
たぶん日本ではGoogleのGo言語のほうがpython3よりも先に普及すると思う。
どうしてこうなった。
2010/06/18(金) 20:18:39
>どうしてこうなった
encode/decodeのせい
python3に期待
2010/06/18(金) 20:22:05
>>220
日本でGoが普及するか?まだC#の方がありうると思うぜ。
それ以前にGoとPythonの守備範囲も若干違う気がするし…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況