pythonの文法的な質問です。


  * Input

[code]

    n = tuple or list
    print(n)
    
[/code]

  * Output

[code]

    <class 'tuple'>
    
[/code]

これ、入力の時エラーが起きないのです。  
つまり、文法的には間違っていないということですよね？  
何が起きているのか解説お願いします。




文法上の`or`ブール演算(`A or B`)は、前者(A)が`True`の評価であればAをそのまま返します。  
クラスなどは`None`でない限り`True`評価となりますので、ご質問のコードでは`tuple`が返っています。

**サンプルコード**

[code]

    if tuple:
        print("ここは通る")
    
    if None:
        print("ここは通らない")
    
    print(tuple or list) # <class 'tuple'>
    print(None or list)  # <class 'list'>
    
[/code]

**参考資料**

  * [Pythonのandとorはif文以外でも使える？andとorの動作が面白いという話をします](https://blog.pyq.jp/entry/python_kaiketsu_181016)
  * [ブール演算 --- and, or, not](https://docs.python.org/ja/3/library/stdtypes.html#boolean-operations-and-or-not)




文法上の`or`ブール演算(`A or B`)は、前者(A)が`True`の評価であればAをそのまま返します。  
クラスなどは`None`でない限り`True`評価となりますので、ご質問のコードでは`tuple`が返っています。

**サンプルコード**

[code]

    if tuple:
        print("ここは通る")
    
    if None:
        print("ここは通らない")
    
    print(tuple or list) # <class 'tuple'>
    print(None or list)  # <class 'list'>
    
[/code]

**参考資料**

  * [Pythonのandとorはif文以外でも使える？andとorの動作が面白いという話をします](https://blog.pyq.jp/entry/python_kaiketsu_181016)
  * [ブール演算 --- and, or, not](https://docs.python.org/ja/3/library/stdtypes.html#boolean-operations-and-or-not)

