X



くだすれPython(超初心者用) その45【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/10/16(水) 10:17:12.96ID:dCHq3Ix4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/
0296デフォルトの名無しさん
垢版 |
2019/11/25(月) 12:30:19.00ID:pjJuONFZ
書き込む前に考えろ
0297デフォルトの名無しさん
垢版 |
2019/11/25(月) 13:12:54.83ID:TS/Fak3X
いや書き込むと解決するんだよ
0299デフォルトの名無しさん
垢版 |
2019/11/25(月) 14:41:48.11ID:p8g7UnzP
なんでこの言語は
オブジェクト指向なのに
関数で属性を所得することがあるんだ?
なんか意図があるのか?
0300デフォルトの名無しさん
垢版 |
2019/11/25(月) 14:55:04.98ID:meWbd2fX
関数で属性を取得したい、という意図があるんだろ
それ以上のどういう説明が欲しいんだ
0302デフォルトの名無しさん
垢版 |
2019/11/25(月) 15:00:10.38ID:oN5ryHTE
後付けOOPだからしゃーない
さらに作者は関数型も嫌いだから中途半端なサポートになってる
0303デフォルトの名無しさん
垢版 |
2019/11/25(月) 15:24:30.38ID:p8g7UnzP
初心者に最適みないな煽り
で解説書でてるが
宣言いらないし、見た目はシンプルだからこそ
易しい言語ではないな 
0305デフォルトの名無しさん
垢版 |
2019/11/25(月) 16:21:52.74ID:MOiXV6c7
>>299
開発中に変数の型をコードで確認できると便利だろ
あとSQLやPandasの各列をfor文で操作する時に、型チェックして分岐をつけることもある
0306デフォルトの名無しさん
垢版 |
2019/11/25(月) 19:28:04.23ID:WAjfk16n
この引数受け取って < 又は > を関数側で判断したいんだけど どう記述すりゃいいの?
qsort(lambda x, y: x < y, [2, 4, -90, 3, 10])

単純に変数に入れて出力してみたけど
def qsort(a, b):
........print("a= ",a)
........print("b= ",b)

不等号 < > が全く見えません
a= <function <lambda> at 0x000001D564F7B4C8>
b= [2, 4, -90, 3, 10]
0307デフォルトの名無しさん
垢版 |
2019/11/25(月) 21:13:40.05ID:OXWkeipl
>>306
その書き方で間違ってはないよ
渡されたlambdaのソースを確認したいなら
import inspectしてprint(inspect.getsource(a))
0308デフォルトの名無しさん
垢版 |
2019/11/25(月) 21:40:31.09ID:VwBWJhfV
https://github.com/AmbientDataInc/EnvSensorBleGw/blob/master/src/gw_RPi/env2ambientBS.py

これを動かしてみると、
NameError: name 'companyID' is not defined
とエラーになってしまいます。

51行目からの関数「def send2ambient(dataRow):」の中の
52行目の
if companyID == 'ffff': とif文がありますが、どこにもcompanyIDという変数は見当たらない気がします。
56行目〜59行目、52行目を削除して、53行目〜55行目のインデントを戻せば正常に動きました。
companyIDはどうやって取得するんでしょうか?
0309デフォルトの名無しさん
垢版 |
2019/11/25(月) 21:52:08.16ID:VwBWJhfV
>>308
多分解決しました

value[0:4]にcomanyIDが入っていたので、
77行目でvalue[0:4]も渡して、
51行目の引数にcomanyIDを加えてやると動きました

これであってますか?
0310306
垢版 |
2019/11/25(月) 22:40:34.23ID:WAjfk16n
>>307
不等号記号が判断できました
ありがとうございます
0311デフォルトの名無しさん
垢版 |
2019/11/26(火) 05:32:54.67ID:+E2vdhzD
>>3
自前でsort_byみたいなのを作るのかな
0312デフォルトの名無しさん
垢版 |
2019/11/26(火) 11:43:30.34ID:x6kjeL8J
パッケージ、モジュールについて質問です。

import numpy as np
a = np.random.rand(10)

という記述があったとします。

np はパッケージ
random はモジュール
rand() は関数

であっていますか?

np がパッケージだとすると、パッケージは関数や定数などを含むことができてしまっておかしいような気もします。

このあたりについて解説をお願いいたします。
0313デフォルトの名無しさん
垢版 |
2019/11/26(火) 11:53:00.18ID:sOexhNbU
あってる場合もあるし
あってない場合もある
0314デフォルトの名無しさん
垢版 |
2019/11/26(火) 12:04:40.62ID:n4j/cOk3
中身みたらいいんじゃないの?
import numpyがPackage
import randomがSub-Package
randがfunctionってコメント書いてる
0315デフォルトの名無しさん
垢版 |
2019/11/26(火) 12:07:13.67ID:sOexhNbU
質問者の本来の意図は判らんが
質問文だけ読めば
import hoge as fuga
fuga.hage.hige()
の一般的なことを聴いてる可能性もある
ケースバイケースとしか言いようがない
0316デフォルトの名無しさん
垢版 |
2019/11/26(火) 12:44:26.92ID:P1h37MBR
プログラミング始めて2ヶ月弱です。
今TwitterのsearchAPIを使用してtkinterのメインフレーム内のテキストウィジェットに検索結果を追加していくプログラムを書いてまして
threadを使用してリアルタイムに追記させていくことは出来たのですが停止がうまくいきません。
ttps://teratail.com/questions/147319
上記URLの様にスタートとストップを分けて書いているのですがストップ時に止まらず応答無しになります。
tryの前に上記URL内のwhile not stop_flag:を置いてループさせているので
ループ中try内のプログラムにif stop_flagがtrueの時にbreakする条件を追加すれば想定道理に動きますでしょうか?
仕事中で詳しくは記述出来ませんがこの考え方で合っているのか確認したく質問させていただきました。
0317デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:31:57.20ID:dAEqoOXB
仕事中は仕事しろ
0320デフォルトの名無しさん
垢版 |
2019/11/26(火) 16:38:03.43ID:jVdruz6/
>>312
気になるのはわかるが
生成の過程はどうであれ
オブジェクトが生成された程度でいいとおもうよ
ここつついてもなんもでてこない
0322デフォルトの名無しさん
垢版 |
2019/11/26(火) 22:00:33.85ID:x6kjeL8J
柴田望洋さんのPythonの本に、

'\\\\\\\\'

と入力すると

'\\\\'

が出力されると書いてありますが、JupyterLab上で実行すると、

'\\\\\\\\'

が出力されます。

これはどういうことでしょうか?
0324デフォルトの名無しさん
垢版 |
2019/11/26(火) 22:13:19.59ID:x6kjeL8J
もう一つ質問させてください。

id(1)

とするとある大きな正の整数が出力されます。

オブジェクト「1」のIDだと思います。

ある複雑なオブジェクト(あるクラスのインスタンスなど)にIDが割り当てられているのは理解できます。
おそらくインスタンスを作ったときにIDが割り当てられるのだと思います。

整数の場合にはどうなんでしょうか?我々は整数を使うときに整数のインスタンスを作ったりはしません。

このあたりのからくりについて教えてください。
0326デフォルトの名無しさん
垢版 |
2019/11/26(火) 22:29:07.19ID:6BcoKqX2
>>324
id()で表示されるのは実装にもよるが単純にメモリ内のどの位置にそのオブジェクトがあるかじゃなかったかな?
いちいちidが割り振られるのは単純にプログラム内で一度出現した値を再度読み込むときにすぐ読み込めるようにするためだった気がする。
id(1)とかだと同じプログラム内だとずっと同じidになっているがid(10000000000000000000000000000000000)とか数値が大きくなると
ずっと同じ数値を保持するためには莫大なメモリが必要になるから、いちいち同一のidを保持したりせずに毎回値が変わるのがわかると思う

それと、1が整数のインスタンスじゃないというのは勘違いだ。 isinstance(1,int)とすれば整数1が整数のインスタンスだとわかる
プログラムする側が明示的にインスタンスを作らないだけで内部的にはインスタンスになっている

また、C言語などにおいては整数は「単純な値」と言えなくもないが、少なくともpythonにおいては数値もオブジェクト、
dir(1)してみればわかるが1にもさまざまなメソッドがついている
0328デフォルトの名無しさん
垢版 |
2019/11/27(水) 04:07:41.39ID:sALdvXXc
0x100が境なんだね
0329デフォルトの名無しさん
垢版 |
2019/11/27(水) 08:24:04.15ID:XCw5dykM
>>322
JupyterでOutに出るのはPythonで表記したときの書き方。
print('\\\\\\\\')すれば\\\\が出る。
0330デフォルトの名無しさん
垢版 |
2019/11/27(水) 09:18:32.47ID:KJahAAhq
>>322
つまりprint('\\\\\\\\')はPythonで表記したものではないと
0332デフォルトの名無しさん
垢版 |
2019/11/27(水) 14:09:09.81ID:ngGnUYLD
>>299
え?俺便利だと思って多用してるけど....

関数側で引数がリストならfor文で引数内の要素で再帰呼出し、リストじゃなければ
引数を処理みたいな感じで使ってる。
(簡単な例を書き込もうとしたらブロックされた...わかりにくくてすんまそん)
0333デフォルトの名無しさん
垢版 |
2019/11/27(水) 14:40:54.97ID:R3eAH8fN
>>332
たぶんインデントなのと半角英数がいっぱいなのが
先週あたりから強化された全板規制にひっかかる。
>>1にのってるようなソースコード用うpろだを使うのだ
0334デフォルトの名無しさん
垢版 |
2019/11/27(水) 16:09:47.41ID:yvOcgkAY
>>332
なるほど
確かに便利だ
オブジェクト指向の概念からいえば
関数で属性取得するの邪道だと思っていたが
柔軟にしないといけないな
これが純粋性より実用性ってやつか
0335デフォルトの名無しさん
垢版 |
2019/11/27(水) 16:24:01.31ID:ulQKgCH1
The Zen of Pythonの一部の翻訳についてですが、柴田望洋さんは、

「Errors should never pass silently.」を「エラーを黙って渡してはならない。」と訳しています。

エラーを渡すというようなことが実際にPythonであるのでしょうか?
0336デフォルトの名無しさん
垢版 |
2019/11/27(水) 16:26:47.69ID:ulQKgCH1
エラーを黙って見過ごしてはならない。

みたいな意味かと思ったのですが。
0337デフォルトの名無しさん
垢版 |
2019/11/27(水) 17:52:41.97ID:b0aYXQt/
>>336
pass silently を「黙って渡す」と直訳するか、その行為を日本語の表現で
「見逃す」、「見過ごす」と訳すかと違いと思う。

日本語的には見過ごすと訳した方が自然に感じます。
0338デフォルトの名無しさん
垢版 |
2019/11/27(水) 19:02:19.69ID:ymKEnJ4Y
>>336の意味であってる
「黙って通過させてはならない」的な意味

「エラーを黙って渡してはならない」は完全な誤訳
Errors should never be passed silentlyや
You should never pass errors silentlyじゃないと
エラーを渡すという意味にはならない
0339デフォルトの名無しさん
垢版 |
2019/11/27(水) 20:33:56.00ID:hknmBY+P
例外の握りつぶしとかだろ。
例外をキャッチしたけど、何もせずに、そのまま処理を継続したとか

Jupyter Notebook(JN)は、Python, Julia, Ruby などで使うIDE だろ。
VSCode みたいなもの

Bash, PowerShell などのシェル経由でも、
シングル/ダブルクォーテーションで、エスケープのタイミングが違ってくる。
Linux/Windows で書き方が異なる

シェルに渡すときに、既にエスケープされているか、されていないのか

エスケープ文字を、エディタで設定できるかも知れない
0340デフォルトの名無しさん
垢版 |
2019/11/27(水) 20:43:49.33ID:R3eAH8fN
>>335-336
個人的には>>339の解釈に1票。
try:
    なんとかかんとか
except:
    pass
みたいなマジクソ行為は
自分以外の人物が
たとえ0.1×10^23%でもかかわる可能性があるソースコードでは
絶対やっちゃだめだなwww
0341デフォルトの名無しさん
垢版 |
2019/11/27(水) 21:37:06.71ID:OMjrfaFS
pygameは商用利用できますか?
0345デフォルトの名無しさん
垢版 |
2019/11/27(水) 22:18:57.75ID:vYtjQlD0
>>341
可能だが、pyinstallerのような方法で事実上の静的リンクを行った場合には
LGPLに従ってpygameが含まれている実行ファイル全体の再配布を許可せねばならない
つまり俺が買ったらそれを10円で再販してやる
0347デフォルトの名無しさん
垢版 |
2019/11/27(水) 22:27:15.42ID:vYtjQlD0
>>341
補足
あと、リンクの方法に関わらず、そのソフトウェアを買った俺はそれをリバースエンジニアリングし、改造できる
俺のスキルをもってすればライセンス認証の回避は容易であり、お前はそれを禁止できない
0348347
垢版 |
2019/11/27(水) 22:31:35.68ID:vYtjQlD0
すまん、俺が金払って買ったなら認証を回避する意味はなかったな
問題は、ダウンロードは無料だが継続して利用するにはライセンス認証が必要になるというような典型的な配布パターンだ
この場合、俺は金を払わずに改造してライセンス認証を突破し、タダでそれを使う
そしてその方法をWebで公開する
お前はそれを禁止できない
なぜならLGPLライブラリを使用しているからだ
0349デフォルトの名無しさん
垢版 |
2019/11/27(水) 22:42:28.92ID:ap410XA+
>>346
つまりtry ~ except は不要と言ってるのか?
excaptの中に何を書くのが良いのか訊いているんだが。
0350デフォルトの名無しさん
垢版 |
2019/11/27(水) 22:48:46.79ID:R3eAH8fN
>>342
ほんとだ 重要なマイナスが抜けてた!

>>340訂正する
×たとえ0.1×10^23%でもかかわる可能性があるソースコードでは
〇たとえ全世界の砂粒から、ハズレの1粒をひきあてたくらいの確率でも、かかわる可能性があるソースコードでは


>>349
「except:」みたいな雑なくくりをせず
おきるエラーの種類ひとつひとつについて
「except Errorhogehoge:」みたいなかんじで一個ずつちゃんと分岐させろ
0351デフォルトの名無しさん
垢版 |
2019/11/27(水) 22:57:52.16ID:ap410XA+
>>350
例外の種類ごとに異なる対処が必要なら分岐するがそうでないならその限りではない。
何か対処すべきことがあればそれを記述するが他にすることがなければpassでよい。

おまえさんは何か変な教条主義に囚われているんではないかね?
0352デフォルトの名無しさん
垢版 |
2019/11/27(水) 23:06:11.22ID:vYtjQlD0
>>350
悪いけど、最初から個別の例外について虱潰しに対応しようとするのは典型的なアンチパターンだよ
あまりにも手間がかかりすぎるし、変更に対して非常に弱いコードになる。
例外処理で死守すべき大原則は、アプリを落とさないこと、綺麗に回復すること、の2点だけだ。
その上で、必要に応じて丁寧な個別対応をしてもよい。
まずアプリを落とさないことだが、WebのリクエストハンドラであったりUIのイベントハンドラであったりバッチ処理の一番大本のループであったり、
「ここまで戻れば確実に回復できる」という箇所で全ての例外をキャッチし、リトライやエラーメッセージの表示等を行って回復する。
次に綺麗に回復すること、これは、適切にwithやfinally等を使用して例外発生時に適切な後片付けを行うことだ。
この2点が守れていれば例外処理は完璧だが、場合によっては個別対応することで早期に回復できたり、より適切なエラーメッセージをユーザーに表示できたりするケースがある。
しかしそれはあくまでオプションにすぎない。
0355デフォルトの名無しさん
垢版 |
2019/11/27(水) 23:31:50.95ID:vYtjQlD0
>>353
単に無視することが適切な回復なのであればそれで正しいよ
大抵はそうではないが、だからといって例外が発生した瞬間に直上でキャッチしたところで対処のしようがないケースがほとんど
ほとんどの例外は単純にキャッチせずにスルーし、上の方で纏めてキャッチしてエラーを表示したりすることになる
0356デフォルトの名無しさん
垢版 |
2019/11/27(水) 23:36:46.74ID:OMjrfaFS
>>348
ありがとうございます。ようするにpygameを使った作品は著作権を放棄しろってことなんですね。。。
0357デフォルトの名無しさん
垢版 |
2019/11/27(水) 23:58:21.75ID:ymKEnJ4Y
>>355
範囲の狭い特定のエラーを意図して無視するのが適切な場合はあっても
あらゆるエラーをすべて無視するのが適切な場合はまずないやろ
0359デフォルトの名無しさん
垢版 |
2019/11/28(木) 01:29:21.32ID:BjRR3Cis
>>358
ありがとうございます!!
0360デフォルトの名無しさん
垢版 |
2019/11/28(木) 03:06:02.69ID:1K1GwsjB
著作権を放棄しているわけではない
自分の著作権の下で自らの著作物をLGPLの派生物として配布しているんだ
自分の著作物をどんなライセンスで配布しようが本来は勝手だが、利用しているライブラリが他人の著作物である以上、
そのライブラリの著作権を同梱した派生物を配布するためにはそのライブラリの著作権者が定めるライセンスに従わねばならない
そして、そのライセンスが派生物のライセンスを制約するようなものであった場合は結果的に自分の著作物にライセンスが感染する形になるわけだ
0361デフォルトの名無しさん
垢版 |
2019/11/28(木) 05:28:36.70ID:BjRR3Cis
>>360
そういうことなんですね!
勉強になりました。
0362デフォルトの名無しさん
垢版 |
2019/11/28(木) 07:46:57.30ID:LEtsBWW2
俺が不勉強なだけかもしれないが
try:〜except:passでエラーを握りつぶしておいて
直上でエラー処理するってどういうことだ?

普通にエラーをそのままにしといたら呼び出し元にエラーが届いて
そこで処理したらいいだけの話だろ 一番下の階層でpassして握り潰す必要はない
0363デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:33:14.83ID:VOkh5kHm
>>362
> try:〜except:passでエラーを握りつぶしておいて
誰がそんなことを言ってるんだ?
そう思い込んでいるのはあなただけでは
0364デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:38:48.41ID:b0jGiHif
異常系をわざわざ戻り値で表現し直すんじゃないの?w
そんなことするより、リスローの方が絶対にいいわな。
0366デフォルトの名無しさん
垢版 |
2019/11/28(木) 14:59:01.40ID:p/uKw1d3
pyautoguiっての普通に使ってる時は問題ないんだけど
リモートデスクトップで1度開いちゃうと画面閉じた時に
pyautoguiの中のsetcursorposってのでエラー出るんだけどどうにかならない?
0367デフォルトの名無しさん
垢版 |
2019/11/28(木) 16:12:48.01ID:rcIus152
大企業で無料で商用利用できるIDEでオススメありませんか?
個人ではVScode使ってますがエンタープライズ企業は無償利用無理みたいです
0371デフォルトの名無しさん
垢版 |
2019/11/28(木) 17:24:36.37ID:i2j7bL3h
どうせVSと近藤してるんだろ
0372デフォルトの名無しさん
垢版 |
2019/11/28(木) 21:56:29.31ID:qnF6NUyh
>>357
堅牢なソフトウェアを構築する方法論として、何かエラーがあったらその処理単位ごと
無かったことにするというものがある。DBのトランザクションとかerlangのlet it crashとかな。
そういう方法論ではエラーの種類など見ない。
そこでは逆に、知ってるエラーだけcatchして他はスルーするという手法こそ否定される。
なぜなら、下層のルーチンが「知らない」とスルーしたエラーなら上層のルーチンは
「もっと知らない」はずだからな。
0373デフォルトの名無しさん
垢版 |
2019/11/28(木) 22:06:08.08ID:4XtsM+GQ
せやろか?
0374デフォルトの名無しさん
垢版 |
2019/11/28(木) 23:49:35.94ID:3SZL29g0
>>372
ものすっごい中途半端な知識で知ったかしようとする前に基礎を抑えようね

DBのトランザクション処理を実行しました
なんかエラー発生しました
エラーの種類など見ないっ(キリッ)

軽量プロセスにsend messageしました
なんかプロセス落ちました
リスタートあるのみ(キリッ)

>なぜなら、下層のルーチンが「知らない」とスルーしたエラーなら上層のルーチンは
>「もっと知らない」はずだからな。
何を知らないのか考えようね
0375デフォルトの名無しさん
垢版 |
2019/11/29(金) 00:49:58.07ID:8hJB6N01
>>372のやり方だと「止まらない」プログラムは作ることはできても
「使える」プログラムは作れそうにないなw
0380デフォルトの名無しさん
垢版 |
2019/11/29(金) 10:27:27.39ID:N/f9f1S7
>>349
漏れもpassは禁止で正しく処理するべきだと考えるが
どうしてもスルーしてプログラムを続行したい場合は

1.フラグを立ててプログラム終了時に報告
2.loggerでsyslogに出力
3.上の1と2の合わせ技
0381デフォルトの名無しさん
垢版 |
2019/11/29(金) 10:30:54.20ID:N/f9f1S7
>>355
上の方でまとめてキャッチしたいのに
except で pass したらキャッチされないぞ

except でその場だけキャッチせず上にスルーしたいならあらためて raise しろ
0382デフォルトの名無しさん
垢版 |
2019/11/29(金) 12:06:18.51ID:dGU1sZlL
pyautoguiでとりあえずブラウザ内の手作業のの自動化できたから、seleniumにも手を出してみたけどこっちは難しいね
HTMLが分かってないとキツイな(´・ω・`)
0383デフォルトの名無しさん
垢版 |
2019/11/29(金) 17:46:37.36ID:po6NZMwT
python勉強しようと思うんだけどエディタはjupyterがデフォなの?
visual studioになれてるからvs使いたいんだけどまずいのかな。
0385デフォルトの名無しさん
垢版 |
2019/11/29(金) 17:51:35.27ID:VBGSEbtt
>>383
PCのスペックが足りてて問題なく動けば問題ないぞ
スペック足りない俺様PCでは
秀丸エディタかsakuraエディタが精いっぱいなんだぜ
0386デフォルトの名無しさん
垢版 |
2019/11/29(金) 19:37:04.50ID:LMfDTWZ+
>>383
VSCodeにしとけ
MSはPythonの開発環境としては今VSCodeを推していて、本家VSの方のPythonサポートはもう将来性がない
0388デフォルトの名無しさん
垢版 |
2019/11/29(金) 19:56:54.52ID:SQehs03a
>>380
>漏れもpassは禁止で正しく処理するべきだと考えるが

passは正しい処理ではないと言っているようだが、そう断言できる根拠はないだろ。
ログを吐けばオーケーというのも意味わからん。プログラムの正しさとは何の関係もないだろうに。
0389デフォルトの名無しさん
垢版 |
2019/11/29(金) 20:05:59.92ID:8hJB6N01
保守性が落ちるコードは正しいコードとはいえないだろ
例外処理でpassするくらいならそもそも例外が出ないようにすべきだし
自分で例外処理が書けないなら例外をそのまま発生させて別の誰かか未来の自分が対処できるようにすべき

自分ひとりで全部完結するプログラミングなら
他人から見てエラーを脳死で握りつぶしているのか
面倒臭くてpassしてるのか分からない変なコード書くのもありかもしれないけどな

ぶっちゃけ「正しいコード」が書きたいならpythonじゃなく証明型プログラミング使えばいいだけだしな
0390デフォルトの名無しさん
垢版 |
2019/11/29(金) 20:10:38.20ID:5FLVJ8iu
正しい処理どうこうの前に
passは文字通り何もしてないんだから処理したとは言わないだろ
0391デフォルトの名無しさん
垢版 |
2019/11/29(金) 20:18:27.56ID:VBGSEbtt
>>389
> 例外処理でpassするくらいならそもそも例外が出ないようにすべきだし
> 自分で例外処理が書けないなら例外をそのまま発生させて別の誰かか未来の自分が対処できるようにすべき
>
> 自分ひとりで全部完結するプログラミングなら
> 他人から見てエラーを脳死で握りつぶしているのか
> 面倒臭くてpassしてるのか分からない変なコード書くのもありかもしれないけど
↑イイ!!(・∀・)こと書いてある!!!
0392デフォルトの名無しさん
垢版 |
2019/11/29(金) 21:32:51.55ID:SQehs03a
>>389
>例外処理でpassするくらいならそもそも例外が出ないようにすべきだし

なんか言っていることが矛盾してるね。自分ひとりで全部のコードを書いているわけじゃなけりゃ
下層のルーチンから例外が出ないようにするなんてことが常にできるわけがないだろう。
自分で保証できるのは上流の呼び出し元にどういう例外を渡すか(渡さないか)だけ。

>他人から見てエラーを脳死で握りつぶしているのか
>面倒臭くてpassしてるのか分からない変なコード書くのもありかもしれないけどな

意図がわかりやすいコードを書くことが推奨されるのはもちろんだが、逆にコードだけからは
意図を判断しづらいケースはいくらでもあるわけなんでそこを非難しようとしても不毛なだけだと
思うがな。
例えば逆のケースで例外をcatchしていないコードがあった時、それが意図的にスルーして
いるのか面倒くさいからかcatchしなかったのかはたまた例外が発生する可能性を見過ごして
いたのか、コードの字面だけからはやっぱり判断できんだろう。

そもそも、面倒くさくて握りつぶすという発想がよくわからんな。
面倒くさいなら何もしないでスルーするんじゃないの?
#Javaの話で関数の仕様を変えられないから、とかならわからんでもないが。
0393デフォルトの名無しさん
垢版 |
2019/11/29(金) 21:44:06.26ID:8hJB6N01
>>392
下層で例外を上に渡すのか渡さないのか決めるなら
例外処理をどうするのかを上層で判断するのか下層で判断するのか
結局どちらでもない中途半端になるだけだな 
上層に例外処理を任せるなら 例外を握りつぶしにしても上層で握りつぶす
例外が出る可能性を消せないのであれば例外を隠蔽しない
例外を隠蔽するくらいなら例外が出る可能性を完全に消す
単純な話だ


>例えば逆のケースで例外をcatchしていないコードがあった時、それが意図的にスルーして
>いるのか面倒くさいからかcatchしなかったのかはたまた例外が発生する可能性を見過ごして
>いたのか、コードの字面だけからはやっぱり判断できんだろう。

このうちのどれかなんて判断しなくていい 全部対処の必要があるからな
君は「問題なく動くコード」を作ることを最優先にしているようだがそのために「問題を起きていないことにする」んじゃあ意味がない
起きてない問題を解決するのは起きている問題を解決することの数倍難しいんだ

エラーが発生すること自体は開発の過程においては別に悪いことじゃない
エラーを見かけ上発生させなくなることで問題を不可視にするほうが害悪
0394デフォルトの名無しさん
垢版 |
2019/11/29(金) 22:04:01.71ID:SQehs03a
>上層に例外処理を任せるなら 例外を握りつぶしにしても上層で握りつぶす

その例外を発生させた処理に近い方が適切な判断ができるに決まってるだろう。
どういうメリットがあってその処理を上層に任せるなんて言ってるのかねえ。

>エラーを見かけ上発生させなくなることで問題を不可視にするほうが害悪

こうなるともう宗教だな。
仮に内部でエラーが起きたとしても、それが外に対して悪影響を及ぼさないんだったら
無かったことにして全然問題ないと思うが。
0395デフォルトの名無しさん
垢版 |
2019/11/29(金) 22:08:10.95ID:5FLVJ8iu
外に悪影響を及ぼさないことを保証できる実力があるなら文句ないわ
俺にはとても出来ない
■ このスレッドは過去ログ倉庫に格納されています

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