Pythonプログラマーは空白の問題を不便だと感じていますか?[閉まっている]


11

多くのプログラマーは、最初にPythonに遭遇すると、空白の重要性にすぐに先送りされます。これが不便であるというさまざまな理由を聞いたことがありますが、Pythonプログラマーから苦情を聞いたことはありません。

もちろん、私は自分のキャリアをJavaの世界で過ごしてきたので、多くのPythonプログラマーに会ったことはありません。

だから私の質問は、大規模なPythonプロジェクト(Pythonが使用されている主要な言語である3か月以上)に参加している人たちに対するものです。それとも、フローに入ったら問題ではなかったのですか?

Pythonに賛成か反対か、またはPythonの空白の使用に賛成または反対なので、私は質問をしていません。私はたまたまPythonが好きですが、私はPythonを大きなものに使ったことはありません。

Pythonの経験がない場合は、推測を提供しないでください。


2
彼らはその言語を使用しますか?しません 煩わしい/気を散らす構文要件は、プロジェクトで別の言語を選択する可能性があることの1つです(もちろん、選択できると仮定します)。

空白はいつ問題になるのですか?:
クーゲル

22
他のみんながそれを育て続けるのは不便だと思います。私たちはそれについて決して考えません。
ウィンストンイーバート

空白の問題は数年前と変わりません-OCCAM2にはかなりの空白がありました。大したことではありませんでした。
すぐに

4
私が今までそれが迷惑見つけた唯一の時間があるときに、コピー&ペースト、タブの代わりにスペースを使用して書かれたオンライン(またはその逆)からコードを引き起こし、文字通り目に見えない構文エラー
キャメロン

回答:


14

空白が煩わしいと感じるケースは1つだけです。つまり、既存のコードを変更して、コードのブロックを以前よりも多少インデントする必要がある場合です(たとえば、if:前にコードを追加または削除します)。Cのような言語で書くときは、if中括弧のペアを追加し、(Emacsで、または私が良いエディターを想像して)Tabを押して、エディターがインデントを自動的に修正できるようにします。Pythonでは、自分でやらなければなりません。もちろん、それを自分で行うためのエディターのショートカットがありますので、それほど悪くはありませんが、冗長性の損失はプログラマーにわずかな余分な負担を課します。

ただし、画面の半分が次のような行で埋められないようにするためだけであれば、全体としては勝ちです。

         }
      }
   }
}

1
Pythonを話す合理的なエディターには、コードのブロックを再インデントする非常に簡単な方法があります。Wing IDEでは、ブロックを選択してTabキーを押すだけです(またはShiftキーを押しながらTabキーを押してインデントレベルを下げます)。
アダムクロスランド

1
はい、Emacsでブロックを選択してC-c >またはを押しますC-c <。ただし、まだ自分で行う必要があります。別の言い方をすれば、空白とコードロジックは冗長ではないため、巨大なブロックを選択してM-x indent-region(またはエディターのバージョンが何であれ)呼び出して、すべてを「正しく」インデントすることはできません。
-dfan

6
優れたエディタである@Adamを使用すると、インデントレベルを簡単に変更できます。しかし、中かっこ言語では、新しいコードを貼り付け、お気に入りのキーストロークを押してファイルを再インデントできます。多田!インデントが正しい。Pythonでは、インデント/デデントを貼り付け、選択、選択する必要があります。大したことではありませんが、ブレースがここで少し勝ちます。
ウィンストンイーバート

@Winston-編集者でなければなりません。貼り付けるコード自体が正しくインデントされている場合、それが右/左に数レベル離れすぎている場合、(SHIFT +)Tabを入力するだけで、それに応じて整列します-キーを押すことと実際の違いはありませんファイルを再インデントします。さらに-あなたはコードをコピー/ペーストしないでください:)
インゴ

1
@Winston:TabとShift-Tabを使用する場合はNotepad ++インデントブロックでさえ、vimショートカットはまだ見つかりませんが、十分に使用していないと思います:p
Matthieu M.

50

Pythonの重要な空白が大好きです。私にとっては、構文レベルでのDRYの完璧な例です。コードのブロックの開始位置と終了位置を人間が判読できる方法は、インデントを使用します。コードを読みやすくするには、言語に関係なくインデントする必要があります。プログラマーにこの情報を2回指定させるのはばかげています。1回はコンパイラー/インタープリター用、もう1回は人間用です。さらに、Cライクな言語のインデントはコメントに似ています:理解しやすくすることを目的としていますが、その意味はコンパイラー/インタープリターによって強制されておらず、実際の意味(中括弧がある場所)と非常に簡単に同期できなくなります。明確化するのではなく、難読化する。


8
繰り返さないでください。とにかくブロック構造を反映するようにコードをインデントすることをお勧めしますが、なぜ開始/終了マーカーもあるのでしょうか?
Steve314

12

かなりの空白が実際に便利です。入力が少なくなります。コードをきれいに、かなり明確にフォーマットします。このため、コードが読みやすくなります。

(同じ理由で、Haskellの重要な空白も好きです。)


1
Haskellのホワイトスペースでの私の経験も共有していましたが、FarmBoyは、Pythonで3か月の経験が必要だと主張しました。:
インゴ

1
1998年以来のPythonたちとの私の経験、私の答えは、おそらく資格ので:)(残念ハスケルとの私の経験がはるかに短いです。)
9000

@ 9000 HaskellがPythonの前に来たとしても!:D
pradyunsg 14

8

私が初めてpythonを使用したとき、空白は新しく、そのため迷惑な制限でした。

今では気づいていません。私はpythonを11か月間使用しています。


5

最初に-私のパンとバター言語はPython、SQL、およびJavaです。Pythonの空白は大好きです。構文とタイピングが少なく、読みやすく、きれいにフォーマットされたコードを書くことを人々に強制します。OTOH、私はJavaの冗長性が嫌いです。そのため、実際にPythonを使用してJavaで記述する必要のあるすべての定型文を生成します。

ただし、1つの大きな注意点は、Webからコードをコピー/貼り付ける場合です。多くの場合、スペースとタブが混在するため、クリーンアップに余分な手順が必要になります。


エラーが多くを助けることができるよう、構文強調表示タブにエディタを告げる- vimの私の使用のためにhighlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"私のvimrcで
Daenyth

4

プログラマが空白の重要性に悩まされている場合、おそらくPythonプログラマにはならないでしょう。


1
Pythonを説教して、The Whitespace Thing(tm)に問題があると言っている人がかなりいるが、しばらくすると気に入ってくれるようになった。私の観察から、より多くの人々がこのトピックに関する議論に参加するにつれて、そのような物語を語る彼らのうちの1人の可能性は1に近づくと思われます。(編集:2番目の答えですぐに証明された...)

@delnan、これを購読できます。
インゴ

3

重要な空白に問題がある人と、ほとんどのインデントを関与せずに処理するEmacsなどの優れたプログラマーのテキストエディタを使用した経験のない人との間には、かなりの重複があると思います。

いずれにせよ、一度Pythonを内部化すれば、もう問題はありません。実際、その簡潔さと画面上の小さなスペースは、読みやすさにとって大きな利点になります。私は主にPythonを使用してきたため、冗長性の高い言語(JavaやC#など)を作成するのは難しいと感じています。インデントがすでに構造を明確にしているコードを中括弧で囲むと、神経がすり減ります。


3

実際のコーディングでは、まったく不便ではありませんが、実際には有益です(dsimchaの答えを参照)。

主要な空白を尊重しない通信技術(多くの非プログラミング指向のWebフォーラムやHTMLテンプレート言語などの異なる言語にPythonコードを埋め込むとき)を扱うとき、それは迷惑になる可能性があります。 Pythonの欠陥よりも先頭の空白を除去するツールの欠陥の多くは、コード構造を2回表現する冗長言語がそのような破壊的な環境を処理するためにより適切に装備されていることは事実です(エディターにコードを貼り付けて、明示的な構造マーカーに基づいて再インデントするか、単にコードが人間によって読み取られるのではなく実行されるだけであるかどうかは気にしません)。


2

ホワイトスペースが迷惑だとは思いません。他の言語では、インデントの欠如または一貫性のないインデントは非常に迷惑です。この問題は、スタイルが解決しようとしている問題の1つであることを理解しています。

Pythonは私の主要な言語の1つではありません。

インデントのタブとスペースの処理がときどきうっとうしいと感じます。これは、編集者を編集から別の編集に切り替えるとき、または他の誰かが書いたコードを編集するときに問題を引き起こす可能性があります。通常、解決するのは簡単です。


1
Pythonのインデントにタブとスペースを混合地獄への最短の道である:P
マシューM.

@Mattieu:間違いなく、それは私の迷惑です。
-BillThor

1

私はC#/ Javascript / XBaseのバックグラウンドを特定の順序で持っていません。Pythonを使っている間は、私にとってはまったく考慮しません。それは他の言語のブレースのようなものです-それがどのように機能し、ルールが言うように物事を置き、あなたの目を乾かすのが私の態度です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.