Pythonのお勉強 Part57

1デフォルトの名無しさん2018/06/25(月) 09:57:59.24ID:aY7uj4w5
Pythonオフィシャルサイト
http://www.python.org/

■前スレ
Pythonのお勉強 Part56
http://mevius.5ch.net/test/read.cgi/tech/1519430841/

次スレは>>980が挑戦する

ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除

846デフォルトの名無しさん2018/10/13(土) 10:22:55.45ID:f9khLXsZ
>>845
> 単なるパス文字列操作ユーティリティとしてだけ使って文字列に戻してしまうんだったら、オブジェクトである必要は全くないわな
だからそんな時は使わなきゃいいだけだろ
いちいち使えない場合を書いてマウント取った気になるのやめたら?
アホにしか見えないよ w

847デフォルトの名無しさん2018/10/13(土) 21:42:03.72ID:jxbU9qaF
>>843
馬鹿発見

848デフォルトの名無しさん2018/10/13(土) 21:46:53.06ID:jxbU9qaF
リファレンスも目を通さずにケチつけようとするくらいどうしようもなく頭悪いんだから
最新の言語機能にいちいちついてこなくていいんだよ
ロートルは死ぬまでレガシーコードを書いていればいいの

849デフォルトの名無しさん2018/10/13(土) 22:12:47.21ID:L3Dj2/gz
やっぱりパイソンつかってるのはガイジ脳しかいない

むしろガイジ脳がどんな場面でも使えるように
>>845 みたいなインターフェースになってる

850デフォルトの名無しさん2018/10/14(日) 02:00:44.55ID:bkAbhEU5
でも気になって覗きに来ちゃう半角ガイジなのであった

851デフォルトの名無しさん2018/10/14(日) 11:51:08.08ID:3kxdJmFm
pathlibでパスの起点を任意に指定した相対パスが扱えるらしいけど、これバグってんの?

>>> import os; import pathlib
>>> os.getcwd()
'C:\\tmp\\hoge\\fuga'
>>>
>>> s = pathlib.Path(r'C:/tmp/hoge/fuga')
>>> s
WindowsPath('C:/tmp/hoge/fuga')
>>> s.absolute()
WindowsPath('C:/tmp/hoge/fuga')
>>>
>>>
>>> s2 = s.relative_to(s.parent) #C:/tmp/hogeを起点にした相対パス作成
>>> s2
WindowsPath('fuga')
>>> s2.absolute()
WindowsPath('C:/tmp/hoge/fuga/fuga') #変なパスになっちゃったw
>>>
>>>
>>> os.chdir(s.parent) #cwdを変更しないとダメ
>>> s3 = pathlib.Path(s.name)
>>> s3
WindowsPath('fuga')
>>> s3.absolute()
WindowsPath('C:/tmp/hoge/fuga') #OK
>>>

relative_toでcwdの変更までやれよ、もしくはPathオブジェクト毎にカレントディレクトリ保持しとけよ
pathlibにcwdを変更するメソッドが無いのもダメ、こんなんでpathlibで統一とかありえないがな

852デフォルトの名無しさん2018/10/14(日) 12:32:07.31ID:DjejxNrV
>>851
ガイジは使わなくていいんだって
ガイジだから理解できないかな?

853デフォルトの名無しさん2018/10/14(日) 12:50:11.41ID:Hp95Ly7n
>>851
Pathは単なるパス文字列のラッパーであり、ファイルシステム上の特定の要素を指しているわけではない
まあ実際851のような勘違いをする初心者は多いだろうね
単に文字列を引数に渡す関数群であれば起こり得ない間違いであり、pathlibの設計の筋の悪さを示す好例だな

854デフォルトの名無しさん2018/10/14(日) 12:52:54.77ID:wbRcCjQ9
最初はPath文字列操作のユーティリティ群で十分といっていた人が、
Path文字列操作のユーティリティ群であるpathlibを使ったら、
文字列操作を大きく超えた要求へ

855デフォルトの名無しさん2018/10/14(日) 13:27:46.52ID:G4e8iFcg
>>839
レジ袋有料化でゴミ袋買わされてその中にレジ袋入れて捨てる環境省アホだよな

856デフォルトの名無しさん2018/10/14(日) 13:28:34.05ID:G4e8iFcg
>>840
エンコとシステムロケールのgdgdはどうなん

857デフォルトの名無しさん2018/10/14(日) 14:40:51.93ID:3kxdJmFm
>>853-854
Pathは文字列操作のラッパーだけじゃないよ、初心者は知らないかもしれないけど
ファイルのチェックやファイルの作成などのメソッドも提供している
パスはただの文字列だけどファイルシステムと密接に関係しているのだからファイルシステム関連の
ユーティリティは当然必要で当然の要求

relative_toはparent情報から相対パスを作るのに、元の絶対パスに戻すときにcwdを使うのはおかしい
ここらへんは文字列操作とファイルシステムがごっちゃになってて筋が悪い
文字列操作に限定するならparent情報を保持しておいて、絶対パスを作る時にparentを使うべきだし
ファイルシステムと連動するならcwdの変更を行うべき

858デフォルトの名無しさん2018/10/14(日) 16:24:10.01ID:4aslj6MB
>>856
俺はシステム作るときのフォルダとかファイルは英文字しか使わないようにしてるよ

859デフォルトの名無しさん2018/10/15(月) 09:56:11.91ID:3BJ7eItv
If 条件文 and 1: という書き方のif文を見たのですが、実用的にはif 条件文:と同じですよね?
こういう風に書くメリットって何かあります?

860デフォルトの名無しさん2018/10/15(月) 10:03:31.00ID:PJIDqEar
>>853
ガイジは使わなくていいんだぞ
Twitterで自分から肥溜めに近づいてクサイクサイ大騒ぎしてるガイジフェミと同じだな

861デフォルトの名無しさん2018/10/15(月) 10:16:40.28ID:CBEkPI1R
>>859
一時的にそのif文を無効にしたくなったときにand 0に書き換えるだけで済む

862デフォルトの名無しさん2018/10/15(月) 10:24:12.42ID:3BJ7eItv
>>861
素早いご返信ありがとうございます!
目から鱗です
プログラミング界はクレバーな方が多いですね!

863デフォルトの名無しさん2018/10/15(月) 10:27:35.75ID:/DZZgAIK
3のstrとbytesってホントに改良なんかね微妙に使いにくい
2の時代の方に慣れ過ぎたから可笑しく感じるのかな

864デフォルトの名無しさん2018/10/15(月) 10:36:29.80ID:r7U1tD/N
>>862
いや多分それ書いたのプアでフールな人だから真似するなよ

865デフォルトの名無しさん2018/10/15(月) 10:41:06.10ID:/DZZgAIK
Ruby使ってる人の頭の使い方に近いな

866デフォルトの名無しさん2018/10/15(月) 10:53:55.35ID:r7U1tD/N
>>865
それは真逆
Rubyの文字列は内部表現がエンコーディング依存で、どちらかというとPython2に近い考え方だ
Python3の内部エンコーディングを一律unicodeに揃えてしまうやり方はJavaや.NETなんかの割とビジネス的な系統
シェルスクリプト的な使い方だと勝手な変換が入らない方が使いやすいこともあるんだけど、
Pythonはスクリプトの中では単独できっちり書くという指向が強いから後者のほうが適してるだろうね

867デフォルトの名無しさん2018/10/15(月) 11:24:56.81ID:FhXqmoqX
>>860
肥溜めがクサイのは当たり前のこと
同様にpathlibに欠点があるのも当たり前のこと
そして欠点は使っているからこそ気づくもので、その欠点を指摘すると怒り狂う方がカイジじゃなかろうか

868デフォルトの名無しさん2018/10/15(月) 12:14:02.20ID:QlAKcdW9
自身の能力の低さ故に望まない結果が得られただけのことを欠点と言われても困る
「初心者でも使えるように」と言うが、初心者のレベルの設定にも下限がありどこまでも下げていくとむしろ複雑怪奇な構造が生まれてしまう

869デフォルトの名無しさん2018/10/15(月) 12:50:17.35ID:FhXqmoqX
「初心者でも使えるように」などと誰も言っていない、それは低能なキサマの心の叫びだ
オレは何にでも欠点はあるという当たり前のことを言っているだけだろ?レスを見ろ!
キサマはキサマが作った妄想と戦っているのだ、その妄想はキサマ自身だ、そんなに自分を責めるな!

870デフォルトの名無しさん2018/10/15(月) 17:28:43.94ID:vNVpiBIf
ガイジかよ

871デフォルトの名無しさん2018/10/15(月) 23:06:50.24ID:KnJWry7m
量産型ウンコスクリプターは
総じて頭悪い

872デフォルトの名無しさん2018/10/15(月) 23:45:43.40ID:fUHsMStX
気になるのに意地悪しちゃう小学男子の半角ちゃん

873デフォルトの名無しさん2018/10/16(火) 00:33:30.49ID:zniUoGFl
最近Pythonの勉強を始めました。
for文を使った行列のかけ算ですが、
x=np.array([[1,2,3,4]]
y=no.array([[5],[6],[7],[8]])
s=np.array([[0]])
for a in range(0,4):
for b in range(0,4):
s[,]=s[,]+x[,]*y[,]

後半の数値の入れ方が分かりません
ご教授ください

874デフォルトの名無しさん2018/10/16(火) 02:26:34.00ID:kVM6WdLz
>>873
np.dot

875デフォルトの名無しさん2018/10/16(火) 03:43:33.50ID:t3pQN/xM
>>873
scipy.matrixの方がええで

876デフォルトの名無しさん2018/10/16(火) 04:59:07.55ID:hQJJvHoW
scipy.matrixて使ったことないけど、どういう点が優れてるの?

877デフォルトの名無しさん2018/10/16(火) 05:17:56.56ID:TeNN2wBh
>>859-864
If 条件 and 0:
If 条件 and 1:

このどちらでも、先に条件文が評価されてしまうから、
この条件文に、何かの状態を変える副作用があると面倒だから、逆に書くべき

If 0 and 条件:
If 1 and 条件:

0 の場合は短絡評価だから、条件が評価されないから安全

878デフォルトの名無しさん2018/10/16(火) 08:32:41.51ID:i+/GmABh
>>877
逆に評価させたい場合もあるから一概にそうとは言えない。

879デフォルトの名無しさん2018/10/16(火) 11:16:02.24ID:opg8ZLom
>>878
直後にFalseにするものをわざわざ評価させるというのはどういう状況を想定しているの?

880デフォルトの名無しさん2018/10/16(火) 11:20:36.70ID:Atv0JR2n
0 / 1で論理演算するほうが違和感あるなぁ。
Pythonの論理演算子は演算結果がTrue / Falseになるとは限らないから。

881デフォルトの名無しさん2018/10/16(火) 11:30:00.31ID:6wejum7r
>>879
条件部が関数になってて実行だけはさせたいことはあり得そう

882デフォルトの名無しさん2018/10/16(火) 11:33:37.70ID:RDnsUUNv
>>880
0=False、それ以外=Trueだから同じことでは?
そもそもFalse=0、True=1なんだからさ

883デフォルトの名無しさん2018/10/16(火) 11:41:06.43ID:opg8ZLom
>>881
その判定文自体がFalseになってしまうと、あんまり意味が無いんじゃないのかなぁ。
デバッガー通してその関数の結果を見ること自体は可能だけどね。

>>880
Pythonのソースコードにおいては、True=1、False=0 という扱いになっているようだよ。
http://d.hatena.ne.jp/SumiTomohiko/20070802/1186074596

884デフォルトの名無しさん2018/10/16(火) 11:44:19.45ID:opg8ZLom
こんなことが出来るなんて知らなかったわ。
>>> True + True
2

885デフォルトの名無しさん2018/10/16(火) 11:49:54.98ID:Atv0JR2n
3 or 1 の演算結果はTrueではなく、3 なんだよなぁ

886デフォルトの名無しさん2018/10/16(火) 11:53:17.66ID:RDnsUUNv
>>883
必要な処理ならそれ自体を止めちゃあそれこそ意味ない
返ってきた値によって何らかの表示するだけって条件文もあるし

887デフォルトの名無しさん2018/10/16(火) 11:54:15.78ID:RDnsUUNv
>>885
3はTrueだからそれで良いんだってw

888デフォルトの名無しさん2018/10/16(火) 11:57:56.92ID:Atv0JR2n
>>887
そういう暗黙の型変換を期待するコードが気持ち悪い、違和感があるってこと

889デフォルトの名無しさん2018/10/16(火) 12:01:14.25ID:YLHbxnbG
>>877
Ruby使ってる人の頭の使い方に近いな

890デフォルトの名無しさん2018/10/16(火) 12:20:18.64ID:LXicK2gy
多少実行効率落ちても見た目に分かりやすいことに勝るものはない、的なプログラミングの格言思い出した

891デフォルトの名無しさん2018/10/16(火) 12:26:45.00ID:oQullCct
他言語と行ったり来たりしてると論理演算子とビット演算子がごっちゃになる

8922018/10/16(火) 15:57:42.69ID:rYp1osJ0
Python始めて2日目です。

mac、python3
でwebページ を保存(html)したいです。

URL指定して保存ではなく、実際にそのページにgoogle topから遷移していってcommand+sで保存したいです。

ページまでの移動はできたので、保存部分の書き方教えてください。

893デフォルトの名無しさん2018/10/16(火) 16:33:45.22ID:oiKF82Xr
requestsをインスコ
getでソースをダウソ
保存

894デフォルトの名無しさん2018/10/16(火) 17:01:48.46ID:lGvX5imk
>>890
まさにそれ!
極端に実行効率落ちるのは考えものだけど、多少なら可読性を優先する。
3ヶ月後の自分のために。

895デフォルトの名無しさん2018/10/16(火) 17:21:19.77ID:TeNN2wBh
ダウンロードは、wget, curl

896デフォルトの名無しさん2018/10/16(火) 17:37:04.09ID:6N/uYvpU
requestsも外部コマンド呼び出しも邪道
標準のurllib.requestぐらい使いこなせよ

新着レスの表示
レスを投稿する