Pythonのお勉強 Part71

レス数が1000を超えています。これ以上書き込みはできません。
2023/09/20(水) 09:13:41.41ID:u6xixiUt0
↑スレ立てる毎に減るので、減ってたら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://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
※前スレ
Pythonのお勉強 Part70
https://mevius.5ch.net/test/read.cgi/tech/1677856680/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2023/12/10(日) 11:04:36.18ID:dvINkCpQ0
gRPCを使ってローカルサーバー内のasyncio.Queueに別のプログラムからputとgetをすると
Queueが空のときにgetをすると後から呼ばれたputがgetの完了を待ってしまう
イメージとしてはredis-pyのblpopとrpushのようなことがしたいんだがどうすればいい?
クライアント側からは非同期処理を意識せずに呼び出せるようにしたい

server.py ttps://techiedelight.com/compiler/?server
producer.py ttps://techiedelight.com/compiler/?561a
consumer.py ttps://techiedelight.com/compiler/?edcb
grpcserver/grpcserver.proto ttps://techiedelight.com/compiler/?cb6b
2023/12/10(日) 11:35:35.01ID:nA++m0MY0
>>907
高速なCPUに載せ替え
910デフォルトの名無しさん (ワッチョイ 5710-L8ZV)
垢版 |
2023/12/10(日) 11:46:03.36ID:wF+vsUm70
>>907
EXEを作る際に不要なモジュールを削除しておく。
または必要なモジュールのみをインストールした環境で作る。
2023/12/10(日) 14:14:44.65ID:zLH0tlZ60
>>908
空かどうかチェックしてから呼べば?
2023/12/10(日) 14:40:05.97ID:dvINkCpQ0
>>911
さっそくの回答ありがとうございます
それはPopMessageの中でタイムアウトまでget_nowait()を無限ループで回すって理解でいい?

PopMessageは空のキューで待ち構えててアイテムがputされたら即getって挙動にしたいんだけど
現在はタイムアウトになって空だった判定が終わってからputが実行されてる
2023/12/11(月) 09:46:23.18ID:+ZTyxHoM0
>>908
サーバーをgRPC AsyncIO APIを使って書き換えたら想定していた動作になった
server.py ttps://techiedelight.com/compiler/?d73c

ただpush後にqueueの現在のサイズを表示する処理が
popされるまで実行されなくて
popされた直後にまとめて表示されるのをなんとかしたいけどどうすればいい?

それとも実はpopされるまでpushはタスクが積みあがってるだけで実行されてない?
2023/12/11(月) 15:14:04.17ID:9aD5b1NYa
>>913
こうしたら?

async def _push_message_impl(self, content: bytes) -> None:
coro = self._message_queue.put(content)
task = self._loop.create_task(coro)
await task
print_size = functools.partial(self._print_size, "Pushed.")
print_size()
2023/12/11(月) 15:53:29.44ID:+ZTyxHoM0
>>914
ありがとうございます
それも試してみたけどpushのprintがまとめて実行される件は解決しなかった

試行錯誤した結果以下のコードで上手く動いた
putは待たずに即実行してほしいのだからput_nowaitにすべきで
あとはput_nowaitを投げっぱなし(fire and forget)にすると上手くいった

server.py ttps://techiedelight.com/compiler/?4c07
2023/12/12(火) 17:44:29.04ID:PeOBrpb00
>>915
sys.stdout.flush()
2023/12/12(火) 17:56:17.06ID:tcE92BOU0
print(flush=True)
2023/12/12(火) 23:45:57.11ID:C+wFRSZxa
>>854
intとfloat
2023/12/12(火) 23:50:46.81ID:C+wFRSZxa
>>867
if a==b
の話だからそれだとif節が4つの分岐処理できるようにしないといけないんじゃ
そんな言語嫌だ
920デフォルトの名無しさん (ワッチョイ ffb9-tASO)
垢版 |
2023/12/13(水) 00:30:55.74ID:l6shR1Bw0
RustのPartialEqが欲しそう
2023/12/13(水) 01:11:36.89ID:/DXrNli00
0除算といっしょで想定外な後ろ2つは
止まるか例外だすだけちゃうの?
2023/12/13(水) 08:17:29.51ID:S1FKlcqe0
でも設計者は真にした方が便利だと考えた
どういうケースを想定したんだろう
2023/12/13(水) 08:19:45.88ID:6xdHA+bAM
>>921
Pythonの演算なんだから3番目はNotImplementedを戻すだろう
それでも3つ分岐がいることになる
(そうじゃないなら例外にまとめてなきゃ変)
2023/12/13(水) 08:39:21.17ID:2i8DhGS8d
複数の分岐処理がしたいなら、match文でいいんじゃ?
925デフォルトの名無しさん (ワッチョイ 3746-vhj2)
垢版 |
2023/12/13(水) 11:33:11.42ID:h3rLFE4B0
O除算。

>>> 1 / 'O'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'int' and 'str'
2023/12/13(水) 12:54:06.42ID:oNl+0rt40
チェックしたほうが良いんじゃね。
ケーキ食べたいのに、スフレかもしれんし
2023/12/13(水) 13:56:39.90ID:0Tk5upMb0
お嬢さん
2023/12/13(水) 14:13:11.71ID:WrZJJMf/0
スフレチーズケーキはスフレ?ケーキ?
多重継承?
929デフォルトの名無しさん (ブーイモ MMbf-tASO)
垢版 |
2023/12/13(水) 19:44:31.54ID:AZIMh9+DM
class Cake:
kind = souffle
930デフォルトの名無しさん (ワッチョイ d7be-HI/Z)
垢版 |
2023/12/13(水) 23:02:45.82ID:scKOPc+Y0
Nuitkaとollvmをつかって難読化コンパイルできたけど需要ある?
931デフォルトの名無しさん (ワッチョイ ff93-tASO)
垢版 |
2023/12/14(木) 07:16:50.48ID:VrbATqem0
Pythonって難読化意味ある?
932デフォルトの名無しさん (ワッチョイ d7be-HI/Z)
垢版 |
2023/12/14(木) 09:15:34.70ID:6IAGuCnn0
Nuitka使ってる時点で解析しずらくなる
2023/12/14(木) 09:26:18.20ID:mwsN68xN0
秘密鍵をコードに埋め込みたい時とか
2023/12/16(土) 11:39:26.79ID:sPGHYPZJ0?2BP(0)

LINEのオプチャでつかえるBOT作りたいんやがどうやるん?
pythonでできると聞いた
2023/12/16(土) 11:50:39.29ID:1cAC/5Dza
アホみてぇな質問のしかた
少しはググれよ
2023/12/16(土) 13:20:03.76ID:ZMKoBGKMa
アホみたいって共感できるのすごいな
俺にはわからん。
2023/12/21(木) 11:14:36.20ID:coKFs4JJ0
Nuitkaにnumpy plugin使うとwarningでるのが気になる…
2023/12/21(木) 11:22:02.14ID:NZg9FfTP0
selenium使うと必ず謎のwarning出る
939デフォルトの名無しさん (ワッチョイ 634c-jnAL)
垢版 |
2023/12/21(木) 12:17:23.93ID:+bYKk0Px0
裏庭にwarningがでる
940デフォルトの名無しさん (ワッチョイ 162a-AQ+F)
垢版 |
2023/12/21(木) 15:15:31.26ID:p8AR9zsG0
>>939
近頃の若者は「ワーニング」を「ウォーニング」とナマるから、通じんべ。
941デフォルトの名無しさん (ワッチョイ e7be-DkQ9)
垢版 |
2023/12/21(木) 15:47:42.35ID:Sj73mPPq0
ここにはジジイしかいません
942デフォルトの名無しさん (ワッチョイ 1601-aw5G)
垢版 |
2023/12/21(木) 18:01:43.42ID:Z95EBtZI0
pythonって遅くね?
2023/12/21(木) 19:57:43.69ID:qrcYLDTk0
pythonは遅いよ
モジュールは早いよ
2023/12/21(木) 21:58:50.34ID:JI0UYSEL0
ボトルネックだけRustとかで置き換えてやればいいんだろうね

Mojoならもっと楽に置き換えられるかな?
2023/12/21(木) 22:05:47.96ID:bObiKTRM0
本家がPyPyに乗り換えればええのに
2023/12/21(木) 22:06:13.74ID:NZg9FfTP0
対話式に動かせる機能削ったらもっと高速化できたのに
今まで入ったことない分岐に入った瞬間にエラーで止まることもなくなるし
2023/12/21(木) 23:08:17.59ID:Y2jP7Dyr0
>>946
そんなに速くなるの?コンパイルがうまくなるとか?
2023/12/22(金) 00:42:37.84ID:wOpI+TvL0
VSCode の拡張機能・Code Runner は、
右クリックメニューから、選択したコード、またはファイル全体を実行する

設定項目、executorMap には、多くの言語の実行コマンドが書いてある。
"code-runner.executorMap": {

"javascript": "node",

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"python": "python -u",
"ruby": "ruby",

ここで、pythonには、-u が付いている。
多分これが無いと、すぐに表示されない。
標準出力がキャッシュされるのかも
2023/12/22(金) 00:49:19.70ID:+37DXQP6H
>>946
冗談じゃない
IDE嫌いの者にとってインタラクティブモードは生命線だ
950デフォルトの名無しさん (ワッチョイ 162a-6P6V)
垢版 |
2023/12/22(金) 01:28:54.44ID:CdWyrZLV0
>>946
> 今まで入ったことない分岐に入った瞬間にエラーで止まることもなくなるし

どゆこと?
2023/12/23(土) 14:30:00.14ID:+yR1xAXI0
split('\t')で取り込んでいちいちintするのも面倒なので、
map(int, split)にしたい
でも空ですらエラーにされる
想定外が来たらNullでいいから、楽に処理できないもんか
2023/12/23(土) 14:36:35.98ID:cGlPuzRM0
>>946
いやREPLから実行してもインタプリタ本体は同じだから
2023/12/23(土) 16:44:24.69ID:v4dsWN6K0
>>951
[int(x) for x in s.split('\t') if x]

or

[int(x) if x else None for x in s.split('\t')]

or

def to_int(s):
 try:
  return int(s)
 except ValueError:
  return None

map(to_int, s.split('\t')))

Pythonはパイプライン処理とは相性が悪いので
無理せずおとなしくPython風の書き方を従っておいたほうがベター
2023/12/23(土) 17:10:46.05ID:+yR1xAXI0
やっぱり自分用intを作るのが正解か
2023/12/23(土) 17:11:30.40ID:MC2+Dwkk0
そんなバカな発想やめな
2023/12/23(土) 17:50:31.60ID:v4dsWN6K0
pandasならそれなりによろしくやってくれる
converterも指定できるので自分でmapする必要はない

s = "111\t\t222\t\t333\t\t000"
pd.read_csv(StringIO(s), header=None, sep='\t')

Out:
0 1 2 3 4 5 6
0 111 NaN 222 NaN 333 NaN 0
2023/12/23(土) 17:58:11.43ID:cGlPuzRM0
>>951
モナドの出番だな
2023/12/23(土) 18:04:54.64ID:cGlPuzRM0
def maybe_int(value):
try:
return Just(int(value))
except ValueError:
return Nothing()

class Just:
def __init__(self, value):
self.value = value

def bind(self, func):
return func(self.value)

def __repr__(self):
return f"Just({self.value})"

class Nothing:
def bind(self, func):
return self

def __repr__(self):
return "Nothing()"

# 例としてのタブ区切りの文字列
input_string = "123\t456\t\t789"

# モナド風の変換
result = [maybe_int(x) for x in input_string.split('\t')]

# 結果の確認
print(result)
2023/12/23(土) 18:05:26.31ID:cGlPuzRM0
インデントおかしくなったスマソ
960デフォルトの名無しさん (ワッチョイ 63bc-BWWG)
垢版 |
2023/12/23(土) 19:36:53.20ID:/V7lYSgm0
Haskellを使いたい願いながらPythonを使わざるを得ない哀れな人間が書きそうなコード見て笑っちゃった
961デフォルトの名無しさん (ワッチョイ 63bc-BWWG)
垢版 |
2023/12/23(土) 19:58:21.69ID:/V7lYSgm0
しかもこれモナドというよりはファンクターじゃね
962デフォルトの名無しさん (ワッチョイ 63bc-BWWG)
垢版 |
2023/12/23(土) 20:01:20.65ID:/V7lYSgm0
あ、いやファクターではなさそう
2023/12/23(土) 20:57:15.51ID:cy6wCCec0
result = [int(i) if type(i) == int else None for i in s.split('¥t')]
これでいけんか?
2023/12/23(土) 21:21:39.45ID:+yR1xAXI0
いけるかどうかで言えば、lambdaで書いてもいけるんだろうけど、
いちいちそんなこと書きたくない
2023/12/23(土) 23:12:44.45ID:WlHvEb3t0
>>963
strなのでtype(i) == intはFalse
2023/12/24(日) 05:47:20.20ID:jOD7RUSOM
モナドってなんなの?
数学系の人が書いたHaskellの入門書読んだけど写像!写像!ばっかでめんどくさくなっちゃった
あれ本当に便利なの?
967デフォルトの名無しさん (ワッチョイ 63bc-BWWG)
垢版 |
2023/12/24(日) 06:03:40.69ID:2RNZTzrB0
モナドはRustでも採用されとらんし、HaskellでもIOモナド以外であんま使われてる印象ないし、神経質なオタクがIOすら数学的にしたくて入れたような印象があるな

それはそうと写像とかの数学概念は普通に筋の良い抽象化で便利だとは思う
2023/12/24(日) 08:20:03.60ID:Cma5/cXc0
内包表記も数学から持ってきてるな
2023/12/24(日) 11:28:16.67ID:r1BGz2rf0
>>965
ああそうかsplit後はstrか
ならtypeじゃなくてre.fullmatchならいけるでしょ
2023/12/24(日) 13:10:11.85ID:+alFE5Zb0
>>969
いけるけど記号を考慮すると面倒なのでtry-exceptしたほうが簡単だよ

int(1_000) => 1000
int(1__000) => ValueError
int(1_0_0_0) => 1000
int(1_0_0_0_) => ValueError
2023/12/25(月) 04:22:31.09ID:1pIswkAR0
Python使ったデータサイエンス系の開発環境を会社の事情でLinuxからWindowsに移行したんだけど
ファイルやフォルダへのショートカット(.lnk)をPythonで直接的に扱えないことに今更気づいた
Pythonのせいではないとはいえ死ぬほど不便なのでなんとかしたい

WshShortcutを使ってごちょごちょすればアクセスできるけどそんな面倒なことしてられないし
環境がWindowsの人って普段どうしてるの?
ショートカット使うのはやめてmklinkコマンドでシンボリックリンク張る感じ?
でもシンボリックリンク自体がWindowsだとあまり文化として一般的ではないと思う(たとえギークレベルでも)
2023/12/25(月) 05:28:22.15ID:fZmNQMgb0
漏れは、デスクトップにショートカットを作って、
Windows 10, WSL2 でLinux・Ubuntu を起動して、
VSCode でRuby on Rails をやってるけど

リンク先
C:\Windows\System32\wsl.exe code .

作業フォルダ
\\wsl$\Ubuntu-18.04\home\<ユーザー名>\project
2023/12/25(月) 12:27:50.83ID:w/c7nza5d
Pythonに限った話でなくプログラム言語全般の話で恐縮なのですが、変数名などの命名規則で先頭小文字のキャメルケースが使われることも良くあると思います。(先頭大文字パターンもあるのは認識しています)
この「先頭は小文字」というのは、見た目的に読みやすい、とかそういう理由なのでしょうか?

例えば、ある変数 productCode があったとして、「productCode」をチェックする関数だと
checkProductCode()
みたいな感じになり、Productの先頭が大文字になります。
同じものを指してるのに、先頭が小文字大文字が混在してなんかモヤモヤします。
こういうのはあまり気にならないものなのでしょうか?
2023/12/25(月) 12:46:19.39ID:HDhwTf8w0
productCodeはProductCodeのインスタンスが入ってる変数
checkProductCodeは特定のインスタンスではなくProductCodeに対する関数


というふうにわざわざ考えたりしないくらいには気にならない
975デフォルトの名無しさん (ワッチョイ 63bc-BWWG)
垢版 |
2023/12/25(月) 13:01:34.08ID:bUfbLUPY0
先頭小文字のCamelCaseみたいなキモい書き方Pythonには存在せんだろ
なんでよりによってPythonスレで聞くんだ
2023/12/25(月) 13:45:24.80ID:Ebjaalbb0
移植する時に直すの面倒でキャメルケースが残ることもある

区切り部分を大文字にしてるんだから先頭は小文字が合理的だけど、
世の中一般では固有名詞に使うことが多いので先頭も大文字になる

pythonでクラス名や例外名が大文字始まりのキャメルケース推奨なのは、
どういう経緯があるんだろう
2023/12/25(月) 13:46:50.50ID:KMEA0AVf0
>>973
先頭大文字だとクラスを指してるように勘違いしちゃうからとかかもしれん
2023/12/25(月) 13:52:36.73ID:93zueivl0
>>971
win32comとか使えばできるっしょ
2023/12/25(月) 14:10:07.28ID:4YZcJ8/J0
初心者が今からこの言語をやりたくなったらこっちをやれ
Perl→PHP+WordpressかPythonやれ
Ruby→絶対Pythonに引っ越すからPythonやれ
Fortran、Matlab、Julia、R、Processing→自分の専門領域でメジャーなものに従え、なければPython使え
Java、VB.net→これ勧めるやつは人売りだから逃げろ、プライベートならC#やれ
Lisp、C→日曜日にやるならOK
VBA→平日にやるならOK
C++→Rustやれ
Rust→Cのあとにやれ
Javascript、Typescript→やるならWebで学ぶのに慣れろ、本はすでに古いかすぐ古くなる
Go→利点がわかるならやれ、なんとなくならC#かPythonにしとけ
Haskell、O'caml、Scala→5年後くらいにイキりたくなったらやれ
SQL、正規表現→できて当たり前だからやっとけ
2023/12/25(月) 14:31:05.96ID:77r75M+dM
>Lisp、C→日曜日にやるならOK
>VBA→平日にやるならOK
>C++→Rustやれ
>Rust→Cのあとにやれ
おいw
2023/12/25(月) 14:49:35.59ID:93zueivl0
>>979
C#に関する発言だけは的外れ
2023/12/25(月) 14:50:59.66ID:4YZcJ8/J0
>>981
マジか
2023/12/25(月) 15:00:57.01ID:Ebjaalbb0
C#を勧める人は筋トレ勧める人に似てる
2023/12/25(月) 15:29:16.14ID:4Z5LCY+60
F#で書きたいけど仕方なくC#で妥協してる
2023/12/25(月) 20:56:30.50ID:1pIswkAR0
>>972
WSLか、あれはいいものだ・・・
でも残念ながらLinux扱いされて社内承認がクッソ面倒な上にホストで動いてるBox Driveへのアクセスができなくて断念した

>>978
できるけど、なんでこんなことしなきゃならんのって気持ちが湧いてきてしまう
慣れれば何も思わなくなるのかな

こりゃもう普通にLinux使用許可もらうよう動いたほうが早いかな
2023/12/25(月) 22:38:56.44ID:WF81hfK00
どうでもいいことだが
オナ禁したらめちゃ勉強捗るのな
2023/12/26(火) 07:38:40.27ID:3bMmKL6bH
>>971
普通にパスを指定するだけだが…
ショートカットというのは人が手でファイル操作する時に使うものだろ
988デフォルトの名無しさん (ワッチョイ cf2a-n5rw)
垢版 |
2023/12/26(火) 10:18:42.86ID:a0/8HJXg0
こういう意見が平然と出て来るあたりが、いかにもMS-Windowsだなあという感じする。

>>987
> ショートカットというのは人が手でファイル操作する時に使うものだろ
2023/12/26(火) 10:34:36.79ID:3bMmKL6bH
>>988
平然も何も、Windowsのショートカットは人がマウスでWクリックするために用意されている機能だろ
2023/12/26(火) 11:02:02.09ID:kpi70gTP0
Explorerで整理したファイル郡に対して処理したいんでしょ?
OS標準のデスクトップなんだし
自分ではそんなことしないが想像できる範囲の話やん
2023/12/26(火) 13:05:12.49ID:i/USyFaH0
マウント取りたいアホしかいない地獄のようなスレ
992デフォルトの名無しさん (ワッチョイ cf2a-Ivx1)
垢版 |
2023/12/26(火) 13:48:05.30ID:a0/8HJXg0
# The Thread from Hell !
from hell import thread
2023/12/26(火) 14:13:43.15ID:HS5XBp93a
>>990
まずExplorerを捨てろ
994デフォルトの名無しさん (ブーイモ MM7f-fVlU)
垢版 |
2023/12/26(火) 21:26:30.09ID:kk4yj+FYM
ショートカットはシンボリックリンクとは違う
2023/12/27(水) 04:00:17.75ID:TJvzVpkY0
小学4・5年生にPython早いですかね?
スクラッチやるよりturtle極めさせようと思ってるんだが
間違ってますかね?
2023/12/27(水) 06:26:47.20ID:U0sabDMs0
>>995
何を懸念してるのかさっぱりわからん
2023/12/27(水) 06:43:09.18ID:axeHJPf5H
>>995
子供の頃からプログラミングなんかさせたら引き籠りニートになっちまうぞ
その時間で勉学をきっちりさせて東大か京大に行かせとけ
2023/12/27(水) 07:00:37.83ID:oR+jfmx80
pythonは初心者なんで詳しい説明はできんが基本的なアルゴリズムの考え方は後々役に立つし本人の興味さえあれば年齢は関係無いと思う、俺は早いほうがいいと思う
2023/12/27(水) 07:39:33.71ID:TJvzVpkY0
レスありがとう
ゲームクリエイターになりたいっていうんだけど、
テキストプログラミングやる前に、
ビジュアルプログラミングやる方が良いって
散々言われてるし、小学校中学校ではScratch教えてるっぽいから
どうしようかなって悩んでる

勉強させるほうが良いってのはわかる
個人ではいつでもゲーム作れるが
任天堂には勉強してないと入れないからな
2023/12/27(水) 08:14:26.20ID:PW7pbSu60
素質があれば言語選ばずなんでもいけるだろ
選ばないと出来ないなら素質が無いんだよ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 97日 23時間 0分 45秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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