Pythonのお勉強 Part62
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず★ ☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止 ☆「Ruby では」「Rubyでは」をNGワード登録推奨 ◆エラーを解決したいときはエラー文(勝手に省略禁止)と 環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと ◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩壊するので ↓等のソースコードうp用サイトに貼ってきてくだしあ (スクリーンショットをimgur等にうpる「横着」禁止) ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう。 ◇Pythonオフィシャルサイト http://www.python.org/ ◇まとめwiki ttp://python.rdy.jp/ ●関連スレ● くだすれPython(超初心者用) その44【Ruby禁止】 http://mevius.5ch.net/test/read.cgi/tech/1563969768/ 〇前スレ Pythonのお勉強 Part61 http://mevius.5ch.net/test/read.cgi/tech/1563622784/ 次スレの建立は>>985 あたりが挑戦する。 [EOF] VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured >>600 単位がかかってたのでhissiですただ >>600 Pythonが初めてのプログラミング言語なら、そりゃ覚えることは多いだろうね 自分はCやJavaに挫折して、VBAは何とか知っているというレベルの者だが Pythonはサクっと覚えられた こんなシンプルで多機能な言語があるのかって驚いたね データをリスト・タプル・辞書に入れて組み込み関数や標準ライブラリで処理しつつ、流れをforやifで制御する この範疇でプログラミングするなら最高に簡単な言語だと思うね Webとか今流行りのAIとか、そういうのはそれで飯食ってる連中向けの高度なテーマだから 趣味でやってる人は手を出しちゃいけないよ Pythonを学ぶのにオブジェクト指向を理解していない奴が多すぎる データ分析に使うだけなら別にいいけど >>604-605 おれはC的発想から抜けろ!とよく怒られてるけど 簡単なWebツールはできてる(幾つか運用中)ず・・・ Pythonは言語的に手続き型の考え方が強いから オブジェクト指向を身につけたいなら他の言語もやったほうがいい 他のOO言語から入るとPythonだと手続き型脳を強制される場面が多くて最初はイライラした pythonでも、昔はクラスに集約していたところを モジュールで集約して関数を使い回す機会が増えてきたから 昔に比べればオブジェクト指向の重要性もだいぶ落ちてきたのかな そもそもスクリプト言語って短いコードをササっと書いてササっと実行してナンボだから 事前に綿密なクラス設計を必要とするOOとは相性が良くない 自分はOOは概念くらいしか知らないから今まで一度もクラスを書いたことはないけど、 困ったことは一度もない GoにもRustにもJuliaにもクラスは無い オブジェクト指向は廃れてるよ 昔のOOPはオブジェクトが主でオブジェクトに振る舞いを実装するという考え方だったんだが、 Goなど最近の新しい言語ではあくまで関数が主であり、 オブジェクトは複数の関数のグループにおいて共有される単なる文脈に過ぎない、という解釈が主流になりつつある Pythonはクラスこそあるが、OOPについては昔からわりと後者に近い立場だ Pythonは他言語に比べればVBAに近い存在と思っておけば間違いない CやVBAから来た人は同じ手続き型で馴染みやすい どの言語にも長所短所あるがPython使ってるやつは短所を理解できてないやつが多くて辟易する オブジェクト指向で書いた方がきれいにいくパターンも多いから そこは自分の引き出しとタスクの兼ね合い次第だろう そもそもコードを綺麗に書くメリットが薄い職場もたくさんあるけどね Pythonはムズイ! >>612 VBAは検索&コピペでいろいろ作りました。 Cもちょっとだけやりました。 でも、Pythonとはずいぶんと違うように思います。 データ型がムズイです。 DataFrameというのを作ると行数番号とか、 列名がかってにはいってくるのですよ。 ついていけないです! とりあえずこれに慣れないといかんので 検索&コピペでちょこちょこと作ってみてます。 目標はサイキットラーンというのでSVRという分析をやるのです。 頑張ります! 俺は周囲の誰からも、馬鹿か天才かわからん!と 言われてます。 俺は簡単なことがなかなか理解できないんですよ。 でも一度理解してしまえば、そこから光速なんですよね。 だからそこまで頑張ります! DataFrameはPandasの話だから Pythonがムズイというのとはちょっと違うと思うんだが まいっか Pandasは公式のGetting Startedを読めば理解できる VBAをExcelで使うのにRange, Cells, Row/Columnを理解する必要があるように PandasはDataFrame, Series, Indexの関係を最初に理解する必要がある python自体は毎日使ってるけど、pandas は二、三か月使わなかったりするんで 使おうとしたときにあれ?って思うことが多いな 機械学習の型調整はプログラミング初心者にはシビアかもね 型の受け渡しで、CatBoostのコーディング以上に苦労する機会はそんなにない 最初はpandasでサーチしたりデータフレーム生成してたけど 配列でも同じこと出来るんじゃね?ってなってからは一切使わなくなった 他の言語で書くときに流用もできないし。Pythonしか使わないってならアリかも 時系列データを扱わないならpandas使わなくてもええんちゃう てか他言語でコード流用って外部モジュール使ってたらどれも無理でしよ 他言語なら他言語の有用なモジュールを使えばいいじゃない 機械学習をPythonで行うのが主流になったのは 有用なモジュールが多数あったのも一つの要因 逆を言えば次世代の機械学習用言語に関しても 有用なモジュールが存在しなければ主流たりえない pandasがなくてもいい状況はそりゃあるだろうね。 でも、CSV読み書きしたりマスタテーブルとデータテーブルの結合をしたり、ヒストグラム作ったり、統計値出したりするのにいちいち自分でそういうコードを書くのは時間の無駄でしょ。 書き方はかなり違うけどRDBMSに対するSQLでの操作みたいなことが出来るのがpandasのいいところだと思うんだが。 Pythonって口語で言うとき〜パイっていう用語が多すぎて恥ずかしい anaconda3 python3.7 ですが 既に入っているパッケージの入手元を調べる方法は何がありますか conda で入れたかどうか pip で入れたかどうか 等々です >>637 thx conda list で pip の方は <pip> で区別されて一緒に出て来ました ライブラリをちょっと利用するだけですが python何級ですか jupyter notebookにて、 cellを実行すると、 In [*]となったままになり、 実行されていない(?)ような感じです。 cellを追加してprint文を試してみても、 In [*]となったままで何も変化ありません。 原因としてどういうことが考えられますか? どういう対処がいいのでしょうか? とりあえずPCを再起動してみます。 Djangoを勉強し始めようと思うのですが今なら2.2と3.0どっちで勉強するべきですか? まだ2.2でいいんじゃない? といってもまだ自分は3の魅力がわからないが ソースコードを確認したくて、pyiファイルに行きついたのですが def bind(self, address: Union[_Address, bytes]) -> None: ... というコードに行き着きました。 pyiファイルは型とreturnを指定しているとわかりましたが、最後の「...」の意味がわかりません。 省略という意味なら、def bind()のコードはどこに書かれているのでしょうか。 以下のライブラリを調べているときにつまづきました。 import socket socket.bind(('127.0.0.1', 50007)) >>646 pyiファイルはタイプチェッカー用にタイプヒントが書いてあるだけでソースではない IPythonでimport socketして socket?? でsocketモジュールのソースが見れる socket.socket?? でsocketクラスのソースが見れる 継承元の_socketを見たければ import _socketして_socket?? とか _socket.socket??とすれば中身の確認ができる ただCで書かれてるモジュールだとソースは通常PC内に無いので見たければGithubへ >>647 ありがとうございます。 IPythonで調べたところ以下がわかり、_socket.pydは中身が見れないのですね。 In [5]: _socket?? Type: module String form: <module '_socket' from 'C:\\Users\\★\\Anaconda3\\DLLs\\_socket.pyd'> File: c:\users\★\anaconda3\dlls\_socket.pyd githubで調べたところ、関数名やファイル名が違うため、若干不安がありますが これが_socket.pydの中身かなと考えています。 https://github.com/python/cpython/blob/3.8/Modules/socketmodule.c define文だけで350行ある8000行のCコードは さすがに有り難すぎて目がつぶれる static struct PyModuleDef socketmodule = { PyModuleDef_HEAD_INIT, PySocket_MODULE_NAME, ↓ PySocket_MODULE_NAME は socketmodule.h で定義されていて _socket ↓ static PyMethodDef sock_methods[] = { {"_accept", (PyCFunction)sock_accept, METH_NOARGS, accept_doc}, {"bind", (PyCFunction)sock_bind, METH_O, bind_doc}, ↓ static PyObject * sock_bind(PySocketSockObject *s, PyObject *addro) { >>651 ありがとうございます。 こういうファイル名、関数名の指定の仕方をするんですね。 詳しく知りたくなったのでC言語ちゃんと勉強しようと思います! asyncioを用いて非同期プログラムを作成しようと考えています。 一方からのシグナルで多方の待ちを解除させたいのですが、 タイムアウトで継続するようにするにはどのようにすればよいのでしょうか。 類似のthreading.Event()には、timeoutの指定が可能なので、 同様の用途としたいと考えています。 gEvent = asyncio.Event() async def wait(): await funcWait() print('Hello') async def funcWait(): #ここで他方からのイベントまたは、2秒待ちで解除できるようにしたいが、 #asyncio.Eventではタイムアウトの指定ができない await gEvent.wait() def funcWake(): #ここから起動させる。 gEvent.set() >>661 https://docs.python.org/3/library/asyncio-sync.html#asyncio.Event ↑ここのサンプルコードで言うと3行目の await event.wait() を await asyncio.wait_for(event.wait(), timeout=0.5) にすればいいんでないの? >>660 知ってます つーことは俺はジジイなの? スレの流れ無視してすまん。 最近やたら目に付く「Python」なる文字、何て読むのか分からなかったが、 今日初めて「パイソン」って読むのを知った。スゲースキルアップした気分だ! virtualenvの正式名称はヴァーチャルエンビロンビロン PIPと言えば Peripheral Interchange Program だった時代があった 実行ファイルの2つ上の絶対パスが欲しいのですがどう書いたらよいでしょうか pyinstaller使う関係でos.path.dirname(__file__)が空になっちまいます 「2つ上」って 相対パスで書いたら「../../」ってことけ? なんかこんがらがってきた 絶対パスをargv[0]で取得して、そっから2つ上のパス名が欲しいんだけど、書き方がわからない 正規表現とか使って削るんですか…? >>676 あたまわるい俺的な発想では 「/」でsplitして ケツから2個削って 「/」を足しながらjoinすればいいのでは。 最終的にtkinter.filedialog.asksaveasfilenameのinitialdir引数にダイアログ開いたときの初期ディレクトリとして実行ファイルの2つ上のパス名を入れたいんです やっぱ文字列遊びするしかないのか pathlibでやってらいいらしいぜ ぐぐったらすぐ出てきたけど、なんでやらんかね import pathlib p_path = pathlib.Path() print(p_file.resolve().parent.parent) だとさ 書き方って何さ。文字列操作の話? 正規表現で削って目的が達成できるならそれも正解だろ pyinstaller関係なく単にparentディレクトリの取得方法が知りたかったんやね 1. pathlib.Path('..').resolve() 2. pathlib.Path('.').resolve().parent 3. os.path.abspath(__file__ + "/../../") 他には os.path.abspath(os.path.dirname(sys.argv[0]) + "/../..") とか 600です。 毎日、Pythonをいじって いろいろやってたら慣れてきた! つか、グクるといろいろ 情報がある! 改訂2版 Ruby逆引きハンドブック、2018 普通は、こういう本を読んで、どういう関数・スニペットがあるのかを見る。 そしたら、Node.js にも類推適用できる 例えば、Ruby のPathname クラスなら、パス名をオブジェクト指向らしく扱う path.parent.parent # 親の親へ expand_path # 絶対パスへ変換する これまでjavaを使ってたんですけどpythonとjavaの違いとかを教えてくれるサイトとかありますか 横からすみません。 684さんと近い状況だったので、失礼します。 私も悩んでいることがありまして(ry Python は独特! インデントの深さで決まるから、ややこしくて仕方ない。 それで、do〜end を使った、Ruby っぽい、Julia が流行ってきた Ruby のようにメソッドチェーン中心なのは、JavaScript, jQuery, Groovy, Kotlin がある Ruby のように、Duck Typing 中心なのは、Go GoはDuckTypingではない Rubyみたいなウンコと一緒にするのはやめてください 専門学校のコンピュータ・アニメ・ゲーム科卒から数年経ってプログラマーを目指したくなった者なんですがやっぱり未経験者は四年制大学の新卒しか採用されませんか? やりたい事はAIのプログラミングです 言語はPythonを覚え中です やっぱりPythonはやめてKotlinにしました >>688 ゲームプログラミングできたら問題ないでしょ UnityかUE4で自然環境シミュレーションできれば写真動画系だったら採用されると思うよ。Houdiniで建物と自然物量産できたら勝ち確。 >>691 KotlinにしたのでPythonの勉強はもう辞めました >>612 俺みたいに 仕事上どうしてもプログラム 書かなきゃいけない人間に VBAとpythonだけって多そう 単純に手段だと割り切るとこいつら が一番つかいやすい >>676 os.path.abspath(os.path.join(sys.argv[0], '..', '..')) >>686 インデントを深くするなら、その部分を関数にしてしまうという解決策がある Nobody learns how to write good software without writing lots lots of bad software first. Don't let fear that your code will suck paralyze you. >>699 Because humans can only learn from experience. ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる