くだすれPython(超初心者用) その52【まず1嫁】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2021/01/09(土) 05:22:25.24ID:IpHIsox4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
  ↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 くだすれPython(超初心者用) その51【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1602896738/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###

0952デフォルトの名無しさん2021/03/15(月) 03:21:26.79ID:p7hcxdJK
プログラム組んでいるんだけどさあ
一週間で出来ないとモチベが下がってそのまま放置になること多いんだよな、、

自分が楽をするためが動機だから、もういいわ!ってなる

0953デフォルトの名無しさん2021/03/15(月) 08:40:22.27ID:fwcCfhlr
そういうなやみは板違いだな

0954デフォルトの名無しさん2021/03/15(月) 10:49:08.64ID:A7Nxi+Hm
設計が終わったら脳内では不具合無く動いてるから満足してしまうよな

0955デフォルトの名無しさん2021/03/15(月) 10:54:19.57ID:EoZWZldm
実際にちゃんと動いているのを見たら満足するよ

0956デフォルトの名無しさん2021/03/15(月) 11:05:59.67ID:Cx70J+M+
自分の過去作のゴミ設計の無駄を探して再設計するの好き

0957デフォルトの名無しさん2021/03/15(月) 11:11:24.43ID:FrmPLjBr
雑に書いた手続き型のプログラムをオブジェクト指向で書き直して自己満足することはよくあるけど
ぶっちゃけ個人開発なら手続き型で十分だよな

0958デフォルトの名無しさん2021/03/15(月) 11:59:51.90ID:G5zjQeOc
スケベみたいな継続的なモチベがいるんだよな

0959デフォルトの名無しさん2021/03/15(月) 12:06:27.25ID:JMxBUfb9
手続き型(Imperative)の反対は宣言型(declarative)だぞ。
手続き型かどうかはオブジェクト指向かどうかとまるで関係がない(直交する)
CもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもみんな手続き型。
Prolog属などが宣言型。
Prologはパフォーマンス上カットなどの仕組みがあって純粋な宣言型ではないが。
数理証明系のドマイナー言語には純粋な宣言型のものもあるとか。
メジャー言語はほぼ100%手続き型。
HTMLやCSSはプログラミング言語ではないので除く。
たまにメジャー言語で宣言的に書けるのがどうのこうのという話が出てくるが宣言「的に」って言ってる時点で気づこうな。

0960デフォルトの名無しさん2021/03/15(月) 12:27:55.07ID:OEM1rmYt
手続き型プログラムってProcedural programming(procedure:手続き)だと思ってたけど。
厳密には手続き型とオブジェクト指向は対義ではないけど、
「関数を呼び出す」っていう手続き型の根本的な構造の限界に対して
オブジェクト指向がもてはやされてきた歴史があるから、あながち間違いではないと思う

0961デフォルトの名無しさん2021/03/15(月) 12:35:01.36ID:EubElJsa
一生COBOLでも使っていろ

0962デフォルトの名無しさん2021/03/15(月) 13:31:40.79ID:fwcCfhlr
>>956
わかるw

0963デフォルトの名無しさん2021/03/15(月) 14:14:35.81ID:DXCJp1HT
正確にはimperativeは命令型。
その反対が宣言型(declarative)。
手続き型(procedural)は命令型(Imperative)の派生概念。
手続き型であれば必ず命令型である、という関係。
よく同義語として用いられがちだが、ブロックもスコープも備えていない言語は命令型言語であると言えても手続き型言語であるとはふつう言わない。
ところがオブジェクト指向は手続き型言語の標準装備となってきている一方で宣言型言語にも取り入れることは可能なので、やはり直交概念ではないかと思う。

0964デフォルトの名無しさん2021/03/15(月) 14:38:22.84ID:W4mhVG7e
1つのプログラミング言語が両方の要素を持ってることはよくあることだけど
手続き型プログラミングとオブジェクト指向プログラミングは直交した概念ではないよ

0965デフォルトの名無しさん2021/03/15(月) 15:42:44.98ID:DJgBM63I
オブシコ

0966デフォルトの名無しさん2021/03/15(月) 15:52:07.88ID:JMxBUfb9
クラス定義時はメソッドの中身は手続き書いてるし、
メソッドコール時はイチ手続きとして記述してるじゃん。
つまり手続き型にオブジェクト指向加えることも可能だし、加えないことも可能というだけで、オブジェクト指向だから手続き型じゃないというのは完全に間違っている。
これはCもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもCommon LISPもObject PascalもSwiftもKotlinも同じ。
詭弁を弄してる暇があったら勉強するべき。

0967デフォルトの名無しさん2021/03/15(月) 16:02:22.13ID:JMxBUfb9
オブジェクト指向だから手続き型じゃないというのは、
Qちゃんはピッチ走法だから走ってない
真央ちゃんはフィギュアしてるからスケーティングしてない
こう言ってるのと同じです。
修辞的にはありかとも思いますがね。

0968デフォルトの名無しさん2021/03/15(月) 16:05:00.75ID:EubElJsa
XVIEW なんてC言語だがオブジェクト指向を
名乗っているぞ

0969デフォルトの名無しさん2021/03/15(月) 16:08:14.29ID:W4mhVG7e
>>966
プログラムの中になんらかの手続きが書いてあれば
それらはすべて「手続き型プログラミング」と呼べるという定義ならそうかもね

一般的な定義とは違うけどそういう考え方があっても別にいいと思うよ

0970デフォルトの名無しさん2021/03/15(月) 19:29:01.34ID:hStQFS2o
定義じゃなくてパラダイムだから
分類に使うと失敗する

0971デフォルトの名無しさん2021/03/15(月) 19:42:13.68ID:EoZWZldm
>>969
一般的でない定義を考えるのは自由だが、他人との議論で使うなら事前にそう定義すると断って話を進めないと他の人は混乱するだけだろう

0972デフォルトの名無しさん2021/03/15(月) 20:48:13.18ID:qjY4XCPb
>>971
本人が一般的な定義だと思ってるんだからどうしようもないだろ
やんわり指摘したレス見て自省すればよかったのにな

0973デフォルトの名無しさん2021/03/15(月) 23:44:25.76ID:Po+lVn5y
関数型∩オブジェクト指向 とか、
宣言型∩オブジェクト指向 とか、
具体的な言語実装の例はあるのかな?
オブジェクト指向でよく言われるオブジェクト指向たりうる要素が直感的には
割と手続き型に依存してるような気がするが、あまり深く考えたことないのでよくわからん

0974デフォルトの名無しさん2021/03/15(月) 23:49:07.06ID:Po+lVn5y
>>968
C言語でオブジェクト指向というのは普通にあるでしょ。gtkとか最たるものじゃん。
糖衣構文はマクロぐらいしかないかもしれないけど。

0975デフォルトの名無しさん2021/03/15(月) 23:57:52.44ID:M0xOqYlK
>>973
関数型は参照透過性がメリットなのに
クロージャーとかやるとオブジェクト指向と同じじゃん。

0976デフォルトの名無しさん2021/03/16(火) 00:11:33.94ID:g8baptpk
参照透過性のメリットを実感できない

0977デフォルトの名無しさん2021/03/16(火) 00:12:31.36ID:NvntMOXY
>>973
手続きが含まれたら手続き型らしいから
関数が含まれてたら関数型
オブジェクトが含まれてたらオブジェクト指向なんじゃねーの
知らんけど

0978デフォルトの名無しさん2021/03/16(火) 00:16:11.47ID:Y5UwQrqj
CでADT使ってればすぐオブジェクト指向って言うやつも大差ない

0979デフォルトの名無しさん2021/03/16(火) 00:56:17.98ID:6YThIMgd
じゃあオブジェクト指向と関数ベタ書き比較する時はなんて言えばいいんだ?

0980デフォルトの名無しさん2021/03/16(火) 01:36:57.64ID:giEPecL9
>>979
ADTのことを言ってるなら名前の通り"抽象型を使って書く"とでも言えば?

抽象型を使ってればオブジェクト指向?

0981デフォルトの名無しさん2021/03/16(火) 02:01:29.83ID:WgCwoiox
定義で揉めやすいのは名前が悪いから
それぞれ手続き中心指向、オブジェクト中心指向、関数中心指向に脳内変換しとけばどうでもよくなる

それぞれ直交した概念でもなければ排他的な分類でもない

0982デフォルトの名無しさん2021/03/16(火) 03:45:18.19ID:6arf77iJ
言語の方が複合的なパラダイムに対応していても覚える頭が1ビットしかないから其れだと困るねん

0983デフォルトの名無しさん2021/03/16(火) 04:14:50.86ID:K4E4Nbs9
宣言型∩オブジェクト指向は実験的prolog拡張実装がいくつかあった気がする。
関数型はオブジェクト指向と相性悪いつか関数型勢からは唾棄すべき害悪として忌み嫌われてる印象。
世の中でオブジェクト指向といったら実質99%は手続き型∩オブジェクト指向だと思う。
C++以前から、smalltalkからこのタイプだもん。

0984デフォルトの名無しさん2021/03/16(火) 04:15:37.06ID:K4E4Nbs9
>>983>>973 宛て

0985デフォルトの名無しさん2021/03/16(火) 07:21:55.10ID:PfTIXkDh
【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

0986デフォルトの名無しさん2021/03/16(火) 07:22:43.55ID:lT7Xpsz1
>>974
時代が違うでしょw

0987デフォルトの名無しさん2021/03/16(火) 10:37:00.38ID:xULngIlE
>>981
確かに「〜型」という言葉で1ビット二元思考になるやつが多いのかも
「〜的」とでも訳しておけばよかったのに

0988デフォルトの名無しさん2021/03/16(火) 11:20:57.40ID:XtVeGAkv
a = hoge()
a.hogeset(1)

こんな感じてコンストラクタと別メソッドで初期設定しなきゃいけないクソめんどい部品があるんたけど1行でやる方法ない?

a = hoge().hogeset(1)

イメージはこんな感じで書いてメソッド呼び出しつつ変数aにはオブジェクトhoge本体を収めたい(hogesetは何も返さない)

0989デフォルトの名無しさん2021/03/16(火) 11:42:56.27ID:kT+EpOUV
>>988
そういうクラスを作ればいいだけじゃね?

0990デフォルトの名無しさん2021/03/16(火) 12:25:58.91ID:ja5zi908
オブジェクトhoge本体

0991デフォルトの名無しさん2021/03/16(火) 12:46:56.08ID:Zc215ysF
GUI部品でsetVisible(True)とかなら略しない方がいい

0992デフォルトの名無しさん2021/03/16(火) 15:01:49.92ID:qZ3Xge1G
>>988
特に何もせず1行で書くのは無理じゃないかな

selfをreturnするようなデコレータを作って
各種set系のメソッドを上書きするか別名で定義してやれば1行で書けるようにはなる
やる価値があるかどうかは状況次第
https://techiedelight.com/compiler/?G6Nb

0993デフォルトの名無しさん2021/03/16(火) 15:17:05.62ID:z+A8n8B9
3.8以降なら代入式でいいんじゃね

0994デフォルトの名無しさん2021/03/16(火) 15:32:45.88ID:XtVeGAkv
>>991
わォエスパーかよちょっと違うけど
tkinterのボタン配置別メソでするのダルいんじゃあ〜

>>992
やっぱムリかぁ
でも2行で書くの負けな気がするから関数カマスことにしました (結局5行になってるのは知らない、たくさん置くし・・・。)
def my_hoge_create(param):
a = hoge()
a.hogeset(param)
return a

a = my_hoge_create(1)

>>993
めっちゃ興味あるけど3.5だからまた今度にするわ (進歩しないゴミ)

0995デフォルトの名無しさん2021/03/16(火) 15:40:26.02ID:ZzxG4K64
>>993
えーこういうこと?
(a := hoge()).hogeset(1)

条件式とかの中ならありだと思うが2行でも書けるところに使うのは気持ち悪いな

0996デフォルトの名無しさん2021/03/16(火) 15:57:44.34ID:RaDf8rd1
>>988
クラスメソッドでググれ

0997デフォルトの名無しさん2021/03/16(火) 17:09:12.14ID:CHhu1vGO
gzipか普通のテキストファイルかを名前で判別して読み込みたいんで下記のように書いてるんですが、read_fileがif/elseで2回出てくるのが冗長っぽいのでif/elseの後にread_file()をしようと思うとI/O operation closedとエラーが出ます。
with open後にインデント変えたので閉じられたたのかなと思うのですが、
gzipかそうじゃないかのファイルオブジェクトとやらをif文で決めた後に、1回の関数で処理するようなスマートな書き方出来ないものでしょうか?

現状
def read_file(f):
data = f.read()


name = 'hoge.txt.gz'
if '.gz' in name:
with open(name, mode='rt') as f:
read_file(f)
else:
with open(name) as f:
read_file(f)

0998デフォルトの名無しさん2021/03/16(火) 17:24:18.02ID:Z3x27iQ0
mode="rt" if ".gz" in name else "r"

0999デフォルトの名無しさん2021/03/16(火) 18:56:39.01ID:YZCX5YV2
func = gzip.open if name.endswith(".gz") else open
with func(name, mode="rt") as f:
read_file(f)

1000デフォルトの名無しさん2021/03/16(火) 19:18:47.34ID:PfTIXkDh
【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 66日 13時間 56分 22秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。