[過去ログ] Pythonのお勉強 Part62 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
78(4): デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 08:04:21 ID:qdFsd7WD0(1/7) AAS
>>74ブロックについては間違ったインデントで誤認すると言うのを防ぐためのものだからそう言うのが嫌ならPythonを使うことを諦めるしかないな
if(...)
if(...)
a = ...
else
b = ...
>>7777(1): デフォルトの名無しさん (ワッチョイ 473c-hJNX) [sage] 2019/09/29(日) 02:07:50 ID:9sS1uJjp0(1) AAS
>>72
俺おっさんだけど新人にはPythonだけ教えてる
本質と違うところで悩んで欲しくないからね
言語体系として美しさに欠ける点が多々あるのは諦めている
ブロックが分かりにくいのもあるけどスコープも分かりにくい
withやtryで字下げしてブロック作ってるのにスコープは作らないとか
普通ならあり得ん仕様だ、まぁ便利なんだけど
with open(‘hoge.txt’, ‘r’) with f:
a = 123 ← これ、ローカル変数じゃない
print(a) ←ブロックの外に出て表示可能
結果 123
こんなこと書くとrubyくんが降臨するかな
スコープはたしかに分かりにくいね
ただPythonは変数宣言がないからスコープ作るとその例だと
a = 0
with open(‘hoge.txt’, ‘r’) with f:
a = 123 ← これ、ローカル変数じゃない
print(a) ←ブロックの外に出て表示可能
みたいな本来不要なコードを入れる羽目になるから痛し痒しだね
81: デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 10:57:44 ID:qdFsd7WD0(2/7) AAS
>>7979(1): デフォルトの名無しさん (アウアウウー Sa8b-GKcl) [sage] 2019/09/29(日) 09:54:04 ID:6bWGECfja(1) AAS
>>78
今時オートインデントのないエディタやIDEなんて使わんから、前に誰かも言ってたけどループ抜けた直後の処理とかインデントを手動で調整する部分は明確に劣ってると思うけどね
掲示板とかの書き込みでも仕様によっては論理構造自体把握できなくなるし
それだけをもってPythonがどうのこうのと言う気はないし好んで使ってはいるけどね
> 今時オートインデントのないエディタやIDEなんて使わんから
Pythonの仕様決めた頃の話に今時とか言われても…
後付で批判できる俺スゲーってか?w
83: デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 14:19:19 ID:qdFsd7WD0(3/7) AAS
お前の批判の理由がおかしいだけ
89(1): デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 17:29:15 ID:qdFsd7WD0(4/7) AAS
>>8484(1): デフォルトの名無しさん (アウアウウー Sa8b-GKcl) [sage] 2019/09/29(日) 15:04:48 ID:wk/e9yFta(1/2) AAS
他の言語も実用上インデントが分かりにくい状況なんかあり得ないって言ってんだけどな
そうなるとブロックの終わりが視認しづらいってデメリットだけが目立つことになるわけ
Pythonのブロックがわかりにくくないって言うなら意見の違いだから別にそれで良いけど
>>78のコード見たらわかると思うけど正しいコードの話をいくらされても意味ないよ
他の言語はインデントとコードの意味は関係ないからインデントによって誤認する可能性があって事実それによるバグもあったのでPythonみたいな考え方が出てきたって話ね
別にそれで全てを解決するわけじゃないし色々指摘されてる通り弊害もあるのはわかってる
90(1): デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 17:32:32 ID:qdFsd7WD0(5/7) AAS
>>8585(1): デフォルトの名無しさん (ワッチョイ 4797-i9+B) [] 2019/09/29(日) 15:12:39 ID:nT1w560I0(2/4) AAS
オフサイドルールでブロックがわかりにくいより、
ブロックスコープがないほうがよっぽどPythonの欠点だと思うんだよな
ただオフサイドルールは逆に便利なときもあるような気がするけどなー
JSとかで閉じカッコの対応がめちゃくちゃになるときよくあるもの
まぁそれは無名関数を突っ込めるからってのとも関係してるだろうし、
同一条件じゃないから単純比較はできないと思うけど
ブロックスコープは>>78の後半に書いてる通り変数宣言と絡むからちょっと難しいな
個人的にはあまり大規模なコードを書くような仕様じゃないと感じてる
93: デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 20:59:13 ID:qdFsd7WD0(6/7) AAS
>>9191(1): デフォルトの名無しさん (アウアウウー Sa8b-GKcl) [sage] 2019/09/29(日) 19:57:20 ID:0Rn4cTtQa(1) AAS
>>89
>>78のコードで言いたいことがわからんのだけど、elseの対応がわかりやすいってこと?それはあんまりメリットに見えないから誤解してるようだったら申し訳ない
インデントを文法に含めた時代背景とかは知らんかったから勉強になったよ
ただ、今は実用上そうする意義はあんまりないよねって言いたかっただけだから話がかみ合わなかったような気がするわ
いきなり煽られたからカッカしてたわすまんな
え?
elseがどのifに対応するのかぱっと見てわかるなら素ですごいと思う
ただ誰にでも君みたいな能力があるわけじゃないからインデントとブロックが合うようにしようってだけのこと
今は意味がないと言うけどみんながみんな理想的な環境使ってるわけじゃないしね
94(1): デフォルトの名無しさん (ワッチョイ 5f01-Gn+r) [sage] 2019/09/29(日) 21:01:42 ID:qdFsd7WD0(7/7) AAS
>>9292(2): デフォルトの名無しさん (ワッチョイ 4797-i9+B) [] 2019/09/29(日) 20:25:33 ID:nT1w560I0(3/4) AAS
>>90
大改造にはなるだろうね。どんなところが問題になるか把握してないけど、
JSにES6でlet/constが導入できたみたいにPythonでも導入されるとなんとなく嬉しそうではある。
大規模なコードは書かないから個人的には問題になったことがないけれど。
元の話になったPythonディスおっさんも、ブロックスコープがない、マルチコア時代にそれを活かしづらい設計、
とか言ってディスるなら、そうですねおっしゃるとおりですという感じになるんだけどなぁ。
まあPython 2からPython 3で結構手を入れたからやれなくもないとは思うけど、変数宣言しなくていいと言うメリットを捨ててまでブロックスコープ作るのがいいかどうかは微妙だし
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s