LoginSignup
1
0

More than 3 years have passed since last update.

≪今さら≫ Python 言語仕様のイケてるところ、イケてないところ(Ruby比較)

Last updated at Posted at 2019-06-15

イケてるところ

インデント:

インデントするとブロックになって省力化できるところなど。
(Ruby みたいにやたら end を書いたりしなくていい)

for i in range(3):
    print(i)

(でも1行目のコロン ":" が本来要るのか?という小さな疑問は後述。。)

その他のイケてるところ:

たくさんありすぎて書ききれない。

イケてないところ

変数のスコープ

ブロック内でグローバル変数が気軽に使えてしまうという、
小さな親切が余計なお世話。
間違って使っても叱ってくれなくて、気づかずにハマる。

q=1
def foo(p):
    print(q)

foo(2)
=> 1

ブロック外でグローバル変数という意識がなかった変数も
ブロック内で不意に未定義で使うとグローバルなスコープになってしまう。
そんなこと勝手に解釈しないで、未定義だと言ってほしい。

クラス定義内の仮引数 "self"

class Cls:
   def __init__(self, x):
      self.a = x
   def plus(self, b):
      return self.a + b
c = Cls(1)
c.plus(2)

self, self って自己主張強すぎ!
ついでに前述のコロン不要説も。

↓ 情報量としては、こんな感じでいいのでは?

class Cls
   def __init__(x)
      self.a = x
   def plus(b)
      return self.a + b
c = Cls(1)
c.plus(2)

Ruby な人なら 「'return' も不要じゃね?」となるんだけど、
それはさておき。

後者を Rython と名付けてPythonのプリプロセッサにしよか?(しないけど)

1
0
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0