Python

pyenvをアップデートしたらlibexec/pyenv: No such file or directoryとか言われた話

環境

macOS 10.14.3
pyenv 1.2.11

本題

ある時、気が向いて

$ brew upgrade

を実行したらpyenvのバージョンが上がった。

その直後、

$ python

としたら、

Users/username/.pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/1.2.11/libexec/pyenv: No such file or directory

というエラーメッセージが表示された。

[python] ループの最後を判定する小技

ループの最後の一回だけ別の処理がしたい!
なんていうよくある願いを簡単に叶えてくれる、ループの最後の一回を判定する小技のご紹介

最後の一回を取得する

def lastone(iterable):
    """与えられたイテレータブルオブジェクトの
    最後の一つの要素の時にTrue、それ以外の時にFalseを返す
    """
    # イテレータを取得して最初の値を取得する
    it = iter(iterable)
    last = next(it)
    # 2番目の値から開始して反復子を使い果たすまで実行
    for val in it:
        # 一つ前の値を返す
        yield last, False
        last = val # 値の更新
    # 最後の一つ
    yield last, True

利用例


for i, is_last in lastone(range(5)):
    print(i, is_last)

# 0, False
# 1, False
# 2, False
# 3, False
# 4, True

pythonの論理式が真偽値以外も返す話

論理式が真偽値以外の結果を返却してくる不思議な構文のお話です。

何が入っているでしょう?

早速ですが、次のプログラムを実行したときvalueには何が入っているでしょう?

value = False or True

正解

正解はTrueです。

[Python]クラスってなんだろう

最近よく耳にするオブジェクト指向プログラミング

オブジェクトって何?それメリットあんの?

そう思う方も多いことでしょう。

Python3を利用する場合、どんな使い方ができるのかを例にあげながら解説します。

[python] ファイルに直接printする

print関数の出力先を標準エラー出力やファイルなど、いろんな場所に切り替える小ネタの紹介

print関数

皆さんご存知のprint関数でございます。
print(~~)ってすると画面に文字が出るアレです。

pythonの変数のスコープってどこからどこまで?

新しくプログラミング言語を始めると気になってくるのが変数のスコープです。

どこからどこまでが有効なのか知っていて損をすることはまずありません。

スコープとは

ご存知の方も多いとは思いますが、スコープとは変数の有効範囲の事です。

[Python] クラスの継承関係を確認する

Pythonでクラスの継承関係を確認する方法のメモ。

Pythonでクラスの継承関係を確認する方法は大きく分けると二つくらいになると思います。

  • issubclass関数
  • mroメソッド

issubclass

組み込み関数issubclassを利用すると、第一引数に渡されたクラスが第二引数のサブクラスかどうかを判定してくれます。