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

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

1
Pythonランダムシャッフルの仕組み
Pythonでランダムからのシャッフルはどのように機能しますか? それは非常に速く動作するので私は尋ねます。シャッフルを書き込もうとすると、10 ^ 6要素で1分動作しますが、Pythonシャッフルは8秒で動作しますか?
11 python  random 

4
どこでもデータチェックを導入するのに適したコードスタイルですか?
プロジェクトのサイズが十分に大きいので、頭の中ですべての側面を維持することはできません。その中でいくつかのクラスと関数を扱っており、データを渡しています。 時間の経過とともにエラーが発生し続けることに気づきました。別の関数にデータを渡すときに、データの正確な形式を忘れてしまったためです(たとえば、ある関数が文字列の配列を受け入れて出力し、別の関数は後で記述します)。辞書などに保持されている文字列を受け入れるため、操作している文字列を配列に入れてから辞書に入れるように変換する必要があります)。 どこがどこでどこが壊れているのかを常に把握する必要がないように、私は各関数とクラスを「分離されたエンティティ」として扱うようになりました。場合によっては、データが間違った形式で指定されている場合は、データを再キャストします。 これにより、渡すデータがすべての関数に「適合」することを確認するために費やす時間が大幅に短縮されました。クラスと関数自体が、入力に問題がある場合に警告を発し(場合によってはそれを修正することもあり)、デバッガーを使用してコード全体を処理し、問題が発生した場所を特定する必要があります。 一方、これによりコード全体も増加しました。 私の質問は、このコードスタイルがこの問題の解決に適切かどうかです。 もちろん、最善の解決策は、プロジェクトを完全にリファクタリングし、データがすべての機能に対して均一な構造を持っていることを確認することです。 。 (参考:私はまだ初心者なので、この質問が素朴だった場合は失礼します。私のプロジェクトはPythonで行われています。)

3
安全でないコードが誤って使用されないようにする
関数f()は、プログラムを実行eval()しlocal_fileているマシンに作成して保存したデータを使用します(または危険なものです)。 import local_file def f(str_to_eval): # code.... # .... eval(str_to_eval) # .... # .... return None a = f(local_file.some_str) f() 私が提供する文字列は自分のものなので、実行しても安全です。 しかし、私がこれを安全ではないもの(ユーザー入力など)に使用することを決定した場合、事態はひどく間違ったものになる可能性があります。また、local_file停止がローカルになると、そのファイルを提供するマシンも信頼する必要があるため、脆弱性が発生します。 (特定の基準が満たされない限り)この関数の使用が安全でないことを「忘れない」ようにするにはどうすればよいですか? 注:eval()危険であり、通常は安全なものに置き換えることができます。

2
Pythonの継承は「is-a」の継承スタイルですか、それともコンポジションスタイルですか?
Pythonが複数の継承を許可する場合、Pythonの慣用的な継承はどのように見えますか? Javaのように単一継承の言語では、あるオブジェクトが別のオブジェクトの「is-a」であり、オブジェクト間でコードを共有したい場合(親オブジェクトから子オブジェクトまで)は、継承が使用されます。たとえば、それDogはAnimal: public class Animal {...} public class Dog extends Animal {...} しかし、Pythonは多重継承をサポートしているため、他の多くのオブジェクトを組み合わせてオブジェクトを作成できます。以下の例を検討してください。 class UserService(object): def validate_credentials(self, username, password): # validate the user credentials are correct pass class LoggingService(object): def log_error(self, error): # log an error pass class User(UserService, LoggingService): def __init__(self, username, password): self.username = username self.password = password …

1
Pythonで例外をサブクラス化する必要があるのはいつですか?
私のコードでは、例外を発生させる場所が約7箇所あります。これらの例外はすべて同じように扱われます。エラーをログファイルに出力し、ソフトウェアの状態をデフォルトに戻して終了します。 コードのレビュー中に、私が高く評価している上級エンジニアは、これらの例外をすべてサブクラス化する必要があると述べました。彼の主張は、将来的には例外を別の方法で処理したいと思うかもしれず、それはより簡単になるでしょう。 私の主張は、現時点ではコードが雑然としているだけであり、例外を別の方法で処理するかどうかがわからないため、コードを簡潔にしておきます。 。 いずれの場合も議論はありますか。

4
Pythonジェネレータと関数が「def」キーワードを共有するのはなぜですか?
以下を検討してください。 def some_function(): return 1 def some_generator(): yield 1 上記のコードでsome_functionは、は関数some_generatorですが、はジェネレーターです。それらは非常に似ています。 コードを読み取るときに発生する問題は、「関数」のすべての行をスキャンして、yield実際に関数なのかジェネレータなのかを判断する前に、キーワードを探す必要があることです。 ジェネレーターに別のキーワードを使用する方が理にかなっているように思えます、例えば: gen some_generator(): yield 1 defジェネレータと関数の両方にキーワードを使用するメリットは何ですか?関数とジェネレータを分離するために新しいキーワードが導入されていないのはなぜですか?

3
プライベート依存リンクをsetup.pyでどのように処理する必要があるか
仕事ではプライベートpypiサーバーを使用します。このpypiサーバーは、依存関係リンクとして指定されています。 ... from setuptools import setup config = ConfigParser.ConfigParser() rc = os.path.join(os.path.expanduser('~'), '.pypirc') config.read(rc) dependency_links = [ 'https://{}:{}@<private_url>'.format( config.get('dc', 'username'), config.get('dc', 'password'))] setup( dependency_links=dependency_links, ...) これは、ほとんどの場合問題なく機能します。ただし、少し前に、クライアントサーバーにパッケージをインストールする必要がありました。この.pypircため、パッケージをインストールする前に、有効なものをコピーする必要がありました。 また、上記のコードは汚いハックのように感じられます。 資格情報をハードコーディングせずに、保護された依存関係リンクを指定する適切な方法は何ですか?
10 python 

5
Pythonスクリプトが同等のC ++プログラムと同じくらい高速になるのを妨げる技術的な制限や言語機能はありますか?
私は長年のPythonユーザーです。数年前、私はC ++の学習を始めて、速度の点でC ++が何を提供できるかを確認しました。この間も、プロトタイピングのツールとしてPythonを使い続けました。これは良いシステムのように思われました:Pythonによるアジャイル開発、C ++での高速実行。 最近、私はますますPythonを使用しており、この言語を使用して以前にすぐに使用した落とし穴とアンチパターンをすべて回避する方法を学びました。特定の機能(リスト内包表記、列挙など)を使用するとパフォーマンスが向上することは私の理解です。 しかし、Pythonスクリプトが同等のC ++プログラムと同じくらい高速になるのを妨げる技術的な制限や言語機能はありますか?

3
ゲーム開発のためにネットワークを介してクロックを同期する方法は?
時間ベースの要素が多いゲームを書いています。私は時間を使用して、ネットワークが停止し、パケットが通過していないときのプレーヤーの位置(およびパケットが受信されるまでの時間と受信されない時間)を推定します。それは、プレイヤーが方向を選択して動きを止めることができないという意味でパックマンタイプのゲームです。そのため、システムは理にかなっています(または少なくとも私はそう思います)。 だから私は2つの質問があります:1)ネットワークに遅延があるので、最初にゲームのクロックをどうやって同期させるのですか?2)それらを同期せず、それらが同じであると想定しても大丈夫ですか(私のコードはタイムゾーンに依存しません)。これは、人々が時計を変えてチートするような非常に競争の激しいゲームではありません。 ゲームはJavaとPythonでプログラミングされています(プロジェクトとして並行開発)

1
Pythonでのダックタイピング、データ検証、アサーティブプログラミング
アヒルのタイピングについて: アヒルの型付けは、メソッドと関数の本体の引数の型を常にテストするのではなく、ドキュメント、明確なコード、および正しい使用を確実にするためのテストに依存することによって支援されます。 引数の検証について(EAFP:許可よりも許しを求める方が簡単です)。ここからの適応例: ...それを行うにはよりpythonicと考えられています: def my_method(self, key): try: value = self.a_dict[member] except TypeError: # do something else これは、コードを使用する他のユーザーが実際の辞書やサブクラスを使用する必要がないことを意味します。マッピングインターフェースを実装する任意のオブジェクトを使用できます。 残念ながら、実際にはそれほど簡単ではありません。上記の例のメンバーが整数の場合はどうなりますか?整数は不変です。そのため、それらを辞書のキーとして使用することは完全に合理的です。ただし、シーケンス型オブジェクトのインデックス付けにも使用されます。メンバーが偶然整数の場合、例2ではリストと文字列、および辞書を通過できます。 断定的なプログラミングについて: アサーションは、プログラムの内部状態がプログラマが期待したとおりであることを確認する体系的な方法であり、バグをキャッチすることを目的としています。特に、コードの記述中に行われた誤った仮定や、他のプログラマによるインターフェイスの悪用をキャッチするのに適しています。さらに、プログラマーの想定を明確にすることで、インラインドキュメントとしてある程度の役割を果たすことができます。(「明示的は暗黙的よりも優れています。」) 上記の概念は競合する場合があるため、データの検証をまったく行わないか、強力な検証を行うか、またはアサートを使用するかを選択するときは、次の要因を考慮します。 強力な検証。強力な検証とはApiError、たとえばカスタム例外を発生させることです。関数/メソッドがパブリックAPIの一部である場合は、引数を検証して、予期しないタイプに関する適切なエラーメッセージを表示することをお勧めします。タイプをチェックすることで、のみを使用することを意味するのではなくisinstance、渡されたオブジェクトが必要なインターフェース(ダックタイピング)をサポートするかどうかも確認します。APIをドキュメント化し、予想されるタイプを指定し、ユーザーが関数を予期しない方法で使用する可能性がある場合、想定を確認すると安全です。私は通常使用isinstanceし、後で他のタイプやアヒルをサポートしたい場合は、検証ロジックを変更します。 断定的なプログラミング。私のコードが新しい場合、私はアサートをたくさん使います。これに関するあなたのアドバイスは何ですか?後でコードからアサーションを削除しますか? 私の関数/メソッドがAPIの一部ではないが、自分で記述、調査、テストしていない他のコードに引数の一部を渡す場合、呼び出されたインターフェイスに従って多くのアサーションを実行します。これの背後にある私のロジック-私のコードでよりよく失敗し、スタックトレースのどこかで10レベル深く、理解できないエラーが発生するため、多くのデバッグを行い、とにかくアサートをコードに追加する必要があります。 型/値検証をいつ使用するべきか、または使用しないべきかについてのコメントとアドバイスは断言しますか?質問の構成が最適ではないため申し訳ありません。 たとえばCustomer、SQLAlchemy宣言モデルである次の関数を考えてみます。 def add_customer(self, customer): """Save new customer into the database. @param customer: Customer instance, whose id is None @return: merged into global session customer …

3
キューを使用したPythonマルチプロセッシングとZeroMQ IPC
ZeroMQを使用してPythonアプリケーションを作成し、ZGuideで説明されているMajordomoパターンのバリエーションを実装するのに忙しい。 労働者とクライアントの仲介者としてブローカーを持っています。入ってくるすべてのリクエストに対して、いくつかの大規模なロギングを実行したいのですが、ブローカーがそのために時間を浪費したくありません。ブローカーはそのロギング要求を別のものに渡す必要があります。 私は2つの方法を考えました:- ロギング専用のワーカーを作成し、ZeroMQ IPCトランスポートを使用する キューでマルチプロセッシングを使用する その点でどちらがより良いか、より速いかわかりません。最初のオプションでは、通常のワーカーで既に使用している現在のワーカー基本クラスを使用できますが、2番目のオプションの方が実装が早いようです。 上記についてのアドバイスやコメント、あるいは別の解決策が欲しいのですが。

1
Pythonのクラスの数学モデルは何ですか?
ラムダ紙の古典的なモデルはPythonでは有効ではないことを理解しています。 また、クロージャーはPythonシステムの実装の数学モデルではありません。 それでそれはどのモデルですか?
10 python 

1
組み込みのPythonモジュールを編集できますか?
私は現在Pythonを学習しており、数学ライブラリの使用についての本の途中です。PythonのWebサイトを調べたところ、ライブラリが少々不足していて、さらに便利な関数をいくつか作成していることがわかりました。たとえば、先に進んで、係数を取得して方程式の根を返す関数を作成しました。本質的には二次式関数です。これをpython Mathライブラリに追加できるかどうか疑問に思っています。そうでない場合は、関数を呼び出すだけで作成した他のPythonプログラムでその関数を使用できるように、どのように保存しますか?

1
Pythonの「神クラス」をリファクタリングする方法は?
問題 私は、メインクラスが少し「神オブジェクト」であるPythonプロジェクトに取り組んでいます。そこされているので、多くの属性とメソッドのfrigginの! クラスをリファクタリングしたい。 これまでのところ… 最初のステップとして、私は比較的単純なことをしたいと思います。しかし、最も簡単な方法を試したところ、いくつかのテストと既存の例が破られました。 基本的に、クラスには属性のリストがたくさんありますが、私はそれらをはっきりと見て、「これらの5つの属性は関連しています...これらの8つの属性も関連しています...そして残りはあります」と考えることができます。 getattr 基本的に、関連する属性をdictのようなヘルパークラスにグループ化したかっただけです。__getattr__その仕事に理想的だと感じました。それで、属性を別のクラスに移動し、確かに、__getattr__その魔法は完全にうまくいきました… で、最初に。 しかし、私は例の1つを実行してみました。サンプルのサブクラスは、これらの属性の1つを直接(クラスレベルで)設定しようとします。しかし、属性が親クラスで「物理的に配置」されなくなったため、属性が存在しないというエラーが表示されました。 @property 次に、@propertyデコレータについて読みます。しかし、それが親クラスのプロパティであるself.x = blah場合に実行したいサブクラスに問題が発生することも読みましたx。 望ましい self.whatever親のwhateverプロパティがクラス(またはインスタンス)自体に「物理的に」配置されていない場合でも、すべてのクライアントコードがを使用して機能し続けるようにします。 関連する属性をdictのようなコンテナにグループ化します。 メインクラスのコードの極端なノイズを減らします。 たとえば、これを単に変更したくありません。 larry = 2 curly = 'abcd' moe = self.doh() これに: larry = something_else('larry') curly = something_else('curly') moe = yet_another_thing.moe() …それはまだうるさいからです。これにより、simple属性がデータを管理できるものにうまく変換されますが、元の変数には3つの変数があり、調整されたバージョンにはまだ3つの変数があります。 しかし、私はこのようなもので大丈夫でしょう: stooges = Stooges() そして、のルックアップがself.larry失敗した場合、何かがチェックされstooges、larryそこにあるかどうかが確認されます。(ただし、サブクラスlarry = 'blah'がクラスレベルで実行しようとした場合にも機能する必要があります。) 概要 親クラスの属性の関連グループを、他の場所にすべてのデータを格納する単一の属性に置き換えたい larry = …

2
キーベースのキャッシュはどのように機能しますか?
37Signalsブログの記事を最近読んだところ、キャッシュキーがどのように取得されるのか疑問に思いました。 オブジェクトのタイムスタンプを含むキャッシュキーがあれば十分です(つまり、オブジェクトを更新するとキャッシュが無効になります)。しかし、キャッシュからフェッチしようとしているオブジェクトそのものにDBヒットを引き起こさずに、テンプレートでキャッシュキーをどのように使用しますか。 具体的には、これにより、たとえば投稿のコメントをレンダリングする1対多の関係にどのように影響しますか。 Djangoでの例: {% for comment in post.comments.all %} {% cache comment.pk comment.modified %} <p>{{ post.body }}</p> {% endcache %} {% endfor %} Railsでのキャッシュは、たとえばmemcachedへの単なるリクエストとは異なります(キャッシュキーを別のものに変換することは知っています)。キャッシュキーもキャッシュしますか?

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