Pythonのお勉強 Part66

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/11/12(金) 07:48:11.11ID:vp8lzav70
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇
Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/01/15(土) 21:56:35.43ID:qPYmJbcu0
うちだとexcelですらなくて、ただのプレーンテキスト+エディタで管理してるな
50万行くらいあっても瞬時に検索してくれる
2022/01/15(土) 21:57:37.30ID:4V2AJqIK0
エクセルで50万行は読みたくないな
2022/01/15(土) 22:57:41.19ID:JjAKhaIN0
素でデータだけいれとくってなくて式やらはいるから万行超えデータはエクセルでやりたくないよね
とはいえエクセルのお手軽uiはありがたいけどね
あとは話しの出だしに戻ってdjangoで例えばあの管理機能をDB無しでってのはやりたくない
2022/01/15(土) 23:03:36.40ID:GGoI8wNF0
csvとpandaでいいじゃん
2022/01/15(土) 23:12:13.07ID:0C30o+w5M
csv+pandaとSQLiteって速度差結構あるんじゃないの?
2022/01/15(土) 23:15:33.93ID:oXGiUqfh0
プレーンテキストだと検索は楽かも知れないが、
更新したいときはどうするの?
2022/01/15(土) 23:17:11.76ID:qPYmJbcu0
更新は毎回全体を生成させてる
かなり無駄
2022/01/15(土) 23:23:35.51ID:Klhpd5Rk0
低級プログラミング話はもうお腹一杯です
2022/01/15(土) 23:28:10.96ID:XtDGDCrq0
sqliteなら別途DBサーバー建てる必要ないんだしそんな大仰に考えなくていいのよ
2022/01/15(土) 23:45:04.52ID:EjYm1enEM
>>813
Excelが便利だと思うならExcelでいいと思うよ

>>814
pickleと比較するレベルならpickleでいいと思うよ
2022/01/15(土) 23:57:29.43ID:iJzr35B10
ブラウザなど、多くのアプリがsqlite3 を内蔵している

データベースの方が、検索したい項目にインデックスを貼れば、検索性能が良い。
B+tree
2022/01/16(日) 00:40:03.94ID:pPgujsKI0
検索木自作しろ
2022/01/16(日) 01:54:33.85ID:XxuplMo00
Python×Excelで業務自動化!

ブッwwww
2022/01/16(日) 04:04:35.81ID:T486FPBl0
休日にID真っ赤にして楽しい人生送ってそうだよな
2022/01/16(日) 04:14:53.73ID:oc/LJM7J0
IDを赤くする能も無いか。。
2022/01/16(日) 05:02:15.29ID:JeHrwNko0
そして俺の質問は流れたのであった
2022/01/16(日) 06:28:01.57ID:JeHrwNko0
seleniumでfind_element_by関数排除ってマジかよ
迷走しだすとオワコンの合図だけど大丈夫か
2022/01/16(日) 10:53:58.88ID:EmTsiZT20
>>826
洗濯機自作だと!?
833デフォルトの名無しさん (ワッチョイ 6e10-6KEr)
垢版 |
2022/01/16(日) 11:11:10.06ID:M5QOMeo90
find_element(by=‘xxx’)に統一されると何とか
2022/01/16(日) 13:02:21.17ID:tdI2bixr0
>>831>>833
やりたい事は分からんでもないけど
互換性の面で考えるとエライ事になりそうだな
2022/01/16(日) 15:52:52.53ID:goRiXQPd0
どうせ _compat とか付いた互換性維持のためのパッケージが作られる
2022/01/16(日) 16:40:29.53ID:IhI8UzoEd
互換関数自作しろ
2022/01/16(日) 17:47:00.51ID:EmTsiZT20
五感で乗り切れ
838デフォルトの名無しさん (ワッチョイ 9136-vRJH)
垢版 |
2022/01/16(日) 19:28:33.39ID:9K9mwOGs0
seleniumのプログラム初めて作ったけど、ネット情報と感でなんとかなるなw
「XPATHってどうやって探すんだよ」ってブラウザをいじり回してたなw

youtubeを自動で操作するプログラムを作った。
2022/01/16(日) 19:55:01.90ID:QQ2GlIIB0
何をするにもネット情報が頼り
毎回ぐぐるのも手間だから自分用にまとめた情報を参照するけど、
見ないで書けない以上ネット情報に頼ってるのと同じ

そら何でも細かく具体的に書けば読めるコードになるけど、覚えるのは無理
2022/01/16(日) 20:25:20.46ID:uN+C8rgh0
>>839
ラップかよ
2022/01/16(日) 20:27:20.10ID:QQ2GlIIB0
例えば、except XXX: に何を書くかも、
とりあえずエラー出してみてコピペする方式でしか作れない
そんなもん正確に記憶してる訳がない
842デフォルトの名無しさん (ワッチョイ 8d33-9BXF)
垢版 |
2022/01/16(日) 22:41:38.31ID:7yetUIaG0
別にググってでも書けるならいいじゃない
ちゃんとググった後に公式ドキュメント見て裏付け取る事さえ忘れなければだけど

それに、自分の知識にある情報がいつまでも正しいとは限らないし
2022/01/16(日) 22:44:38.30ID:QQ2GlIIB0
ぐぐれない環境で親切なエディタも無しに書けと言われても書けない
レガシーな言語はそれでも書けた
かなり慣れてもマニュアルみながらガンダム操縦しないといけない
2022/01/16(日) 22:49:15.12ID:PmXwxgCd0
kivy2.0、普通に実行はできるんだけど
ビルドが出来ないの困ったもんだ
2022/01/16(日) 23:17:08.81ID:IM8Jprt+0
tkinter, ウィジェットの上だけにマージンとかできればけっこうデザインできるんだが
padyとか両方に効いちゃう
2022/01/16(日) 23:57:47.02ID:RG8YDX1E0
>>838
XPath で作らない方がよい。
XPathは要素の順番で指定するから、順番が変わるとバグる

CSS Selector の方が、バグりにくい

E2E テストでは、Ruby のSelenium Webdriver, Capybara, Nokogiri、
JavaScript のCypress もある
2022/01/17(月) 06:01:14.38ID:4lMff3fz0
idとかないケースばかりで結局cssセレクターでも順番変わったらおかしくなるコードばかり書いてる
2022/01/17(月) 07:46:48.01ID:zhnOOb7Q0
xpathは属性での検索もできるしCSSセレクタの機能は包含していると思うが。
2022/01/17(月) 09:56:05.08ID:4lMff3fz0
未だに参照の仕様が分からない...
djangoでfor分を使ってmodelオブジェクトを作っていってそれを配列に入れていって、最後にDBに一括保存したいんだけど参照渡しならfor回す度に毎回オブジェクト上書きされるの?
2022/01/17(月) 10:35:40.33ID:u7InkFKc0
参照はwindowsのショートカットだと思えばいい
ショートカット経由でファイルを書き換えると
元のファイルの中身も書き換えられる
2022/01/17(月) 11:41:54.71ID:yVob9aV+M
>>849
array = []
for x in iterator:
__m = Model(x)
__array.append(m)

↑mは上書きされるけど参照関係ある?
2022/01/17(月) 12:22:45.63ID:G6emDPZd0
もし「参照渡し」だったら __m を上書きすると
append された後の「__mの参照」も上書きされるわけだから……

pythonのは いわゆる「参照の値渡し」なので大丈夫って言ってやるのが楽のよーな気がする
2022/01/17(月) 13:32:51.96ID:4lMff3fz0
分かったかもしれん
インスタンス化する時には暗黙的にnewをする事を思い出した
つまり>>851の場合はmは全部実態は別になるんだね?

そうじゃないと極端に使いにくすぎるもんな
2022/01/17(月) 13:37:15.96ID:eSi1/nEN0
慣例的に参照渡しという表現は「変数の参照」を渡す事を言う
通常変数が静的領域やスタックに実体を持つ値型の言語では。

しかしPython変数は全て参照型(C言語的にはヒープへのポインタ)
そしてPythonにC++の&やC#のrefに相当する参照渡しはないので
参照を格納している変数の内容を呼び出し先から変更は出来ない
ただし同じ参照(ポンイタ値)を経由する実体の操作は共有される

C# Doc曰く「参照渡しで渡すという概念と参照型の概念とを混同しないでください

>>853 Exactly.
2022/01/17(月) 13:47:46.96ID:W+/63TdwM
C++の&だって呼び出し側が書き換えられているように見えるのはポインタと同じようにアドレス値を渡してるからであって、"参照の値渡し"と変わらんのでは?
値渡しでない参照が使える言語なんてあるの?
2022/01/17(月) 14:36:13.35ID:eSi1/nEN0
>>855
本質はそうだけども、Pythonに変数の参照を渡す術がない
元々が参照型(ポインタ)、「変数」ではなく「実体」への参照が渡る
デリファレンスもなく代入は常に参照の割り当てで、元変数も書き換えない

C++やC#で言う参照渡しは変数への参照が与えられ、元変数自体を変更可能
元々が参照型やポインタの場合にはポインタのポインタ状態になる
857デフォルトの名無しさん (ワッチョイ a136-vRJH)
垢版 |
2022/01/17(月) 16:24:52.14ID:TnyU9nQo0
python で参照渡しにするなら、配列で渡すしかないって事だよね。
2022/01/17(月) 16:54:46.12ID:vsIyvMGR0
Cを始めたばかりの頃ポインタめんどくせえと思ったけど明示的だし楽だったんだなあ
2022/01/17(月) 18:41:48.63ID:f9N3zclk0
デリファレンスかったるいからC++の参照がええわ
とゆうかいちいち書くのメンドイから参照ができたんでしょ
知らんけど
2022/01/17(月) 18:49:49.25ID:aiJhHrOhM
言語仕様としての参照とで混同してる
指してるものはいっしょやけど
861デフォルトの名無しさん (ワッチョイ a136-vRJH)
垢版 |
2022/01/17(月) 18:49:50.03ID:TnyU9nQo0
昔はリターン値が一つしか返せなかったけど、今は複数個返せるから参照渡しもあまり意味がないんだろ。
まあ、どデカい配列とかを渡すときは、参照渡しは意味あるだろうけど。
2022/01/17(月) 19:59:12.78ID:VZGb/HpKd
>>853
そう、だから
>>573
863デフォルトの名無しさん (ワッチョイ f901-yENW)
垢版 |
2022/01/18(火) 22:52:58.92ID:aXITGa9l0
私もここに常駐して皆さんぐらいのレベルに早くなりたいです。
2022/01/18(火) 22:58:28.99ID:5DfJOP/a0
作りたいものがあるとすぐだよ
過去に別の言語で作ったものの移植でもいい
865デフォルトの名無しさん (ワッチョイ 6e10-6KEr)
垢版 |
2022/01/19(水) 00:31:22.28ID:bCy7bu6O0
>>863
志が低過ぎる
2022/01/19(水) 00:50:38.28ID:b3RzcCJx0
揚げ足取りは世界一
2022/01/19(水) 02:00:34.92ID:ND4+DLhI0
ここ初心者向けスレじゃないの?
最近見始めたから知らんけど
2022/01/19(水) 06:37:45.42ID:VHoBV8Rl0
日本語初心者の質問は多いな
2022/01/19(水) 08:08:07.59ID:Jw4BGPpA0
Pythonの試験増えたね
https://codezine.jp/article/detail/15471

https://it.impress.co.jp/articles/-/22573
2022/01/19(水) 08:22:24.60ID:ov2X7pn30
ぐぐってコピペするとか、作っておいた虎の巻を参照するとか、
ツールが候補を教えてくれるとか、そういう作り方をするのが常道なので、
記憶だけで答える試験は制約が大きい

持ち込み可(google含む)なら意味ある
2022/01/19(水) 09:26:51.15ID:VHoBV8Rl0
そうなんだよね
記憶だけで答える試験は年寄りには不利だ
試験問題難しくて良いから資料持ち込みはありだよな
2022/01/19(水) 10:28:34.76ID:9a+02jGb0
公式サイトのみ閲覧OKで
2022/01/19(水) 11:11:54.51ID:ND4+DLhI0
Pythonの試験www
情弱オブ情弱www
2022/01/19(水) 11:17:13.44ID:Gn+IJNl2a
基本情報処理とかな
2022/01/19(水) 11:32:28.79ID:ov2X7pn30
まあ、自費で受けるようなもんじゃないから何でもいい
2022/01/19(水) 12:47:17.28ID:R+1XHYGi0
ベータ試験って何か合格しても嫌だな
877デフォルトの名無しさん (オイコラミネオ MMd5-0hlo)
垢版 |
2022/01/19(水) 13:22:05.24ID:WxcLvF91M
python自体よりファイルのパスの指定方法とかライブラリのデータはどこへ格納してどうやって指定するの?とかpythonのバージョン合わせるのどうやるのとかpipやenvってどういう事?とか色々そっちの方が難しい
2022/01/19(水) 21:07:39.29ID:MU1QvUuQ0
Python以前にターミナルをちゃんと使えている人どれだけいるのって感じはする。
pythonを教え込まれた学生は脳死でAnaconda prompt開いてpython filepathすることしかできん。
カレントディレクトリ、相対パス、基本コマンドを全く知らないのに実行してるのはむしろ恐怖。
データサイエンスやりたいのはわかるけどpowershell教えたほうが生産的なんじゃないか
2022/01/19(水) 21:10:38.05ID:64KTdvqJ0
さすがにpsはない
2022/01/19(水) 21:21:07.11ID:MU1QvUuQ0
>>879
プリインストールで非プログラマでも使えるツールの中ではめちゃくちゃ使えると思うけどなぁ
CLIめちゃくちゃ大事なのに、Pythonの入門書でも何でも説明されている方が珍しいし、されていてもイケてないコマンドプロンプトだったりで頭抱える
2022/01/19(水) 21:34:56.27ID:ov2X7pn30
形式的にはCLIだけど、ガチでコマンドタイプしてpython使う奴はいない
別の手段で同じことを実現する
そんな古くて面倒なことはみんな忘れるのがpython
882デフォルトの名無しさん (ワッチョイ 6e10-6KEr)
垢版 |
2022/01/19(水) 21:51:30.92ID:bCy7bu6O0
ps使うぐらいならwsl入れろ
883デフォルトの名無しさん (ワッチョイ a136-vRJH)
垢版 |
2022/01/19(水) 21:52:01.11ID:XG/tmssg0
windowsじゃ無くてlinuxから入るべきだなw
2022/01/19(水) 22:24:33.31ID:uUfRyRoD0
PSみたいなゴミ導入するぐらいなら、最初からbash使わせろやって話だな
2022/01/19(水) 22:26:12.88ID:VHoBV8Rl0
>>881
その物言いだとbase環境だけで使ってる感じだなw
2022/01/20(木) 08:31:22.24ID:ESGatvgk0
要するに初心者と意識低い系はちゃんとmacを使えって事だな
2022/01/20(木) 08:38:55.47ID:fLKXds2N0
macの人はツールを使って何かを作る専門で、
仕組み自体を作ったりはしないのでは
2022/01/20(木) 10:17:40.64ID:VZGuEXXO0
公式サイトの1/14のニュースにはM1 Macで開発したとあるけどな
MacBookのトラックパッドが満足に動けばLinuxでもいいんだけどね
どうせ動作確認、CIはコンテナでするから端末はLinuxじゃなくても困らない
889デフォルトの名無しさん (オイコラミネオ MM29-o6XP)
垢版 |
2022/01/20(木) 11:52:16.52ID:AnlXyinuM
コマンドライン分からん思ってたがガラケーのメニュー入れ替えたり、iPhone3GS脱獄したりネット見ながら色々やってる間に知らないうちに触ってたんだな
無知とは恐ろしい
2022/01/20(木) 13:09:45.12ID:ZN8PVu5V0
たしかに無知だな
何も身についてない証拠
2022/01/20(木) 18:42:45.54ID:ESGatvgk0
俺も無知だからおk
それよりクラスごとtryで囲っていい?エラー吐いて終わったときにある処理をしたいんだが
2022/01/20(木) 18:57:01.24ID:ZN8PVu5V0
そのエラーとやら置きそうなとこだけtryで囲むのが普通
まぁでもいいんじゃない?クラスごとの意味が分かんないけど
やってみれば?
2022/01/20(木) 18:58:09.69ID:NuVLsXYX0
class定義をtryで囲むって事?
それだと定義時のエラーを捕まえるだけでインスタンスのエラーは捕まえられないよ
2022/01/20(木) 19:07:33.03ID:29Oj4UZnM
デコレータでうまくやれんかね
2022/01/20(木) 19:23:33.34ID:ZN8PVu5V0
クラス定義時のエラーって何
文法エラー?
2022/01/20(木) 20:27:41.96ID:ESGatvgk0
やりたいのはseleniumのdriverを、どんな例外が発生した場合でもclose()すること
ググったらwith使うパターンが良さそうかなとも思ったけど@contextmanagerを使うパターンもあるみたいだけどどっちもよく分からない
とりあえずwithを使えるのは内部に__enter__と__exit__を持つクラスとメソッド?なのは分かった

俺が作ったモジュールではdriverを引数としていくつかのメソッドに渡したりreturnしたりしてるけど機能するんだろうか
試してみようかな
2022/01/20(木) 20:45:32.87ID:3Ud5USvA0
seleniumのインスタンスが対象メソッド外からでもアクセスできるなら
>>894 のいうとおりデコレータで表現すればコードのスマートさが保てる
2022/01/20(木) 20:54:37.26ID:ZN8PVu5V0
withもデコれーたも分かってないなら
一連のdriver.〜を素直にtry catchしよう
2022/01/20(木) 21:16:34.29ID:ESGatvgk0
今流れでクロージャについて調べてる
最終的にはwith使う事になりそう
2022/01/20(木) 22:05:27.10ID:OJXHwtm40
close()じゃなくてquit()ならcontext manager実装されてるよ

with webdriver.Chrome() as driver:
__do_something_with(driver)
2022/01/21(金) 00:28:30.50ID:lqkWi8hl0
>>900
これdriverをreturnする関数作って試してるけどurllib3.exeptions.MaxRetryError出て上手く行かんわ

ちょっと調べないと
2022/01/21(金) 08:51:33.02ID:mgMk+9mL0
>>852
参照はポインタを抽象化した概念で値はない
2022/01/21(金) 08:55:24.44ID:mgMk+9mL0
>>861
関数の副作用として破壊的操作が必要な時
コピーではなく参照による引数渡しは必須の機能だ
なければ純粋関数型言語と同じになる

今どきのスクリプト言語は基本型以外ほぼすべて参照による引数渡し
2022/01/21(金) 15:30:08.32ID:lqkWi8hl0
>>901
これ結局djangoのBaseCommand継承クラスのhandleメソッド内でやったら出来た
原因不明
あとkeyboardinturreptでは機能しないんだな
2022/01/21(金) 17:24:35.56ID:Llt7QcId0
>>904
django?
テストコードでselenium使ってるならsetupとteardownで良くない?
2022/01/21(金) 17:46:15.09ID:lqkWi8hl0
>>905
いや普通のデータ収集
2022/01/21(金) 18:05:24.47ID:1bXl6qPl0
スクレイピングって結局、htmlを正規表現で解析した方が正確で速かったりする
自由に書けすぎるものを型にはめても絶対溢れる
2022/01/21(金) 18:13:55.00ID:pFjUBAs70
画面遷移でリクエスト構築するの面倒だしすぐbot判定されそう
2022/01/21(金) 18:27:50.59ID:uYMfMtVk0
なんで急にスクレイピングの話になったんだ?
大丈夫か?
910デフォルトの名無しさん (ワッチョイ f901-Nrkm)
垢版 |
2022/01/22(土) 14:06:13.46ID:P7lfAWJG0
args = sys.argv
id = args[1]
【エラー】
IndexError: list index out of range

★”id”には何が入るのですか、どなたか教えてくれませんか。
2022/01/22(土) 14:46:36.26ID:y3RiWYQh0
>>910
https://docs.python.org/ja/3/library/sys.html#sys.argv
2022/01/22(土) 14:50:38.03ID:xJ8GN0MU0
args = sys.argv[1:]
for arg in args:
print(arg)

こんな風にすると安全
2022/01/22(土) 15:10:05.08ID:QWAkInsq0
どっちも同じエラーになると思うけど、どう安全?w
2022/01/22(土) 15:12:07.97ID:QWAkInsq0
と思ったけど長さ0のリストにどんなスライスかけても同じもの返すのか
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況