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

■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

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

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

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2021/10/23(土) 21:54:12.92ID:uHOK1QLC
Ruby なら、Regexp.union でパターンを、OR で合成できる

p Regexp.union(/a/, "*") # => /(?-mix:a)|\*/

p Regexp.union(/a/, /b/, /c/) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/

arr = [/a/, /b/, /c/]
p Regexp.union(arr) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
291デフォルトの名無しさん
垢版 |
2021/10/23(土) 23:19:51.40ID:oBaQvszz
ルビキチってどこにでも涌くのな
2021/10/24(日) 09:17:16.16ID:ju8sH4Lg
この板の外にも湧いてるんだぞ
2021/10/24(日) 12:57:50.65ID:nICPJrT1
>>289
ありがとうございますパターンが取れました

ptn1 = re.compile("\.gif$").pattern
ptn2 = re.compile("\.jpg$|\.png$",re.IGNORECASE).pattern

ptn2が
"\.jpg$|\.JPG$|\.png$|\.PNG$"
な感じだったらよかったんですけどね
re.compile(ptn1+"|"+ptn2,re.IGNORECASE)
だと
"\.gif$|\.GIF$|\.jpg$|\.JPG$|\.png$|\.PNG$"
と同等?になってしまうので
2021/10/24(日) 13:06:47.73ID:nICPJrT1
改めてぐぐってみると
そもそもフラグの記述はいろいろあるみたいですね >>293
(?フラグ:パターン)
これなら基本は文字列でもcompile済でもどちらでもいい気がしました

ptns = ["\.gif$","(?i:\.jpg$|\.png$)"]
ptn = re.compile("|".join(ptns))
2021/10/24(日) 14:04:30.70ID:9GD27ADQ
>>293
> ptn2が
> "\.jpg$|\.JPG$|\.png$|\.PNG$"
> な感じだったらよかったんですけどね
それだと .Jpg とかがヒットしなくなる
2021/10/24(日) 15:34:01.95ID:dQwbGYLm
Ruby で、漏れは自分で関数を作っている
拡張子を小文字に変換してから、それが配列内にあるかどうか

ただし、jxr はブラウザで表示できない

ary = %w(png jpg jpeg gif webp) # 画像の拡張子

extname = "JPeg"
extname.downcase! # 小文字へ変換する

p ary.include? extname # 含まれている?
#=> true
2021/10/24(日) 16:09:48.63ID:nICPJrT1
>>295
たしかに
>>293は、大文字小文字区別つかないすべてのパターンの意味でした
2021/10/24(日) 18:40:19.51ID:ugUepsfY
vscodeでdjangoやってます
views.pyでrenderの第2引数に指定したhtmlやreverseの第1引数のアプリ名:urlネームに書いてあるその場所にGo toしたいのですが方法ありますか?

djangoに限らずpath書いてないとgo to definitionできない感じですか?
2021/10/25(月) 17:14:48.98ID:MOhV5cOT
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
___argcount=callback.__code__.co_argcount
__if _argcount==1:
___for item in self.items:
____res.append(callback(item))
__elif _argcount==2:
___for i,item in enumerate(self.items):
____res.append(callback(i,item))
__return res

h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )
print( h.each(lambda i,item: str(i)+"_"+str(item)) )
#['_a', '_b', '_c']
#['0_a', '1_b', '2_c']

callbackでindexも取りたいので↑のように書いたのですが
こうするしかないのでしょうか?
今は引数は、(item)と(i,item)しかとりませんが
仮にcallback内でitemやindexとは別の何か引数を引き継ぎたくなったという場合
どう拡張していけばいいのかな、と思いました
2021/10/25(月) 18:13:43.66ID:YeRcjGgP
*argsとか**kwargsで可変長の引数を取るようにすればいい、とかそういう話か?
2021/10/25(月) 19:23:30.01ID:MOhV5cOT
>>300
すこし違います
*指定だとインスタンス側でcallbackを書くときに
常にcallback(*arg)とか、callback(**kwards)とかを書かなければならない気がします
>>299の例の場合
each対象はself.itemsなのでcallbackの中身を書くときの引数は
callback(ここでの引数名はitemsに入る値に関係する名前)
にしたいのです

299の例だと拡張されたのはインデックスのみなので、
インデックスが欲しいかほしくないかに関わらずインデックスを取ることにすると
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
__for i,item in enumerate(self.items):
___res.append(callback(item,i))#itemの方が使用頻度高いので引数を逆に渡す
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )#エラー
print( h.each(lambda item,i: str(i)+"_"+str(item)) )
と書けると思いましたが
無い引数を渡すとエラーが出てしまいました

この辺の慣習とかあるのか、そもそもそんなことしなくてもいい(継承できるようなテクニックがある)のか
というのがわからないので
iを使わない場合も、callback(i,item)と書けばいいのでは?とか
index情報を持ったitemオブジェクトを返却して、item.itemでitem取得
みたいな方法は保留してます

今考えているのは
callback.__code__.co_varnames[:callback.__code__.co_argcount]
使ってみたりの条件分岐です
2021/10/25(月) 20:51:56.35ID:LSRIz4jp
リスト内包表記で得られたリスト
[’金額¥150’,’金額¥222’,’’,’’,’金額¥0’,’金額¥465’]のうち、’’を’金額¥0’に置換するにはどのようにしたらいいですか?

[money.replace("","¥0") for money in moneys]ではだめでした。
303デフォルトの名無しさん
垢版 |
2021/10/25(月) 21:10:11.44ID:utaK2F0U
>>302
>>> ['金額¥0' if money == '' else money for money in moneys ]
['金額¥150', '金額¥222', '金額¥0', '金額¥0', '金額\0', '金額\465']


ていうか、動くコード貼れよ
304デフォルトの名無しさん
垢版 |
2021/10/25(月) 21:43:12.61ID:i1JdqDPj
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

在日朝鮮人は強姦と窃盗してる犯罪者!
在日朝鮮人は皆殺しにすべし!
2021/10/25(月) 22:45:53.76ID:sv7Zp2+/
>>301
コールバック関数のシグニチャが違えば違うAPIを用意するのが普通
Pythonに限らずJS以外の言語ではそれが普通だと思う
Rubyで言うeachとeach_with_index

HogeをIterableにして
print([f”_{item}” for item in hoge]) や
print([f”{i}_{item}” for i, item in enumerate(hoge)]) することのほうがPythonでは多いと思う
2021/10/26(火) 18:26:21.05ID:58PW1UcQ
javascriptに限った話じゃないんだけど、
Max Retry、っていったら純粋に"リトライ"の回数でカウントする?それとも総実行回数を指す?
MaxRetry=5なら
初回の1回含めて最大6回やるのか、5回なのか。
なんか気になって。
2021/10/26(火) 18:34:57.12ID:qzAOjqD0
そんな名前絶対につけないけど、その名前なら6回でしょ
2021/10/26(火) 19:14:57.68ID:BNqSw8pO
最初の試行は"Re"tryじゃないから6回だわな
2021/10/27(水) 13:56:39.52ID:0D9sPP+O
???????????????????
?????????????????????????????
310デフォルトの名無しさん
垢版 |
2021/10/27(水) 16:50:18.70ID:rwCBpLuv
pyodbcの接続時にスキーマまで指定する方法ありませんか
接続文字列に入れてもエラーになってしまいます
2021/10/27(水) 18:14:05.36ID:CtZ0vCqQ
変数の名付けでちょうど良い具合がわからない

たとえば文字列の長さの変数をstr1_wordlengthとしたんだけど
---------------------
str1 = 'apple'
str1_wordlength = len(str1) # 5
#文字列と文字数を格納する辞書dic1をつくる
dic1 = {str1_wordlength: str1} # {5: 'apple'}
---------------------
「str1_wordlength ならたぶん意味が通じると思うけど長過ぎじゃね? 毎回これ書くのか?」とも思うし
この変数「名付けするの面倒だからいっそ a でいいんじゃね?」とも思うし
「そもそも変数作る必要あるか? len(str1)は変数名より短いじゃん?」とも思うし

練習問題やってるうちはぶっちゃけ何でも良いと思うんだが
後々を考えるとどうしたらいいんだろうな、と
312デフォルトの名無しさん
垢版 |
2021/10/27(水) 18:15:13.83ID:sQbCpqyG
>>310
DSN側で設定しておくんじゃない?

https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases
ここのDB別の文書読んでみて
2021/10/28(木) 02:31:25.25ID:bnoFQANv
strの特殊メソッドつかったらprintにも反応するんですね・・
class pr:
_value="aa"
_def __str__(self):
__return self.value+"bb"
p=pr()
print(p)

def __str__の中にエラー処理いれてたらprintでエラー引っかかっていて
気づくのに時間かかりました・・
2021/10/28(木) 04:45:57.20ID:Nbft1WLw
PythonやDjangoでオススメの本ありますか?
2021/10/28(木) 06:56:16.71ID:dSweiYMb
特殊メソッドは使わんほうが無難
ていうかPythonはクラス自体使わない方がいい
昔ながらの構造化言語としてシンプルに使うのがベスト
2021/10/28(木) 07:27:59.28ID:p07hGs8T
データを構造化するためにclassを使うだろ
2021/10/28(木) 07:52:44.16ID:xUl7Twuj
今どきクラス使うなとか言うアホは放置で
2021/10/28(木) 08:10:34.09ID:X05RtFia
関数間で状態を保持するときにのみクラスは有効
319デフォルトの名無しさん
垢版 |
2021/10/28(木) 10:18:44.69ID:MKFZM1zj
>>312
結果的にはファイルdnsで出来ますた
2021/10/28(木) 12:42:04.06ID:RV1LSDaq
PythonでマイクロソフトAccessをDBとして使う実例は多いけど、単にAccessをマクロ起動かける例が無いんです
誰か成功した人は居ますか?
321デフォルトの名無しさん
垢版 |
2021/10/28(木) 12:56:15.77ID:XVuwIiyB
Access側のマクロのエントリポイント用の関数を造っておく
pywin32でその関数を呼ぶ
2021/10/28(木) 13:09:38.96ID:XVuwIiyB
https://stackoverflow.com/questions/32653792/python-code-for-running-ms-access-module-subroutine
2021/10/28(木) 13:19:37.36ID:RV1LSDaq
>>321,322
ありがとうございました。
これで実行してみます。
2021/10/28(木) 14:14:58.06
from datetime import datetime
now=str(datetime.now())
#2021-10-28 05:12:03.857881
#この文字列を、datetime型に変換したい
_at=now.split(" ")
_at[0]=_at[0].split("-")
_at[1]=_at[1].split(":")
print( datetime(int(_at[0][0]),int(_at[0][1]),int(_at[0][2]),int(_at[1][0]),int(_at[1][1]),int(float(_at[1][2].split("+")[0])) ) )

としたのですがこれってスマートなやり方ではないですよね・・?
ようはstr(datetime)でフォーマットが決まってるのだから、もっと簡単にその文字列からdatetime型に変換できたらいいのに
と思うのですが・・
2021/10/28(木) 14:17:08.33ID:Fr3tDLQH
>>324
ほれ
https://qiita.com/shibainurou/items/0b0f8b0233c45fc163cd
2021/10/28(木) 14:17:55.41ID:JRDKMzLv
datetime.fromisoformat
2021/10/28(木) 16:09:10.81
>>325
いえ・・そういうことじゃないんです
それだと指定子を選定する作業が出てくるかもしれないので・・

>>326
うおおおおおおあったんですね ありがとうございます!!!
from datetime import datetime
now=datetime.now()
print(str(now))
str2dt=datetime.fromisoformat(str(now))
print(now==str2dt)#True

できました!!!
2021/10/28(木) 17:41:33.23ID:Nbft1WLw
>>314
これなんですけどvenvを推奨していてdjangoのことも書かれているpythonの本です
名前を忘れました
誰か分かりませんか?
2021/10/28(木) 17:46:38.21ID:IFkzxSt8
テキストとかだと
list = [0]*10 は [0,0,0,0,0,0,0,0,0,0] になるから初期値作るのに使えるぞ
とか書いてあるのに

list1 = [[0,0,0]]*3
list2 = [[0,0,0],[0,0,0],[0,0,0]]
list3 = [[0,0,0]] + [[0,0,0]] + [[0,0,0]]

print(list1 == list2)
print(list2 == list3)
--------------------
True
True

この結果は両方Trueなんだけど

list1[0][0] = 1
list2[0][0] = 1
list3[0][0] = 1
print(list1)
print(list2)
print(list3)
--------------------------------
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

こうなるのって結構罠じゃね?
2021/10/28(木) 17:54:29.27ID:Mv6YjZts
listのコピーはcopyでやれ定期やね
2021/10/28(木) 17:54:51.49ID:Nbft1WLw
>>329
この話題無限に出るな
それだけ分かりにくい所だし何度でもすればいいと思うけど
2021/10/28(木) 20:34:34.97ID:o6HAoERy
https://gist.github.com/srndpty/43c76d74188884f25716f25a44ef0818
だれか、これpythonに翻訳して。
333デフォルトの名無しさん
垢版 |
2021/10/28(木) 21:08:20.17ID:WnlLUDNQ
os.walkで一発だろ。
2021/10/28(木) 21:20:53.36ID:3jEWrZM3
django2.2、vscode、venvでプロジェクト作りました
models.py

from django import models

Import "django.utils" could not be resolved from source Pylance
とエラーになります

解決策ありますか?

因みにdjango3.2で作ったプロジェクトではエラーでませんがpythonインタープリターがPython3.9.7 64-bit ('mysite': venv) ./mysite/bin/pythonとなってます

2.2でのプロジェクトではPython 3.9.7 64-bit /opt/homebrew/bin/python3となってます
2021/10/29(金) 00:14:03.10ID:qT0pkZDa
>>329
Ruby では「たのしいRuby」みたいな入門書に書いてあるけど、

配列を初期化する際に、ブロックを渡さないと、
浅いコピー、つまり参照だけのコピーとなり、
実体が1つしかないので、同じオブジェクトを指してしまう

初期化時にブロックを渡すと、3つの実体が作られる

ary = Array.new( 3, [ 0, 0, 0 ] )
ary[ 0 ][ 1 ] = 1
p ary #=> [ [0, 1, 0], [0, 1, 0], [0, 1, 0] ]

ary2 = Array.new( 3 ) { [ 0, 0, 0 ] }
ary2[ 0 ][ 1 ] = 1
p ary2 #=> [ [0, 1, 0], [0, 0, 0], [0, 0, 0] ]
2021/10/29(金) 00:29:20.81ID:qT0pkZDa
Ruby on Rails では、Node.js も使うから、
日本人が作った、バージョンマネージャーのanyenv で、
19 言語を、統一した使い方で管理している

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv

which ruby
/home/<ユーザー名>/.anyenv/envs/rbenv/shims/ruby

which node
/home/<ユーザー名>/.anyenv/envs/nodenv/shims/node

venv はPython の標準だけど、多言語を使う際、
各言語のバージョンマネージャーの使い方が異なるから、覚えられない

基本、主要フレームワーク・ゲームエンジンなどは、掌田津耶乃が本を出している。
ただし、猿向きで簡単だけど、知識は少なめだから、1冊目には良い

例えば、Railsでは黒田努の本の方が、本格的
2021/10/29(金) 02:18:31.85ID:FnWw468S
>>334
これプロジェクト作り直したら解決しました
原因不明です
2021/10/29(金) 04:57:41.89ID:oTw6PnKg
vscodeのpylanceのauto importが機能してないんだけど皆は使えてるの?
2021/10/29(金) 10:21:09.67ID:fhDC1KF/
seleniumを起動してchromeドライバから下記を行うとyahooはすぐにページ接続して遷移できるのに楽天はページ接続に時間がかかります。

seleniumではなく、普通にchromeを起動して手動でurlを入力する場合は楽天もすぐにページに接続できます。

原因や対応わかるかた教えてください。

janlist = ["4976365125510","4976365200934","4976365158013"]
for jan in janlist:
url=f"https://search.rakuten.co.jp/search/mall/{jan}/?filter=fs-fsl&s=2"
driver.get(url)
url=f"https://shopping.yahoo.co.jp/search?p={jan}&X=2"
driver.get(url)
2021/10/29(金) 12:21:35.03ID:koELjqeu
Selenium内のコンソールログを確認
2021/10/29(金) 12:24:28.38ID:eVsBtFEb
コンソールログってどうやって確認するの?
2021/10/29(金) 12:32:43.97ID:9CukeuuL
>333
os.walk 勉強中。
すっごい便利機能だけど高機能すぎて、forループでサブフォルダーを回していくつもりだったから困惑。
どうすればいいんだ!
343デフォルトの名無しさん
垢版 |
2021/10/29(金) 17:17:25.29ID:d8BIZQAf
classの__init__()するclassmethodが使いたいんだけどできますか?

c = Class()
c.method()

を一行で書きたいだけです
Class.method()
344デフォルトの名無しさん
垢版 |
2021/10/29(金) 17:24:18.67ID:R4ZBjJpK
普通にやれば?
https://wandbox.org/permlink/Eus88wKZ8uf3Hihn
2021/10/29(金) 18:16:59.51ID:zHkN81gu
pythonの資格って難しいですか?
346デフォルトの名無しさん
垢版 |
2021/10/29(金) 20:26:40.87ID:/8Rm9/az
>>343
method()がselfをreturnすれば
c=Class().method()
とできる
2021/10/29(金) 20:36:40.03ID:1Pi4hxs1
>>343
import this
2021/10/29(金) 21:26:19.76ID:AIexy1X9
このページの404エラーの箇所をベースに学習しています
https://docs.djangoproject.com/ja/3.2/intro/tutorial03/

DjangoにHttp404というクラスがあります
Exceptionクラスを継承しています(これはBaseExceptionを継承しています)

コントローラーにてtry文のexceptの中に
raise Http404("これは404です")
を書くと推移先の画面にはPage Not found(404)と表示されます

しかし自分でExceptionを継承した、passが書かれたクラスAを作って上記と同様にこのクラスをraiseすると画面にはA at /polls/
これは404です
と表示されます(Page Not found(404)とは表示されない)

一体どの段階でHttp404クラスに特別な実装が行われたんですか?
2021/10/29(金) 23:15:06.20ID:krcALBmR
>>348
特別な実装はされてない
django/core/handlers/exception.pyで例外捕まえたときにインスタンス見て処理振り分けてるだけ
2021/10/29(金) 23:43:42.33ID:ZYpuK0cb
>>349
おお!
どうもです
後で見てみます
そのexeption.pyでviewなどでraiseされた例外を捕まえてフロントに適切なHttpResponseオブジェクトを送ってるんですかね?あとでそのモジュール見てみます
351デフォルトの名無しさん
垢版 |
2021/10/30(土) 01:26:36.60ID:fDTZDMBU
>>342
馬鹿には無理
352デフォルトの名無しさん
垢版 |
2021/10/30(土) 10:12:33.06ID:V5MhI+QS
>>343
即席だけど何度も使うつもりなら、シングルトンにしておいた方がいいだろう。
class Hoge:
__instance = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
Hoge().method()
2021/10/30(土) 11:36:54.55ID:a9WSKAoR
class Klass:
@classmethod
def method(c):
return Klass()

これじゃいかんの
2021/10/30(土) 12:49:58.82ID:xUY0JK8T
他クラスのインスタンスを生成するならともかく
自クラスなら__init__で対応したほうがいい
2021/10/30(土) 17:28:58.03ID:6LdaSTDR
>351
ありがとう。walkの使い方わかってきたよ。
フォルダの深さが1段ならできた。2段だと想定外の動きになるのでまだ検討が必要。
多層になるとforで回して掘っていった方が良いのかな?
2021/10/31(日) 02:00:51.68ID:hGI7wBpw
Ruby には、walk 無いから、glob でやってる

VB のコードでは、しょっちゅう再帰で、子の階層へ降りていく。
これが典型的な馬鹿の見本w
2021/10/31(日) 03:36:26.99ID:Fmzj87Tl
type(a)で
<class 'sqlalchemy.sql.elements.BooleanClauseList'>
と出るオブジェクトaを
if a==None:
みたいにifに入れたら
Boolean value of this clause is not defined
ってエラーがでました
条件分岐に入れることでそもそもエラーがでる
という今まで経験したことないエラーが出ました
こういう場合、どうやって条件分岐すればいいのでしょうか
2021/10/31(日) 04:35:13.37ID:oq4cmHqY
a is None
2021/10/31(日) 06:55:40.09ID:wNGz0WbD
関数Aからしか呼ばれないとわかっている関数Bがある場合、
BをAの内側に定義してしまうスタイルってありですかね
こうすれば見た目にも局所的であるとわかるし、
Aの外からBを呼ぶことはできないから安全と思うのですが

※関数内関数はクロージャっていう機能でも使うらしいんですが、
そっちはよくわからんので置いておくとして…
2021/10/31(日) 12:40:55.03ID:Fmzj87Tl
>>358
ありがとうございますできました!

なぜそうなるのかはわかりませんが一応検証です

from sqlalchemy import and_,or_,text
id_q=or_(*[text("id=1"),text("id=2")])
name_q=or_(*[text('name="tarou"'),text('name="tanaka"')])
q=and_(*[id_q,name_q])

def ck1(q):
_try:
__if q is None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)

def ck2(q):
_try:
__if q==None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)
print("### is None")
ck1(q)
ck1(None)
print("")
print("### ==None")
ck2(q)
ck2(None)

### is None
(id=1 OR id=2) AND (name="tarou" OR name="tanaka")
q is None
### ==None
Boolean value of this clause is not defined
q is None
2021/10/31(日) 13:07:50.21ID:F/sAbtyW
>>356
だよな。VBやってるやつはrubyの次に馬鹿だわ
2021/10/31(日) 13:21:43.76ID:e6cnICXj
>>345
エンジニア基礎試験とデータ分析試験の話なら、油断していると落ちる程度に考えておけばいいよ。
python使いこなしているなら普段使わないような標準モジュールの問題を暗記すればいける
363デフォルトの名無しさん
垢版 |
2021/10/31(日) 14:21:08.43ID:a/o9PbUa
PILのimageオブジェクトを複数扱うとき
その画像固有の色々なデータをどこかに保管しといて使い回すんだけど
sizeとかのプロパティと同じじゃんと思ってimageオブジェクトごとにインスタンス変数としてぶちこんでたんです
im1.x_rate = yyy
みたいな。

重いデータを押し付けるわけでないので現状別に困ってはいないけど、なにか問題ありますか? アクセス速度とか、データ保持周りの都合とかで
普通は辞書とかで管理しますよね
あとこういうインスタンスに、本来無いメンバーをねじ込むことができるのって、他の言語にはあまりない特徴なのですか?
2021/10/31(日) 14:52:05.62ID:e6cnICXj
>>363
不都合はないと思われるけど一般的ではないな

プロパティのねじ込みは他の言語にもある。Javascriptはねじ込みと呼び出しがもっと自由度高い。
365デフォルトの名無しさん
垢版 |
2021/10/31(日) 15:21:43.12ID:Q9Xu5pvX
>>364
勉強になります
366デフォルトの名無しさん
垢版 |
2021/10/31(日) 17:14:53.49ID:Yc4PEJna
動的言語のいいところでもあり悪いところでもある。
当然こういうのを徹底的に嫌う人はいる。
367デフォルトの名無しさん
垢版 |
2021/10/31(日) 17:19:32.57ID:Q9Xu5pvX
まあ入れたかどうか分かりづらい
自分で全部把握してないとしんどいですね
あとpylanceがすげえ怒ってる
2021/10/31(日) 17:24:06.26ID:WrAvX4Kw
彼女によく言われます
> 入れたかどうか分かりづらい
2021/10/31(日) 17:34:27.39ID:sRnAlDBM
つづり間違いを許容する言語なら避けられない
370デフォルトの名無しさん
垢版 |
2021/10/31(日) 18:11:50.92ID:4KbMhR6u
バグの温床
2021/11/01(月) 11:52:01.98ID:f7xOE2SJ
def _is(f):
_if f:
__return True
_else:
__raise Exception("error")

try:
__is(True)
_print("success")
except Exception as e:
_print(e)

何もしない、もしくはエラーを吐く
という_is()の行が、一行で完結していると
個人的に可視性が悪いように感じるのですが工夫や慣習とかあるのでしょうか?

例えば_isをTrueもしくはFalseを返すようにして
if not _is(True):
_raise Exception("error")
みたいにすれば「ここで条件分岐していますよ」というのがパット見で
どう分岐しているのかがわかります
しかし関数実行で一行で完結してるだけだと何してるかわからないし
関数名に「エラーかどうかチェックし、エラーがあるならエラーを吐く」的な名前を付けるにも
どういうのが適切なのかわかりません
372デフォルトの名無しさん
垢版 |
2021/11/01(月) 12:51:54.43ID:MaHd86e9
isはboolを返すようにする

if is_foo()
else

try:
check_foo()
except

あるいは

try_foo()
if try_foo()
else

が自然
2021/11/01(月) 12:53:04.27ID:1SV0gAru
>>371
何をしたいのかよくわからないけど
設計アドバイス有りのほうの命名スレで聞いてみれば?
374デフォルトの名無しさん
垢版 |
2021/11/01(月) 14:26:50.37ID:z/x9VzKb
文法以前に本人の頭が混乱してるな
病院池
2021/11/01(月) 16:23:27.64ID:SSiHi0ki
まずはPythonスレでインデントをアンダーバーで代替するのやめて全角空白「 」にしたらどうかな?
2021/11/01(月) 16:25:48.35ID:4nNYTPSv
>>375
それ
2021/11/01(月) 16:26:48.66ID:4nNYTPSv
と思ったら全角スペースかい
なんでやねん
2021/11/01(月) 16:50:34.49ID:SSiHi0ki
>>377
連続する半角スペースはスレ投稿時に1つに短縮されてしまうでしょ。
他にいい方法があれば教えてもらいたいくらい。挑発とかじゃなくて真面目に。
2021/11/01(月) 17:10:45.07ID:+PGSxGGW
class Cls(object):
def __new__(cls):
self = object.__new__(cls)
print('__new__ :', str(id(self)))
return self

def __init__(self):
print('__init__:', str(id(self)))
self.attr = 'Hello, world!'

obj = Cls()
2021/11/01(月) 17:11:37.02ID:+PGSxGGW
>>378
chmateだと大丈夫っぽい
2021/11/01(月) 17:17:16.17
テスト
連続全角スペース 2個
「  」
連続半角スペース 2個
「 」
連続アンダーバー 2個
「__」
2021/11/01(月) 17:19:02.31
続いてテスト
先頭空白の、

連続全角スペース 2個
  」
連続半角スペース 2個

連続アンダーバー 2個
__
2021/11/01(月) 17:22:16.44ID:er84fHxI
2ch初心者かてw
384デフォルトの名無しさん
垢版 |
2021/11/01(月) 17:33:20.31ID:usQd0Ibl
まあ
 全角スペース積んで
  それらしいインデント表現できるなら
   とはいえ全角スペースって…


   あと>>379はパソコンで表示できねーのでやめとけ
2021/11/01(月) 17:46:32.90ID:bBJfHO04
コーディングでアンダーバーってあんま聞かない
2021/11/01(月) 17:48:52.19
ちなみに過去スレみても全角スペースインデント派が極端に少ないように思えるけどなぜ
2021/11/01(月) 17:50:38.30ID:SSiHi0ki
Pythonはインデントそのものに文法的な意味があるから、他言語スレのような雑なコピペ、やりにくい
2021/11/01(月) 17:51:32.34
専ブラによってはAA補正機能ONだと全角スペースはズレるから、とかかな
2021/11/01(月) 17:51:53.67ID:rjS1S2Zt
>>1も読めないのか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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