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

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

1
Pythonでtkinter GUIをプログラミングするときにクラスを使用する理由
私は主にPythonでプログラミングし、TkinterでいくつかのGUIをプログラミングしました。これまでに見たすべてのチュートリアルでは、GUIのクラスを定義して使用することを推奨していますが、GUIはクラスなしで手順のみを使用して問題なく実行されます。 クラスを使用する理由 私の観点からは、単純に余分な複雑なレイヤーと不要なコードであるように思えます。
19 python  gui  class 

3
GPLv3 Pythonモジュールを使用すると、プロジェクト全体でGPLv3のライセンスが必要になりますか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 私は現在、オープンソースライセンスでリリースする予定の小さなプロジェクトに取り組んでいます(まだ決定していません)。私が抱えている疑問は、私が使用しているPythonモジュールの1つがGPLv3の下でライセンスされているということです。ライブラリに変更を加えていないので(そのまま使用)、選択したライセンスでプロジェクトのライセンスを取得できますか、それともGPLv3にする必要がありますか?
19 python  licensing  gpl 

5
PythonとDjangoは、Java / .NET Web開発者にとってどれほど難しいと思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私は数か月前に現在と将来のすべての開発努力を率いている小さな会社で新しい仕事を始めました。私は個人的に、主にJavaだけでなく.NETの観点からソフトウェアの設計と開発に長年の経験があります。私はキャリアの後半で。同じ問題を解決するために。 私の上司にはスタートアップ企業があり、あまり多くの情報を明かすことなく、Googleマップに統合してルートを構築する中程度に洗練されたWebアプリケーションが必要でした。 彼は彼らが約束したWebアプリケーションを外注し、主に配信不足に陥り、期限を過ぎました。彼は現在、投資したお金の少なくとも一部を回収しようと戦っています。現在のサイトのソースコードは持っていますが、実際に使用する前に修正して追加したいもののランドリーリストがあります。 彼は私にもう少しお金を払ってこれをやりたいかと尋ねましたが、問題はサイトがDjangoを使用してPythonで書かれていたことであり、私はまったく経験がありません。PythonやDjangoについてはほとんど何も知らず、ゼロから学ぶ必要があるため、私はこれが本当にベストな人間ではないと彼に言いました。私がその時間を使って言語とプラットフォームを学習しているとしたら、彼に時間ごとに彼に時間を請求するのは公平ではないと感じます。 私の経験レベルの要約に基づいて、これを拾うのにどれくらい難しいか、どれくらい時間がかかると思いますか?時間の無駄だと思うなら、経験豊富なPython Web開発者を見つけるための提案を誰かがお勧めできますか?お金は彼にとって今の関心事なので、彼はもはや最大の予算を持っていません。

3
「Java OOP」と「Pythonic OOP」の違いは?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ActionScript 2.0で始めてから、Javaで始めました。それ以来、Python(おそらく私のお気に入り)を含む多くの言語を学んだか、少なくとも使用しました。 私のオブジェクト指向プログラミングのスタイルは、Pythonシンタックスを使用したJava OOPのようなものではなく、非常にPythonに近いものではないのではないかと心配しています。JavaとPythonic OOPの違いは何ですか?Pythonでオブジェクト指向のコードを書くとき、Javaプログラマーはしばしば「非Python」に何をしますか?

3
Pythonで同じファイルに複数のクラスを入れても大丈夫ですか?
私は、長年のJavaとPHPの後、新たにPythonの世界に来ています。言語自体はかなり単純ですが、頭をかき回すことのできない「マイナーな」問題に苦労しています。 。 経験豊富なPythonの実践者にとって、この質問はばかげているように思えるかもしれませんが、言語をさらに進めるために、私は本当にそれに対する答えが欲しいです。 JavaおよびPHP(厳密には必須ではありませんが)では、ベストプラクティスとしてclassファイル名を使用して、それぞれを独自のファイルに書き込むことが期待されていますclass。 しかし、Python、または少なくとも私がチェックしたチュートリアルでは、同じファイルに複数のクラスを含めることは問題ありません。 このルールは、本番環境、展開準備の整ったコード、または教育専用コードの簡潔さのためだけに行われますか?

8
サイコロを転がすユースケースをカバーするのに適した単体テストとは何ですか?
私はユニットテストで把握しようとしています。 デフォルトの辺の数が6に等しい(ただし、4、5辺など)ことができるダイがあるとします。 import random class Die(): def __init__(self, sides=6): self._sides = sides def roll(self): return random.randint(1, self._sides) 以下は有効/有用な単体テストでしょうか? 6面ダイスの1〜6の範囲でロールをテストします 6面ダイスの0のロールをテストします 6面ダイスの7のロールをテストします 3面ダイスの1〜3の範囲でロールをテストします。 3面ダイスの0のロールをテストします 3面ダイスの4のロールをテストします ランダムモジュールが長い間存在していたので、これらは時間の無駄だと思っていますが、ランダムモジュールが更新された場合(たとえば、Pythonバージョンを更新した場合)、少なくともカバーされます。 また、ダイロールの​​他のバリエーション(この場合は3など)をテストする必要もありますか、それとも別の初期化されたダイの状態をカバーするのが良いでしょうか?

4
PythonデコレータとLispマクロ
Pythonデコレータを見ると、誰かがLispマクロ(特にClojure)と同じくらい強力だという声明を出しました。 PEP 318で与えられた例を見ると、まるでそれらがLispで単純な古い高階関数を使うための単なるおしゃれな方法であるかのように見えます: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) return f return decorate @attrs(versionadded="2.2", author="Guido van Rossum") def mymethod(f): ... 「Clojureマクロの構造」で説明されているように、どの例でもコードの変換は見ていません。さらに、Pythonの欠落した同質 性により、コード変換が不可能になる可能性があります。 それで、これら2つはどのように比較されますか。証拠はそれに反対するようです。 編集:コメントに基づいて、私は2つのことを探しています:「できるだけ強力」と「素晴らしいものを簡単に実行できる」との比較。
18 python  lisp  clojure  macros 

1
Python 3の新機能が解決する問題は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 Python 3の新機能は次のとおりです。 私たちは、よく知られている迷惑やいぼを修正し、多くの古い残骸を取り除きます 何が違うのか(修正)は言及されているが、なぜ(問題)は言及されていない。私は問題が何であるかを見つけていません。修正により解決される問題は何ですか?

8
Pythonコーディング標準と生産性
私は大規模な人道支援団体で働き、食糧の流通をスピードアップすることで緊急時に命を救うソフトウェアを構築するプロジェクトに取り組んでいます。多くのNGOは私たちのソフトウェアを必死に必要としており、私たちは数週間遅れています。 このプロジェクトで私が心配していることの1つは、コーディング標準に過度に焦点を当てていることだと思います。python / djangoで記述し、さまざまな変更を加えたバージョンのPEP0008を使用します。たとえば、行の長さは最大160文字で、可能な限りすべての行を長くする必要があります。クラス、問題を解決するための最良の方法などではない場合でも使用する必要がある多くのテンプレートなど。 あるコア開発者は、システムの主要部分を1週間かけて書き直して、当時の新しいコーディング標準に適合させました。その過程でいくつかのテストスイートを破棄しました。失われたすべての機能を書き直し、バグを修正するのに2週間を費やしました。彼は主任開発者であり、彼の言葉には重みがあります。そのため、これらの標準が必要であるとプロジェクトマネージャーに確信させました。ジュニア開発者は、言われたとおりにします。プロジェクトマネージャーは、これらすべてについて認知的不協和音を強く感じているが、それでも他に何をすべきかわからないと感じているので、激しく同意しているように感じます。 今日、キーワード引数のコンマの後にスペースを入れるのを忘れていたため、深刻な問題に直面しました。Skypeの通話中に、私は文字通り他の2人の開発者とプロジェクトマネージャーに怒鳴られました。個人的には、コーディング標準は重要であると思いますが、それらに夢中になるのに多くの時間を浪費していると思います。そして、これを言葉にすると怒りを引き起こしました。私はチームのトラブルメーカーとして見られています。チームはその失敗のためにスケープゴートを探しています。コーディング標準が導入されて以来、チームの生産性はかなり低下しましたが、これは強迫観念を強めるだけです。つまり、リード開発者は、標準に準拠していないことを進歩がないと非難します。彼は、私たちが慣習に従わないと、お互いのコードを読むことができないと信じています。 これは粘着性に変わり始めています。今、私はさまざまなスクリプト、autopep8、pep8ify、PythonTidyを変更して、規則に一致させようとしています。また、ソースコードに対してpep8を実行しますが、標準に対する暗黙の修正が非常に多いため、それらをすべて追跡することは困難です。主任開発者は、pep8スクリプトが検出しない障害を選択し、次のスタンドアップミーティングで叫びます。毎週、既存の動作するテスト済みのコードを書き換えることを余儀なくされるコーディング標準への新しい追加があります。私たちにはまだテストがあります(ありがとう、いくつかのコミットを元に戻し、彼が削除したコミットの多くを修正しました)。 その間、締め切りに間に合わせるように圧力が高まっています。 基本的な問題は、リード開発者と別のコア開発者が、他の開発者が自分の仕事をするのを信頼することを拒否していることだと思います。しかし、どのように対処するのですか?私たちはすべてを書き直すのに忙しすぎるので、仕事をすることができません。 私は、ソフトウェアエンジニアリングチームでこのようなダイナミックに遭遇したことはありません。彼らがコーディング標準を順守していることを疑うのは間違っていますか?他の誰かが同様の状況を経験し、どのようにうまく対処しましたか?(私は人々が見つけた実際の解決策だけの議論を探していません)

10
なぜ継承とポリモーフィズムがそれほど広く使用されているのですか?
関数型プログラミングなどのさまざまなプログラミングパラダイムについて学べば学ぶほど、継承やポリモーフィズムなどのOOPコンセプトの知恵に疑問を持ち始めます。私は最初に学校での継承とポリモーフィズムについて学びましたが、当時、ポリモーフィズムは簡単な拡張性を可能にする汎用コードを書く素晴らしい方法のように思えました。 しかし、カモタイピング(動的および静的の両方)および高次関数などの機能的特徴に直面して、継承とポリモーフィズムを、オブジェクト間の脆弱な一連の関係に基づいて不必要な制限を課すように見始めました。多態性の背後にある一般的な考え方は、関数を一度書くだけで、後で元の関数を変更せずにプログラムに新しい機能を追加できるということです。必要なメソッドを実装する別の派生クラスを作成するだけです。 しかし、これは、Pythonのような動的言語であろうと、C ++のような静的言語であろうと、アヒルの型付けによって達成するのがはるかに簡単です。 例として、次のPython関数とそれに続く静的なC ++の機能を考えてみましょう。 def foo(obj): obj.doSomething() template <class Obj> void foo(Obj& obj) { obj.doSomething(); } OOPに相当するものは、次のJavaコードのようなものです。 public void foo(DoSomethingable obj) { obj.doSomething(); } もちろん、大きな違いは、Javaバージョンが機能する前に、インターフェイスまたは継承階層を作成する必要があることです。したがって、Javaバージョンはより多くの作業を必要とし、柔軟性が低くなります。さらに、ほとんどの実際の継承階層はやや不安定であることがわかりました。シェイプとアニマルの不自然な例を見てきましたが、現実の世界では、ビジネス要件の変更と新しい機能の追加に伴い、「is-a」関係を実際に伸ばす前に作業を完了することは困難です。サブクラス、または階層をリモデリング/リファクタリングして、新しい要件に対応するために、さらに基本クラスまたはインターフェイスを追加します。アヒルのタイピングでは、モデリングのことを心配する必要はありません- 必要な機能を心配するだけです。 しかし、継承とポリモーフィズムは非常に人気があるため、拡張性とコードの再利用のための支配的な戦略と呼ぶのは誇張ではないでしょうか。それでは、なぜ継承とポリモーフィズムはそれほど成功しているのでしょうか?継承/ポリモーフィズムがアヒルのタイピングよりも優れているいくつかの重大な利点を見落としていますか?

4
副作用を処理するためのIOモナドパターンの利点は純粋にアカデミックですか?
さらに別のFP +副作用の質問で申し訳ありませんが、私にこれに完全に答える既存の質問を見つけることができませんでした。 関数型プログラミングの私の(限られた)理解は、状態/副作用を最小限に抑え、ステートレスロジックから分離する必要があるということです。 また、これに対するHaskellのアプローチであるIOモナドを収集します。IOモナドは、プログラム自体のスコープ外であると見なされる、後で実行するために、ステートフルアクションをコンテナにラップすることによってこれを実現します。 私はこのパターンを理解しようとしていますが、実際にはPythonプロジェクトで使用するかどうかを決定するため、Haskell固有の仕様を避ける必要があります。 原油の着信。 私のプログラムがXMLファイルをJSONファイルに変換する場合: def main(): xml_data = read_file('input.xml') # impure json_data = convert(xml_data) # pure write_file('output.json', json_data) # impure これを行うためのIOモナドのアプローチは効果的ではありません: steps = list( read_file, convert, write_file, ) その後、実際にそれらのステップを呼び出すのではなく、インタープリターにそれを行わせることで、責任を放棄しますか? または別の言い方をすれば、それは次のように書くことです: def main(): # pure def inner(): # impure xml_data = read_file('input.xml') json_data = convert(xml_data) write_file('output.json', json_data) return …

7
Pythonはブラウザでクライアント側で使用するには遅すぎますか?
Pythonはブラウザーで使用するには遅すぎるという声明を聞きました。 Javascriptはこの点で優れていると思うのは、グーグルのような企業が生き残るためにそれを必要としているので、それを速く必要としている(そして速くした)からです。 PythonとJavascriptの設計方法に違いがあり、それらがブラウザでどのように機能するか(影響するか)に影響はありますか? 今のところクライアント側のPython実装はないので、私の質問は誰かの声明から来ているので、言語自体と関係があるのか​​もしれません(信じられませんが)。

5
PythonがJavaより遅いが、PHPより速いのはなぜですか[非公開]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 特定のタスクで多くの言語がどのように機能するかを示すさまざまなベンチマークを見てきました。 これらのベンチマークは、PythonがJavaよりも遅く、PHPよりも速いことを常に明らかにしています。なぜそうなのか疑問に思います。 Java、Python、およびPHPは仮想マシン内で実行されます 3つの言語はすべて、プログラムをOS 上で実行されるカスタムバイトコードに変換するため、ネイティブで実行されるものはありません JavaとPythonは両方とも「コンパイル」できますが(.pycPythonの場合)、Pythonの__main__モジュールはコンパイルされません。 PythonとPHPは動的に型付けされ、Javaは静的に型付けされます-これがJavaの方が高速である理由です。 また、dynamic-vs-static引数が正しい場合でも、PHPがPythonより遅い理由は説明できません-両方とも動的言語であるためです。 いくつかのベンチマークはこちらとこちら、そしてこちらでご覧いただけます

2
シリアル化と逆シリアル化は、シリアル化されるクラスの責任ですか?
現在、C#.NETアプリケーションのいくつかのモデルクラスの(再)設計段階にいます。(MVCのMのようなモデル)。モデルクラスには、適切に設計されたデータ、動作、および相互関係が十分にあります。モデルをPythonからC#に書き換えています。 古いPythonモデルでは、いぼが見えると思います。各モデルはそれ自体をシリアル化する方法を知っており、シリアル化ロジックはクラスの残りの動作とは関係ありません。たとえば、想像してみてください: Image.toJPG(String filePath) .fromJPG(String filePath)メソッドを持つクラス ImageMetaData.toString()and .fromString(String serialized)メソッドを持つクラス。 これらのシリアル化メソッドがクラスの他の部分と密接に結びついていないことを想像できますが、クラスだけがそれ自体をシリアル化するのに十分なデータを知っていることが保証されます。 クラスが自分自身をシリアル化および逆シリアル化する方法を知ることは一般的な習慣ですか?または、一般的なパターンが欠落していますか?

2
純粋に審美的な理由で入れ子関数を作成しますか?
私は、純粋な美的機能を作成するというアイデアについて、他のプログラマーがどう考えているのか、いつも疑問に思っていました。 データのチャンクを処理する関数があるとしますFunction ProcessBigData。たとえば、そのデータにのみ有効ないくつかのプロセスステップが必要Step1だStep2としStep3ます。 ソースコードで最もよく見られる通常のアプローチは、次のようなコメントを書くことです。 Function ProcessBigData: # Does Step1 Step1.. Step1.. #Does Step2 Step2.. Step2.. 私はいつもやっていますが、仲間の仲間がそのようなコーディングスタイルを欠いているためにいつも間違っていると感じました: Function ProcessBigData: Function Step1: Step1.. Step1.. Function Step2: Step2.. Step2.. Step1() -> Step2() 私は主に、JavascriptとPythonでそのようなスタイルに欠点があるかどうかを心配しています 表示されない代替手段はありますか?

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