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
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. >>699
汚いコードでソフト書く経験無しで、きれいなコードなんか書けるわけないんだから
恐れずに突っ込んで行けや。将来自分のコードで自分が麻痺しちゃうかもだけどなw ■ このスレッドは過去ログ倉庫に格納されています