【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
Python 3.0 は隔離スレを作るべきだと思うのは俺だけかな? そもそもあれは実用で使うには時期が早すぎるわけで、ここで 普通に語られても困る。 -------- 別に -------- 細分化する必要性が全く感じられない。 各自がレスの内容を収拾選択すればいいだけ。
やべ 起てられないと思って 弄んでたら 勃っちゃった
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
4 :
デフォルトの名無しさん :2009/02/20(金) 12:34:21
つうかまじでpython厨うざい。 python厨は全員首吊って死ねよ。 ruby人口の方が多い。 rubyの方がいろいろできる。 言語的仕様は好みの問題。 議論の余地無し。 以上。
5 :
デフォルトの名無しさん :2009/02/20(金) 12:36:25
>>3 は別スレの
>>979 に対して python ⇔ ruby 変換をしてコピペしたもの。
他人のレスを盗作するしかないぐらいに悔しくなった ruby 厨の仕業。
以前からpythonスレを荒しまくり、自分でrubyコミュニティーのアホさ加減を露呈している人間。
俺がrubyを使うのを止めて、python使いになるきっかけをになってくれた張本人でもある。
完全無視推奨。
以下、オリジナルのソース:
http://pc11.2ch.net/test/read.cgi/tech/1230821097/ | From: [979] デフォルトの名無しさん <sage>
| Date: 2009/02/17(火) 14:18:58
|
| つうかまじでruby厨うざい。
| ruby厨は全員首吊って死ねよ。
|
| python人口の方が多い。
| pythonの方がいろいろできる。
| 言語的仕様は好みの問題。
| 議論の余地無し。
| 以上。
|
| From: [985] デフォルトの名無しさん <sage>
| Date: 2009/02/17(火) 17:21:04
|
| 結局のところ
>>979 が穏便かつ正論だと言わざるを得ないな
わざわざ改変レスで返すって事は そのレスを読んで悔しかったって事なんだろうなw
Python3.0って流行るの?
流行るんじゃあない。 俺たちで、流行らすんだよぉ!
だが断る
PythonもRubyもPerlも さくっと互換性なくすよな
11 :
デフォルトの名無しさん :2009/02/20(金) 20:37:00
Pythonは2.5→2.6→3.0すればいいから他よりまし
2.6 → 3.0の変換と移行ってどのくらい大変? いや、どこが変換できないとかはいちおう調べたんだけど 実際どうなのかなと
まったくの別の言語になってしまった。 Pythonとは言えない言語に変わってしまった。
>>12 アクロバチックなコード書いてないなら、全部自動で変換される(できる)んじゃない?
まず print "Hello" が使えなくなった。 print("Hello")と書かなければならない。 その関係でprint "Hello",len("Hello")の書き方もかわった。 print ("Hello",len("Hello"))と書かなければならない。 これはPython2系ではエラーになる書き方だったよね。 それからxrange()とrange()の統合。 旧range()がなくなってxrange()が新range()になった。 まぁそんな具合かな。あとよろ。
いや、3.0の話題は完全にこっちにかかなければならなくなった。 あちらは2.x系のみ、話題に出してよい。 過去依存に付いては両方のスレにレスを付ける必要がある。
3.0のdisutilsが2to3に対応してるので、
出来る限りブランチ作らないで済むような配慮はあるみたい。
勿論、それぞれのバージョンでのテストは必要になるけど。
3.0の紹介にあるような変更は自動変換で殆ど2to3で自動変換される。
でも、流石に全部とは言い切れない。細かいところは手作業による修正が必要。
特に面倒だと思った所は文字列周り(repr, encoding)かな。
大きな変更は不要なはずなので、テストさえしっかりと書いてれば(大前提)それほど大変な作業にはならない。
python2.6 -3警告オプションでも、2to3でも補足されない変更は python-porting(ML)にも幾つか挙がってる。
* file -> io.FileIO
* doctest内等での文字列の表現。 'foo' -> b'foo'
* os.path.walk
* etc...
後方互換を残し && 読みやすいコードを心掛けたいなら、多少工夫が必要なケースもあるけど、
リファクタリングする丁度良い機会にもなる。
# 3.0対応ライブラリ一覧 @pypi
ttp://pypi.python.org/pypi?:action=browse&c=533&show=all 他のプロジェクトでもtrackerやレポジトリのbranches覗いてみると、patchや3.0移植作業中のものが結構ある。
# djangoの3.0移植の過程のまとめ
ttp://wiki.python.org/moin/PortingDjangoTo3k
>>15 式っていうなら昔からもこれからも式だろw
3.0で文から関数に変わったんだろ
>>18 おお、こうしてまとめてみると移行プランがんばってるなー
なにより3k用ブランチを作らないようにするアプローチがありがたい
21 :
デフォルトの名無しさん :2009/02/21(土) 12:47:40
Java C C++ PHP C# VisualBasic Perl JavaScript COBOL VisualBASIC.net ruby ActionScript ASP.net PL/SQL VBA python ranking 上記キーワードでググって検索結果を読み進めると、 Google エラー 申し訳ありません ... コンピュータ ウィルスやスパイウェア アプリケーションの自動リクエストと類似したクエリが送信されました。 ユーザーを保護するため、このリクエストをすぐに処理することはできません。 できるだけ早くアクセスを復旧しますので、しばらくしてからもう一度お試しください。 お使いのコンピュータやネットワークがウィルスの被害にあっていると思われる場合は、ウィルス チェッカーやスパイウェア削除ツールを実行して、システムからウィルスや不正ソフトウェアを駆除してください。 引き続きこのエラーが表示される場合は、Google の Cookie を削除してから、Google に再度アクセスすると問題が解決する場合があります。 ブラウザ固有の手順については、お使いのブラウザのオンライン サポート センターにお問い合わせください。 ネットワーク全体が影響を受けている場合は、Google ウェブ検索ヘルプ センターで詳細をご覧ください。 ご不便をおかけいたしますが、ご理解、ご対応のほどよろしくお願い申し上げます。
python厨だが、このスレはさすがにいらねーだろ。。。
Ruby厨が、Python3.0をいじくりまわして、重箱の隅をつつきまくるスレになりますので、 それまで少々お待ちください(^^)v
>>21 なんでも出来ると何でもやらされるパターンですねわかります
>>25 なんでも中途半端にやって身につかなさそうな感じするよね。
今日はさむいね
29 :
デフォルトの名無しさん :2009/02/21(土) 23:58:51
いきなりだが python 流行らすこと さんせーい^^
さむいね
o... rz
CとかJavaScriptとかのコメントで /* ... */ というのがありますが、 文の途中でも abc = /* def; */ ghi; みたいに書けますね。 abc = # def # ghi だとおかしくなっちゃうんですけど こういうときはどうコメントすれば良いのでしょうか
/ | | ● ● | / | 彡 ( _●_) ミ まピョーん☆
>>32 同感。笑えばよい。
この場合の文法解釈としては、だね。
「行儀が悪い」=「頭が悪い」ということ。
見てくれる相手に何をしようとしているのか理解してもらえないのなら、
キチンと、正しいと思われるプログラムが「完成するまで」やり遂げること。
さすがに実験台はないだろ
39 :
デフォルトの名無しさん :2009/03/24(火) 11:55:56
ag
********終了********
開始
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
がんばれ。Python3.0
ほしゅ
あるある
46 :
デフォルトの名無しさん :2009/09/29(火) 09:32:40
.
47 :
デフォルトの名無しさん :2009/10/06(火) 23:56:47
PythonはRubyよりもリファレンスがきちんと まとまっていて良いね。
Perlだってそうだろ
perlはsourceが酷い
Javaもリファレンスはしっかりしてる
51 :
デフォルトの名無しさん :2009/10/07(水) 09:27:28
JavaはLLじゃないし
Python始めたけど英語読めないからキツイ
ゆとりはRubyでもやってろよ。
>>52 ソースは日本語使えるしマニュアルも日本語があるだろ?
ここはPython3.0のスレなので、日本語マニュアルは無いんじゃないのかな
マニュアル一度も読んだことないんだけど、だめかな。 オライリーのほうが内容充実してない?
処理中にStringの文字コードを気にしなくていいってのは大きなアドバンテージだと思うけどな いろいろ変わりすぎなのは残念だけど
Linuxのシステムで使われてるPythonはあと何年したら入れ替わるかなー
① 2系列 → 3系列 ② Python → 他言語
かなしー
63 :
デフォルトの名無しさん :2009/10/11(日) 03:23:52
iconv を落としてきて入れようとした git clone ~ とか やりはじめて何がどうしちまった、とそんな感覚を味わ(ry
64 :
デフォルトの名無しさん :2009/10/11(日) 03:41:35
$ automake --version automake (GNU automake) 1.10.2 1.11 じゃないと…ぐぬぬ
66 :
デフォルトの名無しさん :2009/10/15(木) 18:35:12
早く3.x系対応のpy2exeが出て欲しいものだ
py3exeになるのか?
>>68 Python To exe > Python 2 exe > py2exe
だからたぶんそのまま
まぎらわしいから py32exe で
今時32はないだろ。py64exeで
>>57 下のリンクが切れてるんだが、参加するにはどうしたらいいの?
にっちゃんねるでまーけってぃんぐをしようとして失敗した数限りない例のうちの一つ。
>>74 どのように進んでるかが良く分からんので、おまけのPorting Code to Python 3 with 2to3から手をつけます。
Fedora 13で2, 3並列インストールになるようだ。EL6でテクニカルプレビューとして入るかもね。
cgi.FieldStorage のコンストラクタの引数の fp って使えてる? BaseHTTPRequestHandler で受け取った post のデータを渡したら byte に str の操作しようとしたって言われて落ちちゃうわ こんな場合どうしたらいいのよ
multipart/form-data も application/x-www-form-urlencoded もどっちも同じ理由で使えないっぽい
print "Hello world!" が動かなかったので止めました。以上
やめて正解。 本当におめでとう。 おめでとうおめでとう。
みんなで使わなければ恐くない
>>81 止めてよかった。
本当にありがとう。
ありがとうありがとう。
>>60 数年後
more-on-ubuntu@laptop:~$ python\t
python python2 python2.6 python3
デフォルトが3系列になったらどうしよう.....(´・ω・`)
お勉強スレなのに誰も使ってないとか悲惨すぎる
ubuntuだとやりかねないから困る。 でもまぁ普段から、OSはOS、アプリはアプリだと思って OSが使ってるものは別にインストールしてるから大丈夫だけど。
SymPyが使えないよ~。 2to3つかってもなんか動かんし。
printはprint文じゃなくて、関数になってるっていうマジレスしてみる
何で関数にしちゃったんだろうな
言語としての正しさを追求しても使いやすくなるとは限らんのにな。
Rubyの悪口はよせよ
print文で出力ストリームを切り替えたり、末尾文字を入れないようにしたりするのに独特の文法が 必要だったり、区切り文字を指定できなかった。 関数になって、普通の関数の文法で全部できるようになった。 良い事づくめじゃないか。
従来風の print みたいな機能は ipython レベルで 入れてくれれば十分って感じかなぁ まあ別に print() でいいけどさ
関数が必要なケースでは sys.stdout.write() で良かったんじゃね?
writeとprintは違うから・・・ a = 3 sys.stdout.write(a) ってできない。
でも今までも sys.stdout.write() って書いてたなー
numpyは対応する気ないの?
python3でcgi作るのは文字コード関連で苦労しそうな気がした
100 :
デフォルトの名無しさん :2009/12/16(水) 21:06:16
「Python 3 プログラミング徹底入門」発売されてるよー まだ初めてのPython第3版読んでねーから、オレはパスだけど
Python本にありがちなしょぼい内容なんだろうな
ぶっちゃけ文法と思想のお勉強本はもう飽きたお……
本人乙
僕のピクルスもロードされそうです...
みんなの力をオラに貸してくれ! Python3.0に乗り換えたら、Tkinterパッケージの位置が変わったみたいで、 GUIの部分が作れねぇ! 調べても、出てくるのは2.x系統のサンプルコードばかり。 だれか、Python3.0で、ボタンを押してイベントが発生するTkinterのコード を、ここに書いていただけませんか!?
import tkinter as Tkinter
>>108 import tkinter as Tkinter
from Tkinter import *
で、
File "C:\Users\ootuka\Desktop\search\tktest.py", line 2, in <module>
from Tkinter import *
ImportError: No module named Tkinter
でした。困ります(´・ω・`)
オオツカさんよゼロから勉強し直せや
できました\(^o^)/ 神様ありがとう!!
圧倒的なセンスの無さを垣間見た
3.0への移行は、新しもの好き以外は時期尚早とみていいのか? そろそろ移行時期か?
今は移行するな時期が早い
日本人はイカレてるよ。あいつら未来に生きてんな
両方やって好きな方を取ればいいのでは…?
118 :
デフォルトの名無しさん :2010/02/17(水) 02:20:20
いまPython始めるべき? やるとするとPython3になるけど。
3しか念頭にないならやめといた方がいい。 いまPythonをはじめるなら2.6にすべき。
別にただプログラムのお勉強がしたいなら3でもいいんじゃね
プログラムの勉強ったってPythonの勉強を兼ねるんだろからな。 Pythonの勉強となるとサイトのサンプルプログラムとか 既存ライブラリ使ってみようとかあれこれやりたくなるでしょ。 そしてつまづいて「Pythonむずかしー」あるいは「Python糞だな」 ってなるでしょ。2.6ならそうならないでしょ。そういうことだよ。
2.6でもなる奴はなるけどな!
>>122 程度問題の話をしてるんだから
そういうコメントは野暮というもの
122はかわいそうなお莫迦さん。
125 :
デフォルトの名無しさん :2010/02/18(木) 18:44:43
2.6と3ってそんなに違うのか。
>2.6ならそうならないでしょ。 どこが程度の話だよw
122はかわいそうなお莫迦さん。
うん、どう読んでも程度の話だな。
3だけなのか知らないけど、Windowsでリダイレクトからの標準入力が欲しくて、 for line in sys.stdin: pass と書いたのだけれど、普通に実行したときは問題ないのに、 hoge.rb < file.txt と実行したら、sys.stdinがNoneになってるんだよね。 標準入力を読み込むにはどうしたらいいの?
>>130 rbかよ!
python hoge.py < file.txt
ってしてみ?
>>131 > rbかよ!
すまない。ついうっかり癖で、、、
ちゃんと標準入力読めました。ありがとう。
なんで hoge.py < file.txt で読めないのかな バグ?
>>133 Windowsの有名なバグ。
なんか当てたら直ったと思う。
Vista以降だとなんも当てなくても直ってたかもしれない。
Python3kの教えやすさは異常。 DjangoもGAEもいつかは3kがメインになるのかなぁ
>>136 そうだよね。Python2のUnicodeはエッジケースが多すぎて、初心者じゃなくても
切り傷だらけになる。初心者なら脱落してもおかしくない。
print u"あいうえお" はできるのに raw_input(u"あいうえお") ができないとか、
os.listdir(u'.') しても filesystemencoding でデコードできないファイル名は
バイト列としてリストに入るとか。
# 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)
は?
Python3.xで俺が期待したこと ライブラリの命名規則を統一してほしかった...orz classmethod, assertEqual, set_autholizer orzorzorz
標準に関してはしたと思ってたのだが……
142 :
140 :2010/03/01(月) 00:51:30
Rubyがここら辺が完璧なだけに痛い。 2.x -> 3.xのタイミングでしかできないような変更だからまじで悲しい。 欧米人はあんまり気にしないのだろうか?
非標準なライブラリ使えばすぐに汚染される程度だからな だんだん慣れて来たしもうどうにでもなーれ
コーディング規則で一応決まっていたりしないの?
過疎ってるな。
>>144 これから書くなら、できるだけ区切らないorアンダースコア使えってPEPに書いてあった。
Javaとかから持ってきたライブラリだとhasKeyみたいに、大文字区切りになってる。
命名規則を標準でがっちり決めてくれれば、それをエディタの機能強化に回せるんだろうけどな。 標準から外れるとエディタ支援を受けれなくなるから、みんな同じような書き方になって見やすくなるはず。
148 :
デフォルトの名無しさん :2010/04/05(月) 04:03:46
一体いつになったら主流になるのか・・・
まだ2.7も出てないし 少なくともまだ1年はかかると思う
2.5,2.6とか出さないほうが良かったのかな。 地デジと同じでズルズル先延ばしで、移行期間があっても移行しない。
2.4 は糞だから 2.5 出したのは正解だと思う 2.6 は微妙
152 :
デフォルトの名無しさん :2010/04/05(月) 19:05:54
3.xの日本語リファレンスが欲しいのに入門書ばっかだ
日本語の解説サイト教えろよゴミども
154 :
デフォルトの名無しさん :2010/04/16(金) 23:15:45
もっと簡単なの出せよ 無能かよ
>>155 これで分からなかったら、何見ても分からん。
Rubyでいうところのredoが欲しんだけどないかな。 while True: のループで代用しないとだめですかね。
任意の数より大きい数を表す定数みたいなのない? なにかの最小値を求めるときに下のような処理はよくあるとおもうんだけどminvの初期値に設定したいんだ。 minv = すごくでかい数 for x in seq: v = func(x) if v < minv: minv = v min(func(x) for x in seq) で常にかければいいんだけど、書けないこともよくあるので。
sys.maxint とかなかったっけ?
float("inf") ?
>>160 3では削除されたし、2でも多倍長整数の最大値はないよ。
大抵の場合はそれで十分だと思うし、なくても
HUGE_VAL = 2**31
とでもしとけば、大抵の用途では十分だと思うけど。
>>159 型が重要でないなら、
float('inf')
で、不動点小数型の無限大が得られる。
float('inf') > 2**10000000
---> True
整数型であることが重要なら、クラス継承して比較演算子を書き換えるか。
Python3ってもう使っても大丈夫?
>>164 Python2の標準ライブラリー相当品は3でもOKなんだよね?
その他の3rdPartyライブラリーは殆ど使わないんだ
>>165 基本的にはそうだけど、いくつかは廃止・統合されてるから標準については公式行って確認するといいよ。
サードパーティーの使わないなら、対応状況はかなりいいはず。
>>159 minv = func(seq[0])
>>167 それ、seqがコピーしづらいイテレータだったとき面倒にならない?
for i, x in enumerate(seq): v = func(x) if i == 0: minv = v elif v < minv: minv = v
なんか違和感あるなw こっちのが分かりやすいか for i, x in enumerate(seq): v = func(x) if i == 0 or v < minv: minv = v
Keep it simple, stupid!
python3でグラフ書くのに何使ってる? やっぱりgnuか?
python2.xでmatplotlib
175 :
デフォルトの名無しさん :2010/05/12(水) 00:07:01
3.xのライブラリが2.x並になるのって、あと何年かかるんだろうか
googleで対応してほしい
最近python関係の書籍が色々と出てるね。 python2.6.2って・・・。
う、うん……(´・ω・`)
179 :
デフォルトの名無しさん :2010/05/18(火) 09:44:30
なんで俺たち3.xなんか始めちゃったんだろう……
しかし今更後戻りなど…
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度実行されないよう最適化してくれるのかな?
そんな最適化してくれるコンパイラはCでもないと思うぞ
どうもスクリプト言語は互換性を一度ぶった切りたくなるものみたいだなぁ Rubyは一見その点では有利そうなんだが、実際にはバージョン間の互換性がさっぱりで、 単に同じこと(過去の微妙な仕様の切り捨て)を小分けに毎回やってるようなもんだから ある意味余計に悪いし まぁでも、俺は当分3kは使わないけど、いずれ移行するような気はするけどな
いつまでも保守的ではいられないのさ
CやC++も最初のころは仕様がコロコロ変わっていたような覚えがあるのだが
いまでもコロコロ変わってますが
せめてnumpyがないと移行できないなー
188 :
181 :2010/05/20(木) 00:49:13
>>182 やぱCでもgcc:O2でもfuncの中身までは解析しなかった
変数の出現が関数外ではありえない、みたいな
extern宣言が出来ると、イケチャウ雰囲気あるんだけどな~
動的スコープだとほんと無理なのかな
誰か天才いないかーーーー
>>181 else のときは
minv = minv
になるから
アホなコードだなぁ
と思う
>>181 こういうコードはダメ。Ruby厨に惑わされるな。
>>159 の
> min(func(x) for x in seq) で常にかければいいんだけど、
> 書けないこともよくあるので。
これってどんなとき?
>>159 reduce使え
min(seq)は
reduce(min, seq)と同じ
その手のやつは大概適当なfを用意してやれば
reduce(f, seq)
に書き換えられる
ストリームデータから最小値を見つけるとか。 ファイルシステムを捜査しながら最大サイズのファイルを見つけるとか。 かな
>>193 それminで何でだめなんだ?
min()はiterable受け取れるけど
うーむ
>>189 >>190 俺も同意だと思ったけど、内部的にはmin関数もまったく同じなんだよね。
趣味の問題かな?
197 :
デフォルトの名無しさん :2010/05/21(金) 08:11:23
初心者のお試しレベルなら問題ない パフォーマンス考えたら避けるべき
関数型言語ならletする場面だから、 Pythonでは潔く2行にするのが良いんじゃないの
unko
>>140 パイソンってこういうコーディングルール統一されてると勝手に思ってたけど、汚いんだな
統一されてないのは書いてて気になるし、推測でメソッド名書けなくなるから、やっぱりそういうところちゃんとしてるルビーのほうが良さそうか
理路整然としてるイメージを勝手に持ってたけど、rubyのほうがそゆとこしっかりしてんのかな
ああ、Ruby最高だよ
>>200 classmethod みたいな、1つの単語と呼べるものは、アンダースコアで区切らない。
set_autholizer みたいな、複数の語でなる句は、アンダースコアで区切る。
JUnit みたいに、別のリファレンスに従う設計になっているライブラリは、そのリファレンスの命名に従う。
理路整然としてるけど?
なるへそ
204 :
デフォルトの名無しさん :2010/06/02(水) 21:48:16
なんかpython3始めたいのにまともな書籍が売ってない。 いつになったら普及するのよ。
205 :
デフォルトの名無しさん :2010/06/02(水) 21:49:45
java-jaの人が執筆したJython本で我慢しろよ
208 :
デフォルトの名無しさん :2010/06/05(土) 05:47:05
>>202 > 理路整然としてるけど?
で、結果としてばらばらのネーミングルールになってると。
馬鹿か。
まあ、馬鹿は言い過ぎと思うが、
>>202 の理由が正しいとしても結果として
統一されてないのは事実だし、おれも
>>200 のようにいまいち汚いと思う。
212 :
デフォルトの名無しさん :2010/06/09(水) 05:54:43
べき集合をスマートな一行で書く方法ないかね
できたと思ったらまともなのが出てた。 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])])
今年出たpaython本が2.6対応なのにはワラタ。
>>216 Python3の本もたくさん出はじめてるよ。
どの本がPython3用になって欲しかった?
ぶっちゃけ入門レベルで、2.6も3.0もたいした違いはないし、 もっと他に気を掛けることがあるだろうに。
なにごとも初心者は、自分の進め方が正しいかどうかで迷ってしまうからねぇ。
そういえば、Pythonスタートブックっていう書籍が出たけど、 あの手の書籍は最新python3で出して欲しかったな。 初心者向けみたいだし、プログラミング入門者でも分かりやすい内容だったから。 仕事で使うのではなく、ただなんとなくPython始めたいような人は 最新環境で学ぶべきだと思うよ。 俺らが3の仕様変更を知らされたときに受けた失望感を 初心者にまで与えるのはあまりにも酷だろ。 それでも2.Xが優勢だということは、 おそらく3は当分普及しないってことだろうね。 たぶん日本ではGoogleのGo言語のほうがpython3よりも先に普及すると思う。 どうしてこうなった。
>どうしてこうなった encode/decodeのせい python3に期待
>>220 日本でGoが普及するか?まだC#の方がありうると思うぜ。
それ以前にGoとPythonの守備範囲も若干違う気がするし…
あるうるも何も、C#はとっくに普及しとるがな 特に国内ではPerlやPHPならともかく、Pythonとは比較にもならんだろ
>>223 そんなに普及してんの? Pythonと似たり寄ったりだと思ってた。
LLスレにでも移動して語ってくれ。
日本の不幸はRubyっつーガラパゴス言語が作者が日本人だってだけで国内で(ry
ガラパゴスではないだろ
つーか国内で別にそんなにRuby使われてないだろ Pythonがそれ以上に使われてないだけで
コアの開発に関する議論が日本語で行われていて世界からはブラックボックスに見えるという 時点で、ある程度のガラパゴス性をもってるよね>Ruby
ruby-coreの開発に関する議論は英語だが?
>>230 そうなん?スマン。
MLでオープンな議論もするけれど、重要なことはMatzを中心とする一部の日本人が
エイヤで決めるってどっかのインタビューで答えてたと思ったから。
Pythonの話しろ!
pythonから発展した話題だし、少しくらいいいんじゃね? ところで、お前らpythonなにに使ってる?
>>233 電卓代わり、CGI、C/C++で書くほどじゃないプログラム全般。
まともに使い方知ってる言語がC/C++とPythonしかないから、ある意味で楽。
>>233 領土問題と同じで、少しくらいと譲歩してたら乗っ取られる。
領民あっての領土だから大丈夫
pythonだと作るのが非常に楽なので、python常用して python2だと日本語が扱いづらいので、python3導入して 研究で最適化アルゴリズムとか強化学習のプログラム作ったけど 先輩のc言語で書かれた同じ最適化アルゴリズムで作った巡回セールスマン問題と 実行速度比較したら、10倍以上差があるんだが・・・先輩のが数分で、自分のが数時間 読みやすさ重視でプログラム書いたからループ内で不要な処理とかかなりしてる気もする python3のコンパイラないかな
python3にしか対応してない素晴らしいモジュールを作れば移行が早くなるかも!!
>>238 あったとしても、多少マシになるくらいでCにはとてもかなわないと思うよ。
psycoって3.x対応してないよなぁ。
10倍ですむならマシだな ものによっては100倍ぐらい差がつく
>>240 多少でもマシにしたいほど時間がかかる・・・
たしか対応してない
先輩が数十分、自分のだと1日とかそんな感じ
Python2 にもどして、 PyPy 使うと良いよ。 今日 PyPy-1.3 がリリースされたし。
python3ってctypes使えますか?
使える
ctypesいじくり中。 pointerとbyrefってどう使い分けるんだ? あとlistをそのまま配列としてcに渡したり出来ないのね。 内包表記でばーんと渡したりって訳にはいかないね。
とりあえず全部PythonでつくってProfilerかけて時間のかかる処理だけSWIG+Cで書いてるけど このオーソドックスな方法は素晴らしいっすよ
Cythonも素晴らしいよ。 ちゃんとPython3にも対応してるし。
#! /usr/bin/env python # -*- coding: utf-8 -*- import datetime def sample_loop(n): L = [] for i in range(n): L.append(i) return L def sample_comprehension(n): return [i for i in range(n)] d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) sample_comprehension(50000000) d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) sample_loop(50000000) d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) 実行結果 2010-06-27 15:19:23 2010-06-27 15:19:46 2010-06-27 15:19:46 Python3だとリスト内包表現って遅いの?
こうしないと同じ条件にならないんじゃ? def sample_comprehension(n): L = [] return [L.append(i) for i in range(n)]
CPythonって、リストの実装って配列だっけ?双方向リストだっけ?
>>250 sample_comprehensionとsample_loopの順番を入れ替えてみても結果変わらない?
32bit環境だと50000000要素だと、配列なら約200MB、双方向リストなら約600MBのメモリ確保が必要になって、
それに時間がかかったんじゃないかなぁ。
一旦確保したら、ひとつめのsample_comprehensionで作ったリストはGCの対象になるから、新たにメモリ確保の必要がない。
だから2つめのsample_loopは早かった、と予想してみる。
>>252 適当なサイトのソースをコピペして実行しただけだから深く考えてなかった
それでやってみる
>>253 順番入れ替えても変わらなかった
>>251 そうそうこのページのソースをコピペして実行した
人が居たから、かなり適当に書いた
だからtimeじゃなくdatetime使ってたり
#! /usr/bin/env python # -*- coding: utf-8 -*- import datetime def sample_loop(n): L = [] for i in range(n): L.append(i) return L def sample_comprehension(n): L = [] return [L.append(i) for i in range(n)] d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) sample_comprehension(50000000) d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) sample_loop(50000000) d = datetime.datetime.today() print (":",d.strftime("%Y-%m-%d %H:%M:%S") ) 結果 2010-06-27 21:01:04 2010-06-27 21:02:11 2010-06-27 21:02:12
>>252 正直その糞コードで何をしたいのか全然わかんねえ
list.append()はNoneを返すから
それって結果は
[ None ] * n
になるよな
#! /usr/bin/env python # -*- coding: utf-8 -*- import datetime n = 50000000 d = datetime.datetime.today() print ("for文リスト作成開始:",d.minute,"分",d.second,".",d.microsecond,"秒") L = [] for i in range(n): L.append(i) d = datetime.datetime.today() print ("リスト内包 :",d.minute,"分",d.second,".",d.microsecond,"秒") L = [] L = [i for i in range(n)] d = datetime.datetime.today() print ("終了 :",d.minute,"分",d.second,".",d.microsecond,"秒") for文リスト作成開始: 51 分 11 . 930000 秒 リスト内包 : 51 分 53 . 554000 秒 終了 : 52 分 9 . 919000 秒
糞コード貼り禁止
>>256 ほんとだ。すげー、ループはえー、と思ったらインデントを
def sample_loop(n):
L = []
for i in range(n):
L.append(i)
return L
にしてた(・ω・`)
2.5で動かしたからrange()がイテレータじゃなくてリスト返すおかげで数字的にリアルだった。
にしても、今時のCPU速いな。Pen4だとC++で同じような処理書いても2秒かかったぞ。
#include <vector>
#include <iostream>
class Range{
private:
int end;
int now;
public:
Range(int n) : end(n), now(0){}
int next(){return now == end ? -1 : now++;}
};
int main(){
Range range(50000000);
std::vector<int> l;
int i;
while((i = range.next()) != -1) l.push_back(i);
return 0;
}
>>252 L.append自体をすることが目的ならそうだけど、
L.appendの副作用でリスト作るか内包表記でループ作るかどっちが速いかを調べたいなら元々のであってる
Cyhonの使い方を勉強しよう まだほとんど調べてないが、使い方がよくわからない てかトイレ行きたくて集中出来ない
先に下痢を治せ
結局ある程度調べたつもりだが cython全然わからんとです 超初心者スレで教えてもくれるかな
Python3について調べてたらsuper()がキモくなってて吹いた。
http://lucumr.pocoo.org/2008/4/30/how-super-in-python3-works-and-why-its-retarded ↑にも書いてあるけど、関数定義中の__class__って何なん?第一引数をスタックフレームから取るっておいおい。
以下のクラス定義でFoo()foo()すると
class Foo:
def foo(self):
print(locals()) #=> {'self': <__main__.Foo object> at ...>} # __class__いません
class Foo:
def foo(self):
print(__class__) #=> <super: <class 'Foo'>, <Foo object>> # ちょww
_super = super
class Foo:
def foo(self):
_super() #=> エラー # ちょww
いくらなんでもこの挙動はキモすぎだろ。たかがsuper()のためだけに。
最後のとか原因わかったとしても、難すぎる。
全くPythonicじゃない。こんなJavaに媚びるような仕様。
Guidoパパ曰く: > This whole movement to condemn super because it's not "pure" strikes > me as wasted energy. That's my last word.
267 :
265 :2010/07/08(木) 01:08:18
>>266 英語力不足で意味が掴みづらいんだけど、
super()への批判は聞き飽きた。もう知らん。by Guido
って感じ?なんかGuidoらしくないなあ。俺みたいに批判してる人は
なんで今までわざわざself書いてきたんだろう、って気持ちになるんだよ。
通常の関数定義には__class__は現れなくて、メソッド定義中では
それが現れるってええ?メソッドがただのclass内で定義された関数っていう
整合性のためにself書いてたんだよって。
もちろんそれ以外にもselfなければデコレータがこれ程強力に
使われることもなかっただろうし、他にも利点はあるから
selfは必要だけど、それでもselfが必要な重要な理由の一つ
が消えちゃったんだ。
メソッドの最初の引数にself付けるのも__class__が導入されたのも何が嫌なのか全く分からん
Ruby そんなに嫌なら自分で新しい言語作れば良いのに Python 我慢して使えよ PHP 祈りなさい Perl シラネ
>>268 うーん。selfがキモくないと思うなら(俺はキモくないと思う)、
__class__はキモいと思えるはず。
__class__導入によって、selfが2.xに比べてキモくなったって話。
たぶんキモいのは多くのPythonistaが認めてる。さっきのサイトの書き込みとか見てると。
でも、それでもDRYなコードを書けるようにしたかったんだと思う。
あと、__class__って属性の方の__class__じゃないよ。ローカル変数の__class__ね。
属性の方は別にキモくないよ。
一応コードで説明する def foo(self): pass class Foo: def foo(self): pass このとき、fooとFoo.fooが全く同じだったのが今までのPython。 Foo.fooはFoo名前空間の中にある「関数」に過ぎない。 Fooがインスタンス化されて、次みたいに呼び出される瞬間だけメソッドになるのが、 Pythonの実装方法 x = Foo() x.foo # これはメソッドになる。(xが第一引数になる) でも、Python3では、fooのローカルには存在しない変数__class__がFoo.fooの中に勝ってに 入ってる。 まあ、それだけの話だから、Pythonのオブジェクトシステムに興味ない人にとってはどうでも いいかもね。俺はキモくてしかたないわ。
>>270-271 ありがとう。意味が分かった。
確かにこれはキモい。
けど、キモくしてまで__class__を入れる理由ってあるの?
無引数super()の実装に__class__が必要。 Pythonには自分を呼び出した元の関数のローカル変数を参照する機能が、 CレベルでもPythonレベルでもある。 __class__があれば、super()内から、クラスとselfが参照できるから、 そのクラスの__bases__からスーパークラスを参照してそれとselfを結びつけられる。 無引数super()が必要な理由は、DRYのためだけだと思う。確かにLLなのにDRYの点で Javaなんかに負けるのは許されないことだったのかもしれない。 言語仕様を汚すぐらいならキーワードにしちまえみたいな意見もあったみたいだけど、 多重継承のあるPythonでは引数有りsuper()もサポートしたいし互換性あるし みないなところで、こうなった。 俺はこのsuper()は関数に見せかけたキーワードだと思うことにした。 そうすれば、x=superとかしたときにx()が動作しないのにまだ納得がいく。 さて、再びROMるか。
>>273 なるほど。重ね重ねありがと。
self.super()だったらそんなにきもくないのに(・ω・`)
早くコンパイラ作って下さいお願いします 自分の作ったプログラムが終わるのに、後1年かかるとか待ってられない
それはプロファイル取ってチューニングして、という常道はすでにおこなっての話?
つ Cython つ PyPy-c-jit
>>277 常時してるよ
かと言っても、シミュレーション行わないといけないから
ある程度早くなった段階で、実行して、実行中に改善して、
次、実行するときに少し早くなったのつかって、ってのを繰り返してる
>>278 Cythonは使ってる
下のやつは初耳調べてみます
プログラムをオブジェクト指向みたいに書いちゃったおかけで、その部分をCythonに直すのがよくわからない
あと、Cythonの関数?を呼び出す回数が多いから、まだ時間がかかる
全体的に関数使いすぎだけど、拡張性を高くしときたいからこれをinline化するのも何かあれな気もする
速度を早くすることに時間を費やしてばかりいられないのと、
自分が低脳なせいで改良の余地はまだまだあるのに、大して出来てない・・・って状況です
Cythonなら、Pythonのコードの8割がそのまま動く(ジェネレータとかは動かない)し、 defをcdefに書き換えるとPythonの関数オブジェクトを作らず直接C言語の関数になる から関数呼び出しも高速になる。
>>280 cdefはpyxの中でしか呼べないから、
pyからpyxのdefを呼んで、pyx内で、cdefを呼んでる
うまく説明出来てないけど、今こうなってる。
全部pyxにしちゃえばいいんだけど、そうできないのがいくつかある
素直にSwigこれ最強
boost.python ....
結構色々とあるんですね まあ、しばらくはCythonしか手を出せないんですが… Cythonのオブジェクトが良くわからん cdef class abc: def aaa(self,val): aaa_f(self,val) cdef aaa_f(self,val): self.A = 0 self.B = [] self.C = val aaa_f がありませんだってお
>>284 CythonじゃなくてPythonでもそれはエラーになるだろ…
>>285 Pythonだとこんな感じ
#abc.py
class abc:
def aaa(self,val):
self.A = 0
self.B = []
self.B = val
特に実行エラーとかもなく普通動いてる
#main.py
neko=abc.abc()
neko.aaa(val)
こんな感じかな
>>290 よくわからないです…
#main.py
neko=abc.abc()
neko.aaa(val)
で、
#abc.pyx
のaaaを呼び出して
abc.pyxで、aaa_fを呼び出してる
cdef class abc:
cdef:
object A
とかも必要なのか…
class Foo1: def aaa(self): self.bbb(0) def bbb(self,val): self.x = val class Foo2: def aaa(self): bbb(0) def bbb(self,val): self.x = val class Foo3: def aaa(self): Foo3.bbb(self,0) def bbb(self,val): self.x = val どれなら動くと思う?
ああなるほど Foo1かな Foo3もかな
ここまで互換性が無いのに、仕様変更するのってが良い 規制で雁字搦めになって身動きが取れなくなってたりしなくて これからも、互換性気にせず、ドンドン変更して欲しい その上で、変換するものがあってくれれば
Python3のタイミングで変数の型指定(静的型付け)を導入してくれれば明るい未来が開けたのに・・・
Javaでも使ってろ
型指定すると何か良いことあるの?速度以外で
>>299 潔癖(だと思い込んでる)Javaプログラマを取り込みやすくなる、とかw
ないな。JavaプログラマはJavaしか書こうとしないし、それしかできないw
>>301 コンプレックスというより、バカで使えない、というトラウマがあってw
一山いくらのドカタとハッカーを一緒にするな!
このスレ見てるとPythonももう終わったなって感じだな
__class__きもいんだけど。
どうでもいいニュース: 今日、Arch Linuxの/usr/bin/pythonがpython3になった。
Arch使ってるような変態じゃなくて玄人連中は別に困りそうも無いから問題無い
debianは未だに(ry
OSが勝手に3採用するのは困る
どうせ2もpython2とかいう名前で入れられるんだろ?
さっさと3に移行しろよクズども
Python3の旅はこれからだ! グイド先生の次回作、Python4にご期待ください。
Djangoが使えるようになったら移行する > 3
Python素人だけれども、 ユニコード文字列とかのややこしさがなくていいなと思って3.1をインストールしたんだが、 間に合ううちに2.7に切り替えるべきか? それともどうせ通る道と受け入れるべきか?
必要になったら2.xをいれればいいさ
>>314 3rdパーティのライブラリが使いたくなったらPython2.xへ。
必要になったら3.xをいれればいいさ 5年後ぐらいにはそうなるよきっと
Google App Engine(とWSGI準拠のアプリケーション)が 3に対応したら必要性で周りのライブラリも加速するんじゃねぇかなーと思う
3.2から一気に加速するよ。
2から3に引っ越すメリットってなに?
自己満足
俺ってすごい感
文字コード関連のエラーを見ないで済む
嘘つくな。 UnicodeDecodeErrorは相変わらず出るぞ。
ということはつまり2から3に引っ越すメリットってなに?
将来にわたって比較的安心につかえる。 現時点でのメリットはそれしかない。
>>326 クククッ, ハタシテ ソウカナ となりそうで怖い
初心者ならいいけど、 ある程度の経験者でUnicodeDecodeErrorと格闘してるような奴は、 基礎を固めずに、行き当たりばったりでプログラムを書いてるんでしょ。
いちいち u'' を書かなくて良くなったんだってね 2.x の unicode = 3.x の string 2.x の string = 3.x の bytearray っていう認識で桶?
俺はその認識。
332 :
デフォルトの名無しさん :2010/10/24(日) 09:25:20
>>329 そういう基礎や定石的な対処法って何に書いてあるものなんだ?
Python3.1使ったWEBを作ってるんですが 次のようなエラーが出て困ってます。 UnicodeEncodeError: 'ascii' codec can't encode characters in position 178-180: インタープリターで実行すると出ないエラーです。 ブラウザから実行したときに出るエラーです。 処理としてはDBアクセスして検索SQL実行して結果セットをループで回してXML形式の文字列としてクライアント側に返すといった内容です。 原因がわかれば教えてください。
原因はおつむの悪さ
馬鹿には無理
>>335 文字コードは、省略してもいいって絶対の自信がない場合は面倒くさくても指定しろ。
>>335 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
のように、sys.stdoutを置き換えると良いよ(utf-8の部分は適宜置き換えて)
>>335 基本的に、文字列を出力するときはエンコードしなきゃいけない。
にもかかわらず、コンソールで実行するときに問題が表面化しないのは、
Pythonが端末のエンコーディング(例えば'UTF-8')を sys.stdout.encoding に自動で設定してくれているおかげ。
これによって、print "うんこ" は、sys.stdout.write("うんこ".encoding("utf-8"))として実行される。
しかし、CGIで実行する場合はそんな支援はしれくれず、sys.stdout.encoding はNoneになっている)ので、
print "うんこ" は、sys.stdout.write("うんこ".encoding("ascii"))として実行
されてしまい、エラーとなる。
まちがえ。encodingじゃなくてencodeね。
342 :
335 :2010/10/24(日) 15:15:20
encoding('UTF-8')を付加してみたんですが、今度は違ったエラーが出てきました。 修正前)testclass.filehandler.write(return_str + "\n") 修正後)testclass.filehandler.write(return_str.encode('UTF-8') + "\n") コンソールで実行したら 次のエラーが出ました。 <class 'TypeError'>, TypeError("can't concat bytes to str",) 型変換処理が必要という内容だと思うんですが bytes型→str型には、どうやって変換するのでしょうか?
ggrks
>>342 そういう変な(中途半端な)場所じゃなくて、I/Oの直前直後に
変換かけるようにしなよ
文字コードについて知らない・知ろうとしない人は Python3になっても苦労するだろうね
>>342 文字列("\n")とバイト列(return_str.encode('UTF-8'))を結合しようとしてるからそうなるだけ。
最初に結合させてから変換すればいい:
return_str = return_str+"\n"
testclass.filehandler.write(return_str.encode('UTF-8'))
文字コードって何?
ggrks
2ch は心の荒んだ人の溜り場だな
350 :
デフォルトの名無しさん :2010/10/25(月) 17:54:02
dive intoはいろいろ問題があるから非推奨だって話を読んだことがあるけど。
英語の文献まで手を広げれば色々あるから 自分に合ったやつを選べばいいんじゃない?
主要モジコードのISOの番号を全部暗記していた時代が僕にもありました。
iso-2022-jpなら知ってる
Windowsでウインドウ列挙して指定のウインドウをキャプチャして その画像をメールで送りたいんだけど、 ・ウインドウの列挙 ・画像のキャプチャ はどうすればいいですか? ライブラリ有りますか?
ctypes
pywin32
Python3.1でPOSTデータの取得の仕方で質問です。 下記のコードで値が取れないのですが、問題があれば指摘ください。 import sys import cgi def application(environ, start_response): form = cgi.FieldStorage() user_name = form.getvalue('txt_username', 'Unknown') (略) この「txt_username」の入力値が拾えません。
>>358 mod_python環境だったりしない?
>def application(environ, start_response):
CGIとWSGIは別物だぜ
numpy-1.5.1rc1.win32-py3.1-mkl.exe たまたま見てたら今日出たのか
matplotlibがないとなぁ
3.xのリファレンスは翻訳してないのかえ? 別に要らないけど。
死にたい。
逝くならクリスマス前にな。
訳を聞こうか
流行る気配すら無いんだが大丈夫なんかな 10年くらいで移行できたらいいなみたいな感じらしいけど
Python2.8が出るに1ユーロ賭ける
Python2.10が出るに1ジンバブエドル賭ける
py2exeとwxPythonが3系に対応してくれれば乗り換えるんだが。
Py2exeって対応する予定ないのかな もう自分でやるか
Python3.2から本格的に移行が始まるよ。
python 3.-1 とかが出そう
Python3に、Python2互換モードを導入すればよろし。 from __ancient__ import print
wxPythonが3系に移行しないのは、何か技術的に難しかったりするの? それとも政治的な理由(ようは作者が3系の流れに反抗しているとか)? 同じC++で作られているQtのほうが意外と早く対応したんで この温度差にちょっと違和感を感じている。 単に「時間がないマンドクセ」ならまだいいんだけどさ。
3.2がでるまでは様子見じゃない? 言うなればそれまでは3β版みたいなもんだし
3.2ってそんな感じのリリースなん? いや、単なるエンジンのバージョンアップ待ちなら 気長に待つんだけどさ。 Qtもそうだったんだけどコミュニティが分裂したりするんじゃ 嫌だなあなんて思ったんで、ちょっと聴いてみた (あっちはGPL脱却が目的みたいだけど) 気に入らなけりゃフォークしちまえってハッカー文化も嫌いじゃないけど 俺はたんに使うだけの利用者なんで、あんまり分裂されてもうれしくないのだw
>>380 3.2はそんな感じのリリースだし、Pythonの開発者は分裂していない。
3.2がリリースされてから有名プロダクトの3系対応が一気に進むはず。
>>381 そっか。トンクス。
いま公式見たら3.2βでたのが2010年の12月で2011年2月がファイナルリリースか。
それで本当に移行が進むんだったらうれしいな。
慣れてきたら、なんだかんだで3系のほうが使いやすいし。
log = open('log.txt', 'a') print >> log, x, y, z print a, b, c python3でこれはどう書けばいいのでしょうか?
import logging logging.basicConfig(filename='log.txt', level=logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(logging.Formatter('%(message)s')) logger = logging.getLogger('root') logger.addHandler(ch) logger.debug('%s, %s, %s' % (x, y, z)) print(a, b, c)
>>383 log = open('log.txt', 'a')
print(x, y, z, file=log)
print(a, b, c)
早くコンパイラ出来ないかな~
Python3.2 rc2が明日だな
明日は SaaSes 回線増強の日
python3.2実効速度遅いな
3.2マダァ?(・∀・ )っ/凵⌒☆チンチン?
>>392 もうあまり覚えてないが、今出てる3.2rc2 と 3.13?で同じ簡単なコードを書いて実行速度計っただけ
リストへの代入かなんかだったような…
複数回実行して比較したり、n回試行の平均出したりしたら、9割の確率で3.2rc2のが遅かったってだけ
正式なベンチマーク使ったり、色々な処理で比較したりはしてない
3.2finalや、その次のバージョンとかで早くなる事に期待
3.2
206 デフォルトの名無しさん [sage] 2011/02/23(水) 00:30:05.97 ID: Be:
かってに、google に甘い期待をしているんだけど、
ttp://sourceforge.jp/magazine/11/02/22/104206 これとかを見ると、google 的には、
C++ は Web アプリみたいにして、
Android に持っていくつもりなのかな。
プログラマのヘマでセキュリティーホール作られるよりは、
制限あっても、sandbox 内で…って感じで。
Javaが選ばれた理由も、そんなんじゃなかったっけ?
C++は好きだけど、あのビルド時間には耐えられないものがある
pythonの内包表記をHaskellみたいにしてくれないかなぁ 三項演算子といい、ところどころ書き方がきもいんだよな。
> Haskell について一言いわせてもらう。 > こんな記号列が出てくる言語をオレはまともなプログラミング言語だとは思わない > > f _ _ (_:_) [] = [] > > C++ や Perl や BrainFcukと同レベル。 以上。 ってGuidoが言ってた。
>>398 _が何でもいいって意味だってことはHaskellの序盤で習うことなので
それは読もうと思えば簡単に読める。書いた人が後から見て意味が分からないということもない。
しかもその文だけで関数fが定義されるわけじゃなく、下に具体的な記述が続く。
まあhaskellが読みやすいとは俺も思えんけど。記号列とかじゃなく、高階関数の多用で読みづらくなってる。
whatが分かるようにはなってるかもしれんけど、その関数に慣れてない人が見るとhowが分からない。
reduce()が死んでmap()filter()が生きるってマジなん?
Python 3.2 (r32:88445, Feb 21 2011, 19:50:46) [GCC 4.3.4 20090804 (release) 1] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> reduce Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'reduce' is not defined >>> import functools >>> functools.reduce <built-in function reduce>
Python3.2遅すぎww 計算量の多いシミュレーションを実行したら Python 3.1.3 587.127000093s Python 3.2 901.7620000839233s 両方ともCython-0.14.1を利用 1.5倍も遅い 全く同じプログラムで乱数のシードも同じにしてるのにシミュレーション結果異なるし 多分、Cythonの型変換とかで切り捨てられる精度が変わったんだろうが
>>402 そうだけど、cygwin 使っている時点で遅いわな。
コマンドプロンプトとMinGWだけど
う~ん
Python3.3rc1がでるね
う、うん……(´・ω・`)
PILはまだかね
PILは対応してるよ
もうPython3.3が出るのかと思ったら、来年か
python3に対応してるGUIフレームワークおしえてください
文字をビットに変換って出来ますか?
>>413 bin(ord('a'))
こうゆうこと?
>>414 ありがとう
これを文字列に対して使いたいんだけど、一気に出来ない?
やっぱりforで1個ずつやるしかないかな?
''.join([bin(ord(c)) for c in "abc"]) 結局for文使うか
"".join( [bin(x)[2:] for x in map(ord, "abc")] )
418 :
1 :2011/07/03(日) 15:40:09.90
ログ復活
Python3でGnuplot.pyって使えんの?
3.x と 2.x は文法に互換性がない
matplotlibじゃ駄目なのか?
matplotlib って 3.0 に対応したの?
2chでpython始めるなら2.xと3.xのどっちがいい?って聞いて3.xを勧められてもう二年近くなるが、 サードパーティのライブラリはいつ充実するの?
matplotlibみたいな大物に目をつぶればそれなりに
openglはどうなってます?
429 :
418 :2011/10/19(水) 23:14:47.30
WSGIとPython3が どうたらこうたら
Windows7 64bit OS Python3.1.4でCython-0.15.1を利用
ttp://lycopersin.blogspot.com/2011/04/64bit-windowscython.html ttp://wiki.cython.org/64BitCythonExtensionsOnWindows このあたりを参考にしてやった結果
C:\Program Files\Microsoft SDKs\Windows\v7.0>set DISTUTILS_USE_SDK=1
C:\Program Files\Microsoft SDKs\Windows\v7.0>Bin\setenv /x64 /release
>The x64 compilers are not currently installed.
>Please go to Add/Remove Programs to update your installation.
>.
>Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.0.
>指定されたバッチ ラベルが見つかりません - Set_x64
>
>C:\Program Files\Microsoft SDKs\Windows\v7.0>
と怒られて、無視してcythonを利用しようとすると、
>cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python31\include -IC:\Python31\PC /TcC:\Python31\Sc
>ripts\Cython-0.15.1\Cython\Plex\Scanners.c /Fobuild\temp.win-amd64-3.1\Release\Python31\Scripts\Cyth
>on-0.15.1\Cython\Plex\Scanners.obj
>error: command 'cl.exe' failed: No such file or directory
でエラー
本を読む習慣が無いひとには おおまかに次の3つのタイプがあります 1.目が悪いひと 2.頭が悪いひと 3.文盲(識字出来ない) 頭が悪いひとより文盲の方が深刻です 普通は漢字が読めないレベルとかを想像しますが アルファベットですら読めないひとが日本には多くいます
一人のジャイアンを救うごとに一人のエックスが犠牲になっていく……
すいません誤爆しました
Python3.2より3.3のがだいぶ早いな でも3.1のがさらに早い 適当に書いたプログラムで試しただけだが
440 :
デフォルトの名無しさん :2012/05/29(火) 23:26:13.48
3系の日本語のリファレンスとかってまだないんだっけ?
442 :
デフォルトの名無しさん :2012/06/06(水) 01:10:16.18
444 :
デフォルトの名無しさん :2012/06/08(金) 13:28:46.24
444
446 :
429 :2012/06/09(土) 08:14:49.57
python3の変更点を見ていて疑問に思ったんだけど、 どうして関数定義時にタプルを仮引数として使えなくしたの? python2でいうと def f((a,b),c): print a,b,c のような書き方。 これ便利だったのに…
自己レスだけどPEP 3113か ちょっと読んでみる。
449 :
デフォルトの名無しさん :2012/09/04(火) 00:54:12.85
nonlocal...
451 :
デフォルトの名無しさん :2012/09/11(火) 23:49:25.28
タプルの例がIPアドレス使った奴から変わってるかな?
>>450 とても素晴らしい表紙で,担当編集者の方には大変感謝しております。
↑
これって絶対皮肉だと思う。
453 :
デフォルトの名無しさん :2012/09/15(土) 03:10:39.39
>Rubyは,えーと,えーと,「バージョンって言い方なの?」って体制が病あーりんアイドルだからプログラミングとか分かんない\(^o^)/ 何言ってるかわからんw
3.3に移行したいのに遅すぎる 3.1の2倍、実行時間かかるぞ
pypyの3系対応来てくれ
寄付額がなかなか増えない・・・欲しがっている人少ないね
2で間に合うからな 3にするメリットが全然ない
462 :
デフォルトの名無しさん :2012/09/30(日) 15:22:31.29
台風でそれどころじゃない
>>450 3.3では u"~" 表記が復活する、というのは書いてあった。
>>451 そのまんま。
あと、「2を20乗して1ギガバイトに相当するバイト数を計算しています」という
間違いも直っていない(2の20乗バイトは1メガバイト)。
>3.3では u"~" 表記が復活する 3に乗り換える意味が益々無くなる
unicode型()
>>465 3.3は、文字列リテラルにuつけてもよくなるだけで、uはつけなくともいいんだぞ
2.x系のソースをより移植しやすくするための措置らしい
「移植しやすく」というより、2と3の両対応のスクリプトを書きやすくするためらしい。
益々3に乗り換える意味が無くなる
>>468 両対応のスクリプト書くなって方針じゃなかったの?
世の中的に3系イランモードなんかいな。 個人的には慣れてしまえば使いやすくていいもんだと思うから はよ3系が主流になってほしい。
u付けて2でも動くよ~ って喜んでる見たいだけどさ 2で動くんだったら3要らなくね? ってなるよね
>>468 from __future__ import unicode_literals があるので
新規で両対応のコードを書くならそっち使う。
3.3では u"" は何もしないので、わざわざ使う利点はない。
3.2ではエラーになるので、寧ろ互換性を損ねてる。
移植しやすくなるのは事実だろ
u付き復活とかなんか必死だなとは思った 3のみ対応の素敵ライブラリでも出てこないと使う気が起こらない そういうのもう出てたりしないのかな
いちおう3.3が2系を完全に切り離したリリース(今後2系はもうリリースしない) と言われているけどな。ある意味やっとこさスタートラインともいえるが、どうなんだろうな。
477 :
デフォルトの名無しさん :2012/10/06(土) 15:39:31.68
u付き認めると移植はしやすくなるかも知れないけど、 3への完全移行にはかえって仇になると思うな。
ひとつ復活を認めると、あれもこれもでガンガン不要として切り捨てたものが復活して 結局2と同じものになりそうだな
D言語のgdgdの再現プレイを見ているようだ 内部崩壊を狙う埋伏の毒が居るのかもしれん
スレッド乱立荒らし出没中につき dat落ちしないように保守
3 対応ってライブラリもCバインディングが含んでたら buildし直さないと使えないんだな まだ archぐらいじゃないか 3系列を薦めてくるの。ここから移行にはもうしばらく時間は掛かりそうだ…
たしかUbuntuが次から
Ubuntu 12.10 でPython 3.2が標準で載るようになったね
from __past__ import unicode_literal 次は何だ?
^o^
これはいい変更。 >>> open("aho.txt") Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'aho.txt'
従来はIOErrorだったのが、FileNotFoundErrorを返すようになったのか。よいね。
pgr
web2pyはいつ頃対応しそうですか?
web3py
おっぱいもみたい
「おっぱい揉みたい」なのか「おっぱいも見たい」なのか、それが問題だ。
どっちもしたいから何も問題じゃない。
見ないで揉みたいに一票
みたい + もみたい + すいたい
よく考えたら、おっぱい見るのはそこらに画像が転がってるから簡単だった。 だから揉みたいが正解だな。
501 :
デフォルトの名無しさん :2012/11/05(月) 17:37:12.93
でもお高いんでしょう?
expess edition だと plugin 使えないかんな! と py3k に移植完了したコードを 2.7系に戻すそんな本末転倒な場面もあったり でも os だってダウングレード権とかある。そんな状況が発生するのも別段おかしく
yabaiyo indent source 貼れないよ
3系のメリットとデメリットを教えて下さい。
■python3系のメリット
・文字コード周りがすっきり unicode/str地獄に悩まされなくて済む
・今後便利な機能がどんどん実装される 個人的にイテレータ周りは相当良くなると思う
・パフォーマンスは最新3.3で2系をほぼ凌駕した 地味な所でどんどん性能改善してるので今後期待できる
■言語自体のデメリット
・ほぼ無し あえて言えば人によってprint文が若干面倒に感じるぐらい 言語自体は間違いなく良くなってる
■2->3への移行に伴うデメリット
・現有資産の書き換えが必要 特に文字コード周りは大幅な書き換えが必要
・まだ3系に対応していないライブラリが多い
著名どころでも非対応多いし、対応してても枯れてないのでおかしな動きしたり
適当だけどこんなところかな
>>505 とにかく非対応ライブラリの問題が根深いですね
既に対応してるライブラリでもテキスト処理関係のライブラリはまだバグが多い(lxmlとか)
文字コード周りがすっきり unicode/str地獄に悩まされなくて済む はずなのに 2 からの移行で悩まされるのはほとんどこの問題とか
Perl5->6ほどの格差はないんだよね。
Python3の唯一のデメリットはまだ枯れてないことだな。 例えばPyArg_ParseTupleの引数 s と s* の区別がきちんとできないライブラリが 標準ライブラリにも混じってるから困る。
スレッドまわりはどうなの?
そういえば zipfile が utf-8 固定になってる問題は直ったの?
513 :
デフォルトの名無しさん :2012/11/19(月) 04:26:23.09
ぼくちんはwxPythonが3.3に対応したら移行するでち それまでは2.7で頑張りますでち
つまり永遠に移行できないと
そのうち4が出そう
wxは本家が次期バージョンで下位互換捨てる方針だからそれにあわせるんじゃねえの
パイソンでグラフプロットするにはどうすれば良いですか?
matprotlibでも使えばいいんじゃね
PIL
ロックは死んだ
>>519 何それ?
俺の知ってるライブラリと違う。
matplotlib
辞書オブジェクトのキーを属性名、バリューを値に持つようなクラスってつくれますか? d = {'hello', 'world'} obj = X(d) print(obj.hello) # world こんな感じにしたいんですが・・・
class ReadOnlyAttr(dict): def __getattr__(self, key): if key in self: return self[key] raise AttributeError(key) spam = ReadOnlyAttr(hello='world') spam['ham'] = 'egg' print(spam.hello, spam.ham)
526 :
525 :2012/12/02(日) 00:07:43.12
あっ、別に読み取り専用ではなかった
読み取り専用辞書 types.MappingProxyType が 3.3 に入ったね 以前のdictproxyからの変更、インスタンスが作れるようになってる もう一つ3.3の話題、丁度新しい型が追加されてた クラスやnamedtuple等よりは辞書寄りで、単に辞書データへ属性アクセスしたい場合に使える ns = types.SimpleNamespace(hello="world")
改善された点 __getattr__を使う方法や、インスタンスの __dict__ へ追加する方法では 名前空間を共有することになるので、他の属性との名前の衝突には注意が必要になるけど SimpleNamespaceは __xxx__ 形式の属性しかないので、比較的運用が楽。 辞書が必要な場合は、ns.__dict__ が使える 従来の方法に対するデメリットは、サブクラス化してメソッド追加が(多分?)出来ない点
その他、用途別。辞書ライクなデータを属性アクセス可能にする方法 # A color = {"red":0, "green":0, "blue":0, "alpha": 0} みたいに、小規模・フィールドが固定なデータ構造だったら namedtuple # B フィールドは固定で、本来なら属性にする所だけど 数が多いので外部リソースから読み込んだりして一時的に辞書で扱ってるのを 纏めて属性アクセスできるようにしたい。用途的に名前衝突の心配がない場合 self.__dict__.update({"hello":"world"})
不動少数点数にマッチする正規表現てどう書きますか?
不動ということは固定長か
しかも小数ではなく少数と来たか。
IronPythonて学ぶ価値ある?
SimpleNamespaceって >>> ns = type('SimpleNamespace', (), {'hello': 'world'}) じゃいかんのか
>>533 IronPythonはPythonから標準モジュールを抜いて、.NET フレームワークが使えるようになっただけ。
PythonとC#を学んだ方がいい。
>>534 一時的な用途で属性アクセス専用なら使えるけど、あまり積極的にはお勧めしない。
汎用の辞書としては、__dict__が他の属性と混ざってるので、扱いが面倒になる => 辞書のメソッドが使いたい場合、シリアライズしたい場合等
この点、SimpleNamespaceの方では__dict__でクリーンな辞書を参照できる。
後、ユニークなクラスを作ることになるので、別のインスタンスを作っても共通の親が無く
isinstanceでの判別がしにくい等、細かい点で手間かかる事になるかもしれない。
__dict__と混ざるのはメリットでもあるしデメリットでもあるんじゃないの
後この手のコンテキストで型チェックってあんま意味がないような気がする
実行時例外をそのままスルーした方がいいような
>>535 は一行とはいえ黒魔術的だからSimpleNamespaceの方がいいんだろうけど
用途を明確にしたほうがいいかな 汎用コンテナとして、辞書を属性アクセス可能に拡張するなら、 辞書のサブクラス作るのが順当なアプローチだと思うけど データと属性の名前空間が混ざるのはデメリット オブジェクトの属性を辞書で一括更新する場合は __dict__ を利用 但し、クラス変数だと __xxx__形式のメソッドが混ざってくるのと__dict__が dictproxy(mappingproxy) になるので インスタンス変数の__dict__を利用する。
>>538 > 後この手のコンテキストで型チェックってあんま意味がないような気がする
> 実行時例外をそのままスルーした方がいいような
型チェックが冗長になる場面では基本的に同意だけど、
出来るけどやらないのと、そもそも出来ないには隔たりがある。
Duck-Typeの柔軟性を活かす為に、暗黙のインターフェースを用いる方法は、
抽象基底クラス(abc)を使うとインターフェースを明示できるようになるよ。
web2pyの3系対応はいつ頃でしょうか?
巳年
そもそも干支を動物に対応させたのも関係無いし
最高にクールなpython3の参考書はどれですか?
Python3の書籍なんて何冊もないんだから全部買え。 自分に合った本は自分でしか見つけられない。
今んとこ本家ドキュメント一択
ほとんどshift-jisなんだけど時々違う文字コードが紛れ込んで文字化けしてるbyte列をデコードしたいのですが こういう文字列として不完全なbyte列をデコードする関数は標準にはありますか?
>時々違う文字コードが紛れ込んで 無理
>>548 場所とエンコーディングが分かっているのならば自分でbyte列を分割して適切に
処理してやればいいんじゃないの
全自動でやってくれというのなら
>>549 の言うように無理だな
Shift_JISとして不正なbyte列を含んでいる場合はそこでデコードエラーになり、
その位置も取れる筈だけど、以下のような問題がある
1)人の目には明白に文字化けしているケースであっても常にShift_JISとして不正な
byte列であるとは限らず、その場合は「何か問題がある」ことすら検出
しようがない
2)文字化け部分が短い場合、自動でその文字エンコーディングを推測するのは
非常に困難
まあ、完璧にやるのは無理としても、デコードエラーになったら違う文字コードを 試すとかしてそれなりにデコードするのは可能かもしれない。 でも、それ以前にそんなニッチな関数が「標準」にあると思う方がどうかしてる。
>ほとんどshift-jisなんだけど時々違う文字コードが紛れ込んで 環境依存文字等では、shift-jisではエラーでもcp932だと通る事がある。 そういったケースではなく、まったく別の文字コードが紛れてる? 不完全な部分を正しいデコードしなくてもよいのであれば、 decodeの第二引数に'ignore'や'replace'を指定すると、 デコード出来ない文字は読み飛ばしたり適当な文字に置き換えて処理してくれる。 エラー関数はカスタマイズ可能なので、551の方法を試す枠組み自体は整ってる。詳しくはcodecsモジュール読んで。
エラーの時に別のエンコーディングを試すアプローチだけど 文字コードが混在したデータには使えなかった。エラーにならない文字だと単に文字化けする
誤誤誤
そろそろPython3.xが世界の実権握ったか
# module file : MyClass.py class Body: pass class MyClass(object): def __init__(this): body = Body() body.x = 0 def SetX(x): body.x = x def GetX(): return body.x this.SetX = SetX this.GetX = GetX def New(): return MyClass() こうするほかにアクセス不能(?)なプライベートなプロパティをもつことは可能ですか?
マングルでいいだろ
560 :
デフォルトの名無しさん :2013/04/07(日) 22:48:20.16
おつ!
562 :
デフォルトの名無しさん :2013/05/17(金) 11:03:20.28
おつ!
インストーラーへのリンクは本家へ直リンなので ユーザー会がページを更新していないだけだと考えられる
>>565 ありがとっす
日本語パス上にあるスクリプトファイルを
起動できない事象を回避したいので早速本家からもらってくる
>>566 これは古かったですかスマンです
移行したとは気づかなかった…
Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. C:\>python -V Python 3.2.5 C:\>
569 :
デフォルトの名無しさん :2013/09/12(木) 14:04:29.96
おいなりさんでおいなりさんを露出
水野あきこさんが好きです。
ビール バイト お前ら ドライブ
tkinterのサンプルたくさん載ってるサイトない? 海外のでいいから
NumPyもMatplotlibもPIL(Pillow)も、Webの各種フレームワークも3に対応した。 おいらはもうPython 3オンリーでやっていける。
案外すんなりと移行しちゃって このスレも役目を終えたな
578 :
デフォルトの名無しさん :2013/11/01(金) 11:59:20.37
うむ
>>577 もうPython3に逝っちゃってもいいんですか?
勉強しようとしたら論争がいつまで経っても終わらんなと思っていたところで
そもそも文法はたいして変わらんし 使いたいライブラリが3に対応してるかだけの話だよ元々
2でもfutureインポートで3の文法使えるから、それで慣れるのもあり
pillowなんて実装があったのか 知らんかった
pythonなんて誰が使うの?
理工系の研究者
Pythonコードと ハリソンフォードって 似てるよね
George Python
は行の清音を表現しきれないシナチョン語だと似てるんだろうな
ν速+に帰れ
589 :
デフォルトの名無しさん :2014/01/23(木) 14:45:38.77
このスレもう要らない
1年前はまだ良さげなライブラリとか見つけて3非対応でガッカリさせえられてたけど ここ一年でだいぶ変わって来た気がする 多分1年後はもう問題無くほとんど全てが3に以降してるはず
1年後も同じこと言ってそう
いや、科学系とWeb関係でPythonを使ってるけど、もうほとんど移行可能だよ。 まだ新規に2.x書いてるの?
PyGTK や PyQt 使ったアプリケーションはいまだに 2 を使ってるものばかりだから 相変らず 2 で書いてる
PyQt自体は3でも動くよね。GTKは知らん
言葉が足りなかったか 既存の GUI アプリが 2 で書かれてるものだから プラグインを書いたりするときに結局 2 が必要になっちゃうって話
2.x無視すると、キモい互換用コード書かなくて済むし楽だ ついでに、コードもstrictな感じになるし
Python 3.xの新機能がよくわからなくなってきた 3.4でEnumライブラリが入るんだね
このスレは不要
ライブラリやAPIは問題ないけど、大学の先輩方が作った卒研の資産が動きません コードが汚くてリファクタリングする気にもなりません
600 :
デフォルトの名無しさん :2014/02/28(金) 03:08:19.79
はい
もう3.4か
test
asyncioとpathlibのせいで2は過去の物と切り捨てる覚悟ができた
Google App Engineさえ3対応したら個人スクリプトは3系に全面移行できる 仕事はまだまだ2系が多いけどなー
2使ってて3でも使える書き方をしておくのに from __future__ import print_function とか出来るけど 3使ってて2の機能(モジュールとか)を使う方法はある?
python3でimport pylabすると「見つからなぇよ」と言われるけど2なら通る わけわかめ
>>606 基本的には2に対応したライブラリと3に対応したライブラリは別物だから、
それぞれインストールする必要がある。
python3用のpylabをインストールしたのに見つからないと言われるならライブラリのパスが正しくない。
3.4とasyncioの組み合わせだとgcが不安定だな
609 :
デフォルトの名無しさん :2014/06/28(土) 10:35:33.52 ID:Vk+Le/F4
ヤマカン?
611 :
デフォルトの名無しさん :
2014/09/25(木) 19:22:10.98 ID:JwcgXp3I