Python 3.6。新しいコードを調べてみると、この新しい構文に出くわしました。
f"My formatting string!"
次のようなことができるようです:
>>> name = "George"
>>> print(f"My cool string is called {name}.")
My cool string is called George.
誰もがこの内部の仕組みに光を当てることができますか?特に、f接頭辞付き文字列が取ることができる変数のスコープは何ですか?
PEP 498Literal String Interpolation を参照してください:
文字列から抽出された式は、f文字列が出現したコンテキストで評価されます。これは、式がローカル変数およびグローバル変数に完全にアクセスできることを意味します。関数呼び出しやメソッド呼び出しなど、有効なPython=式を使用できます。
そのため、式は同じスコープ内にあるかのように評価されます。ローカル、クロージャ、グローバルはすべて、同じコンテキストの他のコードと同じように機能します。
詳細は リファレンスドキュメント にあります。
フォーマットされた文字列リテラルの式は、いくつかの例外を除き、括弧で囲まれた通常のPython式のように扱われます。空の式は許可されず、
lambda
式は明示的な括弧:置換式には改行を含めることができますが(たとえば、三重引用符で囲まれた文字列で)、コメントを含めることはできません。
3.6アルファビルドを試すため、 What's New In Python 3.6を読んでくださいdocumentation 。関連するドキュメントおよびPEPへのリンクを含む、すべての変更を要約します。
明確にするために、3.6はリリースされていませんyet;最初のアルファ版は2016年5月までリリースされる予定はありません。 .6リリーススケジュール を参照してください。
このPEP498にはPython <3.6へのバックポートがあることに注意してください
pip install fstring
from fstring import fstring
x = 1
y = 2.0
plus_result = "3.0"
print fstring("{x}+{y}={plus_result}")
# Prints: 1+2.0=3.0
f-stringsは、Python中括弧内の式もサポートしています。
print(f"My cool string is called {name.upper()}.")