[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 21:04 / Filesize : 136 KB / Number-of Response : 655
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonに見られるインデントによる制御構造の是非



1 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 22:44:02 ]
議論よろしく。

367 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 14:59:26 ]
>>359
誰が書いてもある程度読みやすくなるようにできているのだよ。つまり、書き手よりも読み手を
重視しているんじゃねぇの? (でも、インデントの階層が深くなると、書いていて分かりづらく
なってくる。それも狙いかもしれんが。)

368 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:13:28 ]
>でも、インデントの階層が深くなると、

それは他の言語でも基本的には同じ問題で
そうなったら大抵は何か考え直すべきとされてるでそ

369 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:37:37 ]
Pythonもいろいろ工夫してるけど
へぼが書くとやっぱり読みにくい

370 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:38:58 ]
>>367
そんなに強制したいなら変数の命名規則も強制しろ。
そして変数の名前から型が決まるようにすればいい。

371 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 20:59:40 ]
つまり「ネストの深さ」にも「暗黙の制限」が
かかっているような言語仕様なんですね。
いくらでも深くネストできるけど、やりすぎちゃダメ!という…

372 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:00:27 ]
つシステムハンガリアン

373 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:31:40 ]
>>362>>364>>366
www.python.jp/doc/release/ref/indentation.html
この説明ではdedentと言ってる

374 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:50:46 ]
ついでに関数とかメソッドとかブロックの中の行数も制限しようぜ。
5行以内に。

375 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:27:39 ]
「強制すんな!おれは空白を何個入れるかで自己表現してんだ!」って思うか
「これでアホのゴミネストに付き合わなくてすむぜ」って思うかで
プログラマとしての何かが問われるだろう



376 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:45:40 ]
>>370
そんなの強制しなくても命名規則を決めればいいだけ
従わないヤツはチームから除外すれば済むし
それくらいできないヤツはどうせダメなヤツだから
むしろ除外した方がチームのため

377 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:06:19 ]
>>376
だよな。インデントだってコーディングルールを強制すればよいだけで
従わないやつは排除すればいい。インデントを言語仕様で強制する必用
全然ねえよな。Pythonのインデントに関する理屈は屁理屈

378 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:10:52 ]
>>377
>インデントだってコーディングルールを強制すればよいだけで

そうそう。
インデントを廃止するかわりに,ブラケットやendみたいなキーワードを導入すればいいだけの話だよね。
簡単簡単。

379 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:18:06 ]
ブラケットやendみたいなキーワードを強制されるのは嫌だな

380 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:28:23 ]
Ruby書いてるときに

def range(start, end)
..
って書けないのはちょっといやだな

381 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:30:05 ]
ブラケットがキーワードなのか

382 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:50:36 ]
>>375
どちらもアホプログラマにしか思えない

383 名前:デフォルトの名無しさん [2007/12/29(土) 02:12:48 ]
自分たちがちゃんとインデントされてるコードを書いてるかどうかという話と
言語仕様としてインデントでブロックをあらわすということは何の関係も無いわけだけど
>>377>>378は何を言ってるんだ?完璧に意味不明

384 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 07:19:11 ]
378は皮肉だろ。多分

385 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 09:31:12 ]
・378を皮肉だと分からないヤツ
・「キーワード」が「ブラケット」と「end」にかかっていると思っちゃうヤツ

どっちもPythonistaとして失格。
Monty Pythonでも見ながら基本からやり直した方がいい。



386 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:32:26 ]
>>379
Python でもかけませんがあにか

387 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:38:33 ]
>>385
別にPythonistaとやらになりたくはないがな
静的スコープのない言語なんて願い下げ

388 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:53:07 ]
Pythonは思いっきり静的スコープを採用した言語だが…

389 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:06:52 ]
まぁ378は皮肉としてはどうかと思うが

390 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:12:36 ]
そんなこといったら、>>383のもわかってる煽りだろw

391 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:43:48 ]
>>383に食いつくのはプライドが許さない

392 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:17:51 ]
>>386
これできみはしやわせになれると思うよ。

end = 1

393 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:22:38 ]
389=391はおれげんごをつくった。
でもだれもつかわなかった。

394 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:28:21 ]
そうですか

395 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:26:33 ]
そうです



396 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 07:34:26 ]
おめでとうございます

397 名前:デフォルトの名無しさん [2008/01/04(金) 23:16:45 ]
end があると、endだけの行が大量に発生するのが、コードが間延びしてる感じがしてダサい
pythonの方がエディタで眺めたときに、均等に情報が並んでる感じがして気持ちいい

398 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 04:29:54 ]
Pythonだとここまでで、インデント終わりってのが明確にわからないのだが、
その辺、どうやってみわけるの?

399 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 07:25:06 ]
>>398
次の命令のインデントでわかる。
インタラクティブモードの場合は空行を入れることでも可。


400 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:34:08 ]
>>399
やっぱそうか・・・
エディタとかブラウザで、どこまでスクロールすればいいんだろとか不安になるもんで

401 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:18:36 ]
why?
kwsk

402 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:50:31 ]
要するに「ブロック終了」に相当する単語なり文字が目に見えないから不安な気がするってことじゃないか?
自分もpythonはじめたかなり最初の方はそういう感覚があったような気がする

403 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:41:45 ]
こういうコードに遭遇すると殺意沸くよね

def ふにゃふにゃ
  ぴっぽろ
  ぱっぽろ

  # 以下不要なのでコメントアウト
  # ぷんぱか
  # ほにゃらら
   (20行続く)

  # 2008/1/5 追加しました。
  return "こんなところにこんなものが!”
  

404 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:51:11 ]
それはPythonに限らないだろ

String ふにゃふにゃ() {
  ぴっぽろ;
  ぱっぽろ;

  // 以下不要なのでコメントアウト
  // ぷんぱか;
  // ほにゃらら;
   (20行続く)

  // 2008/1/5 追加しました。
  return "こんなところにこんなものが!";
}

405 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:30:30 ]
いや、ちがうんだけど、
なんだかとても眠いので寝る。
続きは夢の中で議論しましょう。



406 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:26:02 ]
じゃ、そうしましょう。
おやすみなさい。

407 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:00:56 ]
俺も夢の中で、まってます

408 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:05:14 ]
じゃあ俺はニシキヘビを持って行くね。

409 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:23:26 ]
なんで来なかったんだよ!

410 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:30:56 ]
ごめん、熟睡しちゃった。テヘ

411 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:01:51 ]
寝て起きたらやり合うのめんどくさくなった

412 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:03:06 ]
Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
必ず自分でインデント調整せないかんの?
自動整形とか出来なさそう…まぁ、そういう機能ないエディタだと普段やってることだけどさ

413 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:28:56 ]
ブロックを跨いでるなら自動整形出来るだろ


414 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:24:27 ]
インデント調整ってめんどくさくないんだよ!

415 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:30:36 ]
>>412
>Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
>必ず自分でインデント調整せないかんの?

そういう場合、ブロックを関数とかメソッドとかに出来るし
何の関係も無い
カット&ペーストしたら大抵は何か考え直すべき
へぼが書くとやっぱり読みにくい




416 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 08:15:19 ]
考え直して関数・メソッドにする時にカット&ペーストしない?

417 名前:実際に書いたことあれば疑問に思わないんだけどね mailto:sage [2008/01/07(月) 10:42:03 ]
ブロックごとペースとしたらそのブロック全体の
インデントをちょちょいと直せばいいだけ

直すインデントの量は先頭を見れば自明



何か疑問でも?

418 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:49:10 ]
dakara sorega mendou datte hanasi dattandaro

419 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:51:54 ]
ペーストした時点で正しいコードになってるのと
ペースト後インデント直さないと正しいコードにならないのとの違いの話だな

420 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:58:26 ]
めんどうじゃないよ

421 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:41:19 ]
めんどうだよ

422 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:27:11 ]
めんどうじゃよ

423 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:31:50 ]
めんどうでござる

424 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:32:58 ]
めんどうだったら

425 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:18:51 ]
めんどうなんだからねっ



426 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:20:16 ]
カッコで照合する言語の場合は尻尾のカッコの数を間違えて
整合性がとれなくなったりコードがおかしくなったりするわけだけど
その際の確認の手間がペーストよりも後ろ側に来てるだけ

面倒もへったくれもないし議論になってねーっつーの

427 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:28:32 ]
カッコの数を間違えたらSyntax Erorrだと思うが

428 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:23:17 ]
Pythonもブロックのインデントレベルが違うと構文エラー
大らかなのはアセンブラぐらいかな

429 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:43:28 ]
何言ってんの?

430 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:19:08 ]
Python でインデントレベルが変わるのは : の次と
戻す時だけだから他言語での括弧の不整合と同じく
エラーが出るね

431 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:48:15 ]
よく考えろよ。

432 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:23:20 ]
お金は大事だぞ

433 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:53:07 ]
あふぉらっく

434 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:00:00 ]
python 書いたことある人間がうだうだ言うのはともかく
全く書いたり試したりしないで
脳内でイチャモン生成されても的外れだってことさ

435 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:00:38 ]
ていうかエラーが出ない人為的なミスに関して話をしてたのに
なんで「エラーが出る状況ではエラーがでるから同じだなんて」
って話になってるの?



436 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:38:37 ]
ネタスレ状態も悪くないと思う俺がいる

437 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:45:19 ]
>435 が思っているのもネタに過ぎないしな


438 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:08:03 ]
そりゃエラーが出ない人為的状況はインデントの有る無しと関係ないから
つまりスレタイ読めという事

439 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:43:39 ]
だからその時のミスを防ぐ手だてとかリカバリーの方法だよ。
カッコとかendとかある言語の方がいろいろ手を打てる。
たいていは自動フォーマッタが視覚的にミスに気づかせてくれる。
インデントとブロックを両方プログラマの手にあずけちゃうと、
プログラマがミスしたときの保険が無くなる。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:11:44 ]
括弧やendの辻褄で自動フォーマッタが気づかせるレベルのエラーなら
Python でもインデントのレベルの辻褄が合わないから同様に気づくと思うが

441 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:17:25 ]
>>440
書き出すインデントのレベルを勘違するのがミスだろ。
既に勘違いしてるのにどうやって辻褄が合わないことに気づくんだよ。

442 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:30:42 ]
if hige:
  fuga
  fuga
  pass


443 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:32:58 ]
んな奴にぬるい気持ちでコピペさせない、が正しい

444 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:50:15 ]
じゃあ熱く「俺にコピペさせてくれ!オゥイェー!ベイベー!」って言われたらどうするんだよ。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:07:35 ]
コードをコピペすんなよキチガイ



446 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:28:17 ]
じゃぁカットアンドペーストにするよ

447 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:54:46 ]
>>446
天才

448 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 10:28:47 ]
じゃ俺はコードの代わりにコンセントを使うよ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:09:42 ]
【審議中】
      _,,..,,,,_   _,,..,,,,_
   _,,..,,,_/ ・ω・ヽ/・ω・ ヽ,..,,,,_
  ./ ・ω_,,..,,,,_  l _,,..,,,,_/ω・ ヽ
 |   /   ・ヽ /・   ヽ    l
  `'ー--l      ll      l---‐´
     `'ー---‐´`'ー---‐´

450 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:56:52 ]
まずは言語仕様の問題と開発環境の問題を区別しよう。
話はそれからだ。

451 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:41:42 ]
そんなことより449の審議がいつ終わるかのほうが問題だ

452 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:49:01 ]
CM明けなんじゃない?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:00:07 ]
Python 勉強中のヘタレです。
私も昔の >>402 さんのように終了記号が無いのが不安です。
気が緩んでインデントを間違えてしまう
うっかり者は使うな!という言語なんでしょうか…?
前に Python でコード書いてたら、
急に好きなおにゃのこから電話が来て
電話の後インデントしきってないのを忘れて悩みました。

おにゃのこよりインデントを大事にしろ!
おしゃべりしててもインデントを忘れるな!って言語なんでしょうか。
コードを見ていると綺麗だとは思うのですが、
書くときは正しくヘビのように絡み付いて
縛り付けられる感じがして辛いです。

皆さんインデントのミスなんてしないんでしょうか?
ネタじゃなくてホントに。


454 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:26:47 ]
>453
俺は他の言語の出身だが、他でもインデントはキッチリ書くよ。
経験上、そうでないと自分がミスリードするし
インデントをキッチリ書くことは「当たり前のことを当たり前にやってるだけ」と思ってる。

欠点としては、自動整形が効かないってことかな。
場合によってはこれだけが痛い。

455 名前:453 mailto:sage [2008/01/26(土) 04:14:51 ]
私も普段からインデントはキッチリ書く、
というか書いてないと気がすまないのですが
コードを移動したり、差分をマージする時にドキドキしてしまいます。
マージとか他の言語だと、
ひとまずペーストしてインデント揃えて、ってできるんですが
Python だとペースト〜揃える間を一息でやらないと怖くて緊張します。




456 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:29:03 ]
まずアペンドしてからちまちま直せば良いんじゃないだろうか

% cat code01.py >> code00.py
% vi code00.py

457 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:40:14 ]
#{

#}

というインデントのヒントをコードに埋め込めばいいんだよ。
なんという逆転の発想・・・

458 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 16:35:23 ]
pass でブロック終端を表すのはかったるいとおもったけど、
...(Ellipsis)なら、それほど悪くないかなと思った・・・

459 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 22:43:30 ]
> pass でブロック終端を表す
そんなことしたっけ?

もしかして、空ブロックの代わりにpassって書くのと勘違いしてる?

460 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:22:31 ]
目印としてってことじゃねーの

461 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:10:41 ]
emacs だと pass の行の次はインデントが強制的に1つ引っ込むんだよ
他のエディタはどうなってるか知らんが

462 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 06:10:34 ]
それはEmacs特有のサービス(?)だと思うぞ

463 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 08:46:39 ]
マクロがあればどんなエディタでもできそうな気がする

464 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:19:17 ]
面白い仕掛けだね、pass でインデント終了って

465 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:26:02 ]
do - end
: - pass
文字数は変わらないね



466 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:48:01 ]
pass って書くなら、4回バックスペース押したほうがいいと思う。

つうか、ブロック毎にいちいち pass pass 書いてる python コードなんて
誰も読む気しない

467 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 07:49:50 ]
passなんて空ブロック以外で見たことないぜ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<136KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef