0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python の or って論理演算子以外の使い方があったんですね...

Last updated at Posted at 2025-05-24
a = 0
b = 1
value = a or b

print(f"{value=}")

これで出力されるのは value=1 なんですね。
orで指定されたオブジェクトを順に見ていき、最初のか、全て偽の場合の最後の値を代入するそうです。

これを利用すれば簡潔にかける場面がありそうです。
例えばデフォルト値の設定です。今までif文で書いていたものを or で代用できそうです。

if文を利用
if user_input:
    user_name = user_input
else:
    user_name = "ゲスト"

print(f"{user_name=}")

# ------------------------------------------ #

user_name = user_input if user_input else "ゲスト"
print(f"{user_name=}")

↓↓↓

orを利用
user_name = user_input or "ゲスト" # デフォルトの名前を用意しておきます。
print(f"{user_name=}")

他にも、複数の入力があるが1つだけ有効にしたい場合などにも応用できそうです。

orを利用
# 入力フォームで、連絡先はどれか1つだけ記入すればよい仕様です
phone = None
email = "user@example.com"
social_id = None

contact = phone or email or social_id
print(f"{contact=}")

そしてandも似たような使い方ができます。orとは逆に、最初のか、全て真の場合の最後の値を代入するそうです。

andを利用
a = 1
b = 0
value = a and b

print(f"{value=}")
# 出力: value=0

表題の内容はここまでです。
以下はpythonのマニアックな機能を一部まとめました。
独断と偏見と、私の拙い知識に基づくものですので、ご容赦ください。

... (Ellipsis)

Python には Ellipsis という組み込みオブジェクトがあり、ドット3つで表示されます。「未設定」の意味合いがあり、NoneFalseと区別して使うことができます。

value = ...
print(value) # 出力: Ellipsis
print(type(value)) # 出力: <class 'ellipsis'>
print(bool(value)) # 出力: True

pass と似た使い方ができますが、... は変数に代入することができます。引数のデフォルト値に指定して、条件分岐することもできます。

def get_value(x=...):
    if x is ...:
        raise ValueError("xを指定してください")
    return x

辞書のキーにタプルを使う

辞書のキーはハッシュ可能なオブジェクトを指定できます。中でも魅力に感じているのがタプルです。これを利用すれば、複数の要素でユニークなバリューを設定できます。データベースの複合キーみたいですね。

# 出発地と到着地のペアで移動時間を管理します
travel_times = {
    ("東京", "大阪"): 160,  # 分
    ("東京", "名古屋"): 100,
    ("大阪", "広島"): 90,
}

関数に属性をつける

classを使わなくても)関数に属性をつけることができます。

def my_function():
    print("Hello!")

my_function.version = 1.0
print(my_function.version) # 出力: 1.0
my_function() # 出力: Hello!
def counter():
    counter.count += 1
    return counter.count

counter.count = 0
print(counter()) # 出力: 1
print(counter()) # 出力: 2

簡単なメタデータを付属する時などに利用用途があるかもしれません。

0
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?