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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/18(月) 13:42:55.36ID:+MPRGO7m
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

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

エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その41【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1549282930/


◆PythonのHome Page
http://www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆Pythonのソースコードをそのまま5ちゃんにコピペすると
  インデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
2019/03/23(土) 08:33:26.98ID:ZeoqDrwt
こういうタイプはアセンブリ言語から順に勉強していった方がいいんじゃないかと思う
2019/03/23(土) 08:37:15.91ID:4W6dBUsF
Pythonに代わる独自言語を開発したいとかかもしれない
2019/03/23(土) 09:09:46.45ID:f3qHSm8q
>>186
参考にならないから消え失せろ。二度と来るな。
192デフォルトの名無しさん
垢版 |
2019/03/23(土) 09:42:24.98ID:ydnViaEq
>>188
もちろん見たのですが、どういう形で渡されているかわからないのです

クラス自身が渡されているとしたら
class.class.v = var
という構造になっているということですか?
193デフォルトの名無しさん
垢版 |
2019/03/23(土) 10:26:17.73ID:ZeoqDrwt
>>192
関数はある程度理解してて自分で書くことができる?
2019/03/23(土) 10:40:50.71ID:I3Pj7rcK
「python クラス変数 インスタンス変数」とかでググれば説明サイトが大量にあるけど、
プログラミングそのものが理解できてない感じだよね
195デフォルトの名無しさん
垢版 |
2019/03/23(土) 10:50:20.39ID:ydnViaEq
>>193
簡単な関数ならもちろんかけます

def func(hikisuu):
print(hikisuu)

func("引数")
196デフォルトの名無しさん
垢版 |
2019/03/23(土) 10:50:59.12ID:ydnViaEq
>>194
概念はなんとなくわかりますが、どういう形で渡されているかがわからないのです
2019/03/23(土) 10:51:50.16ID:YnRhMPRR
>>194

説明できないの?
馬鹿なの?
2019/03/23(土) 11:03:23.41ID:hJSauuzM
>>192
selfはtestクラスのインスタンスを指してる
func()の第一引数にそのselfがあるんだから、そのメソッド内でselfのインスタンス変数にアクセス出来るのはなんにもおかしくないと思うんだけど
199デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:10:08.58ID:ydnViaEq
>>198
なんとなくわかってきました
ただ、selfがtestクラスのインスタンスということであれば、testクラスの中にさらにクラスのインスタンスがあるという状態はおかしくないでしょうか?
2019/03/23(土) 11:17:15.12ID:0qnTz56h
ここ数日これずっとやってるのか
PyConにくる小学生ですらもう少しマシ
2019/03/23(土) 11:21:18.94ID:sBAP9hOD
>>200
でも完全にスレタイ通りなのだ
2019/03/23(土) 11:21:59.29ID:oN2Crbw2
>>185です。
どなたかお助けください。。。
本当に困ってます。
203デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:22:14.02ID:ZeoqDrwt
>>195
じゃ仮に変数をまとめて入れられる変数があるとする(変数の中に変数が入っている)

a = {
  hensu1 = "ABC"
  hensu2 = 22
}
b = {
  hensu1 = "DEF"
  hensu2 = 55
}

変数にアクセスするためにはこうやるとする
print(a.hensu1) // ABCが出力される
b.hensu2 = 44 // bの中のhensu2に44が入る

もう一つ仮に、関数をまとめられる変数があるとする(変数の中に関数が入っている)
funcs = {
  def func1(hikisu):
    print(hikisu.hensu1)
  
  def func2(hikisu, var):
    hikisu.hensu2 = var
}
中の関数を呼び出すにはこうやるとする

funcs.func1(a) // ABCが出力される
funcs.func2(b, 87) // b.hensu2 に87が入る
204デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:29:25.52ID:7srBUnhE
>>192
>クラス自身が渡されているとしたら
誰がクラス自身なんて言った
渡されるのはクラス自身じゃない

もう自分でソース読んでみるのもいいんじゃないですかね
2019/03/23(土) 11:34:13.97ID:hJSauuzM
>>199
"testクラスの中にさらにクラスのインスタンスがあるという状態"という考えはどこから出てくるんや

>>202
エラーを貼ったほうがいい
206デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:34:24.50ID:7srBUnhE
どう実装されていますかっていう質問でしょ
ソース見るのが一番早いよ
C分からなくてソース読めないっていうなら、これ以上の説明も理解できないよ
207デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:41:58.39ID:VYeUbhBG
>>199
引数として渡されているだけなんだから何らおかしくない

> testクラスの中にさらにクラスのインスタンスがあるという状態はおかしくないでしょうか?

自分の中で「こうあるべき」って感情的に決めつけてない?
それの何がどうおかしいのか論理的に説明してみて
2019/03/23(土) 11:48:53.36ID:oN2Crbw2
>>205
import pandas as pd
abc =[["a", 1, 2], ["b", 3, 4], ["a", 5, 6], ["b", 7, 8]]
df = pd.DataFrame(abc)
df.query("0=='a'")

pandasで上記コードを実行すると
KeyError: False
というエラーが出てしまいます。
209デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:24:51.07ID:ydnViaEq
>>204
渡されるのはインスタンスですよね
クラスの中のselfではなくて、生成されたインスタンスの中にあるselfに渡されているということでしょうか?
210デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:28:48.09ID:ydnViaEq
>>203
ありがとうございます
これは例えばのコードですよね?
この波括弧(コレクション?)を使うとエラーが出るのですが
2019/03/23(土) 12:33:20.28ID:jhd39dfA
>>209
クラスとインスタンスの違いが分かっていなかったのか

>クラスの中のselfではなくて、生成されたインスタンスの中にあるselfに渡されているということでしょうか?
そう
クラスはあくまで設計図
実体を作って何かを行うのは全てインスタンス
212デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:41:08.01ID:7srBUnhE
クラスにも実体はあるし、クラス内の関数を呼び出したりもするけどね
2019/03/23(土) 12:43:45.55ID:jhd39dfA
>>212
staticも考えたけど、もう終わらせた方がいいんじゃないかなって
2019/03/23(土) 13:55:46.82ID:f3qHSm8q
>>212
超初心者にあれこれ詰め込んでも混乱するだけだろうし、多少の嘘は許容してまずは本当に基本的なことを大雑把に理解させないと一歩も先に進まないんじゃないかな。
2019/03/23(土) 15:46:32.76ID:A1HHpCkB
口だけは立派な先生方
self がなにか説明できない
2019/03/23(土) 15:55:15.05ID:VsaUG60l
説明はもう済んでるよ、理解出来てないだけ。
それも当然で、基礎知識が無いからどうしようもない
このまま行けばC言語に手を出すことになるのだろう
2019/03/23(土) 15:59:25.81ID:hJSauuzM
>>209
それでいい
クラスから実体化しまインスタンスはクラスとは別のメモリ領域にある
そのインスタンスの中に、selfというそのインスタンス自身をさすインスタンス変数があるということ

頼むからか>>149の1章から3章まで読んでくれ
あんたの知りたいことがすべて書いてある
そのサイト以上に簡単に説明してるところを俺はしらん(´・ω・`)
2019/03/23(土) 16:06:51.30ID:zpuBZ1ay
マジで小学校で教えといて欲しい
219デフォルトの名無しさん
垢版 |
2019/03/23(土) 17:31:55.04ID:ydnViaEq
↑ありがとうございます
最後に一つ

self.n= name
とあったらself側が変数名で、nは属性という扱いでいいんですか?
2019/03/23(土) 17:35:56.63ID:oN2Crbw2
>>185です。
解決ができそうにないので質問をキャンセルします。
スレを移動します。
2019/03/23(土) 17:50:28.72ID:A1HHpCkB
>>219

self は道標
n が変数名だ
222デフォルトの名無しさん
垢版 |
2019/03/23(土) 18:15:49.99ID:ydnViaEq
道標とは?
self.nで
インスタンス化されたクラス/その中にある変数n
というフォルダのような構造になっているという意味でしょうか?
223デフォルトの名無しさん
垢版 |
2019/03/23(土) 18:22:35.82ID:ydnViaEq
インスタンスの構造を出力してくれる関数とかないでしょうか?
これがあれば理解できるかも
224デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:16:34.22ID:iMO+WCpL
ppront
pydoc
225デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:15:49.89ID:abrpiqJH
>>185
Python詳しく無いけど、Haskellで言うfilter関数見たいのが有るんじゃ無いのか?
自作しても良いと思うけど。

def filter(f,lst):
newlst = []
for i in lst:
if f(i) then:
newlst.append(i)
return newlst

Haskellとの比較用にしか使ってないから、クラスとか知らんで悪いけど。
226デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:30:07.59ID:abrpiqJH
>>187

>>53で文句言われたpython初心者が別の言語での知見からの推測で良ければ?
selfに入ってるのは__init__付けてない時はclass定義そのもののアドレス(参照)が入るみたい。(各インスタンスで別々の値を持てなかった)
__init__付けるとインスタンスのアドレスが入るみたいね。
クラスによって(インスタンスの)先頭アドレスから何バイト先がメソッドのアドレスとか分かるから(その為のクラス定義)。
227デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:31:20.91ID:ydnViaEq
instance = test("hge")
pprint.pprint(instance)
pprintしてもメモリの場所しか表示されないのですが、何か設定が必要でしょうか
228デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:43:03.84ID:ydnViaEq
もしかしてクラスを設計図としたインスタンス(の構造)には、クラスの宣言部分は含まれていないのですか?
class testclass():
def __init__(self,hoge):
self.h = hoge
def func(self):
print(self.h)
instance = testclass("output")
instance.func()
とあったら、instance部分の構造は
def __init__(self,hoge):
self.h = hoge
def func(self):
print(self.h)
となってるわけですか?
2019/03/23(土) 20:50:14.72ID:A1HHpCkB
>>222

ご明察のとおり
だから、メモリ空間上に実体として存在するのは、

変数名.n

なので、外部からアクセスするときには、

変数名.n

でアクセスする。

self.n

で朝とできるのは、同じ変数名インスタンス内部からだけという仕掛け
2019/03/23(土) 20:59:31.58ID:gtm/8/iL
rubyのヘイトが溜まっていく…
2019/03/23(土) 21:17:04.29ID:VsaUG60l
この子にはもしかしてrubyが似合うんじゃないかなって思っちゃった
2019/03/23(土) 21:18:50.51ID:I3Pj7rcK
>>228
難しく考えすぎ

self(正確には第1仮引数名).変数名があると、下記の順番で処理されるだけ

1. インスタンス変数が定義されていれば、それにアクセス
2. クラス変数が定義されていれば、それにアクセス
3. どちらも無ければインスタンス変数を作成 (参照だったら例外発生)

Pythonインタープリタは、そう実装されているってだけ
だから概念とか考えてもしょうがない
はっきり言って、「selfに意味はない」
2019/03/23(土) 21:21:25.01ID:lUpPBvQP
>>227-228
どーでもよくないことだが
またインデント崩壊してるわ
タイポが散見されるわで
どうにもはや

pprontはpprintじゃないとおもうぞ
2019/03/23(土) 21:22:53.90ID:lUpPBvQP
>>232が すごくイイ!!(・∀・)こといった
selfをselfとかいとくことに
意味がないところでつっかかってんだ、
self野郎くんは
235デフォルトの名無しさん
垢版 |
2019/03/23(土) 21:30:04.14ID:CpiI5eIt
【人類は一つです(バカウヨ除外)】  世堺教師マiトレーヤ  【ユダヤから富を奪還し分ち合おう】
http://rosie.5ch.net/test/read.cgi/liveplus/1553306560/l50
236デフォルトの名無しさん
垢版 |
2019/03/23(土) 22:04:22.60ID:abrpiqJH
>>232
selfはローカル変数かフィールド(クラス変数)かを見分けると言う意味はある。
メソッドの引数にする意味はないと思うけど。(他の引数と一貫性を保つ為?)

class Myclass:
def func(str):
name = str #nameはローカル変数かフィールドか見分けられない。

そこでrubyは@nameとし、pythonはself.nameにした。


静的型言語だとクラス定義の時点でメソッドよりフィールドを先に定義するから、クラスで何個のフィールドが有るのか分かるけど、
動的型言語だと全メソッド見ないとフィールドが何個あるのか把握出来ない。
同じ使われ方してるフィールドが複数あっても気付きにくい。
__init__にフィールドの宣言と初期化を集約するとか、セオリー頼り。

class Myclass:
def func1(self,str):
self.name = str

def func2(self,str):
self.myname = str
2019/03/24(日) 00:18:34.34ID:9O9Vp0iS
>>236
>メソッドの引数にする意味はないと思うけど。(他の引数と一貫性を保つ為?)



それな
開発者は、次回には直しとけよ
2019/03/24(日) 00:26:51.70ID:aL5blMH8
>>236>>237
開発者からの言葉

・self不要論は死ぬほど聞いている
・以下が大きい理由
'foo'が 'C'のインスタンスであることを考えると、
パラメータリストで明示的な 'self'を必要とすることは、メソッドを呼び出すこれら2つの方法の間の理論的等価性を強化することになります。
foo.meth(arg)== C.meth(foo、arg)

俺には分からんかった
以下ソース
http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html
https://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay/
2019/03/24(日) 00:52:27.28ID:9O9Vp0iS
バカな開発者だ
C なんてどうでもいいだろうが
2019/03/24(日) 00:54:37.72ID:aL5blMH8
>>239
pythonはCのラッパーなんだけど
2019/03/24(日) 02:14:23.76ID:zpFoB+Fk
Yo! yo! みんな喧嘩すんなYO!
2019/03/24(日) 02:59:34.53ID:byiyxNX1
レペゼンpython、yeah
243デフォルトの名無しさん
垢版 |
2019/03/24(日) 05:01:07.62ID:XxZqoAge
>>237
いあ、個人的にはメソッドの引数からフィールドを生成または使用してるのが分かって便利だから残してて欲しいが。
244デフォルトの名無しさん
垢版 |
2019/03/24(日) 05:39:07.49ID:NAaHZN6A
pythonのC-APIは
CallObjectとか
CallFuncとか
CallMethodとか
使い分けてるよな
2019/03/24(日) 08:33:50.69ID:XvYqXbWf
dive into python3を読んでIterator作ってみたら少し理解が進んだ気がする
dive into python3を何とか理解したレベルで次に読むべきものって何なんやろ
246デフォルトの名無しさん
垢版 |
2019/03/24(日) 09:23:31.67ID:1qlluyio
つくれ
2019/03/24(日) 09:28:16.68ID:IeawwFp1
Fluent Python
2019/03/24(日) 10:49:21.59ID:0uhW8miJ
anacondaで個別に環境作ってsqlite3入れたがそれらを個別にイジるにはどうすればいい?コマンドプロンプトでsqlite3と叩いても違うバージョンのsqlite3が表示される
2019/03/24(日) 10:51:56.82ID:lF8x/C3u
activateでsqliteを入れた環境に切り替える
2019/03/24(日) 11:22:47.21ID:0uhW8miJ
>>249
ありがとうできた

PowerShellでactivate出来なかったから調べてみると使えるようにするにはconda install -n root -c pscondaenvs pscondaenvsで使えるように出来た
2019/03/24(日) 11:37:43.08ID:0uhW8miJ
ごめんvscodeのmicrosoft.python.languagesserver.exeってのが13gbくらいメモリ食っててメモリ使用率とディスクが99%なんだけどこれウィルス?
2019/03/24(日) 11:55:24.22ID:0uhW8miJ
解決したっぽい
2019/03/24(日) 12:04:20.29ID:byELi1J1
1人みたら100人いるとの格言の通り
self概念を理解できない人間はそれくらいいる
pythonに限らず他の言語でも
2019/03/24(日) 12:45:59.87ID:6XL2+Wvk
実装がどうなってようが俺の要求する通りの出力結果が得られれば
細かいことはどうでもいい
2019/03/24(日) 12:50:28.94ID:aL5blMH8
>>254
疑問点をブラックボックスに閉じ込める事も大事だよね
考えていたらキリがない
2019/03/24(日) 12:51:31.88ID:XnubZNlX
//なんかわかんないけど動いた
2019/03/24(日) 12:54:55.93ID:aL5blMH8
それはちょっと違う
258デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:19:15.63ID:m/EdUsLf
.sort()がマージソートだろうがクイックソートだろうが気にしないって事やろ
2019/03/24(日) 14:51:12.18ID:9O9Vp0iS
そうそうそーとしてくれりゃいいのよ
アルゴの違いなんて、CPU命令セットの違いで成績は簡単に逆転しちゃうんだから
2019/03/24(日) 15:03:55.28ID:aL5blMH8
>>258
そうそう
それで速度が足りないとか不具合起きるとかアリえんし、例え速度に多少問題あってもそんなもん改善しない
2019/03/24(日) 16:24:16.54ID:w1PFw/Sy
webkit2+gtk3でimport threadingで子プロセスからwebkit2.webview.run_javascriptでjavascriptを呼ぶと下記のようなエラーが出てしまうのですが、
仕様なんでしょうか?

1 0x7f4853d050f9 /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x9) [0x7f4853d050f9]
2 0x7f4860cdfeda /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37(+0x792eda) [0x7f4860cdfeda]
3 0x7f4860cbc8a4 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37(+0x76f8a4) [0x7f4860cbc8a4]
4 0x7f4860d68cf3 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37(webkit_web_view_run_javascript+0xc3) [0x7f4860d68cf3]
2019/03/24(日) 16:27:03.66ID:w1PFw/Sy
multiprocessingだと、javascriptだけ読み込まれないようです。(printや他の関数呼び出しなどは機能します)
これだと常時子プロセスでページのスクロール位置を記録するスクリプトが組めないので困っています。
どなたか原因がわかる方、お助けください。
2019/03/24(日) 16:34:22.71ID:C+SYacul
>>262
なんでマルチプロセスしてるかわかんないけど
一旦全部のプロセスの足並みそろうまで待つ命令入れたらどうなるのん
264262
垢版 |
2019/03/24(日) 16:59:44.36ID:w1PFw/Sy
>>263
レスありがとうございます。
本来はアプリ終了時にページの既読位置を記録したかったので、gtk windowのdestroy
シグナルからjavascriptを書いたコールバック関数を呼ぼうと思ったのですが、
gtk windowがdestroyされるとwebviewも消えてしまって、値が取得できなかったので、
常時スクロール位置を記録する無限ループを作り、その中でjavascriptを呼ぶ子プロセスを作ろうと思ったのです。
マルチプロセスにせずクラスのdef __init__()にループの関数を書くと無限ループなのでwebviewが読み込まれず、
仕方がなくマルチプロセスにしました。子プロセスから親プロセスの変数を書き換えられないなどの基本的なことは
検索してわかったのですが、なぜ子プロセスから親プロセスのdefに書いてあるjavascriptを呼べないかがわからんのです。
普通の関数なら呼べるようですが。
2019/03/24(日) 17:47:09.22ID:C+SYacul
>>264
よべないものは呼べないんだろうから
なんか別の攻略法を考えるしかなさそうだなそれ。。。

スクロール位置の記録は
パイプに書いてるの?
その他の方法でやってる?
266262
垢版 |
2019/03/24(日) 17:59:04.80ID:w1PFw/Sy
>>265
スクロール位置の記録はjavascript(y_pos_js ="var y; y = window.scrollY;")
とそれのresultを保管する変数でやっています。
変数の共有は
from multiprocessing import Value
のshared_double = Value('d', 0.0)などとやっています。
2019/03/24(日) 18:04:17.78ID:C+SYacul
りかい

それでうまくいかないんだ。。。
268デフォルトの名無しさん
垢版 |
2019/03/24(日) 18:17:51.34ID:TV2Tiiuq
self野郎です
とりあえずありがとうございます
269デフォルトの名無しさん
垢版 |
2019/03/24(日) 18:29:35.04ID:TV2Tiiuq
>>232
クラス変数にselfは使えないですよね?
270デフォルトの名無しさん
垢版 |
2019/03/24(日) 18:32:34.26ID:TV2Tiiuq
self.nはだたのurlと考えることにしました
http://self/n
2019/03/24(日) 19:00:06.76ID:C+SYacul
>>267
誤解を招く表現を訂正

それでもうまくいかないんだ。。。。。 (´・ω・`)
272デフォルトの名無しさん
垢版 |
2019/03/24(日) 20:26:00.05ID:TV2Tiiuq
要はselfに自分自身を入れると、class.nみたいな感じで変数だとかにアクセス出来るってだけのことじゃないですか
273262
垢版 |
2019/03/24(日) 20:36:20.90ID:w1PFw/Sy
>>267
Process(target=self.js_run(y_pos_js))
としたら今度はスクリプトを読み込んでくれました。
別プロセスにしたのが原因ではないようです。
もうちょっと考えてみます。レスありがとうございました。
2019/03/24(日) 20:48:22.92ID:C+8PS15Z
>>272
そこにきづくとはやはりてんさいか
2019/03/24(日) 21:04:17.61ID:C+SYacul
>>273
うまくいってなにより
ちからになれなくてすまん
276デフォルトの名無しさん
垢版 |
2019/03/24(日) 21:15:19.44ID:Pci4stVg
>>272
もう完璧やん
2019/03/24(日) 21:45:14.19ID:aL5blMH8
>>272
100点!
278232
垢版 |
2019/03/24(日) 21:45:45.89ID:LjSh6l07
>>269
だから>>232の通りなんだから、クラス変数にアクセスできるってば
>>238みたいな事を言っておいて、あんまりな仕様

そういうわけで、クラスメソッドの第1仮引数は"self"じゃなくて慣例的に"cls"にする
実際は"self"にしちゃう人もいるけど

Python3にする時にxrange→rangeとかつまらん事を病的なまで変更しておいて、
肝心な事は何も手を付けなかったから、いろいろ言われているんだよね
素直に"self"と"cls"を予約後にして、それぞれインスタンスとクラスを指すべきだったのに

あ、でもせっかく納得したみたいだから、別に気にしなくてもいいよ
2019/03/24(日) 23:12:03.48ID:3fqiTHWE
>>236
Python, JavaScript は、クロージャが関数スコープだから、
スコープ外の変数を取り込んでしまう。
第1級関数の欠点

一方、Ruby は、C と同じ。
関数スコープの内側に、クロージャのブロックスコープがある

関数は外側の変数を取り込まないで、
ブロックスコープは、関数内の変数を通す

第1級関数にしなかったことで、スコープが強固!
だから、this がwindow を指したり、non local とか、ややこしい問題がない

第1級関数を使っている言語は、バグりやすい
2019/03/24(日) 23:18:14.51ID:9O9Vp0iS
>>272

引数に self と書く必然性は?
2019/03/24(日) 23:19:28.32ID:9O9Vp0iS
>>232
>Pythonインタープリタは、そう実装されているってだけ


先ずはその仕様を変更しろ
2019/03/25(月) 00:04:18.17ID:3q1td1jR
クロージャって何がいいの?
http://mevius.5ch.net/test/read.cgi/tech/1415419907/261
261 デフォルトの名無しさん sage 2014/12/15(月) 23:02:52.91 ID:BuhXHDiL
さらに言えば、Rubyのブロック変数のスコープの扱いが1.9で仕様変更されてるけど、
それについてmatz自身が

> それは、Rubyが最初から関数型言語としてスタートしてないからであって、言語が違うからですよね。

と語っているね


http://www.atmarkit.co.jp/news/200907/24/ruby.html
2019/03/25(月) 00:11:34.45ID:Cuu19DCp
>>280
>>238でpython設計者が語っている。正直良くわからん

>>281
開発者に良いなよ。普通に意見出来る場があるぞ?
ここで言っても何も変わらないよ?
http://neopythonic.blogspot.com/
http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html
2019/03/25(月) 00:49:10.28ID:gQLXATRQ
このサイトに書いてあるsqlalchemyの使い方について教えて欲しいんだけど

user = User('hoge')

db.create_all()

の所について誰か分かる?
sqlalchemyは全くの初心者
とりあえず自分でsqliteのdbとテーブルを手動で作ってから始めるのかな?

https://www.smartbowwow.com/2018/07/flaskdbsqlite-sqlalchemy.html?m=1
285デフォルトの名無しさん
垢版 |
2019/03/25(月) 01:26:03.22ID:25q5twYk
>>237

> >>236
> >メソッドの引数にする意味はないと思うけど。(他の引数と一貫性を保つ為?)
>
>
>
> それな
> 開発者は、次回には直しとけよ

>>243

> >>237
> いあ、個人的にはメソッドの引数からフィールドを生成または使用してるのが分かって便利だから残してて欲しいが。
2019/03/25(月) 01:35:57.61ID:NiC3aEm8
個人的な意見を言われてもねえw
2019/03/25(月) 03:12:34.36ID:SOhENsRU
>>279
Cにはクロージャの概念は無いよ。
毎度毎度、rubyしか分からない(それすらちゃんと分かってるか怪しい)のに他の言語のスレにわざわざ出てきて無理矢理ruby推ししては、頓珍漢なことしか言えないのだから二度と書き込むな。
2019/03/25(月) 03:52:06.06ID:VCx1LmIq
C言語でクロージャを実装すると
https://pineapple.blog/c%E8%A8%80%E8%AA%9E%E3%81%A7%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%81%A8-535e0a5afd36

struct make_plus_n_context_t {
int _n;
int (*_func)(const struct make_plus_n_context_t *, int);
};
typedef struct make_plus_n_context_t MAKE_PLUS_N_CONTEXT_T;
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。