俺以上にPythonプログラムに詳しい香具師いる?

1 : 2021/08/07(土) 03:55:49.683 ID:HI3lYg8h0
a,*(b,c)=1,2,3 … 通る
def test(a,*(b,c)): pass … 通らない

この左辺値と引数の挙動の違いはなんで起こるの?
そういう文法だから、と言えばそれまでだけど合理的な理由が知りたい

2 : 2021/08/07(土) 03:57:43.756 ID:8U/EUZXl0
=にそういう役割があるってことでしょう
5 : 2021/08/07(土) 04:00:13.566 ID:HI3lYg8h0
>>2
関数に実引数を渡すのも代入と似ていると思う
だから関数呼び出しの際の引数渡しとイコールを同一視する文法でも問題無さそうと思うんだが
何か問題があれば知りたい
3 : 2021/08/07(土) 03:59:31.109 ID:8U/EUZXl0
前者は演算
後者は定義

自分で構文解析器作ってみればわかる

7 : 2021/08/07(土) 04:00:49.363 ID:HI3lYg8h0
>>3
今作ってる中でこの疑問が出たんだ
4 : 2021/08/07(土) 03:59:38.040 ID:3+A9vuxzr
デブ
6 : 2021/08/07(土) 04:00:17.642 ID:krhZFVer0
クソ言語だな
8 : 2021/08/07(土) 04:02:42.657 ID:CMvQS5UK0
構文が違うから
9 : 2021/08/07(土) 04:03:02.070 ID:HI3lYg8h0
>>8
それは分かってるよ
10 : 2021/08/07(土) 04:05:17.010 ID:CMvQS5UK0
何で定義で*使わなきゃいけないの
11 : 2021/08/07(土) 04:06:28.995 ID:HI3lYg8h0
>>10
使う必要性があるかどうかは分からんが
代入と引数渡しを同一視すると構文解析の実装が簡単になりそう
12 : 2021/08/07(土) 04:06:35.956 ID:Ld5iv0Idr
>>2
平均は13とかなんだろ?
13 : 2021/08/07(土) 04:07:08.614 ID:HI3lYg8h0
というか

def test(*arg): pass は通るよね?
ますます分からん

14 : 2021/08/07(土) 04:09:41.144 ID:CMvQS5UK0
>>13
可変長引数
15 : 2021/08/07(土) 04:10:19.437 ID:CMvQS5UK0
仮引数に式は入らない
19 : 2021/08/07(土) 04:12:01.647 ID:HI3lYg8h0
>>15-16
それだ
解決したわ
16 : 2021/08/07(土) 04:10:55.868 ID:CMvQS5UK0
だから*(b,c)ができなくても何もおかしくない
17 : 2021/08/07(土) 04:11:43.488 ID:HI3lYg8h0
うーん…アレかな
仮引数にはexpression(式)は一切使えないのかも知れん
仮引数に式を許容してしまうと、>>1のような解釈可能な例よりも解釈不可能な例の方が多くなってしまって
構文解析で弾けない分意味解析に負担がかかるのかも

解釈不可能な例:
def test(3+2*x): pass

20 : 2021/08/07(土) 04:12:19.911 ID:HI3lYg8h0
サンクス
寝るわ
21 : 2021/08/07(土) 04:12:45.457 ID:HI3lYg8h0
いや待て
22 : 2021/08/07(土) 04:13:17.163 ID:HI3lYg8h0
それだと左辺値の場合もexpressionを許容する合理性ある?
23 : 2021/08/07(土) 04:13:22.256 ID:cx6n9l6kr
再来年の再が抜けててすまんな
いやー・・・うらやましいね制服セックスが合法でできるなんて・・
24 : 2021/08/07(土) 04:14:49.110 ID:CMvQS5UK0
array[i]は式だよ
27 : 2021/08/07(土) 04:15:59.677 ID:HI3lYg8h0
>>24
なるほど
それのために2+3*x=5等の不正な代入を意味解析で弾くのか…
それなら「左辺値」という別の構文を用意した方がいいようにも思えてくるね
31 : 2021/08/07(土) 04:19:52.879 ID:CMvQS5UK0
>>27
仕様見たら別れてるみたいだけど
25 : 2021/08/07(土) 04:15:17.449 ID:CMvQS5UK0
obj.valueも
29 : 2021/08/07(土) 04:16:13.405 ID:HI3lYg8h0
>>25
確かに
26 : 2021/08/07(土) 04:15:31.352 ID:PrnhpFLwa
>>1
そういう風にプログラムされているからです
28 : 2021/08/07(土) 04:16:07.067 ID:blFf+x1hr
こんな時に複数人で買い物に行くこと自体非常識
30 : 2021/08/07(土) 04:18:57.472 ID:HI3lYg8h0
んんん…違うな

array[i]とかドットなんかは演算子の優先度がかなり高いから
左辺値に式ではなく式の一部を持ってくればいいだけか
そしたら構文解析で弾けるわ

コメント

タイトルとURLをコピーしました