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

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


6
classキーワードなしで「オブジェクト指向」プログラミングを実装できますか?
銀行の「口座」の抽象化を提供したいとします。functionPythonでオブジェクトを使用する1つのアプローチを次に示します。 def account(): """Return a dispatch dictionary representing a bank account. >>> a = account() >>> a['deposit'](100) 100 >>> a['withdraw'](90) 10 >>> a['withdraw'](90) 'Insufficient funds' >>> a['balance'] 10 """ def withdraw(amount): if amount > dispatch['balance']: return 'Insufficient funds' dispatch['balance'] -= amount return dispatch['balance'] def deposit(amount): dispatch['balance'] += amount return dispatch['balance'] …

6
Googleでのプログラミング言語の使用[終了]
GoogleはPython、Java、C ++を使用していると聞きました。しかし、私が知らないのは、これらのプログラミング言語のそれぞれがどのように使用されているかです。Googleで使用されているPython、Java、C ++は何ですか。1つの言語で十分なのに、なぜ最大3つのプログラミング言語を使用したのでしょうか。誰か知っていますか?

6
個人のPythonプロジェクトをリリース可能なライブラリに変える
私はプログラマーというよりは学者であり、研究をサポートするために、私自身が使用するPythonプログラムを長年書いています。私の最新のプロジェクトは、私だけでなく他の多くの人にとっても有用である可能性が高く、オープンソースのPythonライブラリとしてリリースすることを考えています。 ただし、機能している個人プロジェクトから、他の人が簡単にインストールして使用できるライブラリに移行するには、かなりのハードルがあるようです。この質問は、パブリックリリースに向けて作業を開始するために最初に実行する必要がある手順に関するものです。 現在、ライブラリとライブラリ自体を使用するコードを含む単一のgitリポジトリがあり、何かが壊れた場合に備えてgitを緊急の元に戻すボタンとして使用しています。これはすべて単一のユーザーには問題なく機能しますが、リリースしたい場合は明らかに適切ではありません。最後にしたいのは、ライブラリが別のリポジトリにあり、他の人がを使用してインストールできpip、安定したAPIがあることです。 setuptoolsなどを使用することを学習するのは、一度公開したいと思ったらそれほど難しいことではないでしょう。私の問題は、そのポイントに到達するためにどのように作業すべきかを知ることです。 だから私の質問は、公共の消費のためにPythonライブラリプロジェクトの準備を始めるためにとるべき最初のステップは何ですか?ライブラリの公開に向けて作業を開始するには、ディレクトリ構造、gitリポジトリなどをどのように再編成すればよいですか? より一般的には、これを初めて試すときに役立つと知られているリソースがある場合、非常に役立ちます。ベストプラクティスや回避すべき間違いなどへのポインタも非常に役立ちます。 いくつかの明確化:現在の回答は、「Pythonライブラリを他の人が使用できるようにするにはどうすればよいですか?」という行に沿った質問に対処しています。これは便利ですが、私が尋ねるつもりの質問とは異なります。 私は現在、プロジェクトのリリースに向けて長い旅の始まりにいます。私の実装の中核は機能します(そして非常にうまく機能します)が、先の作業量に圧倒されており、プロセスをナビゲートする方法についてのガイダンスを探しています。例えば: 現在、私のライブラリコードは、それを使用する独自のドメイン固有のコードに結合されています。サブフォルダーに存在し、同じgitリポジトリーを共有します。最終的には、スタンドアロンのライブラリにして独自のリポジトリに配置する必要がありますが、その方法がわからないため、これを先延ばしにしています。(ライブラリを「開発モード」でインストールして編集できるようにする方法も、2つのgitリポジトリを同期させる方法もありません。) 私のドキュメント文字列は簡潔です。最終的にはSphinxまたは他のツールを使用する必要があることを知っているからです。しかし、これらのツールは学ぶのが簡単ではないようですので、これは主要なサブプロジェクトになります。 ある時点で、setuptoolsまたは他のツールを使用してパッケージ化し、依存関係を追跡する方法を学ぶ必要がありますが、これは非常に複雑です。今すぐこれを行う必要があるかどうかはわかりませんが、ドキュメントは新しいユーザーにとって絶対的な迷路なので、後で行うことを決め続けています。 体系的なテストを行う必要はありませんでしたが、このプロジェクトには間違いなく取り組むので、(i)自分のプロジェクトに適した方法論を知るためにテストについて十分に学ぶ必要があります。(ii)選択した方法論で利用可能なツールを学習します。(iii)選択したツールの使用方法を学ぶ。(iv)プロジェクトにテストスイートなどを実装します。これはそれ自体がプロジェクトです。 他にもやらなければならないことがあるかもしれません。たとえば、jonrsharpeは、git-flow、tox、TravisCI、virtualenv、CookieCutterについての役立つリンクを投稿しました。(投稿は2013年からのものであるため、現在どれだけ残っているかを調べるためにいくつかの作業を行う必要があります。) これをすべてまとめると、膨大な量の作業が必要になりますが、プラグインを続けて行けば、すべてを完了することができると確信しており、急いでいません。私の問題は、それを1つずつ実行できる管理可能な手順に分解する方法を知ることです。 言い換えれば、最終的にリリース可能な製品に到達するために、私が今取ることができる最も重要な具体的なステップはどれかを尋ねています。週末が空いている場合、これらのうちどれに焦点を当てるべきですか?他の作業とは別に(もしあれば)どの作業を行うことができますか?これらのことを学習する最も効率的な方法は何ですか?それで、プロジェクト自体に集中する時間を確保できますか?(これは基本的に趣味のプロジェクトであり、私の仕事ではないことを心に留めておいてください。)実際に行う必要のないことはありますか?したがって、膨大な時間と労力を節約できますか? すべての回答は大歓迎ですが、これらのプロジェクト管理の側面に焦点を当てた回答、特に現代のPython開発に特に関連した回答を歓迎します。

1
本番コードで名前が間違っている関数を処理する方法は?
最近、GitHubでPythonライブラリに出会いました。ライブラリは素晴らしいですが、関数名に1つの明白なタイプミスが含まれています。dummy_fuction()それがあるべきときにそれを呼び出しましょうdummy_function()。この関数は間違いなく「インザワイルド」であり、組み込みシステムで使用される可能性が最も高くなります。 最初に思い浮かぶのは、正しい名前の関数の2番目のバージョンを追加し、次のリリースの最初のバージョンに非推奨の警告を追加することです。 3つの質問: 上記のアプローチは、意図しない結果をもたらす可能性がありますか? この種の問題に対する標準的なアプローチはありますか? 非推奨の警告はいつまで残しておくべきですか?

3
Pythonに明示的なアクセス修飾子がないのはなぜですか:
「明示的が暗黙的よりも優れている」場合、Pythonには明示的アクセス修飾子がないのはなぜですか:Public、Protected、Privateなど? プログラマーはヒントを通して何をすべきかを知っておくべきだという考えを知っています-「ブルートフォース」を使用する必要はありません。しかし、IMOの「カプセル化」または「情報隠蔽」は単に人を締め出すためだけではなく、組織と構造の問題です。物理層システムのように、開発レイヤーは明確に区切られたスコープと境界を自己定義する必要があります。 Pythonでアクセス制限が明示されているのではなく、それ以外の場合は完璧に近いと思われる言語について、なぜアクセス制限が暗黙的に含まれているのかについて、誰かがここで助けてくれますか? 編集:これまでに3つの提案された答えを見てきましたが、私の質問には2つの部分があることに気付きました。 たとえば、キーワードがないのはなぜですか private def myFunc(): dostuff.... IMOの代わりに、typeいアンダースコアを入力します。しかし、それは重要なポイントではありません。 さらに重要なことには: これらのアクセス修飾子が「推奨事項」またはヒントのみであり、強制されないのはなぜですか。後で変更するのは難しいでしょうか?「保護された」を「パブリック」に変更するのは非常に簡単です-複雑な継承チェーンがあり、それが難しくなると、デザインが貧弱になります-書きやすい言語機能に依存するのではなく、デザインを洗練する必要があります不十分な構造のコード。 アクセス修飾子が適用されると、コードは自動的に区分化されます。特定のセグメントが範囲外であることを知っているので、必要な場合と必要な場合を除き、それらを処理する必要はありません。そして、あなたのデザインが良くなく、物事をさまざまな範囲に出し入れしていることに気付いた場合、言語はあなたの行為をきれいにするのに役立ちます。 Pythonが大好きなのと同じように、この2番目の点は深刻な欠陥であると感じています。そして、これに対する良い答えをまだ見ていません。

3
C ++テンプレートのエラーメッセージはなぜ恐ろしいのですか?
C ++テンプレートは、読み取り不能な長いエラーメッセージを生成することで有名です。C ++のテンプレートエラーメッセージがなぜそんなに悪いのかについての一般的な考えがあります。基本的に、問題はコンパイラーがテンプレート内の特定の型でサポートされていない構文に遭遇するまでエラーがトリガーされないことです。例えば: template <class T> void dosomething(T& x) { x += 5; } 演算子がTサポートされていない場合+=、コンパイラはエラーメッセージを生成します。そして、これがどこかライブラリの奥深くで発生した場合、エラーメッセージは数千行に及ぶ可能性があります。 ただし、C ++テンプレートは基本的に、コンパイル時のダックタイピングのメカニズムにすぎません。C ++テンプレートエラーは、Pythonなどの動的言語で発生する可能性のあるランタイムタイプエラーに概念的に非常に似ています。たとえば、次のPythonコードを考えます。 def dosomething(x): x.foo() ここでx、foo()メソッドがない場合、Pythonインタープリターは例外をスローし、問題を示す非常に明確なエラーメッセージとともにスタックトレースを表示します。インタプリタが何らかのライブラリ関数の奥深くになるまでエラーがトリガーされない場合でも、ランタイムエラーメッセージは、典型的なC ++コンパイラによって吐き出される読み取り不能な嘔吐物ほど悪いものではありません。それでは、なぜC ++コンパイラが何が問題なのかをより明確にできないのでしょうか?一部のC ++テンプレートエラーメッセージにより、文字どおり、コンソールウィンドウが5秒以上スクロールするのはなぜですか?

3
大きな時系列データを効率的に保存する方法は?
いくつかの非常に大量の時系列データを保存し、クエリできるようにする必要があります。 データのプロパティは次のとおりです。 シリーズ数:約12.000(1万) データポイントの数、グローバル:1か月あたり約500.000.000(5億) 混合値タイプ:データポイントの大部分は浮動小数点値で、残りは文字列です サンプリング期間:シリーズ間およびシリーズ内で可変 タイムスタンプ:ミリ秒精度 データ保持期間:数年、減衰またはダウンサンプリングなし データアーカイブはほぼリアルタイムで構築する必要がありますが、妥当な遅延(約1時間)が許容されます 必要に応じて過去のデータを再構築できますが、高コストです 時々ですが、ごくまれに、過去のデータを更新する必要があります 想定されるクエリのプロパティ: データに対するクエリのほとんどはタイムスタンプベースのクエリです。1日から数ヶ月/年までの範囲。90%以上が最新データのクエリになります その他の要件: ソリューションは、無料のビールのように無料である必要があり、できればオープンソース 私が最初に考えたのは、SQLデータベースの代わりにバックエンドを格納するHDF5ファイルで PyTables / Pandasを使用することでした。 質問: PyTables / Pandasが「最良の」ルートであると仮定すると、それぞれが特定の期間にわたる複数のHDFファイルにデータを分割するか、すべてが単一のファイルに入れられて巨大になるのが良いでしょうか? 固定形式または表形式を選択する必要がありますか?私にとっては、1か月に1つのHDFファイルを保持すれば、固定形式は問題なく見えます。このように、シリーズ全体がおそらくRAMに収まり、テーブル形式インデックスを必要とせずにメモリ内をスライスできるからです。私は正しいですか? それが最善のアプローチではない場合、このデータストアをどのように構成する必要がありますか、またはどのテクノロジーを検討する必要がありますか?大量の時系列データの保存に取り組むのは私が初めてではありませんが、この課題を解決する一般的なアプローチは何ですか? 私が検討した他のアプローチ: 配列データベース:配列の開始時間と終了時間、およびサンプリング周期を保存するだけでよく、配列自体の値とインデックス付けが簡単なので、一定のサンプリング周期を持つ時系列に最適です。しかし、シリーズ自体の可変サンプリング期間では、タイムスタンプと値の関係をより厳密に保つ必要があります。これは、私の見解では、配列DBMSにはあまり適していません。 タイムスタンプ、paramID、値を列として持つ標準SQLデータベースですが、その性質上、クエリに対して大量のディスクI / Oを要求します

5
Pythonでのプログラミングは、C、C ++、Javaよりも高速ですか?[閉まっている]
プログラマーの間では、より動的で緩やかに型付けされた言語であるほど、プログラマーの生産性は向上すると広く信じられています。Guido van Rossumは1998年にpythonを使用したプログラミングの生産性について書いており、ウェブ上を検索しています。 構文的には、Pythonコードは実行可能な擬似コードのように見えます。Pythonを使用したプログラム開発は、C / C ++を使用した場合の5〜10倍、Javaを使用した場合の3〜5倍の速度です。多くの場合、アプリケーションのプロトタイプは、C / C ++ / Javaコードを作成せずにPythonで作成できます。多くの場合、プロトタイプは十分に機能し、最終製品として提供されるのに十分な性能を発揮し、開発時間を大幅に節約します。また、プロトタイプの一部または全体をC ++またはJavaに翻訳できる場合もあります。Pythonのオブジェクト指向の性質により、翻訳は簡単なプロセスになります。 この問題は科学的に適切に評価されていますか?Pythonでない場合は、おそらくruby、perl、phpなどの兄弟スクリプト言語ですか? 問題を調査するために時間をかけた研究者や専門家の意見でない限り、答えが難しい可能性がある理由の合理化、類推、または説明を探しているわけではありません。 最初にこの質問をskeptics.SEで尋ねましたが、誰かが私もここで質問すべきだと提案しました。

2
Pythonでユニバーサル改行モードが非推奨になったのはなぜですか?
私はちょうどことに気づいユニバーサル改行ファイル操作の機能は、その方法アウトになるようです。 Python 3.5 openのmodeパラメーターのドキュメントには、非推奨であることが示されています。 'U' ユニバーサル改行モード(非推奨) 少なくともPython 3.2までさかのぼりopen、mode引数の使用法を文書化するときに、同様の「後方互換性のみ」の警告が含まれています。 'U' ユニバーサル改行モード(後方互換性のため。新しいコードでは使用しないでください) Python 2.7でも、同様の警告がのドキュメントに記載されていますio.open。 この理由は何ですか?
26 python  io  deprecation 

4
Django Webサイトのフロントエンド(UI)を開発する方法
私はDjangoとWeb開発の初心者を学んでいます。この質問があまりにも馬鹿だと思うなら、すみません。 そのため、Djangoを使用して、Google App EngineでホストするFacebookアプリケーションを作成しています。このプロジェクトは、任意のWebサイトのRSS / Atomフィードの読み取りに焦点を当てています(これですべてです)。 RSS / Atomファイルを処理するのに十分だと確信していますが、フロントエンド(ユーザーインターフェイス)の部分-「設計部分」について心配しています。HTML / CSS / JavaScriptを知りません(単純なHTMLを扱うことはできますが、それは設計上の問題にはつながりません)。 最初に、dreamweaverまたは同等のソフトウェアのようなツールを使用してUIを設計することを考えましたが、実際にdjangoを学び始めたとき、それは「不可能」なことのようです。 そう、 サイトのUI部分をどのように設計すればよいですか?dreamweaverなどのツールを使用できませんか? NOの場合、JavaScript / CSSを知らない私のような人にとって最善の方法は何ですか 「はい」の場合、dreamweaverに代わる最良のオープンソースの選択肢は何ですか? Google App Engineはこれらすべてを処理できますか? Djangoを扱う人々がこれらのテンプレートページを編集する方法。Djangoは、企業内の異なる部門が個別に処理できるように、論理(ビュー)部分と設計(テンプレート)部分を分離することに言及しています。しかし、DjangoのHTMLページがHTML(設計)に関係のない「タグ」で満たされているという事実を考慮して、UIの人々はそれをどのように処理しますか?

5
2つの異なる言語で2つの異なるプログラミングをやり取りするにはどうすればよいですか?
これが広すぎるかどうかはわかりませんが、私はまだ大学の若いプログラマーです。私は、さまざまな言語について十分に理解しており、かなり良い基盤を持っていると感じています。しかし、たとえば、プログラムを作成しようとしていて、Pythonで簡単に作業できるという理由だけでPythonの一部を書いたとしますが、このプログラムは、私が書いた別のプログラムから出力を取得する必要があるとしたらどうでしょうかCで私はその速度のためにCを使用しています。2つの異なるプログラムと言語を相互作用させて、全体で1つのプログラムを作成する方法がわかりません。私はあなたがファイルに書き込むことができると確信しているが、それからpythonとCプログラムの両方がファイルにアクセスする場合、ロックを考える必要があると思う。 ほとんどの場合、これはファイルをプログラムにインポートすることでしたが、その場合、ファイルは同じ言語なので簡単にインポート機能を使用しますが、2つの言語/プログラムが相互作用して1つのまとまりのある出力を作成すると問題が発生します。 学ぶためだけにいくつかの基本的なWebアプリケーションを作成することを考えていたので、この質問について考えていましたが、pythonまたはその逆で書いたものとjavascriptファイルをインタラクティブに言う方法がわかりません。 ここで本当に簡単なことを見逃しているだけで、理解していないように感じます。この質問が広すぎる場合は申し訳ありませんが、オンラインで明確な答えを見つけることができなかった場合、オープンソースのwebappを調べようとしていましたが、それから答えを実際に把握できませんでした。これは、stackexchangeで読むのが好きな人に尋ねるのに適した場所です。 返信ありがとうございます。
26 python  c 

2
Python(および他の動的言語)のどのセマンティック機能がその速度低下に寄与していますか?
私はPythonをよく知りません。動的言語(Python、Lua、Scheme、Perl、Rubyなど)の正確な機能が実装を強制的に遅らせていることを、より正確に理解しようとしています。 その一例として、Lua 5.3 メタテーブル機構は直感的にLuaを非常に遅くしますが、実際にはLuaは非常に高速(およびPythonよりも高速)であると噂されています。 また、私は現在のプロセッサ上のため、メモリがはるかに遅い生の計算よりであることを直感(おそらく間違ったものを)持っているラà、動的な型チェック((キャッシュミスでメモリアクセスが算術演算の何百ものと同じ時間が必要)if (value->type != INTEGER_TAG) return;でCの用語)は非常に高速に実行できます。 もちろん、プログラム全体の分析(スターリンスキームの実装のように)は、翻訳者が高速で実行されるため、動的言語の実装を行うことができますが、最初はプログラムアナライザー全体を設計する時間がないふりをしましょう。 (私はMELTモニターで動的言語を設計するようなもので、その一部はCに翻訳されます)

3
Pythonビジネスロジックを正確にdjangoに配置する場所
Django / Python / Web Developmentを学び始めたばかりです。この問題は、しばらく私を悩ませてきました。 Djangoで複数のテンプレートを使用してアプリケーションを作成しています。私は、基本的にそれぞれのテンプレートへの応答をレンダリングするだけのviews.pyを持ち、DBを構造化したmodels.pyを持っています。テンプレートの1つで、画像をアップロードする必要があります(実行できます)。アップロードされた画像の機能に基づいたロジックを実行する必要があります(まだ実行されていません)。このロジックには、多くの重い計算が含まれます。計算の実行後、ロジックは処理済みの情報(座標)をテンプレートに返す必要があります。 pythonファイルを次々に呼び出すスタンドアロンのPythonデスクトップアプリケーションで、これらすべてのアクションを正常に実行できました。ただし、これをWebアプリケーションにしたいので、Djangoフレームワークの使用を開始しました。 私は多くの検索を行いましたが、すべてのロジックを含むこのPythonファイルをどこに正確に配置すべきかをまだ理解できていません。別のクラスベースのファイルが(logic.py)あり、それを呼び出す必要がありview.pyますか?グーグルで調べたところ、多くの開発者がDjangoのmodels.pyにビジネスロジックを配置していることがわかりました。ただし、モデルはバックエンドと排他的に通信する必要があるため、直感的には正しくないと感じています。助けていただければ幸いです。事前に感謝します。

2
Pythonランタイムは実際にどのように機能しますか?
aの概念runtime library、特にPythonの概念を理解するのに問題があります。それで、私はいくつかのhello world pythonプログラムを書き、それを実行するつもりなので、を書きpython ./hello_world.pyます。 Enterボタンを押してから、Pythonコードから生成されたマシンコードがCPUで実行されるまでに、どのような手順が発生しますか?そして、これはPythonランタイムシステムおよび/またはライブラリとどのように関係していますか?
26 python  runtime 

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