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() の形式がなくなる事はないんじゃないかなぁと。
 

おまけ

 Pythonprint関数では繰り返したい文字を整数値を使って連続出力すると言う小技があって、線引きする時とかに役に立つ。

こんな感じ↓

print("-" * 20)

#出力結果: --------------------
おまけ その2

 ちなみに、PaizaのPython のバージョンは、3.5.2でした(2018/01/25 現在)
Pythonソースコード上でのバージョン調べ方はplatformモジュールを使う。
platformモジュールの中に入ってる、python_version() 関数を使えば調べる事が出来る。

import platform
print(platform.python_version())

# 実行結果: 3.5.2

 
 

どうでも良い話。

 ぐるナイに橋本環奈レギュラー出演してるから10年ぶり位に見てる(録画)。テレビはYouTubeみたいに5秒ぐらいCMを流した後、飛ばせるようにすれば良いのに。でも、それすると殆どのCMメーカ対応できなくて滅びるか(笑)

今回はここまで。