くだすれPython(超初心者用) その41【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず ☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その40 http://mevius.5ch.net/test/read.cgi/tech/1542874174/ ◆PythonのHome Page http://www.python.org/ ◆まとめwiki ttp://python.rdy.jp/ ◆Pythonのソースコードをそのまま5ちゃんにコピペすると インデントが崩れるので こういうところ↓にはってきてください ttp://ideone.com/ Pythonするにはぷち手間あるのがめんどうかなぁ ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数を長めに指定しる。 ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#) −−−−天麩羅ここまで−−−− あと、vsコードの補完は、pythonエクステンションに含まれているのですか? print() は、わかりやすいが、BASICみたいな ? と言うような自由な記法があっても良いのではと思ってたけど、関数がオブジェクトだから結構自由にできるんだね。 p = print p(111) #111 使い過ぎるとわけわかめになりそうだが。 >>262 vs codeとvsコードの表記の揺らぎを直すところからやってみよう! >>258 俺、Pythonを実質2週間ぐらいやっているんだけど やり始めてすぐに>>254 のような感を覚えた。 それなりの理由があるってことか(ちなみにJavaはさっぱり分からん)。 他の言語同様に、変数、メソッド名をアンダースコア(シングル、ダブルアンダー)で始めるとかで何かしらの意味を 与えていると分かっているんだが、目下あんまり調べてないからな。 プライベート変数がダンダーって見てすぐにわかるから良いと言えばその通りなんだがな pythonの関数名や変数名のアンダースコアは文法上は何の意味もなかったはず そもそもpythonにはプライベートやパブリックの概念が存在しない 単に人間が見分けやすいようについけてるだけ >pythonにはプライベートやパブリックの概念が存在しない これ知った時は俺驚いたよ。 privete、public等のキーワード付けて明確にしないのは、 Python教の哲学なんかと。 こんな記法を見たんだが、どう言う文法からこんなのが出てくるの? 3項演算子みたいなものだが。 短絡評価if と言うらしいけど。 i = 8 print(i%2 and'odd!!!!'or'>EVEN<') #>EVEN< 短絡評価というのは先に成立した(True)方だけを見て後ろは見ないと言う方式みたいだね。 また、if が無くても評価式だけで成立するんだね。 print(0 and 2 or 5) #5 print(1 and 2 or 5) #2 しかし print(1 and 2 ) #2 はなんとなく違和感がある。 そう言えば、3項演算子があってなんで2項演算子みたいなものが無いんだろうと思ってた。 3項演算子なら 2 if 評価式 else 5 が有って 2 if 評価式 が無いのが不思議だった。 評価式 and 値(0以外) がそれに当たるのか。 しかし、 1 and 2 の時どうして後ろの値が有効になるのかな? 短絡評価自体は理解しやすいんだが。 https://qiita.com/dinasetiana/items/2b0cb63e91e9511d1c6e True and b のとき何故、bの値を取るのか? 先後に成立した評価の値を取る?何故 True では無くbの値を取るのか? >>268 公式DOC>FAQにずばり詳解されてるので見るヨロシ FAQ は見つけられなかったけど、標準ライブラリの仕様書にしっかり書いてあった。 FAQの項目を教えてもらうとありがたい。 真理値判定 ブール演算 --- and, or, not x or y x が偽なら y, そうでなければ x (1) x and y x が偽なら x, そうでなければ y (2) not x x が偽なら True, そうでなければ False (3) さっと読み流した時は、and or は単なる論理的な演算だけだと思ってたから、値を取ると言う考えがまるでなかった。 注釈: (1) この演算子は短絡評価されます。つまり第一引数が偽のときにのみ、第二引数が評価されます。 (2) この演算子は短絡評価されます。つまり第一引数が真のときにのみ、第二引数が評価されます。 (3) not は非ブール演算子よりも優先度が低いので、 not a == b は not (a == b) と解釈され、 a == not b は構文エラーです。 >>266 一応メソッドやメンバの名前の先頭に__(アンダースコア2つ)を付けると擬似的にプライベートになる(外から参照するとエラー) 実際は __名前 を _クラス名__名前 に置き換えるだけだが >>260-261 Code Runner という拡張機能で、右クリックメニューから、指定したソースコードの範囲を実行できる。 Ctrl+Shift+P で、Run Code でも同じ >>254 Python は、Ruby よりも不自然。 Ruby, JavaScript みたいにメソッドチェーンしにくい Ruby では、メソッド名を、シンボル: で渡せるから、処理の内容が明確 [1, 2, 3].inject( :+ ) #=> 6 >>261 c#の場合はターミナルからdotnet runで実行だと思いますが、pythonの場合はそういったものはないのでしょうか >>277 コンソールから直接ソースを叩けば動くよ。 hoge.py hoge 或いは python hoge.py 要は、exeファイルと同じ動作をする。だから、exploreから .pyをクリックしても起動する。 (ただ、コンソールが見えないとあまり解らないだろうけど。) python は、コンパイルという作業がいらないから、 dotnet run の様にコンパイルの指定が必要ない。 >>277 だから普通にDOSコマンドの実行と同じprocess.start で良いのでは? 勿論、python が、インストールされている必要はあるが。 http://ni4muraano.hatenablog.com/entry/2017/07/08/233224 <略> p.StartInfo.Arguments = @"/c python hello.py"; p.Start(); pythonがインストールされていない環境にpython のソースコードだけを渡しても動かないから、その場合は考慮の必要はありそうね。 PythonスクリプトをWindows環境で動くexeファイルにしよう https://www.sejuku.net/blog/65881 >>279 >>280 たんにpythonと入れてからパスを指定すればいいだけなんですね あと、右クリからもターミナルで実行ができました >>260 俺、いつもエディタ(geditやGeanyやVS code使ってる)の横にターミナル開いといて、 ソース保存→ターミナルで $ python3 xxx.py→エラー→エディタで編集・保存→ターミナルで再実行(↑&Enter)→ エディタで編集・保存.... てな感じでやってるんだけど、エディタから実行したほうがやっぱり便利なんですか? >>282 煽りとかじゃなくて逆に聞きたいんだけど、 vs code使ってターミナルで実行する意味(メリット)がわからないんだけど。 vs codeのブレークポイントとか利用しないって事? python書くエディタとIDEで人気なのは、pycharmとvscodeかね >>287 あれええな、組み込みターミナルがqtconsoleでインラインプロットもJupyter同様にできる VSCodeでなんとか使えないかと試したけど無理だった VSCodeが弱いFortranも書くので環境統一のためnvim+qtconsoleにした Eclipse にインストールしようとして、エラーが出てからほったらかし(超小声) そもそも、venv anaconda eclipse が強調して動いてくれるんかよ。 >>266-267 意味はある 継承してみれば判る >>270 and は二つ目の条件も成立するかどうか評価するからな >>280 sejukuはクソだから貼らなくていいよ pythonでのWEBスクレイピングって、過去の更新情報も見れたりするのかな? >>294 Pythonやスクレイピングは魔法でも超能力でもありません The camel has two humps (working title) Saeed Dehnadi and Richard Bornat School of Computing, Middlesex University, UK February 22, 2006 初心者スレの内容に合うか分からないけど質問させて 最近は作るときに凝集度とか結合度、クラスの責務とかも気になるようになったんだけどじゃあ具体的にどう作るべきかが分からない 何をどう勉強しようか て状態なんだけどデザインパターンを学べばいいのかな?これも大切だけど自分が学びたい内容とは少しずれてるようで… >>283 すみません。見え張ってました。VS Codeは数回使ってみだけで、基本的に元通りgedit使っちゃってます。 NIC(ネットワークインターフェイス)が複数あるPCで、 requestsを実行する際にNICを指定してGETなりPOSTなりをしたいのですが、 方法が分かりません、requests自体にその手のパラメータはなさそうですが…。 どなたかお教えください。 >>301 NICを指定することはできないんじゃないの? そもそも何をしたいの? 複数のNICが同じLANに出ていけばどちらを経由しても行きつく先は同じだけど。 もしこんなことをやりたいのか? NIC-1 >> LANのIP-1にだけ繋がってる NIC-2 >> LANのIP-2にだけ繋がってる それでIP-2につなぎたいからNIC-2を使いたいとか? だったらNICなんか気にせずに接続しに行けばつながる方にしかつながらない。 >>302 分かりにくかったらすいません… 例として、PCにそれぞれ別のグローバルアドレスを持ったNICが二つあって(AとB)、 あるWebサーバーへの通信(=最終的にやりたいのはrequestsのGET/POST)はNIC-A経由で通信する、 また、別のWebサーバーへはNIC-B経由で通信する、ということをしたいのです。 かえって分かりにくいでしょうか…? >>303 説明が足りずすいません、上に書いたとおり、NICはそれぞれ別のグローバルIPを持っていて 且つ、通信先はインターネット上のWebサーバーです。 接続先によってNIC(というかソースIP)を使い分けて通信したいのです。 >>305 皆の質問の意図を理解できていないよ なぜ、 >接続先によってNIC(というかソースIP)を使い分けて通信したいのです。 わざわざこんな使い分けをしたいのか、その理由を聞かれている 普通はソースIPを分けなくても接続できるから >>305 何か理由があってどうしてもやりたいのなら、ルータなりでIPルーティングをすれば出来るけど。 静的ルーティングの設定 - Linux https://qiita.com/kooohei/items/b0931ae210911cc52adc この場合だとNICの選択もできる。 >>306 そんなもんプログラムじゃなくてもっと下層層でやることや >>307 スクレイピングやWEB-APIを叩くときに、ratelimitが厳しいサイトがあるのでほんの少しそれを緩和したいのです。 ありがとうございます、ルーティングをいじってしまうのは最初に考えたのですが、環境は外部のVPSで(また説明不足ですいません) 基本リモートでいじっているので、そのあたりどうなるのかなぁと、明日また試してみます。 また、調べたところCurlとかだと何かIFを指定するパラがあるようですが、横着ですが今のコードをあまり変えたくなくて。 >>309 じゃ、curl と同じ様にしてみたら? # curl -I --interface eth0 http://www.yahoo.co.jp/ #python def message_api(request): req = requests.post('http://www.yahoo.co.jp/' \ --verbose \ --get \ --interface=‘eth0’ --data 'text=おはようございます' \ --data 'appkey=xxxxxxxxx') print(req) >>299 pythonで作って学ぶデザインパターンみたいな物がほしいね オブジェクト指向が何となくわかっても使い方がよくわからん(´・ω・`) >>304 手動で、 Aが来たら有線LAN[A]を繋げて Bが来たら有線LAN(A)を抜いて、有線LAN[B]を繋げる >>309 じゃあサブプロセス使ってcurlで実行しちゃえばいいんじゃないの? NICを指定してrequestsの件、Pythonで出来ました。 requests_toolbeltというmoduleを組み込むことで、ちょっと搦め手ですが、source IPからNICを 指定してmountすることが出来ます。(ここには参考になる人はいなそうですがw) 以上。 このスレに限るなら、叩かれているのはほとんどRubyガイジのせいだろ 目の前をうろうろする羽虫みたいなもんだ 劇場で数十年ぶりに復活したCity Hunter 冴羽獠の愛銃Python3xxと日本でも流行りのPython3の因果関係 デスクトップアプリはpythonとjavascriptどっちがいいんでしょうか >>324 Electronがあるから今の流行りは圧倒的にJavaScript 昔ながらのWinアプリが作りたいんならC# あっちこち手をつけるのも大変なのでjavascriptでやってみます でもelectronッテメモリ悔いますよねなぜか なぜ32GBモデルにしなかったんだろ俺のバカバカ!ってね >>331 win10だと16gだと足りないよ。 ソフトによるけど。 昔ながらのデスクトップPCやサーバー機みたいな拡張とパーツ交換自在な時代なら最初16GBでも後から増設できたのに今時のモバイルなプログラム環境は半田付けされていて購入後に構成変更できないから辛いね 交換式にしたらスペース食うからねえ。 モバイルでもメモリとストレージは変更出来るってのも既に過去の話だな。 完全に買った時に全て決まるようになってしまった。 >>333 今時のPCでも、スロット数が少ないから、何年かしたらもうボードから買い換えるしか無いよ。 諦める事だな。 (全てが寿命に近づいてるから捨てる。) ただ、買った直後にそのPCで動かないのがあったら、諦めて別の方法を探った方が吉。 PCはスマホやタブレット、2 in 1とかにコモディティ化&低価格化してきてるからブラックボックスで使い捨てになるのも仕方ないのかも >>336 もう何台もPCを自作してきたが、あとで拡張しようと思って作ってても、いざ拡張する時になると時代遅れで結局捨ててしまう。 だってメモリだって新しいメモリは使えないし、新しいCPUは使えないし、何が拡張だ。 ほとんど全てのパーツが寿命に近づいてるから全てを新しくした方が安心できる。 何度壊れて痛い目にあったことか。 横からだが、今時古いメモリやCPUでもそれほど違わん。 (最近はAMDのお陰で急速にコア数増えたが) 物欲抑えれば全然現役で行ける。 (それでも性能追うのが浪漫なのは否定せんが) IDEとOfficeとブラウザとテキストエディタとレタッチソフトとiTunesぐらいなら十分すぎるぐらいCPUは進化したけれど 4K以上の動画編集とかVRとかデスクトップ科技計算とかみたいなヘビーユースだとCPUもGPGPUも最先端を追うしかないね >>337 あるあるだな。 やはり買うときに思い切って買わないといかんな。 モニタやキーボードはタイミングずらす。車検が被らないように増車したりバイク買う感じ。 >>337 >ほとんど全てのパーツが寿命 今年思い知った件 ほんと>>340 だは pythonのクラスメンバへのアクセスのことで質問です クラスのメンバに次の2通りの方法でアクセスしたいのです。 (1)ピリオドを使ってアクセスする (2)辞書のようにアクセスする それぞれ単独では実現できるのですが、両方同時に成立させる ことが出来なくて困っています。 最初に(1)のために次のように実装してみます class Foo(): def __init__(self, x): sel.x = x @property def x(self): return self.x @x.setter def x(self, x): self.x=x これだとエラーになるためxを_xにすると上手くいきます しかしそうすると__dict__がxではなく_xをキーとしてしまうため def __getitem__ を実装してもキーはxではなく_xになるため f=Foo()とすると (1)のアクセスは f.x (2)のアクセスはf["_x"] ということになってしまうのです。 (1)も(2)も同じキーでアクセスできるように出来ないでしょうか? 追記ですみません メンバ変数は値を更新した際に自動的に他の処理も呼びたいため setterを必要としています。 x.setter()等の仕様がそうだから仕方ないんじゃ? … def __init__(self, x): self._x = x … def get_x(self): self._x = _x x = property(get_x,set_x, del_x) やってないけど あるいは中に仕込むか @x.setter def x(self, x): self.x = x self._x = x うちsandybridgeだけど当面買い換える予定ないぞ グラボは入れ替えたが >>342 適当に辞書作ってsetattr,getattrをsetitem,getitemにマッピングすればOK Class Foo(): _dic = {} def __setitem__(self, key, val): self._dic[key] = val def __getitem__(self, key): return self._dic[key] __setattr__, __getattr__ = __setitem__, __getitem__ こうすれば f = Foo() f['x'] = 10 f.x でアクセスできる いや、辞書への挿入で更新もしたいならそれが正しい _xはデバッグ用途と思って更新を考えない簡略版で答えた >>347 全く始めたばかりで何もわかっていないんどけど、みんながpython の内部を改良していくためには必要な情報だけど、こんな事をpythonユーザーに正式に開放してるの? >>350 公式ドキュメントの組み込み関数にサンプルコードがあるよ でも自分が学んだのはエキスパートPythonプログラミングという本かな 公式ドキュメントも分かってしまえば分かりやすいけど、無機質な感じがして読みにくい 「暗示するより明示せよ」 がpythonの設計思想のひとつだからな 別に珍しいことでもない LISPなんかはユーザーが自由に言語設計をいじれすぎて 無数の方言が作られているしな >>353 だよな。 言語仕様としてできないものはできないで良いだろ。 言語仕様じゃ無いんだろ? 黒魔術は闇の世界で使う技術。 いや、attr系やitem系操作するのは、 他の言語の演算子のオーバーロードと 同じ感じテイストづし、珍しくも無い。 >>342 Hoge.__dict__ を作るだけでいける Python初学者どころかプログラム初学者なのですがそんな人にも使いやすいIDEはありますでしょうか?ググった所PyCharmやアナコンダなどがありましたが皆様の意見もご参考にさせて頂ければと 初心者こそpycharmを使うべし タイポも変数のundefinedもpep違反も全部赤ペン先生で指摘してくれる >>357 PyCharm、VisualStudio ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる