トップページtech
1002コメント300KB

Pythonのお勉強 Part50

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/10/17(金) 00:41:32.40ID:Db3yDsQb
Pythonオフィシャルサイト
http://www.python.org/
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&;TYPE=TITLE&STR=python
Pythonのお勉強 Part49
http://peace.2ch.net/test/read.cgi/tech/1387528488/

日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1

ttp://pc11.2ch.net/test/read.cgi/tech/1217836194/339
339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

よくまとまってた。あとで読む
0488デフォルトの名無しさん2015/03/09(月) 22:46:38.28ID:u+jQ0yjG
だからなんで失敗するのか聞いてるんだが
0489デフォルトの名無しさん2015/03/09(月) 23:34:00.66ID:bgN4+jDW
アフィカス必死だなって煽りたくなってくる
馬鹿じゃないのか
0490デフォルトの名無しさん2015/03/10(火) 06:09:14.15ID:XNSpCIll
普段過疎ってるのに答えられない質問が来ればこれだよ
レベルが低すぎる。分からないなら黙ってろよ
0491デフォルトの名無しさん2015/03/10(火) 08:21:57.92ID:3b2ZvRyg
質問?
俺のプログラムをデバッグしてくれよ、というレベル。
しかもデータ。

初心者はXHTMLのページからやるべき。
0492デフォルトの名無しさん2015/03/10(火) 08:46:34.14ID:XNSpCIll
>>491
lxmlが失敗する原因は何?
答えられないのにデタラメの妄想を垂れ流した挙句に質問者を罵倒するとかヤフー知恵袋以下じゃないかね
>>487で答えになってると思ってるあたりがこのスレの限界だろうか
このスレの住人がこれをデバッグしない理由は何?そんなに難しいことなのか
たとえば5分あってもできないことなのか?上級者なら教えてくれよ
0493デフォルトの名無しさん2015/03/10(火) 08:52:55.47ID:7NzT/F8x
最近あまり見ない釣りだな。
自分で試さない理由のほうがよっぽどわからない。
0494デフォルトの名無しさん2015/03/10(火) 08:55:06.57ID:XNSpCIll
>>493
試しても分からないから、初心者に説教垂れてる上級者に聞いてるんだろ
回答者は教えたがりなのに少しの労力すら惜しみ、そのくせ罵詈雑言を並べて優越感に浸ることだけは余念がない、ということ?
0495デフォルトの名無しさん2015/03/10(火) 09:00:07.93ID:7NzT/F8x
確かに俺は罵詈雑言を並べる初心者に懇切丁寧に教える余裕は無いな。
親切な人が現れるのを待っていてくれ。
0496デフォルトの名無しさん2015/03/10(火) 09:02:33.19ID:XNSpCIll
余裕がないなら黙っておけよ
なんでこのスレを読んでるのかすら理解できない
0497デフォルトの名無しさん2015/03/10(火) 09:03:01.09ID:XNSpCIll
というか、答えられない言い訳は聞き飽きた
0498デフォルトの名無しさん2015/03/10(火) 09:03:05.00ID:MNJ+TbI6
>このスレの住人がこれをデバッグしない理由は何?
正気かよ
0499デフォルトの名無しさん2015/03/10(火) 09:03:41.65ID:GWDqHHzE
>>492
マジレスしてやろうか?
StackOverflowに日本語版出来たからそっち逝くといい
0500デフォルトの名無しさん2015/03/10(火) 09:04:15.13ID:XNSpCIll
>>498
お前はデバッグせずにlxmlが動かない理由が分かるのか?
0501デフォルトの名無しさん2015/03/10(火) 09:14:58.22ID:FIkaoC+g
検索したらstackoverflowがやたらヒットして迷惑だからgoogleは対策すべき。
0502デフォルトの名無しさん2015/03/10(火) 09:39:09.58ID:7NzT/F8x
>>500はなかなか面白い返しだ
世の中いろんな奴がいるなあ、と考えさせられたぜ
0503デフォルトの名無しさん2015/03/10(火) 09:48:58.16ID:6CfKdFZo
釣りじゃないなら煽ったり知ったかぶれば答えてもらえるって本気で信じちゃった純真な奴か
いずれにせよ哀れでならない
0504デフォルトの名無しさん2015/03/10(火) 09:49:01.35ID:3b2ZvRyg
>>492
上級者なら教えてくれよ
○ 下僕なら代わりにやってくれよ
0505デフォルトの名無しさん2015/03/10(火) 09:49:32.45ID:OpBf48bx
アメーバの方が優秀だな
0506デフォルトの名無しさん2015/03/10(火) 09:57:35.09ID:XNSpCIll
自称回答者がこのスレを見てる意味がよく分からん
いつも実行もせずに妄想で答えてるのか
0507デフォルトの名無しさん2015/03/10(火) 10:41:17.66ID:OpBf48bx
原形質流動の観察って授業があってぇ…
0508デフォルトの名無しさん2015/03/10(火) 10:45:47.21ID:wWdegVFt
>>506
まあ落ち着け
Dive into python3 で似たようなことやってるから
じっくり読み込んでやってみ
0509デフォルトの名無しさん2015/03/10(火) 10:59:57.76ID:wb2e65jI
原因を聞いているのに似たようなことやってるから〜とか、端から見ても珍回答だな。
体よく追い払おうとしているようにしか見えない。
0510デフォルトの名無しさん2015/03/10(火) 11:22:30.46ID:nkUqlG97
自分で「おそらくparse失敗している」って思うんなら、lxmlのドキュメントを読みながら成功した時と失敗した時の入力をよく見てみろとしか言えない
誰がやってもやることは同じだよ

あと、こういうことを聞くときは問題が再現する最小コードを出すもんだ
0511デフォルトの名無しさん2015/03/10(火) 11:27:03.22ID:wWdegVFt
>>509さんが懇切丁寧に答えてくれるそうですよ
0512デフォルトの名無しさん2015/03/10(火) 11:33:47.80ID:lRdZfHED
本人だろw
0513デフォルトの名無しさん2015/03/10(火) 11:37:23.31ID:XNSpCIll
どういうことなのかさっぱり分からん
ここの人らはソースをちらっとは見たけど、どこが問題なのかは特定できなかった、ということで良いのか?
スレの構造はどう考えても同じだろうに
0514デフォルトの名無しさん2015/03/10(火) 11:46:31.67ID:wb2e65jI
それは流石に思いこみが過ぎる。
検証したか?していないだろう。
0515デフォルトの名無しさん2015/03/10(火) 11:54:09.42ID:iQXYHRS4
スクレイピング小僧対策にわざわざ構造を壊すこともあるし。
特に2chはscの件で敏感になってたしね。
0516デフォルトの名無しさん2015/03/10(火) 12:01:08.59ID:wWdegVFt
>>514
どうでもいいレスしなくていいから
早く調べて答えてやれよ
0517デフォルトの名無しさん2015/03/10(火) 12:10:58.87ID:0x74jrgc
キンタマ弄って遊ぶのはその辺にしとけ
0518デフォルトの名無しさん2015/03/10(火) 12:57:58.73ID:3b2ZvRyg
問題はデータにありそう。
最小のコードというのは、最小のデータも含む。
もしかしたら、アクセス元によってデータが変わるかもしれないし、プログラムからアクセスしていいかの利用規約も確認しなきゃいけないので、全部やるのは面倒。
0519デフォルトの名無しさん2015/03/10(火) 13:01:01.34ID:XNSpCIll
できた。やっぱりスクレイピング対策とかHTMLの構造は関係なかった
parseが自動で見つける文字コード(shift_jis)とHTML内の機種依存文字(V)が矛盾しているのが原因っぽい
だからfromstring使ってunicodeにデコードした文字列を渡せば良いだけだったわ

from lxml.html import fromstring
from urllib.request import urlopen

url = 'http://wc2014.2ch.net/test/read.cgi/sci/1343188288/'
doc = fromstring(urlopen(url).read().decode('cp932'))
print(len(doc.text_content())) # 126937
0520デフォルトの名無しさん2015/03/10(火) 13:45:49.10ID:3b2ZvRyg
やっぱりデータじゃねえか。
0521デフォルトの名無しさん2015/03/10(火) 15:19:51.05ID:XNSpCIll
は?
0522デフォルトの名無しさん2015/03/10(火) 15:20:58.32ID:MFu713zA
叩かれて同情してたけど>>486>>488見て呆れた
こういう考え方する人プログラミング向いてないよ
0523デフォルトの名無しさん2015/03/10(火) 15:21:32.81ID:XNSpCIll
何の参考にもならないこと言っておいて「やっぱり」はねえだろ
文字コードだと言うのならまだしも、データ?
そりゃデータだろ。馬鹿かよ
0524デフォルトの名無しさん2015/03/10(火) 15:23:27.55ID:XNSpCIll
>>522
このスレの誰一人として、プログラミングに向いてると思える片鱗が一ミリも見えないんだけど
なぜか、俺はプログラミング上級者でございみたいな顔でレスしてる方が謎
0525デフォルトの名無しさん2015/03/10(火) 15:26:30.88ID:XNSpCIll
ROMってるやつはたくさんいるようだが、自分が分からないと様子見しているようだ。それはまあ良いよ
>>480からやっとレスが付いたのが3日後、しかも妄想回答
妄想であることを指摘してやると切れ始める。どうせ何の答えも出せないんだから最初から黙っていて欲しかったよ
次に誰か質問した時もそうだ。絶対お前らは口を出すなよ。どうせクソの役にも立たないんだから
0526デフォルトの名無しさん2015/03/10(火) 15:26:50.50ID:MFu713zA
こいつやばすぎだろ
0527デフォルトの名無しさん2015/03/10(火) 15:29:08.32ID:XNSpCIll
何のためにお勉強スレに常駐してるんだ?
少しは役に立つレスをしろよ
0528デフォルトの名無しさん2015/03/10(火) 15:41:47.67ID:GWDqHHzE
>>506
適当に答えて正解だと楽しいよ
0529デフォルトの名無しさん2015/03/10(火) 15:48:44.67ID:wWdegVFt
>>527
どういうプロセスで凡ミスに気がついたのか書くことも
このスレにとって有益だと思うのですが書いていたたげませんか
お願いします
0530デフォルトの名無しさん2015/03/10(火) 16:33:39.50ID:0x74jrgc
今日は暖かいからな
0531デフォルトの名無しさん2015/03/10(火) 16:49:45.10ID:GWDqHHzE
啓蟄
0532デフォルトの名無しさん2015/03/10(火) 19:05:33.59ID:XNSpCIll
>>529
pythonはうまく行かなかったらエラーを吐いて止まるところが良いのに
parseは失敗しても読み込めた場所までのetreeを返しているように見える。これは嫌な仕様だ
何か値が返ってくるので一見成功しているように見えるから、なぜ中身が中途半端なのか分からない
パース前のデータを見ようとurlopen(url).read().decode('shift_jis')とすると、そこでエラーを吐いてやっと何が問題なのか分かる
htmlファイルをそのまま見比べ続けたりdiff取ったりしても無理だっただろう
decodeなら、errorsオプションを指定することでデコードできない文字に対してエラーを吐くか読み飛ばすかを選択できるけど
parseにはそういったオプションはなく、何をやってるのか分からない。失敗したくせになぜ停止しないんだ

というか結局どの文字コードでもエラーになるスレがあるけど
重要じゃない文字っぽいのでスルーすることにした
doc = fromstring(urlopen(url).read().decode('cp932', errors='ignore'))
文字コードは闇。おわり。正解があるならplz

しかしこの問題は少しでも経験がある人なら一瞬で気付けたと思うので
数日後に上級者ぶって的はずれな説教を始めるこのスレはやはり使い物にならないと言わざるを得ない
0533デフォルトの名無しさん2015/03/10(火) 19:35:24.00ID:tNP8NWPb
>>532
じゃあもう来るな

で終了
0534デフォルトの名無しさん2015/03/10(火) 19:40:35.76ID:zHhbDfod
コミュ症、糖質、あるいは発達障害かも
優しくしてあげな
0535デフォルトの名無しさん2015/03/10(火) 19:45:25.31ID:XNSpCIll
>>534
プログラミング分からないなら黙ってたほうが良いのでは
0536デフォルトの名無しさん2015/03/10(火) 20:01:31.71ID:sfYa099T
だから電車に飛び込んで死ねって助言したのに
今からでも遅くないよ
0537デフォルトの名無しさん2015/03/10(火) 20:09:19.61ID:6CfKdFZo
lxml.htmlって腐ったhtml用だろ
どうしようもなくならない限り例外出さないし2chのhtmlはもちろん腐ってるから他のパーサーだと面倒なはず
0538デフォルトの名無しさん2015/03/10(火) 20:27:30.27ID:GWDqHHzE
専ブラがAPIで使えなくなるから
ローカルproxy造るの流行ってるみたいだけど
スクレイピングは禁止というのが2ちゃんのスタンス
0539デフォルトの名無しさん2015/03/10(火) 21:05:02.40ID:81PK0HaL
馬鹿どもにパソコンやスマホを与えるな
0540デフォルトの名無しさん2015/03/10(火) 23:24:20.49ID:XNSpCIll
フェアウェル・プログラムの結果発表
この板全体の単語頻度(ただし'C'や'#'は簡単のためにノイズとして除去されてる)
大文字と小文字どちらかに統一すれば良かったとあとから思ったけどまあ良いや

なんと馬鹿 (1644)は65位でした!
何の生産性もない、貶し合うだけの板なんて、そろそろおいとましよう

1: 言語 (12722)  2: コード (8511)  3: 人 (7336)  4: 関数 (6599)  5: 問題 (6194)
6: スレ (5836)  7: ファイル (5710)  8: 必要 (5595)  9: 場合 (5434) 10: 自分 (5245)
11: 文字 (4289) 12: ソース (4235) 13: Java (4215) 14: 今 (3858) 15: データ (3804)
16: 方法 (3703) 17: クラス (3691) 18: 環境 (3574) 19: Windows (3405) 20: int (3402)
21: 変数 (3198) 22: ライブラリ (3168) 23: 仕様 (3125) 24: Ruby (3093) 25: アプリ (2969)
26: 前 (2800) 27: if (2780) 28: 情報 (2676) 29: 感じ (2675) 30: 可能 (2667)
31: for (2641) 32: 部分 (2626) 33: 普通 (2564) 34: オブジェクト (2424) 35: 他 (2391)
36: 日本語 (2346) 37: コンパイル (2317) 38: 簡単 (2292) 39: 本 (2288) 40: 結果 (2258)
41: 時間 (2234) 42: 名前 (2220) 43: 列 (2197) 44: hoge (2141) 45: レベル (2068)
46: メソッド (2036) 47: Python (1961) 48: 値 (1946) 49: メモリ (1896) 50: 型 (1890)

https://www.dropbox.com/s/omwbh5clw3hvb4a/word_frequency.csv?dl=0
0541デフォルトの名無しさん2015/03/10(火) 23:37:16.18ID:uWF4ePWz
numpyで、以下のような2次元配列の条件付インデックスをしたいんですが、可能でしょうか。

A=array([[2, 1], [3, 4], [6, 5]])
で、A[i][0]>A[i][1]となる、行だけを取り出したい。
この場合は、
A=array([[2, 1], [6, 5]])
0542デフォルトの名無しさん2015/03/11(水) 00:28:43.75ID:nZT0Sfh/
filter(lambda x: x[0] > x[1], A)
かな
0543デフォルトの名無しさん2015/03/11(水) 00:31:54.13ID:Qxpez3uG
おお、全部小文字にしたらランキングが大きく変動した。それではさよなら

>>542
それはpython3だとfilterオブジェクトを返すので、一旦listにキャストしてからじゃないとarrayに戻せないから冗長になる
普通にリスト内包表記使ったほうが良い
0544デフォルトの名無しさん2015/03/11(水) 02:07:45.91ID:y/rYbl4Z
もしかしてこいつずっと居る気か
0545デフォルトの名無しさん2015/03/11(水) 07:03:33.66ID:5EkQ77dJ
暇人が餌を与えなければ消えるよ
野良猫みたいなもんだ
暇人から駆除すべき
0546デフォルトの名無しさん2015/03/11(水) 07:15:56.16ID:ohxGoG6/
何も有意義なレスをしないくせに常駐している暇人が恥をかかされて負け惜しみを言ってるようにしか見えない
0547デフォルトの名無しさん2015/03/11(水) 07:30:36.51ID:YwNWS2C9
他人を利用することしか頭にないダニが何か言ってますね
0548デフォルトの名無しさん2015/03/11(水) 08:12:22.93ID:EDIhvA8q
>>545
ほんそれ
0549デフォルトの名無しさん2015/03/11(水) 08:20:13.79ID:33mlLn1H
ID導入で鎮静化

API導入で専ブラリストラ&移転騒ぎ

人減り過ぎ

運営あわててBBq規制ゆるめる

IP変えてIDもいつでも変えられる人増える

元の木阿弥
0550デフォルトの名無しさん2015/03/11(水) 21:33:50.12ID:EX1qv/9I
Effective Python出てるね。読んだ人感想よろしく。
0551デフォルトの名無しさん2015/03/12(木) 14:59:27.68ID:E0Zg3jRk
環境はAnaconda最新版のPython3,64bit
from numpy import *
def func1(x):
return sum(arange(x))
def func2(x):
return 2*x

t = arange(10)
print(func1(t))
print(func2(t))

上のソースみたいにfunc1,2に配列を渡したらfunc2からは配列が返ってきて,func1に至ってはエラー。

func1 から [sum(arange(0),sum(arange(1),sum(arange(2),・・・)]
func2 から [0*2,1*2,2*2,・・・]
みたいに以前はどっちも配列が返ってきてた気がするんだが、なんか仕様変更あったのかな?
もしかしたら俺の記憶違いかもしれんが、そのソースを最後に走らせてからAnacondaをアップデートしたから少し仕様変更を疑ってる。
俺の意図してることはソースを少し修正すれば対応できるからさほど問題では無いのだが。
0552デフォルトの名無しさん2015/03/12(木) 15:34:24.28ID:yQvULEjl
def func1(x):
return sum(x)
0553デフォルトの名無しさん2015/03/31(火) 05:29:44.19ID:EnQqwSct
みんPyで3.x系の勉強はしたんだけど2.x系も使えるようになりたい
2.xと3.xって文法が少し変わっただけでしょ?
初めてのPythonやっとけばいいかな?
0554デフォルトの名無しさん2015/03/31(火) 07:55:51.96ID:7FvkJziV
わざわざ本読破するほどの差ではないと思う
移行できないでいる連中は、技術的にではなくリソース的な問題だし
君がライブラリの移植を任されてるとか言わない限り、
トラブった時に都度覚えればいいんちゃう
0555デフォルトの名無しさん2015/03/31(火) 12:12:23.68ID:XpnSzaSp
>>553
ここ読んどくと、2と3の違いがわかりやすいと思う。

Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/index.html

>Dive Into Python 3 は、プログラミング経験者向けの
>Pythonの入門書であり、Python 3 および Python 3と
>Python 2の違いを扱う。本書の約20%は Dive Into Python
> を改訂したもので、残りの80%は新しく書き下ろしたものだ。


↓上記の英語原版
http://www.diveintopython3.net/
0556デフォルトの名無しさん2015/03/31(火) 14:13:21.80ID:ee7JB1sW
>>555
トンクス!
0557デフォルトの名無しさん2015/04/06(月) 09:57:33.45ID:ZUUro5Bq
python ceって知ってますか?
0558デフォルトの名無しさん2015/04/06(月) 19:32:18.00ID:kkAXpFQn
python2.7がインストールされていて3.4.3をインストールしたいのですが
インストーラーを起動して進めていくと
赤い文章で
This update will replace your existing Python34 installation.
と表示されいて
さらに進めていくとダイアログで
There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor.
と表示されてインストールすることができません。
原因はなんですか?
0559デフォルトの名無しさん2015/04/06(月) 19:44:34.83ID:MCC65dXP
pip
0560デフォルトの名無しさん2015/04/06(月) 19:52:28.82ID:kkAXpFQn
実はそのpipが欲しくてやってるんです
あと忘れました、OSはwindows7です
0561デフォルトの名無しさん2015/04/06(月) 19:55:02.88ID:kkAXpFQn
最終的にはBeautifulSoupが使いたいだけなんです
0562デフォルトの名無しさん2015/04/06(月) 20:20:36.70ID:kkAXpFQn
できちゃいました、自己解決しました、ありがとうございました
0563デフォルトの名無しさん2015/04/13(月) 01:26:57.00ID:YWp6zYIR
pythonのモジュールの名前が
module_name
module-name
moduleName
でもなく
modulename
0564デフォルトの名無しさん2015/04/13(月) 01:28:16.54ID:YWp6zYIR
>>563
になってるのは何故?

import modulename

は _ や大文字小文字の区別がつかないの?
0565デフォルトの名無しさん2015/04/13(月) 02:40:20.44ID:EwC15/on
一言で言うとファイル名≒モジュール名だから

もう少し言うと
モジュールは識別子なので変数命名の規則に従う
大文字小文字を区別して長い名前を切り捨てるファイルシステムもある

Pythonの推奨スタイル(PEP8)は
全て小文字の短い名前、読みやすくするためならアンダースコアOKとなってる
0566デフォルトの名無しさん2015/04/19(日) 10:02:17.65ID:GyRCwVyf
ただの独り言だから無視してください。
Pythonってpycにコンパイルするとバージョン互換性が無いんだな。
コンパイルしたPythonのバージョンとユーザーのバージョンが違うと動かない。
Javaのjarみたいにはいかない。pyファイルで配布するしかなくソースの隠蔽ができないんだな。
2系と3系の両立問題もある。2系と3系じゃ随分違うのに、いまだに2系も多く使われてる。
0567デフォルトの名無しさん2015/04/19(日) 11:55:05.01ID:7F+ACK5y
jarはまとめて圧縮しただけだし。
0568デフォルトの名無しさん2015/04/19(日) 12:07:46.76ID:dhzBOV6W
他人の目に留まらせるために書いてるくせに
無視してくださいってとんでもねえ傲慢だよな
明日の世界が少しでも綺麗になるように、今日中に死ぬべき
0569デフォルトの名無しさん2015/04/19(日) 17:11:13.62ID:SbUcGWLB
他人の目に留まらせるためにの下りは同感
つぶやきはツイッターでやれ
0570デフォルトの名無しさん2015/04/19(日) 18:03:54.60ID:6qOkc1P6
『Pythonエンジニア養成読本』でバージョンの解説のところを読んでたら
いろいろ説明した後「本書では「パターン1」の読者を想定し、Python2系を採用しています」って書いてある
3系への移行がなかなか進まないわけだ
なんだかんだ言いながら結局「Python2系を採用します」なんだもん
0571デフォルトの名無しさん2015/04/19(日) 18:19:33.16ID:dhzBOV6W
技術的な理由で移行できない奴なんかいないから
Python2を習得して問題ない

本当に技術的な理由で移行できないとしたらプログラムに向いてない
0572デフォルトの名無しさん2015/04/19(日) 22:35:46.00ID:1OstB/kO
進んでないの?
0573デフォルトの名無しさん2015/04/19(日) 23:50:13.83ID:htXDv9/7
ビープラウドのような会社こそ3系を推進するべきだと思うのですが、現実は2系の守護者のような感じになってるのでとても悲しいです。
0574デフォルトの名無しさん2015/04/20(月) 00:07:17.19ID:Uaur58U5
guide もいる dropbox が作ってる llvm ベースの pyston ですら2系ベースだからな
3はなかったことにして2ベースの4を作るとかいう話も気になる
別に急ぐことはないとは思う
0575デフォルトの名無しさん2015/04/28(火) 21:20:15.66ID:zvl7vZ5R
関数が正常終了した時には正規の結果データを返し
異常が起きた時はFalseやエラー文字列を返したいってこと、よくあるよね
Pythonならば容易に実現できる機能だが、CやJavaなんかには不可能じゃないかなこれ
地味にPythonの凄さを実感してしまった
0576デフォルトの名無しさん2015/04/28(火) 22:08:29.06ID:PZuvEHyA
それは悪い意味でのすごいだと思うので、異常が起きたら素直に例外を投げてほしい
0577実は男2015/04/28(火) 22:31:43.03ID:iGmhRd88
ぱいそんそわそわ
フォロリクよろしく(^з^)-☆

ややちゃん♂
https://twitter.com/minwqgmg

#ややちゃんかわいい
ややちゃんよりかわいいMTFなどいない
http://i.imgur.com/L7IX75Q.png
http://i.imgur.com/lkujqEZ.png
https://pbs.twimg.com/profile_images/590714340384382977/3_IE5FW8.jpg
http://i.imgur.com/t1dy6yB.jpg

#百合原まこきもいしね
http://light.dotup.org/uploda/light.dotup.org175301.jpg
https://twitter.com/mako_yurigahara
0578デフォルトの名無しさん2015/04/28(火) 22:51:31.00ID:KEYPGqIp
>>575
そういう構造体やオブジェクト使えば、できなくはないが、
良くないので例外があるんだろ。
0579デフォルトの名無しさん2015/04/29(水) 06:13:24.88ID:Q2Y0/S5t
最近少しバズったPythonアンチパターン
http://docs.quantifiedcode.com/python-anti-patterns/

多少口出ししたくなる項目もある(setdefaultとか)が
だいたい同意できると思う
その中の以下に該当

# Returning more than one variable type from function call
(関数の戻り値型が複数ある)

理由は上で述べられているので省略
補足するなら
* 君がバグのないロボットでないかぎり
戻り値のチェックは必ず忘れられる・サボられる
* テンプレートから外れたエラー処理手段を使用することで
君のコードに「覚えておかなければならない特例」が増える
0580デフォルトの名無しさん2015/04/29(水) 06:37:44.11ID:Q2Y0/S5t
dict.setdefaultの件
第二引数は辞書に追加しない場合でも必要なので
default値の生成コストが高いならsetdefaultでなくdefaultdictを使う

_dict.setdefault('hoge', LargeInitializationCostList()).append('huga')

こんなことやってると死ぬぞ
0581デフォルトの名無しさん2015/04/29(水) 06:47:22.73ID:Q2Y0/S5t
Python2.6で標準ライブラリのjsonモジュールを多用しない
ただでさえPythonが遅いのに、PurePythonモジュールなので目玉が飛び出るほど遅いぞ
多用するなら2.7以降標準となったsimplejsonを使う
0582デフォルトの名無しさん2015/04/29(水) 07:24:17.12ID:UcmoOb8k
例外っていわばGOTOだからさ
いきなり処理が飛ぶからコードを追いづらいんだよなあ
やっぱ関数呼び出し→関数→呼び出し行の次に戻るっていう
一本道を崩しちゃいけないよなあ
0583デフォルトの名無しさん2015/04/29(水) 08:02:24.77ID:el7FOBWI
>>582
主シナリオに例外処理のif文が多数埋まっている方が可読性低い。
BASICでも書いてろよ。
0584デフォルトの名無しさん2015/04/29(水) 08:13:52.24ID:Q2Y0/S5t
エラーチェックのifで偽になった場合も
エラー処理ブロック末尾までgotoするわけでさ
あまり違いがあるとは思えんね
どこが一本道なのかさっぱりだわ
0585デフォルトの名無しさん2015/04/29(水) 12:28:53.10ID:MZTDlXbu
>>582が言いたいのは、↓ここでJoelが言ってるようなことなのかな。
ttp://d.hatena.ne.jp/kmaebashi/20091227/p1

俺自身の意見は
「言わんとするところはわからなくはないが、個人的には全然賛同できません」
という訳者の前橋氏と同じだが。
0586デフォルトの名無しさん2015/04/29(水) 15:48:30.00ID:BTL1OO/O
対処しないと停止するエラーコードが返せればエラーコード方式でもいいよ
goなんかそういう思想だろう
0587デフォルトの名無しさん2015/04/30(木) 20:44:07.20ID:/CwpOFcE
tryとexceptの間はなるべく短くとか、ちゃんと書いてりゃ見づらくはならない
■ このスレッドは過去ログ倉庫に格納されています