Python3.6 の print関数のお話
暇つぶしにPaizaでPython をいじってた時にブチ当たった言語のバージョン問題のお話。
元々、プログラミングはC言語から始めたもので、C言語のprintf関数の非直感的な所が好きになれず、Swiftに逃げ、Adaにちょっかい出したりして、今の所Pythonに落ち着いている訳ですが、Python 3.6ではver3.5よりもprint関数が改良されていて、かなり直感的になっています。
Pythonの話に移る前に、まずSwiftのprint関数のお話。
Swiftで、print関数のダブルコーテーション(")で括った文字列の中に変数の値を埋め込むには、 \(変数名) にして一緒に記述すれば良いのは有名な話。
こんな感じ↓
import Cocoa var hoge : String = "Hello,Swift" print("変数hogeの中身: \(hoge)") // 実行結果: 変数hogeの中身: Hello,Swift
次にPythonのお話
Python 3.5 で同じようにprint関数 の中に変数の値を埋め込むには .format() を使ったりするのが一般的。
こんな感じ↓
# Python 3.5 # coding: utf-8 hoge = "Hello,Python" print("変数の中身: {string}".format(string=hoge)) # 実行結果: 変数の中身: Hello,Python
個人的にこの書き方、第一印象的が不親切な感じ(個人的印象)がしてあまり好きでない。
そこでPython 3.6のお出まし。Python 3.6 の print関数 には f-strings (フォーマット文字列リテラル)と呼ばれる手法(?)が追加されていて、print("f{変数名}") って感じで書く。
こんな感じ↓
# Python 3.6 #coding: utf-8 hoge = "Hello,Python" print(f"変数の中身: {hoge}") # 変数の中身: Hello,Python
なんだかSwift的な感じ。実にモダン(笑)
ただ、どうも万能で方法ではないらしいので、 .format() の形式がなくなる事はないんじゃないかなぁと。
おまけ
Python の print関数では繰り返したい文字を整数値を使って連続出力すると言う小技があって、線引きする時とかに役に立つ。
こんな感じ↓
print("-" * 20) #出力結果: --------------------