Python の事前宣言定数は少し奇妙です

2026/08/26 6:39

Python の事前宣言定数は少し奇妙です

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Python は 6 つのプリデークレードされた項目を持っています:

True
,
False
,
None
,
__debug__
,
Ellipsis
...
), および
NotImplemented
。これらはしばしば「定数」と呼ばれますが、その挙動は大きく異なります。

このうち 4 つ(

True
,
False
,
None
,
__debug__
)は通常の識別子ではなく特別な構文的トークンです。そのため:
x.True
などの式は
SyntaxError
を発生させます。
• 他の文脈では構文上問題がないにもかかわらず、これらに直接代入または削除を行うことは
SyntaxError
を引き起こします(例:
__debug__ = 67
または
del __debug__
)。
• オブジェクト上の属性経由でのアクセス(例:
obj.__debug__
)は無効ではありませんが、
builtins
内のエントリを変更する(
getattr
/
setattr
を通じて)ことは、構文的トークンの挙動には影響しません。

対照的に、

Ellipsis
NotImplemented
は通常のビルトイン関数に近い動作を示します:
• 代入によってグローバルにシャドウ化されることが可能です(例:
NotImplemented = 67
)。
builtins
内の値を変更してもモジュールレベルでの名前には影響しますが、構文的トークン(
...
または
NotImplemented
という識別子)そのものには変更はありません。

さらに、

__debug__
は通常
True
ですが、Python を
-O
フラグで実行すると
False
になります。これら 6 つの項目を区別する exact な設計理由、特になぜ 4 つだけが構文的トークンとして特別扱いされ、残りの 2 つは通常のビルトインとして扱われるのかは、現在も不明です。

本文

Python 内置“定数”の真実は何か?

Python に先定義された定数として一般的に言及されるものが 6 つあります。しかし、それらの振る舞いは微妙に異なります。

存在する「定数」一覧

以下の 6 つが標準的な「定数」として認識されています:

  • True
  • False
  • None
  • __debug__
  • Ellipsis
    (または同等な記法
    ...
    )
  • NotImplemented

1. True、False、および None

これらは キーワード です。しかし、それらは識別子ではなく、単なる構文解析段階で認識される記号(lexical token)に過ぎません。

特徴と挙動

  • 通常、名前の解決はネーム解決プロセスで行われるため、レクサー自体での処理は稀です。
  • x.True
    といった式は
    SyntaxError
    を引き起こします(これは言語仕様上の特殊なケースです)。
  • これらには直接アクセスする際、通常の識別子とは異なる挙動を示します。

2. debug

__debug__
は通常
True
ですが、実行オプション
-O
でビルドすると
False
に切り替わります(デバッグビルドと非デバッグビルドの違い)。

唯一の特別ケース:割り当て不可

__debug__
は識別子として機能しますが、言語内で割り当てることのできない唯一の識別子です。

>>> __debug__ = 67
SyntaxError: cannot assign to __debug__

>>> x.__debug__ = 67
SyntaxError: cannot assign to __debug__

キーワードではないが特別な扱い

True
False
None
と異なりキーワードではないため、属性として削除することもできません(ただし
x
が未定義の場合は
NameError
):

>>> del __debug__
SyntaxError: cannot delete __debug__

>>> del x.__debug__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

「SyntaxError は嘘」について

__debug__
に割り当てようとする構文は実際には無効ではなく、エラーが返るケースは稀です。例えば
assert
演算子内では以下のように振る舞います:

>>> assert (__debug__ := 67)
# デバッグビルド実行時: SyntaxError が発生
# -O オプション実行時: アサーションはコンパイルされず、例外は発生しない

同様に、関数外部で

yield
await
を使用する場合も同様です:

>>> assert (yield)
>>> assert (await 67)

3. Ellipsis と NotImplemented

これらは「本当の意味での定数」ではなく、単なるビルトイン関数や変数のような扱いです。

グローバル変数として上書き可能

通常のグローバル変数と同様に値を変更可能です:

>>> NotImplemented = 67
>>> NotImplemented
67

4. 定数の上書きと builtins モジュール

True
False
None
も構文トークンですが、同時に
builtins
モジュール内のビルトインオブジェクトとしても存在します。

getattr は使えないが、setattr は使える!

直接アクセスはできませんが、

builtins
を介して値を書き換えることは可能です。

>>> import builtins
>>> getattr(builtins, 'True')
True

>>> setattr(builtins, 'True', 67)
>>> getattr(builtins, 'True')
67

しかし、構文解析トークンとしてアクセスした値は変わりません:

>>> True
True

debug の独特な挙動

__debug__
も同様に
builtins
を介して変更可能です:

>>> setattr(builtins, '__debug__', 67)
>>> builtins.__debug__
67
>>> __debug__
True

この結果、

__debug__
ある意味では真の定数(値を変更しても構文上の意味は変わらない)と言えます。

Ellipsis と NotImplemented は真の定数ではない

一方、

Ellipsis
NotImplemented
は上記のように単純に上書きされます:

>>> setattr(builtins, 'Ellipsis', 67)
>>> Ellipsis
67

ただし、構文記法

...
の値は変わりません:

>>> ...
Ellipsis

つまり、

...
は真の定数ですが、その名前である
Ellipsis
はそうではありません。

同じ日のほかのニュース

一覧に戻る →

2026/08/25 22:01

Apple、M6 と M5 Ultra を発表する

## Japanese Translation: 8 月 25 日(2026 年)、カリフォルニア州クアパティーノでアップルは、地域のアートフィシャルインテリジェンスを変革することを目的とした革命的なシリコンチップを発表しました。頭部のイノベーションは、Mac mini 向けの新しい **M6 チップ**であり、画期的な **2 ナノメートル製造プロセス**を特徴としています。このチップは、12 コア CPU(2 つのスーパークコア、4 つのパフォーマンスコア、および 6 つのエフィシェンシーコアから構成)、ニューラルアクセラレータを備えた 12 コア GPU、そして最大 32GB の統一メモリを高速で最大 170GB/s の速度でサポートします。 新しい Mac Studio とペア付けられているのは、アップルの最初のクワッドダイアーキテクチャであり、高度なウルトラフュージョン技術を利用した **M5 Ultra**です。これは、最大 36 コアの CPU コアと最大 80 コアの GPU コアで構成され、1.2TB/s の帯域幅で驚くべき 512GB の統一メモリをサポートする大規模なスケーラビリティを提供します。M5 Ultra は、AI における M3 Ultra に比べて最大 4.5 倍のパーク GPU コンピューティングを提供するため、大きなパフォーマンスの向上が期待されます。両方のチップは、高解像度のビデオ編集や複雑なエージェントワークフローを可能にする先進的なグラフィック機能を備えており、第 3 世代レイトレーシングとハードウェア加速メッシュシェーディングが含まれています。 これらのアップグレードにより、「Apple Intelligence」(2026 年秋の macOS 27 で、Apple Beta Software プログラムを通じて利用可能)がユーザーデバイスの上で完全に動作し、数百億パラメータを持つ最先端 AI モデルをクラウドサーバーに依存せずにホストできるようになります。新しい開発者フレームワークにより、Xcode や Core ML のようなツールを使用して大規模言語モデルのローカルでの微調整が可能となり、英語、中国語、日本語、韓国語を含む複数の言語で利用できる強力なプライバシー重視のオンデバイス AI 計算への決定的なシフトを示しています。

2026/08/25 23:06

OpenAI Jalapeño:Nvidia Blackwell より優れている

## Japanese Translation: OpenAI は、Broadcom との協力による約 16 ヶ月の開発(2024 年中盤から開始)を経て、「Jalapeño」という推論専用の ASIC を発表しました。LLM の推論のためにゼロから設計された Jalapeño は、過剰な特殊化ではなく極限までのハードウェア・ソフトウェアのコデザインと一般化に依存しており、推定的デコードや特定のワークロード調整を必要とせず、あらゆるモデル推論シナリオで高い性能を実現しています。 InferenceX スイートを用いた独立したベンチマーク(Hot Chips で実施)により、Jalapeño はトークン毎ワットあたりで Nvidia、AMD、Google のチップを上回ることが確認されました。TSMC の N3P プロセスで作製され、HBM4 メモリを備えるこのチップは、GPU に見られる固定されたレイテンシを排除するために順序変換コアと L1 キャッシュを採用し、MXFP 数値形式およびウェイト定数型シンタリック配列を用いて性能の急激な低下を防いでいます。OpenAI の独自プログラミング言語「Gluon」は、高効率を実現するために直接永続スレッドにマッピングされたハンドチューニング済みカーネルを可能にしています。 システムアーキテクチャは、CPU ホストラック(「Katsu」、AMD EPYC プロセッサ搭載)と ASIC ラック(「Vindaloo」、トレイあたり 16 チップ)から構成されます。この設計により、ハイブリッド銅線/光ネットワークを活用して最大 2,048 ユニットまで柔軟にグローバルなスケールアップが可能です。2025 年 11 月にタプトアウト(A0 ステッピング)され、初版はすぐにデプロイが可能で、タプトアウト直後にスループットの大幅な向上が実現されています。現在ファブ内にある将来の B0 ステッピングでは、効率性が約 25% 向上しており、Nvidia の Rubin チップに比べて優れた消費電力性能を提供します。生産は 2027 年に段階的に増産され、多くの出力は翌年の後半に期待されており、OpenAI パートナーが信頼性データを収集する期間としては 1 月までとされています。

2026/08/25 22:03

M5 Max および M5 Ultra を搭載した新型 Mac Studio

## Japanese Translation: Apple は、M5 Max およびすべて新しい M5 Ultra チップを搭載した新 Mac Studio を 2026 年 8 月 25 日に発表する予定です。このシステムは、前世代と比較して AI 処理が最大 4.3 倍高速化し、グラフィックス性能は 1.8 倍向上し、CPU 速度も最大 1.3 倍高速化したものを提供します。M5 Ultra の主なハードウェア仕様には、最大 36 コア CPU、ニューラルアクセラレーターを備えた最大 80 コア GPU、および最大 512GB のユニファイドメモリアドオン(512GB コンフィギュレーションは 2026 年 10 月下旬より登場)が含まれます。接続性は Thunderbolt 5 ポート(最大 120 Gb/s)、Wi‑Fi 7、Bluetooth 6 にアップグレードされ、高速データ転送、効率的なマルチデバイス設定、RDMA を通じた高速ネットワーキングを可能にします。 Mac Studio は最大 8 のディスプレイに対応し、オプションとしてフル 5K 解像度で 120Hz の Studio Display XDR が最大 4 台含まれる構成も可能です。M5 Ultra を搭載した場合は、同時に 8K ProRes ビデオの 33 チャンネルをストリーミング再生することもできます。本製品には macOS 27 がプリインストールされており、強化された Siri AI と新しい Apple Intelligence 機能が統合され、ハードウェアの可能性を引き出します。 持続可能性を考慮して設計された Mac Studio は、35% のリサイクル素材を使用し、40% の再生可能エネルギーで製造されています。価格は M5 Max モデルが $2,499(米国)から、M5 Ultra モデルが $5,499(米国)から始まり、教育割引価格も用意されています。プレオーダーは発売当日(2026 年 8 月 25 日)より開始し、一般販売は 2026 年 9 月 22 日より開始されます。