RubyプログラマがPythonを学び始めて知ったこと10選 ①

1 irbのように対話モードがある。

Rubyではirbで対話モードを開始するがPythonでは以下のコマンドで開始する

python

2 Rubyと同じく多重代入ができる。

a, b = 1, 2
a # => 1
b # => 2

多重代入という名前があることを初めて知った。

3 Rubyと同じく文字列の掛け算ができる。

ただしこの*が文字列のメソッドなのかどうかは知らない。

"a" * 3
=> 'aaa'

4 対話モードでは最後に表示した式が_(アンダースコア)に代入される。

a = 1
a + 1
=> 2
_ + a
=> 3

これはirbにもあるようです。ezookojoさん感謝です。

5 トリプルクォート("""または''')というヒアドキュメントのようなものがある

"""a
   b
   c
"""
=> 'a\n   b\n   c\n'

あっ、これはRubyにもあるようだ。知らなかった。←訂正します。私の思い違いだと思います。Rubyにはトリプルクォートは多分ありません。理由はコメント欄で言及されています。

6 スライス表記というものがある

a = ["a", "b", "c", "d"]
a[1:3]
=> ["b", "c"]

:の左は範囲の開始、右は終了を表す。ただしこの数字がよくある配列の添え字のカウントと異なり、以下のようにカウントする。(文字は上記サンプルの配列の値、数字はカウントを表す)
0|a|1|b|2|c|3|d|4

7 対話モードで複合文を入力するときは最後に空白行を加えて文の完了を知らせる必要がある

(インデントで制御構造を表すPythonならではなところだな)

def my_func(arg):
  return arg

returnの後の空白行によって関数定義の終了を知らせている。

8 ループにelse節を書ける。

else節はループが終了した時に実行される。

for i in [1, 2, 3]:
  # 処理
else:
  # 終了処理

どういう時に使うのだろう?

9 関数の最初の文として文字列が使える。

この文字列はrdocのように使える。

def fib(n):
  """nまでのフィボナッチ級数を表示する"""
  # 処理

10 JavaScriptのように関数の代入が手軽にできる。

def my_func():
  return 1

my_func()
=> 1
mf = my_func # 関数の代入
mf()
=> 1

今日はここまで。