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

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

2
** kwargsはアンチパターンですか?
ライブラリを内部的に呼び出す内部コードベースには多くのコードがあります-これらのライブラリには多くの引数があり(matplotlibを考えてください)、コードは特定のタスクのみを実行し、**kwargs呼び出された次の関数に単純に渡します。 例えば: def our_method(dataframe, **kwargs): result = do_something_with_data(dataframe) external_module.draw(result, **kwargs) 一方で**kwargs私たちのメソッド宣言のすべてのパラメータを繰り返すことから防止たちを、それはまた、呼び出し時に引数が有効であることが非常に不透明になりour_method、私はと呼ばれる方法を知っている必要があり、私は頻繁に知られたくないています- 。 これについてどう思いますか?
15 python 

5
プライベートメソッドの単体テストが悪い習慣と見なされるのはなぜですか?
環境: 現在、Pythonで小さなプロジェクトに取り組んでいます。私は一般的に文書化されているいくつかのパブリックメソッドで私のクラスを構造化が、主に高レベルの概念を扱う(クラスのユーザーが知っていて、使用すべきか)、そしてたくさんの隠された(アンダースコアで始まる)を担当している方法を複雑または低レベルの処理。 コードに信頼を置き、その後の変更によって以前の動作が損なわれないようにするためには、テストが不可欠であることを知っています。 問題: 信頼できるベースでより高いレベルのパブリックメソッドを構築するために、私は一般的にプライベートメソッドをテストします。コードの変更によってリグレッションが発生したかどうか、どこで発生したかを確認する方が簡単です。これは、これらの内部テストがマイナーリビジョンで壊れる可能性があり、修正/交換する必要があることを意味します しかし、私は、プライベートメソッドのユニットテストが、少なくとも異議のある概念であるか、またはより頻繁に悪い習慣と見なされていることも知っています。その理由:公の行動のみをテストする必要があります(参照) 質問: 私は次のベストプラクティスに注意を払い、理解したいと思います。 プライベート/隠しメソッドでユニットテストを使用するのはなぜ悪いのですか(リスクは何ですか)? パブリックメソッドが低レベルおよび/または複雑な処理を使用できる場合のベストプラクティスは何ですか? 精度: それは質問する方法ではありません。Pythonにはプライバシーの真の概念がなく、隠されたメソッドは単にリストされていませんが、名前がわかっている場合に使用できます 私はプログラミングのルールとパターンを教えたことはありません。私の最後のクラスは80年代からです...私は主に試行錯誤とインターネットでの参照によって言語を学びました(何年もの間、Stack Exchangeが私のお気に入りです)

2
設計上の決定-</ p>なしで<p>を生成する理由
tl; dr htmlを生成する広く使用されているいくつかのプログラムは、ブラウザーが適切に段落を閉じると仮定して、閉じているタグではなく、開く段落タグのみを生成します。 一見すると、ブラウザが段落を適切に閉じるという仮定は正しくないと思われます。私の解釈は正しいですか?より一般的には、この種の決定にはどのようなトレードオフが関係していますか? moinmoinソースコードを参照すると、次のコード行が目を引きました。 # We only open those tags and let the browser auto-close them: _auto_closing_tags = set(['p']) (ソース) 実装の残りの部分を読んだ後、確かに、moinmoinがそのページの1つに対してhtmlコードを生成するとき、適切な場合は段落開始タグを正しく生成すると同時に、段落終了タグ(簡単に実行できるにもかかわらず)。 私の特定の、かなり珍しいユースケースでは、この動作は正しくありません。バグレポートを送信したり、動作を変更したりしたいと思います。ただし、この設計上の決定は思慮深く行われたようです。私はこれが一般的に正しい動作であるかどうかを知ることができるほど、HTML標準またはさまざまなブラウザ実装の複雑さに精通していないため、この動作を修正/変更する本能は見当違い。 このコードは、ブラウザの実装について有効な仮定を立てていますか?生成されたhtmlは有効ですか?より一般的には、ここで見落としているトレードオフは何ですか?

5
よく書かれたドキュメントは、プログラミング言語を学ぶのに十分な理由ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 現在、大学のカリキュラムに含まれていないPythonを学んでいます。インタビューの中で、なぜPythonを選んだのかと尋ねられ、簡単に学ぶことができ、ドキュメントが非常によく書かれていると答えました。インタビュアーは、それが十分な理由であるかどうかは答えませんでした。彼は確信しているように見えましたが、私にはわかりません。 よく書かれたドキュメントと習得の容易さは、スクリプト言語を選択する十分な理由ですか?または、Pythonライブラリの利用可能性とPythonのより大きなユーザーベースについて詳しく説明する必要がありますか? ちょっとだけ。Pythonはこの仕事には必要ありませんでした。同社は、Ruby-on-railsに取り組みました。Pythonは私の履歴書にあり、インタビュアーはプログラミング言語を選択する際に、私がより新鮮なものとして考慮したことを知りたかっただけだと思います。

5
レクサーのトークンを考え出す
私が作成したマークアップ言語のパーサーを書いています(Pythonで書いていますが、これはこの質問にはあまり関係ありません-実際、これが悪い考えのように思える場合は、より良いパスの提案が欲しいです) 。 私はここでパーサーについて読んでいます:http : //www.ferg.org/parsing/index.html、そして、私が正しく理解すれば、コンテンツをトークンに分割するべきレクサーの作成に取り組んでいます。理解できないのは、どのトークンタイプを使用するか、またはどのように作成するかです。たとえば、リンクした例のトークンタイプは次のとおりです。 ストリング 識別子 数 ホワイトスペース コメント EOF {や(などの多くの記号は、独自のトークンタイプとしてカウントされます 私が抱えている問題は、より一般的なトークンの種類が私にとって少しarbitrary意的であるように見えることです。たとえば、なぜSTRINGは独自のトークンタイプとIDENTIFIERであるのですか。文字列は、STRING_START +(IDENTIFIER | WHITESPACE)+ STRING_STARTとして表すことができます。 これは私の言語の難しさに関係しているかもしれません。たとえば、変数宣言はとして記述され{var-name var value}、でデプロイされ{var-name}ます。それはのように思える'{'し、'}'自分自身のトークンにする必要がありますが、VAR_NAMEとVAR_VALUE資格トークンタイプで、またはこれらの識別子の下で、両方の秋のでしょうか?さらに、VAR_VALUEには実際に空白を含めることができます。後の空白var-nameは、宣言内の値の開始を示すために使用されます。他の空白は値の一部です。この空白は独自のトークンになりますか?空白は、このコンテキストでのみその意味を持ちます。さらに、{変数宣言の始まりではないかもしれません..それはコンテキストに依存します(その言葉が再びあります!)。 {:名前宣言を開始し、{ 値の一部として使用することもできます。 私の言語は、ブロックがインデントで作成されるという点でPythonに似ています。Pythonがlexerを使用してINDENTおよびDEDENTトークンを作成する方法について読んでいました(多かれ少なかれ、他の多くの言語で何{をし、何を}するのか)。Pythonはコンテキストフリーであると主張しています。つまり、少なくとも字句解析者は、トークンの作成中にストリーム内のどこにいるかを気にする必要はありません。Pythonのレクサーは、前の文字を知らずに特定の長さのINDENTトークンを構築していることをどのように認識しますか(たとえば、前の行が改行だったので、INDENTのスペースの作成を開始します)。私もこれを知る必要があるので尋ねます。 私の最後の質問は最も愚かなものです。なぜレクサーが必要なのでしょうか?パーサーは文字ごとに行って、それがどこにあり、何を期待しているかを把握できるように思えます。レクサーは単純さの利点を追加しますか?
14 python  parsing  lexer 

1
WindowsはDjangoコミュニティの「二流市民」ですか?
私は現在、最初に自分自身をホストし、その後顧客が自己ホストできるようにする予定のWebアプリケーションの研究開発を行っています。 私の仕事は、Webフレームワークを評価して、最初に最大の生産性と保守の容易さを提供するかどうかを確認することです。また、お客様が制御する環境への展開を簡単にサポートできます。 私たちのチームは、ASP.NET(MVCおよびWebforms)およびRuby on Railsの経験があります。 Railsでの経験では、Windowsの展開は非常にタブーなテーマであり、IRCまたはStackOverflowに関する質問はすべて、「なぜLinuxではないのか」という急な反応に遭遇します。ただし、この場合、ターゲット市場はWindowsまたはLinuxサーバーを実行している可能性があります。 これはDjangoの土地でも同じですか? ゴミのパフォーマンスは可能ですか? 痛みをなくすことは可能ですか? それは合理的であると見なされ、Linuxを実行したくないという完全に愚かなアイデアとして扱われていませんか?

5
FP思考に慣れている人は命令型コードをどのように読むべきですか?
私は約5か月前に大学を卒業し、過去4か月間地元の新興企業で働いています。大学にいる間、私はHaskellやF#などを自分で勉強しました。私たちは大学でJavaを教えられましたが、すぐに関数型プログラミングに触れるようになり、命令型プログラミングよりもはるかに多くの時間を費やしました。その結果、私の脳は機能的思考のために配線されています。私が参加した会社はPythonを使用しており、コードは非常に重要です。私は命令型コードを読むのに非常に苦労しています。変異を追跡することはできません。for-if-else-for -...のネストが4レベルを超える深さになると、コードで何が起こっているかを完全に把握できなくなります。さらに、Pythonは動的言語であるため、コードには型がありません。それ' コードベースの一部(おそらく「適度に複雑な」)を理解しようとしてから数週間が経ちましたが、これまでのところ理解できるほどの進展はありませんでした。そのコードを理解する方法についての実用的なテクニックをいくつか教えてください。前もって感謝します! 編集: コードに実際にはあまりコメントがなく、名前もあまり直感的ではないことを言及する必要があります。

9
Python:主要なプログラミング言語としての未来?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 数年前にいくつかのPythonの資料を読んで、いくつかのPythonコードを見た後、私はそれを旋回することにしました。Project Eulerの問題を解決するためにPythonから始めることにし、この言語に非常に感銘を受けました。それ以来、私はDjangoを学び、現在は主にWebアプリケーションに使用しています。私はこの言語でキャリアプログラミングをしたいと思っていますが、この言語の将来は現在不確実な状態にあることを恐れています。グーグルや他の大手企業がそれを採用しているので、希望があるかもしれません。Pythonについてどう思いますか、そこには多くの仕事の機会がありますか?
14 python 

2
オブジェクト指向とベクトルベースのプログラミング
私はオブジェクト指向とベクターベースのデザインの間で引き裂かれています。オブジェクトがアーキテクチャ全体に与える能力、構造、安全性が大好きです。しかし同時に、速度は私にとって非常に重要であり、配列に単純なフロート変数があると、MatlabやPythonのnumpyなどのベクトルベースの言語/ライブラリで非常に役立ちます。 これが私のポイントを説明するために書いたコードです 問題:トウのボラティリティ値を追加します。xとyが2つのボラティリティ数である場合、ボラティリティの合計は(x ^ 2 + y ^ 2)^ 0.5です(特定の数学的条件を仮定しますが、ここでは重要ではありません)。 この操作を非常に高速に実行すると同時に、人々がボラティリティを間違った方法(x + y)で追加しないようにする必要があります。これらは両方とも重要です。 オブジェクト指向ベースのデザインは次のようになります。 from datetime import datetime from pandas import * class Volatility: def __init__(self,value): self.value = value def __str__(self): return "Volatility: "+ str(self.value) def __add__(self,other): return Volatility(pow(self.value*self.value + other.value*other.value, 0.5)) (余談:Pythonを初めて使用する場合__add__は、単なる+演算子をオーバーライドする関数です) ボラティリティ値のトウリストを追加するとしましょう n = 1000000 vs1 = Series(map(lambda …


2
Python GILを早期に削除しようとした結果、パフォーマンスが低下しました:なぜですか?
Pythonの作成者であるGuido Van Rossumからのこの投稿は、PythonからGILを削除する初期の試みに言及しています。 これは以前に試されましたが、残念な結果が出ました。そのため、自分で多くの努力をすることに消極的です。1999年にGreg Stein(Mark Hammond?と)がPythonのフォーク(1.5と思う)を作成し、GILを削除して、すべての可変データ構造のきめの細かいロックに置き換えました。彼はまた、私が受け入れたグローバルな可変データ構造に関する多くの依存関係を削除するパッチを提出しました。ただし、ベンチマーク後、最速のロックプリミティブ(当時のWindows)を備えたプラットフォームでも、シングルスレッドの実行がほぼ2倍遅くなることが示されました。つまり、2つのCPUで、もう少し作業ができるGILを備えた単一のCPU上よりも、GILなしで行われます。これだけでは不十分で、グレッグのパッチは忘れ去られました。(パフォーマンスに関するGregの記事を参照してください。) 私は実際の結果について議論することはできませんが、なぜこれが起こったのか本当に疑問に思います。おそらく、CPythonからGILを削除することが非常に難しい主な理由は、参照カウントメモリ管理システムのためです。典型的なPythonプログラムは何千回または何百万回も呼び出しPy_INCREF、Py_DECREFロックをラップする場合の主要な競合ポイントになります。 しかし、アトミックプリミティブを追加すると、シングルスレッドプログラムの速度が低下する理由がわかりません。各Pythonオブジェクトのrefcount変数がアトミックプリミティブになるようにCPythonを変更したと仮定します。そして、参照カウントをインクリメントする必要がある場合、アトミックインクリメント(フェッチアンドアド命令)を行うだけです。これにより、Pythonの参照カウントがスレッドセーフになり、ロック競合が発生しないため、シングルスレッドアプリケーションのパフォーマンスが低下することはありません。 しかし、悲しいかな、私よりも賢い多くの人が試したり失敗したりしているので、明らかに私はここで何かを見逃しています。この問題の見方の何が問題になっていますか?
13 python 

5
データベースの使用は、テキストファイルからのデータの解析よりも優先されるべきですか?
codereview.SEの成長を測定するPythonプログラムを作成していました。私のアプローチは、フロントページに表示される「サイトの統計」を取得し、ハードドライブに保存することでした。これは毎日1回行う予定です。これまでに、統計を取得してテキストファイルに追加するのに十分な量を作成しました。Pythonスクリプトはgithubで表示できます。私が使用している形式は次のとおりです 22-08-2013 questions 9073 answers 15326 answered 88 users 26102 visitors/day 7407 22-08-2013 questions 9073 answers 15326 answered 88 users 26102 visitors/day 7407 スクリプトを2回実行して、ファイルで使用する形式を取得しました。最初は自分で保存するので、フォーマットは同じであるため、簡単に解析できますが、よくわかりません。データベースを使用する方が、データを取得する方が簡単であるため、ここではより良いはずです。ただし、データベースを使用したことがなく、SQL、MySQL、またはRDBMSのその他のバリアントについての知識もありません。 だから、これは私に質問をもたらします。データをテキストファイルに保存するよりも、データを保存するのにデータベースを優先すべき場合 データベースが必要なのか、単純なテキストファイルが必要なのかを判断する際に参照できるポインタはありますか? PS:より良いタグを追加できる場合は追加してください。追加できるタグについて疑問がありました。

8
Web開発のためのCLとPythonの選択
私はJavaのバックグラウンドから来ており、Paul Grahamによるこの小さなエッセイを読んだ後、仕事をスピードアップするために新しい言語、つまりCommon Lispを採用することを考え始めました(私はWeb開発者です)。 現在、ペットプロジェクトを書いていますが、将来のビジネスプランがいくつかあります。ポールはエッセイで「秘密兵器」としてLISPについて語っています。この声明が10年後に真実かどうかはわかりませんが、つま先をすてきなCLチュートリアルに浸したところ、LISPがWeb開発に優れているようです。 また、PaulはPythonを、私が実際によく知っている素晴らしい選択肢として言及しています。私の質問は、将来のWebプロジェクトのためにどれを選ぶべきですか? 私が考えていたこと: デスクトップアプリケーションを開発するつもりはないので、好きな言語を選択できます。 pythonは非常に大きなコミュニティを持っているようですので、lispと比べてより多くのライブラリ/フレームワークがあります lispには他のどこにも見つからない機能(マクロなど)があることがわかりました 私はほとんど単独で、または他の1-2人のプログラマーと仕事をしていますが、Lispの知識を持つ人を見つけるのは難しい場合があります それで、あなたはどう思いますか?

1
Flask.runよりもフラスコCLIが推奨されるのはなぜですか?
Flask 0.11では、flaskCLIが導入されました。docsとchangelogの両方に、これが推奨されています。 開発サーバーのドキュメント: Flask 0.11以降、開発サーバーを実行するための複数の組み込み方法があります。最良の方法は、フラスココマンドラインユーティリティですが、このFlask.run()方法を引き続き使用することもできます。 コマンドライン フラスコ、それは優れたリロード体験を提供するため、コマンドラインスクリプト(コマンドラインインタフェース)が強くにより、アプリケーションをロードする方法を開発することをお勧めします。基本的な使用方法は次のとおりです。 $ export FLASK_APP=my_application $ export FLASK_DEBUG=1 $ flask run 変更ログ: クリックCLIシステムを介してローカルデバッグサーバーを起動flaskするflask.cliモジュールが追加されました。これはflask.run()、異なる設計と置換のために、より速く、より信頼性の高い動作をするため、古い方法よりも推奨されますFlask-Script。 これまでのところ、この「優れたリロードエクスペリエンス」に気付きませんでした。カスタムスクリプトでCLIを使用する意味がわかりません。 を使用する場合Flask.run、私は単にPythonファイルを書くでしょう: #!/usr/bin/env python3 from my_app import app if __name__ == '__main__': app.run(debug=True) CLIを使用する場合、環境変数を指定する必要があります。CLIドキュメントでは、これactivateはvirtualenvwrapper のスクリプトに統合できると述べられています。個人的には、これはアプリケーションの一部であると考えており、バージョン管理下にあるべきだと思います。残念ながら、シェルスクリプトが必要です。 #!/usr/bin/env bash export FLASK_APP=my_app:app export FLASK_DEBUG=1 flask run もちろん、Windowsユーザーが共同作業を開始するとすぐに、追加のbatスクリプトが伴います。 また、最初のオプションでは、実際のアプリを起動する前にPythonで記述されたセットアップを許可します。 これにより、たとえば Pythonでコマンドライン引数を解析する アプリを実行する前にロギングをセットアップする 彼らは、カスタムコマンドを追加することが可能であると宣伝しているようです。オプションのエントリポイントを介して公開される単純なPythonスクリプトを記述するよりも、これが優れている理由がわかりません。 Python実行スクリプトを使用して構成されたロガーを使用する場合のロギング出力の例: $ ./run.py …
13 python  flask 

2
Pythonでは、関数を含むモジュールまたは関数を含むクラスを含むモジュールを定義する方が良いと考えられますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 私のコードでは、上記の2つのオプションのいずれかが同様に機能しますが、両方のアプローチの長所と短所を見つけることに興味があります。
13 python 

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