くだすれPython(超初心者用) その46【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/01/02(木) 15:56:54.08ID:ZUrZA+uS
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

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

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

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/
2020/02/11(火) 22:13:11.46ID:ZhnXkLvm
>>605
a1 = 0, a2 = 0, a3・・・・が続く
があり、それらに、オブジェクトaを通して
a[1]でa1に,a[2]でa2に....([]を使って)アクセスしたいってことだろ。
(a[1]のaはaでなくても、名前みたいなものだから好きなのにしていい。
aシリーズにアクセスするらわかりやすくaにしている)
こんなことを実現するクラスの作り方を教えて?という質問になるよな。
と、言っても俺は低脳で出来ない。
>>612
俺もそれで間に合うならそれが良いがと思う
2020/02/11(火) 22:48:00.31ID:v/oRLdRM
>>614
絶対違うと思うがそういう解釈ができなくもないなw

subscriptingは__getitem__, __setitem__を使えば可能
https://ideone.com/7WR8yJ
2020/02/11(火) 22:48:39.30ID:6c6RIlRn
あー
for i in range(1000):
__try:
____a[i]=5
__except
的な?
2020/02/11(火) 23:02:14.51ID:RUM4eNEQ
605です
レスありがとうございました
>>610さんのアドバイスで私のやりたかったことが出来ました。ありがとうございます。
execを初めて知りましたが、初心者的には便利な使い方ができそうですね
hoge = "aaaa"
exec('hoge = "ほげ"')
print(hoge)

>>616
それです
2020/02/12(水) 02:21:47.75ID:8gaFy0VD
dtreevizで決定木を可視化したのですが棒グラフの下の閾値が謎の数値と被ってとても見にくい状態です
閾値だけ表示させることはできますか?
619デフォルトの名無しさん
垢版 |
2020/02/12(水) 08:34:59.50ID:MxyBlFwL
a1=0,0
はタプルになるから
a1=0,a2=0
もそうかと思ったらこっちはエラーだな
620デフォルトの名無しさん
垢版 |
2020/02/12(水) 15:55:30.07ID:a1w2Xqz0
>>617
こいつとは仕事したくない
うちの会社にいたら首切る
2020/02/12(水) 17:24:47.59ID:LrVjYqM5
別にええやん
学生かもしれないしプログラマーじゃない可能性も高いし
簡易的なツール作るだけならそんな高いレベル求められないし
execを覚えたというだけでも成長したのにそんな言い草あるか?
622デフォルトの名無しさん
垢版 |
2020/02/12(水) 17:34:29.91ID:QgfOdoDN
>>616
どういうこと?
2020/02/12(水) 18:24:00.47ID:h0cbN6Js
>>620
初心者が間違った判断をしたならそれを指摘してやればいいだろう。
おれはお前のような奴の方が一緒に仕事したくないよw
624デフォルトの名無しさん
垢版 |
2020/02/12(水) 22:17:48.25ID:ohhYjydu
環境はMacです、ワケあってpython2を使おうとしてpip install -U python2を行ったら
Requirement already up-to-date: python2 in
/usr/local/Cellar/pypy3/7.3.0/libexec/site-packages (1.2)
と表示され、versionが1.2でしかもpython2 -Vとしてもコマンドが見つからないと
言われるのでどういうことかと首をかしげpip listを行うと
$pip list
Package Version
---------- -------
appdirs 1.4.3
cffi 1.13.2
greenlet 0.4.13
packaging 20.0
pip 20.0.2
pyparsing 2.4.6
python2 1.2
readline 6.2.4.1
setuptools 44.0.0
six 1.13.0
と表示され、numpyなどが入ってないので何かおかしいと思い、
numpy.__version__、numpy.__file__を確認するとそれぞれ
'1.17.3'、'/usr/local/lib/python3.7/site-packages/numpy/__init__.py'
まあ正直どうなってるかよく分からないのでとりあえずpip install -U numpyを行うと
Successfully installed numpy-1.18.1
しかし上記のように__version__を確認しても、'1.17.3'のままでした。
pipのlistには1.18.1でしっかり入ってます。
これって何が起きてるんでしょうか?Homebrewでinstallした可能性も考えたのですが
brew listを行ってもnumpyもscipyも見つからずpypy、pypy3、pythonがあるくらいです
pipのversionは
pip 20.0.2 from /usr/local/Cellar/pypy3/7.3.0/libexec/site-packages/pip (python 3.6)
です。思い当たる原因としては一回brewでpypy3を消したらpip効かなくなったことですが、
消す前にpipでinstallしたものは今でも普通にimportが効きます。
pipに表示されない原因に思い当たる方がいたらどうかよろしくお願いします。
2020/02/12(水) 22:41:09.40ID:mtSj8YKm
>>624
パス通す順番はジッサイトテモダイジ

MacにしみこんでいるPython(2系)の存在を忘れてはいけない。
2020/02/12(水) 23:00:22.35ID:bYqOq5KM
605です。ご迷惑をおかけして申し訳ありません
最初に書いた例が私自身もよくわかっていないまま書いたのが駄目でした
皆さまのアドバイスでコードが完成しました
https://pastebin.com/y2QT7m3E
色んな方法があると思うのですが、教えて頂いたexecとevalを使いました
コード中のa_no_list[0] にはforで作ったa1を入れて、そのa1にランダム関数の数字を代入しました
手動でa1,a2を作って値を入れたりというのは出来たのですが、forで任意の回数繰り返して自動でa1,a2作れないかとこちらに相談した次第です
forでprint(a[i])もa(i)もできるようになって、自動でリストの中の要素の中の要素・・・・を表示したり代入できるようになってるはずだと思います
ちなみにこれは初心者参考書を1/4まで読み終わった復習として作りました
627デフォルトの名無しさん
垢版 |
2020/02/12(水) 23:30:50.90ID:ohhYjydu
>>625
ありがとうございます、それ聞いて試しに
aliasのpython="python3"
を外したら動きました、linuxだとpython2で認識するんですけど
macだと効かないんですね……悩んでた問題が一つ解決しました、本当にありがとうございます。

ただ今インストールされてるnumpyやtensorflowなどがpipで出ない方は解決できてません
上記のこともありpip listとpip3 list両方試したんですが全く同じ結果でした……
2020/02/12(水) 23:52:40.41ID:ohhYjydu
申し訳ありません、自己解決しました
何故かPATHで/usr/PATH/pypy3が先頭に立っててpypyが一番最初に呼び出される設定になってた為
pypy3のpipが表示されてたんだと思います……PATHのpypy3外したら直りました。
長文と勘違いで迷惑を書けてしまい申し訳ありませんでした。
2020/02/13(木) 00:09:12.49ID:n7qjy+CZ
セルフってなんやねん!?
2020/02/13(木) 00:14:39.35ID:Gd0xgnoa
自分でガソリンを入れるスタンド
631デフォルトの名無しさん
垢版 |
2020/02/13(木) 08:14:35.67ID:0eJoVY/8
>>626
どうしてa1とかa2の変数名が必要なのかわからないな
2020/02/13(木) 12:13:43.09ID:lzB8uQ2A
>>629
オナニーをテーマにした漫画だよ。
2020/02/13(木) 14:49:45.00ID:MOac+3r5
>>629
話すと長いから解説してるブログ貼る
簡単に言えばselfを書くことで新しい機能を追加することなく書けるからって考えらしい
https://python.ms/self/#%E3%81%95%E3%82%89%E3%81%AB%E4%BB%96%E8%A8%80%E8%AA%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
2020/02/13(木) 17:35:23.50ID:r7bSHOfr
pythonでオブジェクト指向やれば
selfだらけになってシグナルノイズ比が高い事は自覚しておくべき

明示的にselfを渡してる言語としてGoやRustと同列に語るのはぶっちゃけ頭おかしい
Goはどの型のメソッドが識別するためにselfを渡してる
Goの場合はそれ以外で識別する方法がないから
Rustはselfの使い方が3種類があるから
関数がどの種類なのかをシグニチャで指定するために明示的にselfを渡してる
2020/02/13(木) 18:39:18.80ID:Ure0FzdD
>>626
何を参考にコーディングしたらそれが生まれたのか純粋に知りたいw
636デフォルトの名無しさん
垢版 |
2020/02/13(木) 19:02:19.46ID:qvECNN2e
条件分岐の分かり易い書き方について教えてください

通常ではa=bで
c=0の時はa=zで
d=1の時はa=yというときに

if c == 0:
__a=z
elif b==1:
__a=y
else :
__a=b

になりますがほとんどの場合a=bになって
まれにa=y やa=zになるとすると
a=bが最後に来るのはわかりにくい気がするんですが
どうしてますか?
2020/02/13(木) 19:45:20.94ID:n7qjy+CZ
>>633
ありがてえ!!
2020/02/13(木) 20:12:27.95ID:Ure0FzdD
>>636
別に気にならないけど、前に持ってきたいなら
最初に無条件でa=bを記述
その後条件文を記述
にするかな
2020/02/13(木) 20:16:27.98ID:Ure0FzdD
ちなみにそんなことよりも、自分がレビューするとしたら
cが0でbが1の時は本当にa=zでいいのかとかが不安になるわ
2020/02/13(木) 21:36:32.33ID:r7bSHOfr
>>636
通常ケースと通常でないケースという認識なんであれば
3つを並列に書くんじゃなくガード節を使ったりして通常ケースとそれ以外のケースを分離する

def evaluate(b, c):
____if c == 0:
________return z
____if b == 1:
________return y
____return b
2020/02/13(木) 21:40:41.28ID:zu6t+bqI
コメントにそう書いておく。
2020/02/13(木) 21:59:00.84ID:n7qjy+CZ
pythonてSwitch文ないの?
2020/02/13(木) 22:08:31.25ID:Gd0xgnoa
ない
2020/02/13(木) 23:45:35.00ID:l+IDZGdn
まあ変数の真名と役割をコメントしてくれないと可読性の議論は出来ないよね
順番とか記述方法云々よりそっちが先
645636
垢版 |
2020/02/13(木) 23:51:12.83ID:qvECNN2e
>>638
条件が変わったら上書きしていくのもアリなんですね
ありがとうございます
説明へtsくそですいません・・・

>>640
ありがとうございます
こんな方法あるんですね

>>641
コメントでの説明がへたくそすぎて
後で過去の自分を殴りたくなることが多いですorz
646デフォルトの名無しさん
垢版 |
2020/02/14(金) 13:14:33.56ID:a5iC3cHy
>>636
カルノー図を覚えろ
647デフォルトの名無しさん
垢版 |
2020/02/14(金) 14:54:01.70ID:/S4vU3l9
mac os 10.11.6
python 3.7.4

https://ideone.com/Mkhw9S
ターミナルから上のスクリプトを実行すると以下のようなエラーがおきます。
VScodeから実行した場合は問題なく実行されます。
Non-UTF-8 code starting with '¥xe6' in file test2.py on line 2, but no encoding declared;

https://ideone.com/D9Fkym
上のスクリプトはターミナルからも実行できます。
(リストの文字列の数のみの違いです)

以前はこんな感じのエラーは起きなかったのですが
原因がわかる方おられますか?
648647
垢版 |
2020/02/14(金) 14:59:14.12ID:/S4vU3l9
自己レスです。
# coding: UTF-8を入れたらターミナルからも実行できましたが、
なぜリストの内容数とVScodeからだと問題無いのかがわかりません。
649デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:27:13.81ID:WtuYdkw5
atomic bomb
2020/02/14(金) 15:34:47.45ID:+9NDg3r6
「python non-utf-8 code starting with ' xe6'」で検索!

どうせ、文字コードが異なるとか?
BOM 無しUTF-8 で保存すれば?

漏れは、Windows 10, VSCode で、Ruby, JavaScript などを使うけど、
すべてのファイルを、BOM 無しUTF-8 だけにしている!
651647
垢版 |
2020/02/14(金) 15:39:07.65ID:/S4vU3l9
>>650
上下とも同じエンコーディング(BOM 無しUTF-8 )で保存しています。
リスト内の文字列は全て同じ文字列の繰り返しで、2種類のスクリプトは要素数のみの違いです。
652デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:40:45.69ID:WtuYdkw5
# coding: UTF-8 書いてなかったんだろ
653デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:42:19.46ID:WtuYdkw5
>>6
654647
垢版 |
2020/02/14(金) 15:52:33.27ID:/S4vU3l9
>>652
>>648で書いたように、# coding: UTF-8は入れてなかったのですが、
知りたいのは、以下の2点の理由です。
1.VScodeだと問題なく実行できる
2.リスト要素数の違いによるエラーの有無
655デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:57:16.26ID:WtuYdkw5
sys.getdefaultencoding() みろ
656647
垢版 |
2020/02/14(金) 16:01:14.20ID:/S4vU3l9
>>> sys.getdefaultencoding()
'utf-8'
657デフォルトの名無しさん
垢版 |
2020/02/14(金) 16:01:50.30ID:WtuYdkw5
お前は言われたことしかできないんか?
https://qiita.com/methane/items/6e294ef5a1fad4afa843
658647
垢版 |
2020/02/14(金) 16:07:55.64ID:/S4vU3l9
>>657
単にマウント取りたいだけなら返信不要です
659650
垢版 |
2020/02/14(金) 17:08:51.51ID:+9NDg3r6
>>654
VSCode では、Microsoft がPython の拡張機能も作っているし、
設定ファイルにでも、UTF-8 で起動するように書いてあるのだろう

一般的には、IDE などの統合開発環境は、親切
2020/02/14(金) 17:19:37.05ID:EOtBZfN8
>>654
原因はバグ
対処は改行して1行のバイト数を減らすか
明示的にencoding指定をファイルの先頭に記述するか
https://bugs.python.org/issue34979

VSCodeで実行できるのは>>659の書いてる通り何か設定してるからだと思われる
俺の環境ではVSCodeでも同じエラーが出る
661647
垢版 |
2020/02/14(金) 17:21:58.26ID:/S4vU3l9
>>659
>>660
ありがとうございます。すっきりしました。
バグですか。確かに配列内容を分割しただけでエラーが消えたりしてたので悩みました。
2020/02/14(金) 19:07:56.62ID:+2T2g9zy
要領悪いやつ
大人しくutf8宣言しときゃ動くんだからそうしろよ
お前なんかがvscodeのバグ発見したからって何になるんだ
時間のムダ
663デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:13:36.39ID:x4GfXJj6
単に知的好奇心だろ
おまえみたいなIT土方にはわからんか
2020/02/14(金) 19:39:14.54ID:+2T2g9zy
全く知的ではない
ただの"何でvscodeだと上手くいかないのムキー"でしかない
その証拠にバグと分かったらもう投げ出してる
665デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:44:06.77ID:x4GfXJj6
それがなんで証拠なんやろうか
バクについてまでは興味ないってだけやろうに
土方が偉そうに評価するな
2020/02/14(金) 19:56:12.57ID:+2T2g9zy
バグだったら仕方ない、
自分のせいじゃない、
よかったよかったあースッキリ。

どこに知的要素が存在するのか
667デフォルトの名無しさん
垢版 |
2020/02/14(金) 20:00:15.70ID:x4GfXJj6
知的好奇心のない奴は動けばいいやでuft8宣言して終わりだろうな
668650
垢版 |
2020/02/14(金) 20:19:25.00ID:+9NDg3r6
プログラマーが日本語のバグで時間を使うのは、馬鹿らしい。
Python は、日本語対応をやってない

Ruby なら、Cookpad・マネーフォワード・Ruby 開発とか、
日本人のメンテナーが、一杯いる
2020/02/14(金) 20:23:20.50ID:+2T2g9zy
>>667
だからそれで終わりでよい
知的な意味もなく自己満足のためにムダな時間費やす無能よりも幾らか使えると言っているのだ
670デフォルトの名無しさん
垢版 |
2020/02/14(金) 20:26:32.77ID:x4GfXJj6
IT土方は動けばいいだけだもんな
671デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:24:05.85ID:GcRD3KfQ
True=1,False=0じゃなくて
IFで何行も書かなくても
Trueの時は1をかけて、Falseの時はマイナス1を掛ける方法ってありますか?
672デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:33:48.85ID:NYbvjz3Y
普通は
*(1 if hoge else 0)
だろうな
hoge*1でもできるっぽいけど
673デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:50:26.77ID:GcRD3KfQ
>>672
*(1 if hoge else -1)
で行けるんですね
ありがとうございます!
674デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:52:40.95ID:NYbvjz3Y
よく読んでなくてすまん
675デフォルトの名無しさん
垢版 |
2020/02/15(土) 04:34:54.53ID:CrxoAXqf
>>671
hoge*2-1
2020/02/15(土) 07:03:08.25ID:1M8DJTak
>>675
Basicは三項演算子なかったからその手のコードよく見かけたな
Trueが-1だから-2*hoge-1とかにしないと駄目だけど
2020/02/15(土) 07:39:54.28ID:cl/r4jK1
*[-1,1][hoge]とか
2020/02/15(土) 08:44:35.96ID:lCqRUL4P
>>670
その通り
コマはコマらしく動いていればよい
679デフォルトの名無しさん
垢版 |
2020/02/15(土) 12:23:37.16ID:GcRD3KfQ
みなさん色々ありがとうございます
>>677
*[-1,1][hoge]なら短いし
1か−1を掛けてるのが一目でわかっていいですね。
2020/02/15(土) 12:33:06.53ID:Od0WFVIs
>>679
横からですまんが
この*は何?掛け算記号じゃないよな
681デフォルトの名無しさん
垢版 |
2020/02/15(土) 12:54:17.21ID:OeWG4QMt
どーでもよくて草
682デフォルトの名無しさん
垢版 |
2020/02/15(土) 13:02:49.71ID:GcRD3KfQ
>>680
>>671で-1か1を掛けたいと質問したので
*マークをつけてくれたんだと思います
2020/02/15(土) 13:09:52.19ID:a5tEBtfb
それはわたしの肛門だ
2020/02/15(土) 13:29:58.94ID:J1bovO5o
糞みたいな小手先のテクニック使うくらいなら潔く if else で書けや
2020/02/15(土) 14:48:11.69ID:cTwFsuY/
x * [-1, 1][hoge]ってことだと思うが
流石にこれはない

評価する変数にboolしか入らない状況なら
x * (hoge or -1) でいいんじゃないかと思うが
これだと何のためにやってるかわかりにくいので
通常のif else使って関数化したほうがいい気もする
2020/02/15(土) 22:11:51.52ID:L3zGf310
>>684-685
俺もそう思う。
元質問をしたPythonでの三項演算の表記を知らないレベルの人は
x * [-1, 1][hoge]やx * (hoge or -1) を嬉々として・どや顔して
使いそうだが
2020/02/15(土) 22:40:28.65ID:cl/r4jK1
[-1, 1][hoge]は0,1以外弾くから結構間違いが入り込みにくい実装なんだけどね。

まぁ、普通は三項演算子使うだろうな。
688デフォルトの名無しさん
垢版 |
2020/02/15(土) 23:35:32.08ID:GcRD3KfQ
質問ですが
def内で使う変数名を考えるのが面倒だし
後でどれがどれか分かるように
引数と同じ変数名にしてますが
問題ないですか???

グローバル変数はほぼ使ってないです。
2020/02/15(土) 23:49:52.90ID:robjZmR7
def addnumbers(a, b):
return a+b

a=10
b=5
print(addnumbers(a, b))

みたいな話?
なら別に問題はないけど。

引数じゃなくて関数内で宣言するローカル変数の話なら、頭に_をつけたりして外の環境をマスクしないようにしたほうがお行儀がいいけど。
690デフォルトの名無しさん
垢版 |
2020/02/16(日) 00:44:18.75ID:S0ZkinLG
>>689
そんな感じです
ありがとうございます
解説とかだと大抵名前変えてあるので
変えた方がいいのかと思い込んでいました
2020/02/16(日) 02:28:25.33ID:Q6srCXr2
>>690
動くか動かないという意味では動くから、同じであっても問題はない、というだけだぞ。
意味的に分かりやすく適切な名前をつけるべき。
2020/02/16(日) 09:01:43.73ID:17VZ7Cpd
>>690
> 変数名を考えるのが面倒
これは2年後にタイムマシンで過去の自分をブン殴りたくなるまでなおらんとおもうが
なおせるものなら早めになおしとけ

> 後でどれがどれか分かるように
この発想はただしい。
で、どうしたらいいのかについては>>691が書いてくれてる

つまり

考えるのが面倒だから、って理由で
引数の名前をaだのbだのにしておくのはやめておけ
2020/02/16(日) 09:35:32.63ID:xJ91WGrf
名前を考える時間がもったいない
スクリプト言語はいかに早く作り早く動かすかが命
一度動けば後は野となれ山となれ
2020/02/16(日) 10:19:55.17ID:1yJgvEz2
どうしても名前を考えるのがめんどくさいならば
注釈で変数の意味を書いておくという方法もある
典型的な変数の値も書いておくとなおよい
2020/02/16(日) 10:26:00.98ID:6foDUZHe
関数の分割と命名が適切ならローカル変数なんて全部一文字でいいよ
そんなことで読めなくなるような長い関数を書くな
2020/02/16(日) 11:27:23.03ID:17VZ7Cpd
>>695
2行目には禿同

>ローカル変数なんて全部一文字でいい
ここまでがんばる必要はない
2020/02/16(日) 11:28:24.01ID:17VZ7Cpd
>>693
そう思っていた時期もありました
まだならこれからなるか、或いはクビになるでせう
2020/02/16(日) 11:33:53.98ID:vdOGaRiC
Goはむしろ一文字変数と引数を推奨してるね
コードが十分に構造化されていれば、長い変数名はノイズになって逆に読みにくいってのは一理ある
2020/02/16(日) 12:08:56.63ID:KXHJAKTO
bad know howの固まりのようなスレだな
2020/02/16(日) 12:24:10.94ID:5YcuBhUR
689だけど無次元数を扱う場合はa,bとかm,nとかを使うな
ファイルディスクリプタならfd
ループインデックスはi,j,kとかix,iy
それ以外は英単語2〜3個を繋いで変数名にして
PandasのDataFrameやNumpy Arrayみたいに実質型のないものはアプリケーションハンガリアン
ローカル変数だと頭にアンダースコアをつける感じだな
701デフォルトの名無しさん
垢版 |
2020/02/16(日) 12:26:02.52ID:uPTaqoVN
雑魚はせめてリーダブルコードでも読んでからコメントして
2020/02/16(日) 12:37:40.11ID:KXHJAKTO
>>701
それな
2020/02/16(日) 13:00:47.06ID:17VZ7Cpd
「最善の名前とは読み手が誤解を招かないこと」って書いてないか?
704688
垢版 |
2020/02/16(日) 13:04:49.24ID:S0ZkinLG
ローカル変数名ですけど

例えば名古屋から広島の距離を計算するとして

def kyori(nagoya,hirosima)
___length = nagoya-hirosima
___return length


#東京からの距離
tokyo = 0
nagoya = 350
kyoto = 457
hirosima = 768

length = kyori()

っていう感じですけど
意味があって分かり易いだと
一文字だと長さはまだlで分かり易いと思うんですが
defが増えていくったときに
それぞれのdef内でもまだ個性的な名前を付けた方がいいのですか???

length_kyoto_hirosimaとか???
2020/02/16(日) 13:13:22.41ID:xJ91WGrf
>>704
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ
2020/02/16(日) 13:19:18.43ID:vdOGaRiC
>>704
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる
2020/02/16(日) 13:24:20.27ID:17VZ7Cpd
>>704
そのdefのはっそうは、正直よろしくないとおもう。

使いまわせないだろw

def kyori(from, to):
にすれば、使いまわせるだろw

でもって、
引数のあとの「:」を忘れるな

(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。
2020/02/16(日) 13:26:21.56ID:17VZ7Cpd
>>707修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか
2020/02/16(日) 14:30:21.73ID:iNVxJNOu
関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?

>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。
2020/02/16(日) 14:33:43.62ID:E60C1LrQ
namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます?
2020/02/16(日) 14:46:40.85ID:Rlzwkt+8
>>709
pythonスレならまあわかるでしょ
ってレベルかと
2020/02/16(日) 15:03:54.06ID:17VZ7Cpd
>>709
なるほど
函数定義って言えばいいのか
なるほどなっとく

口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。
2020/02/16(日) 15:08:15.16ID:17VZ7Cpd
>>710
綴りちがっとる
×tupple
〇tuple

from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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