タグ付けされた質問 「python」

Pythonは動的に型付けされた、高レベルのインタープリタ型プログラミング言語です。その設計は、明確な構文、オブジェクト指向プログラミングへの直感的なアプローチ、および物事を明確にする正しい方法を作ることに焦点を当てています。Pythonはモジュールと例外をサポートし、広範な標準モジュールライブラリを備えています。Pythonは汎用であり、Webから組み込みシステムまで幅広く使用されています。

9
なぜ人々はPython 3の使用をためらうのですか?
Python 3は2008年12月にリリースされました。それから多くの時間が経過しましたが、今日でも多くの開発者はPython 3の使用をためらっています。 もちろん、Python 3にはPython 2との非互換性があり、一部の人々は後方互換性に依存する必要があります。しかし、Python 3は、ほとんどのプロジェクトがPython 3に切り替えたり開始したりするのに十分な長さではありませんか? 競合する2つのバージョンがあると、多くの欠点があります。学習者の混乱など、2つのブランチを維持する必要があります。では、なぜPython 3に切り替えることについてPythonコミュニティ全体でそんなにためらいがありますか?

23
科学的コードを書くときのきれいなプログラミング
私は大規模なプロジェクトを実際に書いていません。私は巨大なデータベースを維持したり、何百万行ものコードを扱ったりしていません。 私のコードは、主に「スクリプト」タイプのもの-数学関数をテストするためのもの、または何かをシミュレートするためのもの-「科学プログラミング」です。ここまでに取り組んだ最長のプログラムは数百行のコードであり、私が取り組んでいるプログラムのほとんどは約150行です。 私のコードもがらくたです。先日私が書いたファイルを見つけようとしていたので、これに気づきましたが、おそらく私は上書きしており、バージョン管理を使用していないことを知っています。これはおそらく私の愚かさに多くの人が苦しんでいます。 私のコードのスタイルは複雑で、何かを行う別の方法を記した古いコメントや、コピーされたコード行で満たされています。変数名は常に非常にわかりやすく説明的に始まりますが、たとえば、誰かがテストしたい新しいものを追加または変更すると、コードが上にオーバーレイされて上書きされます。このことをすぐにテストする必要があると思うので、私は安っぽい変数名を使用し始め、ファイルがポットに行くフレームワークを持っています。 私が現在取り組んでいるプロジェクトでは、私はこれらすべてが私に大きな意味で噛み付いてくる段階にあります。しかし、問題は(バージョン管理を使用し、新しい反復ごとに新しいファイルを作成し、そのすべてをどこかにテキストファイルに記録することを除いて、状況を劇的に改善する可能性があります)私の実際のコーディングスタイル。 より小さなコードを書くために単体テストは必要ですか?OOPはどうですか?大規模なプロジェクトで作業するのではなく、「科学的プログラミング」を行うときに、適切でクリーンなコードを迅速に記述するのにどのようなアプローチが適していますか? 多くの場合、プログラミング自体はそれほど複雑ではないため、これらの質問をします。私がプログラミングでテストまたは研究しているのは、数学または科学に関するものです。たとえば、2つの変数と関数がおそらくそれを処理できる場合、クラスは必要ですか?(これらは一般に、プログラムの速度が速いほうが望ましい状況であると考えてください-シミュレーションの25,000,000以上のタイムステップを実行しているとき、それを望んでいます。) おそらくこれは広すぎるので、もしそうなら、私は謝罪しますが、プログラミングの本を見ると、しばしばより大きなプロジェクトで対処されているようです。私のコードはOOPを必要とせず、すでにかなり短いので、「ああ、でもそうすればファイルは1000行減ります!」これらの小さくて高速なプロジェクトで「やり直す」方法ときれいにプログラムする方法を知りたいです。 私はもっ​​と具体的な詳細を提供したいのですが、アドバイスがより一般的であればあるほど、役に立つと思います。Python 3でプログラミングしています。 誰かが重複を提案しました。標準のプログラミング標準を完全に無視することについては話していないことを明確にしましょう。明らかに、これらの標準が存在する理由があります。しかし、一方で、いくつかの標準的なことを実行できたときにOOPと呼ばれるコードを書くことは本当に意味がありますか?プログラム? 例外があります。さらに、科学的なプログラミングには、単なる標準を超えた標準がおそらくあります。私もそれらについて尋ねています。これは、科学的なコードを書くときに通常のコーディング標準を無視すべきかどうかではなく、きれいな科学的なコードを書くことです! 更新 「まったく1週間後ではない」種類の更新プログラムを追加すると思いました。あなたのアドバイスはすべてとても役に立ちました。現在、バージョン管理を使用しています-git、グラフィカルインターフェイス用のgit kraken。非常に使いやすく、ファイルを大幅にクリーンアップしました。古いファイルを残したり、「念のため」に古いバージョンのコードをコメントアウトしたりする必要はもうありません。 また、pylintをインストールし、すべてのコードで実行しました。最初に1つのファイルが負のスコアを獲得しました。それがどのように可能だったのかさえ私には分かりません。私のメインファイルは、〜1.83 / 10のスコアから始まり、〜9.1 / 10になりました。すべてのコードは現在、標準にかなり準拠しています。また、自分の目で行った変数名を更新しました。 特に、私はこのサイトで最近の質問をして、私の主な機能の1つをリファクタリングしました。そして今ではずっときれいで短くなっています。サイズと何が起こっているかを把握するのがはるかに簡単です。 次のステップは、ある種の「単体テスト」を実装することです。つまり、メインファイルで実行できるファイルで、アサートステートメントとtry / exceptsを使用して、その中のすべての関数を調べます。これはおそらく最善の方法ではなく、多くの重複したコードになります。しかし、私は読み続けて、それをより良くする方法を見つけようとします。 また、すでに作成したドキュメントを大幅に更新し、Excelスプレッドシート、ドキュメント、関連するペーパーなどの補足ファイルをgithubリポジトリに追加しました。それは今や本当のプログラミングプロジェクトのように見えます。 だから...私はこれがすべてだと思います:ありがとう。

24
Pythonの欠点は何ですか?[閉まっている]
Pythonは最近大流行しているように見えますが、それは当然のことです。なぜなら、Pythonは本当に解決すべき新しい問題を与えられることを楽しんでいる言語だからです。しかし、賢者がかつて言ったように(実際に誰がそれを言ったのかわからないので、彼を賢者と呼ぶ;彼がその賢者であったかどうかはまったくわからない)、本当に言語を知ることはそのことを知っているだけではない構文、設計など、利点だけでなく、欠点もあります。完璧な言語はありません。一部の言語は他の言語よりも優れています。 だから、あなたの意見では、Pythonの客観的な欠点になります。 注:ここで言語比較を求めているわけではありません(つまり、C#はPythonよりも優れています... yadda yadda yadda)-より多くの客観的(ある程度)の言語機能は、適切に設計されているかどうか、あなたがそれに欠けているものなど。比較として別の言語を使用する必要がある場合、ただし他の言語では詳しく説明するのが難しい点を説明するためにのみ使用します(つまり、理解を容易にするため)

8
「モジュールのインポート」と「モジュールのインポート機能から」
私は常にこの方法を使用しています: from sys import argv argvargvだけで使用します。ただし、これを使用する規則があります。 import sys とによってargvを使用して sys.argv 2番目の方法は、コードを自己文書化し、私は(本当に)それに従います。しかし、私が最初の方法を好む理由は、モジュール全体をインポートするのではなく、必要な関数のみをインポートするためです(Pythonはそれらをインポートするのに時間を浪費する無駄な関数を含んでいます)。argvだけが必要であり、sysの他のすべての関数は役に立たないことに注意してください。 だから私の質問は。最初の方法は本当にスクリプトを高速化しますか?どの方法が最も好まれますか?どうして?
143 python 

1
モジュールとパッケージ
from 'x' import 'y'私がするたびに、どれが「モジュール」とみなされ、どちらが「パッケージ」とみなされ、なぜそれが逆ではないのか疑問に思っていましたか?
140 python  packages  modules 

2
Pythonファイルの命名規則?
PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-namesのこの部分を見ました これがモジュール/クラス/パッケージのファイル名を参照しているかどうかはわかりません。 それぞれの例が1つある場合、ファイル名はすべて小文字にし、必要に応じてアンダースコアを使用する必要がありますか?または、他の何か?

15
2回繰り返す必要があるもののために関数を書くことは常にベストプラクティスですか?
私自身、何かを2回以上行う必要がある場合、関数を書くのを待つことができません。しかし、2回しか表示されないものに関しては、少し注意が必要です。 3行以上を必要とするコードの場合、関数を作成します。しかし、次のようなものに直面するとき: print "Hi, Tom" print "Hi, Mary" 私は書くのをためらっています: def greeting(name): print "Hi, " + name greeting('Tom') greeting('Mary') 2番目のものは多すぎるようですね。 しかし、私たちが持っている場合: for name in vip_list: print name for name in guest_list: print name そして、代替手段は次のとおりです。 def print_name(name_list): for name in name_list: print name print_name(vip_list) print_name(guest_list) 物事はトリッキーになりますか?今決めるのは難しい。 これについてあなたはどう思いますか?

3
PythonがGILで書かれたのはなぜですか?
グローバルインタープリターロック(GIL)は、スレッド処理などがPythonでややこしい理由の主な理由としてよく引用されているようです。 プログラマーではないので、なぜそうなるのか手がかりがありません-GILを入れる背後にあるロジックは何ですか?

10
Pythonが高性能/科学計算に使用されているのはなぜですか(Rubyは使用されていません)?
PyCon 2011の講演から引用があります: 少なくとも当店(アルゴンヌ国立研究所)には、科学計算用に受け入れられている3つの言語があります。この順序では、C / C ++、すべての方言のFortran、およびPythonです。Ruby、Perl、Javaの完全かつ完全な欠如に気付くでしょう。 これは、より一般的な高性能コンピューティングのコンテキストでした。引用は1つのショップからのものにすぎませんが、HPCの言語に関する別の質問もPythonを学ぶべきものとしてリストしています(Rubyではありません)。 今、私はその問題空間で使用されているC / C ++とFortranを理解できます(そしてPerl / Java は使用されていません)。しかし、PythonとRubyのHPCでの使用にかなりの違いがあることに驚いています。(注-私はPythonのファンですが、Ruby に対しては何もありません)。 1つの言語が離陸した特定の理由はありますか?利用可能なライブラリについてですか?特定の言語機能はありますか?地域社会・共同体?それとも、単に歴史的隣接性、そしてそれは他の方法で行ったかもしれない?


2
Pythonの相対インポートの何が問題になっていますか?
最近、人気のPythonスタイルチェッカーであるpylintのバージョンをアップグレードしました。 コード全体で弾道的になり、完全なパッケージパスを指定せずに、同じパッケージ内のモジュールをインポートする場所を指摘しました。 新しいエラーメッセージはW0403です。 W0403:相対インポート%r、%rである必要があります パッケージディレクトリに関連するインポートが検出されたときに使用されます。 例 たとえば、私のパッケージが次のように構成されている場合: /cake /__init__.py /icing.py /sponge.py /drink そしてスポンジパッケージに私は書いています: import icing の代わりに import cake.icing このエラーが発生します。 すべてのPylintメッセージが同等に重要であるとは限らないことを理解しており、それらを却下することを恐れていませんが、そのような慣行が悪いアイデアと見なされる理由はわかりません。 私は誰かが落とし穴を説明できることを望んでいたので、この明らかに見せかけの警告をオフにするのではなく、コーディングスタイルを改善することができます(現在の予定です)。

5
連結に対して+が%sよりも優れているのはなぜですか?
Python %sではなく、文字列の連結に使用する必要があることを理解しています+。 私は次のことができます: hello = "hello" world = "world" print hello + " " + world print "%s %s" % (hello, world) print "{} {}".format(hello, world) print ' '.join([hello, world]) しかし、なぜ私は以外のものを使用する必要があり+ますか?単純なを使用して連結を記述する方が簡単+です。次に、フォーマット文字列を見る場合%s、%dandなどのタイプを指定します。型について明示する方が良いかもしれないことを理解しています。 しかし、それから私は、+連結のために使用することは、入力するのが簡単であっても避けるべきだと読みました。文字列を他の方法のいずれかで連結する必要があるという明確な理由はありますか?
88 python  strings 

9
最初の処理と例外処理を確認しますか?
私は「Head First Python」という本を読んでいます(今年は私の言語です)。2つのコードテクニックについて議論するセクションに行きました: 最初のチェックと例外処理。 Pythonコードのサンプルを次に示します。 # Checking First for eachLine in open("../../data/sketch.txt"): if eachLine.find(":") != -1: (role, lineSpoken) = eachLine.split(":",1) print("role=%(role)s lineSpoken=%(lineSpoken)s" % locals()) # Exception handling for eachLine in open("../../data/sketch.txt"): try: (role, lineSpoken) = eachLine.split(":",1) print("role=%(role)s lineSpoken=%(lineSpoken)s" % locals()) except: pass 最初の例では、.split関数の問題を直接扱います。2つ目は、例外ハンドラーで処理できるようにします(そして問題を無視します)。 彼らは本の中で、最初にチェックする代わりに例外処理を使用するよう主張しています。引数は、例外コードがすべてのエラーをキャッチするということです。最初のチェックでは、考えていることだけをキャッチします(そして、コーナーケースを見逃します)。私は最初にチェックするように教えられたので、私の最初の本能はそれをすることでしたが、彼らのアイデアは面白いです。例外処理を使用してケースを処理することを考えたことがありませんでした。 2つのうち、どちらが一般的にベタープラクティスと見なされますか?

6
なぜPythonの人気はそんなに突然でしたか?[閉まっている]
Pythonは1991年に初めて登場しましたが、2004年までTIOBEランキングが意味のあるものを定量化するかどうかは不明でした。 どうした?この13歳の言語への関心が屋根をくぐった原因は何ですか?Pythonが最初の10年間でPerlの本当の競争相手と見なされなかった理由はありますか?Pythonがさらに10年間、比較的あいまいな状態を続けなかった理由はありますか? 個人的にはPythonはとてもいい言語だと思います。私だけではないことを嬉しく思います。しかし、企業の支持や関連性の突然の上昇を説明するキラー機能はありません。 誰もが物語を知っていますか?

3
「for-loop」の考え方から離れるにはどうすればよいですか?
これはかなり概念的な質問ですが、これについては良いアドバイスが得られることを望んでいました。私が行うプログラミングの多くは(NumPy)配列を使用しています。多くの場合、サイズの異なる2つ以上の配列のアイテムを一致させる必要があり、最初に行うのはforループまたはさらに悪いことにネストされたforループです。forループは(少なくともPythonでは)遅いので、できる限り避けたいです。 NumPyの多くのことには、調査するだけでよい事前定義コマンドがありますが、(経験豊富なプログラマーとして)何かを反復する必要があるときに思い浮かぶ一般的な思考プロセスがありますか? だから私はしばしばこのようなものを持っていますが、これはひどいので避けたいです: small_array = np.array(["one", "two"]) big_array = np.array(["one", "two", "three", "one"]) for i in range(len(small_array)): for p in range(len(big_array)): if small_array[i] == big_array[p]: print "This item is matched: ", small_array[i] 特にこれを達成するための複数の異なる方法があることを知っていますが、もしあれば、一般的な考え方に興味があります。
79 python  array  loops 

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