2019年11月23日土曜日

開発環境

のコードをGo言語ではなくPythonで、またPython3.8でセイウチ演算子(:=、Assignment expressions)という新機能、新演算子が追加されたから、それを利用して3.7以前より短いコードを書いてみた。

python3.7以前

コード

#! /usr/bin/env python3.8
import random
import time

random.seed(time.time())
a = ['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']
random.shuffle(a)
print('{}{}{}-{}-{}-'.format(*a))

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./sample.py
ジョレヌ-ボ-ボ-
% ./sample.py
ボボレ-ジョ-ヌ-
% ./sample.py
レヌジョ-ボ-ボ-
% ./sample.py
レボジョ-ヌ-ボ-
% ./sample.py
レボボ-ヌ-ジョ-
% 

python3.8以降

コード

#! /usr/bin/env python3.8
import random
import time

random.seed(time.time())
random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ'])
print('{}{}{}-{}-{}-'.format(*a))

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./walrus_operator.py                    
ボジョレ-ボ-ヌ-
% ./walrus_operator.py
ヌジョレ-ボ-ボ-
% ./walrus_operator.py
レボヌ-ボ-ジョ-
% ./walrus_operator.py
ジョボレ-ヌ-ボ-
% ./walrus_operator.py
ボヌボ-ジョ-レ-
% 

最後にpython3.8かつOne-Linerでファイルも不要に。

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% python3.8 -c "import random,time; random.seed(time.time());random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']);print('{}{}{}-{}-{}-'.format(*a))"
ボレジョ-ボ-ヌ-
% python3.8 -c "import random,time; random.seed(time.time());random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']);print('{}{}{}-{}-{}-'.format(*a))"
ヌレボ-ボ-ジョ-
% python3.8 -c "import random,time; random.seed(time.time());random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']);print('{}{}{}-{}-{}-'.format(*a))"
ボボレ-ヌ-ジョ-
% python3.8 -c "import random,time; random.seed(time.time());random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']);print('{}{}{}-{}-{}-'.format(*a))"
レヌボ-ジョ-ボ-
% python3.8 -c "import random,time; random.seed(time.time());random.shuffle(a:=['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']);print('{}{}{}-{}-{}-'.format(*a))"
ボヌジョ-ボ-レ-
%

python、python3ではなくpython3.8なのは、pythonはバージョン2.7、python3はバージョン3.7を起動するように設定してあるから。

ということで、3.7以前と比べて3.8ではセイウチ演算子(Walrus operator)のおかげで1行短くできた。まだちょっと見慣れないけど、慣れたら快適になることを期待。

0 コメント:

コメントを投稿