[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 12/09 17:01 / Filesize : 93 KB / Number-of Response : 405
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part66



1 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 07:48:11.11 ID:vp8lzav70.net]
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇
Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured

47 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 07:24:30.85 ID:MhaWhMirr.net]
Qt自体が時代遅れ

48 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 07:50:46.32 ID:rEvbb9QE0.net]
>>46
ヤッパリ古いのは機能豊富だしカレテル
Qt利用経験あるならPyQtかPySide2で決まりだと思う

49 名前:デフォルトの名無しさん [2021/11/16(火) 08:44:38.99 ID:mgTVYsIn0.net]
Qt-designerが使えるのが一番だな、GUIで画面が作れないとメチャクチャ大変から。

50 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 09:05:22.55 ID:nevdyZlN0.net]
excelとかxmlとかいろんなファイルを読んで別のファイルを生成するツールがあって
自分用で使うなら設定用のテキストファイルに
読み込むファイルや出力ファイルを記述する方式で十分なんだけど、
社内で共有して使う用にアホでも使えるGUIを用意したい場合、
何を使うのがいいだろう

51 名前:デフォルトの名無しさん [2021/11/16(火) 10:21:21.37 ID:5D9mKY7bF.net]
>>42
あっちのスレで引き留めて置いて欲しいんだが
色んなスレに拡散感染拡大して迷惑
それだけの吸引力も無いようだ

52 名前:デフォルトの名無しさん [2021/11/16(火) 10:24:40.56 ID:5D9mKY7bF.net]
>>39
ハゲにハゲと言うのはハゲであることは事実だが名誉棄損にはなるらしい

53 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 10:28:07.61 ID:5D9mKY7bF.net]
>>45
https://www.jiji.com/jc/article?k=2021111500707

54 名前:デフォルトの名無しさん [2021/11/16(火) 10:31:29.98 ID:5D9mKY7bF.net]
>>50
設定ファイルのテンプレをexcelで造って
excelから設定を読み込めば喜ばれる

55 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 11:15:16.57 ID:nevdyZlN0.net]
設定のexcelファイルはいいな
以前の設定の流用がしやすいし、操作にも慣れてる
説明も書き放題

ボタンをクリックするとpythonが起動する部分の設定が最難関だけど、
カレントにあると決め打ちでいいか



56 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 13:50:36.62 ID:dtmpxDpX0.net]
誰もがエクセル使えると思わないほうがいいよ
UIとして使うにも限度があるしマクロ使うといちいち警告でるし複数PCからアクセスされると編集禁止とか余計なエラーが出てとにかくみんなイラつくだけ
UIデザインはHTMLにまかせてNode.jsなりで管理するのが楽かと

57 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 13:57:58.94 ID:nevdyZlN0.net]
まあ、フリーソフトの配布ではないので
excelは全員が使えるとしてよい

58 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 15:21:38.88 ID:6v6IG7710.net]
ITリテラシーない人の相手したくない

59 名前:デフォルトの名無しさん [2021/11/16(火) 16:51:29.18 ID:iw6chFt80.net]
>>47
Qt6でようやくasync/awaitってな…

60 名前:デフォルトの名無しさん [2021/11/16(火) 20:17:26.68 ID:mgTVYsIn0.net]
チラッとネットで見たけど、async/awaitって真面目に使うとなると面倒そうだね。

これって主に何に使うの?fork()して実行より、楽って事?

61 名前:デフォルトの名無しさん [2021/11/16(火) 20:49:59.34 ID:LLUTRYIZ0.net]
コンピュータの性能を100%引き出し、最高のユーザー体験をお約束します。

62 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 00:58:48.67 ID:TRGzpBEI0.net]
PythonではFastAPI以外で使ったことないすね…
js/tsではないと困るけど
いつの間にかasyncio.runなんて追加されてたのか

63 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 01:16:00.95 ID:+JwFzM8Ra.net]
富嶽のsimで温暖化対策に貢献とか言ってるけど
なぜ富嶽を北海道に造らなかったし

64 名前:デフォルトの名無しさん [2021/11/17(水) 02:16:34.56 ID:TmFCV0x+0.net]
寒冷地域と温暖地域の温度差が少なくなると対流が起きず地球が冷やされないからでは?

65 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 02:24:11.13 ID:vyPEPYRk.net]
あんまりpython関係ないかもだけど
ちょっとした設定情報をjson形式で保存してて
更新とかするときに
json.loads,json.dumpsとopenで丸ごと上書き
ってやってるんだけどダメかな?
(他の重要というかシステムに近い設定とかはenvとかDBで管理してる)
jsonじゃなくてそういうのに特化した規格ってあるのだろうか。



66 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 03:12:57.62 ID:HN5Eyc2m0.net]
いいよ

67 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 06:34:49.63 ID:h3betjKK0.net]
json, yml, configparser

68 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 06:37:00.64 ID:qr7EHiL50.net]
json便利だけど読みにくい
読むコツ教えて

69 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 06:51:46.05 ID:dwBhRem9a.net]
>>68
整形してないからじゃ?
してあっても読みにくいなら、キミ自身に問題がある

70 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 07:49:12.20 ID:5cuGb6Ey0.net]
>>65
クラス化しとけば差し替えも簡単

71 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 07:49:51.40 ID:5cuGb6Ey0.net]
>>68
色付きで表示できるviewerで見る

72 名前:デフォルトの名無しさん [2021/11/17(水) 10:36:40.12 ID:wlAtkNPK0.net]
jsonは無駄が多い
SQLiteでええやん

73 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:46:13.37 .net]
sqlだとソースからみるときクライアント選ぶのがなぁ・・

74 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:48:59.66 ID:XqIxGMI20.net]
無駄の多さならxml

75 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 11:44:41.09 ID:qr7EHiL50.net]
>>71
ありがとう!これなら見えるね。



76 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 12:52:40.46 ID:XqIxGMI20.net]
python2の方が良かったのに
という点ってある?

77 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 13:10:53.17 ID:HN5Eyc2m0.net]
IronPythonは未だに2やで

78 名前:デフォルトの名無しさん [2021/11/17(水) 14:16:22.07 ID:wlAtkNPK0.net]
print

79 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 15:57:05.68 ID:4FTJCengM.net]
>>65
強いて言えば、一時ファイルに書き込んでからrenameで上書きした方が安全、くらい

80 名前:デフォルトの名無しさん [2021/11/18(木) 09:17:27.97 ID:tpBIFt92M.net]
最初からSQLite使えばいい。
ジャーナリングも標準であるし。

81 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 17:38:05.48 ID:naW8oYaR0.net]
否定はしない

82 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 18:04:56.64 ID:ah9sw/Zw0.net]
俺は嫌だ

83 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 23:29:42.52 ID:/dHqMjeMa.net]
asyncioはI/Oに効く
データベースの読み書きとか通信処理とか
バックグラウンド処理はCPUにオーバーヘッドがある時

84 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 07:39:18.17 ID:OFtNpZ320.net]
3.8.5でwin8.1で動くものをwin7に持っていくと、
subprocess.Popenでエラーになって動かない

最新のpythonはそもそもwin7にインストールできない
win7で動くもっと新しいバージョンはある?
無い場合は何か解決方法はある?

85 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 07:50:08.35 ID:UKOjKE+50.net]
>>84
エラーメッセージは?



86 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 08:01:48.17 ID:OFtNpZ320.net]
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。

実行しようとしてるのはbatファイルで、.batまで書くとエラーにはならない
でもサブプロセスとしては動かなくて、処理はそっちに移行して終了してしまう
shell=Trueを付けても同様の動作になる
やりたいのは、いつ止まるか判らないコマンドをサブプロセスとして動かして監視すること

87 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 08:08:51.54 ID:+sXFtDSXD.net]
Pyの知識以前のWinのシェルの知識だな
cmd . exeをスイッチ付きで起動してやればいい

88 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 10:41:55.94 ID:fOs9i175r.net]
3.7だと動くのかどうか

去年ですらopenCVがPython3.8で動かないとか問題になってたなあ

89 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 10:47:38.84 ID:fOs9i175r.net]
この辺が時々問題になるから
じゃあwheelで取ってくるかと思い
pep425とかget_supportedとかやってみたら無くなってる

調べたらutils.compatibility_tagsとかになってた

それをふざけてcolaboratoryでやってみたら3.7までしか対応してなかった次第

90 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 11:03:06.60 ID:OFtNpZ320.net]
perlだとwin7の時点で既に固まってたので、環境が古くて困ることは無かったけど、
pythonはまだ進化を続けてるので、後方互換性はかなり怪しいな
本番環境側をwin10にしてしまおう

91 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 11:18:00.59 ID:eyeX0xyMF.net]
>>84
cmd /K
とか
shell=FalseまたはTrueかな
この辺いい加減に描いてると動かない

92 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 14:17:42.60 ID:ysK9uB2VM.net]
>>86
Pythonの違いじゃなくてWin32 console APIの違いの可能性もあるね
Console切り離すのは結構version違いが激しい
Powershellでも厄介
batをVBで書き直すことを勧める

93 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 14:43:19.89 ID:V+Ekt21U0.net]
なぜVBw

94 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 14:54:41.80 ID:ysK9uB2VM.net]
>>93
Console切り離すのが簡単なスクリプト言語他にあるかな?

95 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 14:55:39.66 ID:ysK9uB2VM.net]
WSHでJavascriptなら簡単なんかな?



96 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 15:07:12.92 ID:OFtNpZ320.net]
問題はbatファイルの呼び出しだったようで、
実行ファイルを直接呼び出すように変更したらwin7でも動いた

97 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 15:46:55.28 ID:bNc9xgI00.net]
ぱい

98 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 18:23:50.32 ID:NQkiHUfv0.net]
ちゃんとした質問してほしい

99 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 22:02:42.25 ID:R6tUvqDP0.net]


100 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 06:35:11.10 ID:MZWWAxGE0.net]
cp932で表せないファイル名のリストを作る

cp932にencodeしてみてエラーになったらそれを出力する、という方式なんだけど、
printするとエラーになってしまうので、リダイレクトでファイルにできない
仕方ないので、encoding="utf-8"でopenしてwriteしてるけど、
改行とか付けないといけないし、printで済ませたい

printしてもエラーにならない方法とか無いのかな
python2ならそのまま行けた

101 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 07:45:20.38 ID:Lukvfxqi0.net]
>>100
https://docs.python.org/ja/3/library/functions.html#print

>>> f = open(path, 'w', encoding='utf-8')
>>> print(*objects, file=f)

102 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 08:24:40.92 ID:MZWWAxGE0.net]
cp932のエンコードなんだからcp932でないものは通さない
という例外を認めない姿勢は厳密ではあるけど融通がきかないよな

漢字のファイル名も使えるのに、たまに'〜'とか変なスペースとかで
処理できないツールは大抵そういう厳密さで引っかかってる
ノーチェックで通してれば処理も減るしツールも使える側に倒れるのに

103 名前:デフォルトの名無しさん [2021/11/20(土) 11:19:01.66 ID:/kqPbqrTM.net]
なんとなく筋違いのことを言っているのだけはわかった。

104 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 12:11:56.36 ID:MZWWAxGE0.net]
既にファイルは開いてるんだから、そこにwriteするかprintでfile=を指定するかは、
処理上何も変わらない

知りたいのは、リダイレクトしてエラーにならない方法
os側は何が来ようがそのままファイルにリダイレクトするので、
標準出力に出す時点でのチェックを止めればいい

105 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 13:10:25.59 ID:c6rYoMps0.net]
python2でいけて、python3でエラーっていうのがわからない
CP932のコンソールの問題なら普通前者で起きると思うんだけど



106 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 13:20:06.78 ID:c6rYoMps0.net]
あと、openするときにバイナリ書き込みを指定すれば済みそうだけどな
改行コードもそのままにできるし

107 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 20:33:41.39 ID:MS7q4miD0.net]
https://www.pythonic-exam.com/archives/news/python_open_document

108 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 20:33:57.35 ID:MS7q4miD0.net]
いつ公開するのよ?

109 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 12:48:52.72 ID:4kBJkMan0.net]
https://qiita.com/righteous/items/c5f6fbf84c98c5a17043
これ全部できる?

110 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 13:09:44.82 ID:DbnHICgp0.net]
とどらんみたいなサイトに興味があるんですが、統計学とデータ分析どちらの知識が必要でしょうか?。

111 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 04:46:02.24 ID:X0+jYONh0.net]
a = ['a', 'b', 'c']
if 'x' not in a: print('hello') #1
if not 'x' in a: print('hello') #2

#1はaに'x'が含まれていない
#2は(aに'x'がふくまれている)の否定

この二つは全く同じものだと考えて良いのでしょうか?

112 名前:デフォルトの名無しさん [2021/11/22(月) 07:57:31.23 ID:sf/6XMlW0.net]
同じ

113 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 08:01:58.64 ID:HMeOIS1cM.net]
>>111
同じだけど #1 で書けって言ってるみたい
https://kazusa-pg.com/python-not-in/

114 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 09:30:17.60 ID:7Z6oy9Mm0.net]
普通に優先順位が不安になるよな

115 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 10:10:59.14 ID:XQq90Aj30.net]
CIに必ずいれるしflake8なしでコード書くのは考えられん



116 名前:デフォルトの名無しさん [2021/11/22(月) 12:23:27.94 ID:vmkVXbGEF.net]
if a is not None:
if a not is None:
if not a is None:
Python は書き方が一つしかない()っていったのは誰?

117 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 12:28:55.98 ID:8fUDDfEEd.net]
英語文法に強いと#1しかあり得んとなるが
否定文でこけた経験があると、どうしても頭に否定書きたくなってしまう
なんなら否定自体書きたくなくなる

118 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 12:42:04.92 ID:7Z6oy9Mm0.net]
そこでunlessですよ

119 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 13:10:59.47 ID:z3oVlEgz6.net]
if a:

120 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 13:58:34.46 ID:WOttMYR/0.net]
変数hogeに値がある場合はfugaにhoge(の値)を代入したい場合
if文や条件式を使わずに表現する方法ってある?
# python
hoge = "piyo"
fuga = hoge if hoge else ""

bashの変数展開みたいな書式ないよね
# bash
hoge="piyo"
fuga=${hoge:-""}

121 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 14:08:40.76 ID:7Z6oy9Mm0.net]
orは?

122 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 15:03:17.50 ID:8fUDDfEEd.net]
それこそwysiwygの精神に反するってすぐ分かりそうなもんだけどな

123 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 15:12:56.63 ID:PHd8OvUid.net]
Python初心者です
https://teratail.com/questions/251676
このページを参考にBytesIOを使おうと考えています

a = np.load(BytesIO(binary))
このように使った場合、BytesIOは不要と判断されて開放されるのでしょうか?

https://docs.python.org/ja/3/library/io.html
The buffer is discarded when the close() method is called.
とのことで、
stream = BytesIO(binary)
a = np.load(stream)
stream.close()
としたほうが良いのでしょうか?

124 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 15:24:31.25 ID:XQq90Aj30.net]
>>123
IOBaseの説明の対比でそう書いてるだけで
GCが働くからclose()は必須ではない

125 名前:デフォルトの名無しさん [2021/11/22(月) 15:27:18.74 ID:sf/6XMlW0.net]
with BytesIO(binary) as stream:
__a = np.load(stream)

withブロックを抜けるとcloseされるから安全



126 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 16:09:57.46 ID:7Z6oy9Mm0.net]
withってなんか雰囲気で動いてる気がする

127 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 16:25:58.98 ID:v4k6kYue0.net]
>>121
なるほど、or はこんな動作もするんだな
ありがとう

128 名前:デフォルトの名無しさん [2021/11/22(月) 16:37:47.59 ID:2MDgP0Vy0.net]
>>120
よくわからんけど
その例だったらfuga=f’{hoge}’でもfuga=hogeでも同じじゃないの?

129 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 16:54:42.37 ID:v4k6kYue0.net]
>>128
変数 hoge に "piyo" が入っているのは一例で、
例えば、hoge がもし None だった場合に ""(空文字)に変換されるので、
そのまま文字列(の一部)として出力したいときに使えるようになる

130 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 16:58:50.36 ID:2MDgP0Vy0.net]
あー、hogeが存在してなくてもエラーが出ないのか

131 名前:デフォルトの名無しさん [2021/11/22(月) 19:05:57.15 ID:lkDGIXBn0.net]
まあ、自分しか見ないソースならいいけど見ずらくなりそだな、その書き方。

132 名前:デフォルトの名無しさん [2021/11/22(月) 19:36:29.24 ID:5E3QcxihM.net]
undefinedに対応できない、Falsyのうっかりとかあるから、褒められる書き方ではないわな。

133 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 20:16:33.77 ID:zjNStOpV0.net]
>>124
>>125
ありがとうございます、勉強になりました

134 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 22:48:58.52 ID:XQq90Aj30.net]
fuga = hoge if hoge else ‘’
fuga = hoge or ‘’
どっちも’’とか特定の偽しか来ない前提だけど冗長でない分後者を推す
公式にも前者のコード例はたぶんないし

135 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 22:51:07.19 ID:XQq90Aj30.net]
‘’ or ‘’は意味不明やわ。日本語不自由ですまん



136 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 23:21:46.71 ID:7Z6oy9Mm0.net]
perlの // みたいなのは無いのかな
a // b はaがNoneでなければaを、Noneならばbを返す

137 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 00:17:52.93 ID:Ln8GWMq+0.net]
>>120
Ruby では、and/or の遅延初期化をよく使う

p a = a || 1 #=> aが未定義のnil で偽なので、右辺が評価されて1

a = 2
p a = a || 1 #=> aが真なので、短絡評価で2。右辺は評価されない

p b = b && 1 #=> bが未定義のnilで偽なので、短絡評価でnil。右辺は評価されない

b = 2
p b = b && 1 #=> bが真なので、右辺が評価されて1

138 名前:デフォルトの名無しさん [2021/11/23(火) 00:44:36.44 ID:xEN2JBOU0.net]
>>136
それ
x = a if a else b
じゃね?
なんか避けたいって言ってるやつ

139 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 01:00:51.66 ID:h5ckzt1c0.net]
Noneかどうかで判定したいってこと
if a
だと0でも空文字列でも偽だから曖昧になりがち
if a is not None
でぜんぜん困らんけどね

140 名前:デフォルトの名無しさん [2021/11/23(火) 02:02:18.19 ID:4MVUDnE90.net]
ヌル合体とか欲しいよねPythonにも、

141 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 02:33:06.96 ID:bb25eqH30.net]
PEP505は全く進展ないね
3.10には入ると思ってたけど

142 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 10:09:13.49 ID:OzyPSNUz0.net]
値が入っていることを想定しているけれど、想定外にNoneだった時の為のガード
みたいな使い方をしたいんだろうけど、
そういうのは明示的にifとかtryで書いた方がいいよな

143 名前:デフォルトの名無しさん [2021/11/23(火) 10:41:32.64 ID:iYWDXWdAM.net]
むしろ気をつけないといけないのは、想定外にTrueになってしまうケースだ。
たとえば、昔のDjangoのUserモデルのis_authenticatedは、プロパティじゃなくてメソッドだった。

144 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 13:28:59.61 ID:Cd+od5Ii0.net]
Noneも曖昧だからね
単なる未定義なのか空集合なのかエラーなのかNoneそのものなのか
ディクショナリー検索等でNoneが帰って来る仕様だがどう扱うか

145 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 13:32:03.52 ID:KM4P0q2w0.net]
結局は>>143の言うとおりなんよ…

我々はすでに知ってるんよ、中身がNullかどうかに注目した結果
普通にコード書くだけでトライキャッチスパムになってしまうJavaとかいう言語を…



146 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 13:40:48.37 ID:OzyPSNUz0.net]
エラーの情報をちゃんと持ってて、ずっと上流の呼び元までそれが伝わる言語あったな
なんだっけ

関数は引数に従って値を返します
という前提で普通の言語は設計されているけど、
関数は引数に従って値を返します。返さないこともあります
でないといけなかった

147 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 13:43:00.09 ID:x4PI0/Sq.net]
fastAPIのルーティングでデコレータ使わずに
app.add_api_route("/hoge", hoge, methods=["GET","POST"])
な感じで分離してやってみたけど、各リクエストメソッドでバリデーションが異なる時に躓いた

このまま共通のhogeだと互いのバリデーションclassが422 Unprocessable Entityを引き起こしてしまうので
app.add_api_route("/hoge", hoge, methods=["GET"])
app.add_api_route("/hoge", hogePost, methods=["POST"])
みたいにして新たにhogePost追加するという書き方に。

かと言ってデコレータ使うと
@app.get("/hoge")
def hoge():
@app.post("/hoge")
def hoge():
みたいにせっかくのルーティングの分離管理が二度手間かつ無駄に
というジレンマ

デコレータ使わない場合
>新たにhogePost追加する
というのが無難なのだろうか・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<93KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef