X



くだすれPython(超初心者用) その41【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/02/04(月) 21:22:10.08ID:9MrdxUVg
★当スレに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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
0248デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:49:41.46ID:c2xVE4LG
試験のためにpython勉強してんのか?
あほやん
0250デフォルトの名無しさん
垢版 |
2019/02/19(火) 02:50:12.73ID:fH1K3jOo
>>243
何食ってたら初心者スレでこんなに上から目線で不快な文が書けるんだろう
0252デフォルトの名無しさん
垢版 |
2019/02/19(火) 06:23:45.14ID:QXXeWHDh
>>250
うんこ
0254デフォルトの名無しさん
垢版 |
2019/02/19(火) 07:06:55.77ID:TL2+PvJX
オブジェクトって変数+関数みたいなものと理解してる
だけど、pythonでlen()みたいな関数が存在してるのはなんでや
obj.len()みたいに書く方がオブジェクト指向ぽいのに(´・ω・`)
0257デフォルトの名無しさん
垢版 |
2019/02/19(火) 10:37:48.43ID:ClxsX7KR
うーんダンダーキモいな
objが__dict__属性もってるなら
obj.len = obj.__len__
obj.len()
はい
0258デフォルトの名無しさん
垢版 |
2019/02/19(火) 11:03:15.41ID:D8b3v+Fo
>>254
必ずしも同じ名前のメソッドで要素数を取得できるとは限らないから
Javaの配列の.lengthとコレクションの.size()なんかいい例
0259デフォルトの名無しさん
垢版 |
2019/02/19(火) 17:25:15.51ID:xAiOFAtZ
>>154 pdf のキャラクターコードが違っていて、コピペでは、エラーが起きるから、やはり大きなサンプルはソースが提供されていることが必要だな。

2番目の大学の先生の【Python3入門】はサンプルソースも付いている。
math ライブラリーの関数一覧くらいは載せてても良いとは思ったが、贅沢は言えない。入門には必要ないと言えばそうかも知れないが。
0260デフォルトの名無しさん
垢版 |
2019/02/19(火) 17:51:31.05ID:t+ZZI+Uh
vs codeでpythonを実行するときのコマンドはなんですか?
ターミナルから実行するのが普通なんでしょうか?
0263デフォルトの名無しさん
垢版 |
2019/02/19(火) 23:26:35.02ID:xISlfG0u
print() は、わかりやすいが、BASICみたいな ? と言うような自由な記法があっても良いのではと思ってたけど、関数がオブジェクトだから結構自由にできるんだね。

p = print
p(111)
#111 使い過ぎるとわけわかめになりそうだが。
0265デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:19:50.88ID:1HzmSa/X
>>258
俺、Pythonを実質2週間ぐらいやっているんだけど
やり始めてすぐに>>254のような感を覚えた。
それなりの理由があるってことか(ちなみにJavaはさっぱり分からん)。

他の言語同様に、変数、メソッド名をアンダースコア(シングル、ダブルアンダー)で始めるとかで何かしらの意味を
与えていると分かっているんだが、目下あんまり調べてないからな。
プライベート変数がダンダーって見てすぐにわかるから良いと言えばその通りなんだがな
0266デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:27:21.38ID:zgA3z1dT
pythonの関数名や変数名のアンダースコアは文法上は何の意味もなかったはず
そもそもpythonにはプライベートやパブリックの概念が存在しない
単に人間が見分けやすいようについけてるだけ
0267デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:41:35.75ID:1HzmSa/X
>pythonにはプライベートやパブリックの概念が存在しない
これ知った時は俺驚いたよ。
privete、public等のキーワード付けて明確にしないのは、
Python教の哲学なんかと。
0268デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:43:10.98ID:PF1BNO4k
こんな記法を見たんだが、どう言う文法からこんなのが出てくるの? 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 の時どうして後ろの値が有効になるのかな?
0271デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:56:34.30ID:gK0qpGCl
>>268
公式DOC>FAQにずばり詳解されてるので見るヨロシ
0272デフォルトの名無しさん
垢版 |
2019/02/20(水) 01:30:40.30ID:DM4qe6j0
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 は構文エラーです。
0273デフォルトの名無しさん
垢版 |
2019/02/20(水) 01:36:22.16ID:R9Rgujjr
>>266
一応メソッドやメンバの名前の先頭に__(アンダースコア2つ)を付けると擬似的にプライベートになる(外から参照するとエラー)
実際は __名前 を _クラス名__名前 に置き換えるだけだが
0274デフォルトの名無しさん
垢版 |
2019/02/20(水) 03:12:26.13ID:B2QSVSiS
>>260-261
Code Runner という拡張機能で、右クリックメニューから、指定したソースコードの範囲を実行できる。
Ctrl+Shift+P で、Run Code でも同じ

>>254
Python は、Ruby よりも不自然。
Ruby, JavaScript みたいにメソッドチェーンしにくい

Ruby では、メソッド名を、シンボル: で渡せるから、処理の内容が明確

[1, 2, 3].inject( :+ ) #=> 6
0275デフォルトの名無しさん
垢版 |
2019/02/20(水) 03:15:50.94ID:P3DZex+Y
python資格試験はクラス捨ててもOK?
0277デフォルトの名無しさん
垢版 |
2019/02/20(水) 05:23:08.72ID:wMUHduDL
>>261
c#の場合はターミナルからdotnet runで実行だと思いますが、pythonの場合はそういったものはないのでしょうか
0279デフォルトの名無しさん
垢版 |
2019/02/20(水) 08:33:48.20ID:PF1BNO4k
>>277 コンソールから直接ソースを叩けば動くよ。

hoge.py
hoge
或いは
python hoge.py

要は、exeファイルと同じ動作をする。だから、exploreから .pyをクリックしても起動する。
(ただ、コンソールが見えないとあまり解らないだろうけど。)

python は、コンパイルという作業がいらないから、
dotnet run の様にコンパイルの指定が必要ない。
0280デフォルトの名無しさん
垢版 |
2019/02/20(水) 09:06:26.28ID:DM4qe6j0
>>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
0281デフォルトの名無しさん
垢版 |
2019/02/20(水) 10:30:31.71ID:wMUHduDL
>>279
>>280
たんにpythonと入れてからパスを指定すればいいだけなんですね
あと、右クリからもターミナルで実行ができました
0282デフォルトの名無しさん
垢版 |
2019/02/20(水) 10:51:51.66ID:BBElsiq0
>>260
俺、いつもエディタ(geditやGeanyやVS code使ってる)の横にターミナル開いといて、
ソース保存→ターミナルで $ python3 xxx.py→エラー→エディタで編集・保存→ターミナルで再実行(↑&Enter)→ エディタで編集・保存....
てな感じでやってるんだけど、エディタから実行したほうがやっぱり便利なんですか?
0283デフォルトの名無しさん
垢版 |
2019/02/20(水) 11:03:36.79ID:spTGKHkg
>>282
煽りとかじゃなくて逆に聞きたいんだけど、
vs code使ってターミナルで実行する意味(メリット)がわからないんだけど。
vs codeのブレークポイントとか利用しないって事?
0284デフォルトの名無しさん
垢版 |
2019/02/20(水) 13:38:56.65ID:gRk6WtzR
>>113
YouTubeで北神雄大を検索。
0288瘋癲の錬金術師 ◆cEIL0Ogg4U
垢版 |
2019/02/20(水) 18:17:46.89ID:gK0qpGCl
>>287
あれええな、組み込みターミナルがqtconsoleでインラインプロットもJupyter同様にできる
VSCodeでなんとか使えないかと試したけど無理だった
VSCodeが弱いFortranも書くので環境統一のためnvim+qtconsoleにした
0289デフォルトの名無しさん
垢版 |
2019/02/20(水) 18:17:47.79ID:3A0CDvTh
Eclipse にインストールしようとして、エラーが出てからほったらかし(超小声)
そもそも、venv anaconda eclipse が強調して動いてくれるんかよ。
0290デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:52:42.43ID:v7iPz90J
>>266-267
意味はある
継承してみれば判る
0291デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:54:36.31ID:v7iPz90J
>>270
and は二つ目の条件も成立するかどうか評価するからな
0292デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:56:21.10ID:v7iPz90J
>>280
sejukuはクソだから貼らなくていいよ
0294デフォルトの名無しさん
垢版 |
2019/02/20(水) 20:34:51.41ID:jOZlK4md
pythonでのWEBスクレイピングって、過去の更新情報も見れたりするのかな?
0297デフォルトの名無しさん
垢版 |
2019/02/21(木) 02:54:29.18ID:kxn9bd4Y
The camel has two humps (working title)
Saeed Dehnadi and Richard Bornat School of Computing, Middlesex University, UK
February 22, 2006
0299デフォルトの名無しさん
垢版 |
2019/02/21(木) 07:26:25.64ID:8rp9UCEX
初心者スレの内容に合うか分からないけど質問させて
最近は作るときに凝集度とか結合度、クラスの責務とかも気になるようになったんだけどじゃあ具体的にどう作るべきかが分からない
何をどう勉強しようか て状態なんだけどデザインパターンを学べばいいのかな?これも大切だけど自分が学びたい内容とは少しずれてるようで…
0300デフォルトの名無しさん
垢版 |
2019/02/21(木) 08:55:18.20ID:Daclfccm
>>283
すみません。見え張ってました。VS Codeは数回使ってみだけで、基本的に元通りgedit使っちゃってます。
0301デフォルトの名無しさん
垢版 |
2019/02/21(木) 14:34:58.79ID:y1fIYiTV
NIC(ネットワークインターフェイス)が複数あるPCで、
requestsを実行する際にNICを指定してGETなりPOSTなりをしたいのですが、
方法が分かりません、requests自体にその手のパラメータはなさそうですが…。
どなたかお教えください。
0303デフォルトの名無しさん
垢版 |
2019/02/21(木) 15:38:13.68ID:1URmNQhh
>>301 NICを指定することはできないんじゃないの? そもそも何をしたいの?
複数のNICが同じLANに出ていけばどちらを経由しても行きつく先は同じだけど。
もしこんなことをやりたいのか?
NIC-1 >> LANのIP-1にだけ繋がってる
NIC-2 >> LANのIP-2にだけ繋がってる

それでIP-2につなぎたいからNIC-2を使いたいとか?
だったらNICなんか気にせずに接続しに行けばつながる方にしかつながらない。
0304デフォルトの名無しさん
垢版 |
2019/02/21(木) 15:44:20.15ID:y1fIYiTV
>>302
分かりにくかったらすいません…
例として、PCにそれぞれ別のグローバルアドレスを持ったNICが二つあって(AとB)、
あるWebサーバーへの通信(=最終的にやりたいのはrequestsのGET/POST)はNIC-A経由で通信する、
また、別のWebサーバーへはNIC-B経由で通信する、ということをしたいのです。
かえって分かりにくいでしょうか…?
0305デフォルトの名無しさん
垢版 |
2019/02/21(木) 15:46:43.29ID:y1fIYiTV
>>303
説明が足りずすいません、上に書いたとおり、NICはそれぞれ別のグローバルIPを持っていて
且つ、通信先はインターネット上のWebサーバーです。
接続先によってNIC(というかソースIP)を使い分けて通信したいのです。
0306デフォルトの名無しさん
垢版 |
2019/02/21(木) 15:59:09.52ID:auY8mpXd
>>305
皆の質問の意図を理解できていないよ

なぜ、
>接続先によってNIC(というかソースIP)を使い分けて通信したいのです。
わざわざこんな使い分けをしたいのか、その理由を聞かれている
普通はソースIPを分けなくても接続できるから
0309デフォルトの名無しさん
垢版 |
2019/02/21(木) 17:21:39.12ID:y1fIYiTV
>>307
スクレイピングやWEB-APIを叩くときに、ratelimitが厳しいサイトがあるのでほんの少しそれを緩和したいのです。

ありがとうございます、ルーティングをいじってしまうのは最初に考えたのですが、環境は外部のVPSで(また説明不足ですいません)
基本リモートでいじっているので、そのあたりどうなるのかなぁと、明日また試してみます。
また、調べたところCurlとかだと何かIFを指定するパラがあるようですが、横着ですが今のコードをあまり変えたくなくて。
0311デフォルトの名無しさん
垢版 |
2019/02/21(木) 20:41:02.67ID:Xsa0ee+G
>>299
pythonで作って学ぶデザインパターンみたいな物がほしいね
オブジェクト指向が何となくわかっても使い方がよくわからん(´・ω・`)
0314デフォルトの名無しさん
垢版 |
2019/02/22(金) 00:02:47.01ID:4wGjWw5c
>>304
手動で、
 Aが来たら有線LAN[A]を繋げて
Bが来たら有線LAN(A)を抜いて、有線LAN[B]を繋げる
0317デフォルトの名無しさん
垢版 |
2019/02/22(金) 13:47:21.78ID:no4Nr2T0
NICを指定してrequestsの件、Pythonで出来ました。
requests_toolbeltというmoduleを組み込むことで、ちょっと搦め手ですが、source IPからNICを
指定してmountすることが出来ます。(ここには参考になる人はいなそうですがw)
以上。
0319デフォルトの名無しさん
垢版 |
2019/02/23(土) 11:43:34.06ID:+DV3f+Dk
伊勢の名物
0320デフォルトの名無しさん
垢版 |
2019/02/23(土) 12:26:45.82ID:lot8ckD6
国産のRuby叩かれすぎワロタ
0321デフォルトの名無しさん
垢版 |
2019/02/23(土) 12:40:42.89ID:1QjCNYhv
このスレに限るなら、叩かれているのはほとんどRubyガイジのせいだろ

目の前をうろうろする羽虫みたいなもんだ
0322デフォルトの名無しさん
垢版 |
2019/02/23(土) 12:48:40.53ID:+DV3f+Dk
自業自得
0323デフォルトの名無しさん
垢版 |
2019/02/23(土) 14:39:26.54ID:lot8ckD6
劇場で数十年ぶりに復活したCity Hunter
冴羽獠の愛銃Python3xxと日本でも流行りのPython3の因果関係
0327デフォルトの名無しさん
垢版 |
2019/02/24(日) 10:23:34.56ID:iJEnzY0p
あっちこち手をつけるのも大変なのでjavascriptでやってみます
でもelectronッテメモリ悔いますよねなぜか
0329デフォルトの名無しさん
垢版 |
2019/02/24(日) 14:53:09.92ID:YwY0sV++
>>324
python
0333デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:33:29.69ID:r06CB5Xe
昔ながらのデスクトップPCやサーバー機みたいな拡張とパーツ交換自在な時代なら最初16GBでも後から増設できたのに今時のモバイルなプログラム環境は半田付けされていて購入後に構成変更できないから辛いね
0334デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:41:27.91ID:9Sd/QbRT
交換式にしたらスペース食うからねえ。
モバイルでもメモリとストレージは変更出来るってのも既に過去の話だな。
完全に買った時に全て決まるようになってしまった。
0335デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:51:55.81ID:+6ZRRI/z
>>333 今時のPCでも、スロット数が少ないから、何年かしたらもうボードから買い換えるしか無いよ。
諦める事だな。
(全てが寿命に近づいてるから捨てる。)

ただ、買った直後にそのPCで動かないのがあったら、諦めて別の方法を探った方が吉。
0336デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:14:36.77ID:r06CB5Xe
PCはスマホやタブレット、2 in 1とかにコモディティ化&低価格化してきてるからブラックボックスで使い捨てになるのも仕方ないのかも
0337デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:21:36.39ID:+6ZRRI/z
>>336 もう何台もPCを自作してきたが、あとで拡張しようと思って作ってても、いざ拡張する時になると時代遅れで結局捨ててしまう。
だってメモリだって新しいメモリは使えないし、新しいCPUは使えないし、何が拡張だ。
ほとんど全てのパーツが寿命に近づいてるから全てを新しくした方が安心できる。 何度壊れて痛い目にあったことか。
0338デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:26:06.19ID:iK4D+UQi
横からだが、今時古いメモリやCPUでもそれほど違わん。
(最近はAMDのお陰で急速にコア数増えたが)

物欲抑えれば全然現役で行ける。
(それでも性能追うのが浪漫なのは否定せんが)
0339デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:35:10.14ID:r06CB5Xe
IDEとOfficeとブラウザとテキストエディタとレタッチソフトとiTunesぐらいなら十分すぎるぐらいCPUは進化したけれど
4K以上の動画編集とかVRとかデスクトップ科技計算とかみたいなヘビーユースだとCPUもGPGPUも最先端を追うしかないね
0340デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:39:21.47ID:9Sd/QbRT
>>337
あるあるだな。
やはり買うときに思い切って買わないといかんな。
モニタやキーボードはタイミングずらす。車検が被らないように増車したりバイク買う感じ。
0342デフォルトの名無しさん
垢版 |
2019/02/24(日) 22:22:06.63ID:mG+2Y3tM
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)も同じキーでアクセスできるように出来ないでしょうか?
0343デフォルトの名無しさん
垢版 |
2019/02/24(日) 22:28:23.99ID:mG+2Y3tM
追記ですみません

メンバ変数は値を更新した際に自動的に他の処理も呼びたいため
setterを必要としています。
0344デフォルトの名無しさん
垢版 |
2019/02/24(日) 22:34:22.09ID:dOn5ud/R
x.setter()等の仕様がそうだから仕方ないんじゃ?


def __init__(self, x):
  self._x = x

def get_x(self):
  self._x = _x
x = property(get_x,set_x, del_x)

やってないけど
0345デフォルトの名無しさん
垢版 |
2019/02/24(日) 22:39:07.56ID:dOn5ud/R
あるいは中に仕込むか
@x.setter
def x(self, x):
  self.x = x
  self._x = x
0347デフォルトの名無しさん
垢版 |
2019/02/25(月) 00:00:08.65ID:LEqgxgt7
>>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
でアクセスできる
■ このスレッドは過去ログ倉庫に格納されています

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