Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonコンテキスト変数


コンテキスト変数は、そのコンテキストに応じて異なる値を持つことができます。各実行スレッドが変数に対して異なる値を持つ可能性があるスレッドローカルストレージとは異なり、コンテキスト変数は1つの実行スレッド内の複数のコンテキストである可能性があります。これは、同時非同期タスクの変数を追跡するのに役立ちます。

ContextVarクラスは、コンテキスト変数を宣言して操作するために使用されます。

import contextvars
name = contextvars.ContextVar("name", default = 'Hello')

オプションのデフォルトパラメータは、現在のコンテキストで変数の値が見つからない場合にContextVar.get()によって返されます。

名前: 変数の名前。これは読み取り専用のプロパティです。

ContextVarクラスでは次のメソッドが定義されています

get() 現在のコンテキストのコンテキスト変数の値を返します。現在のコンテキストに変数の値がない場合、メソッドは-
  • 提供されている場合は、メソッドのデフォルト引数の値を返します-または

  • コンテキスト変数が1つで作成された場合はデフォルト値を返します-または

  • LookupErrorを発生させます。

set() 呼び出して、現在のコンテキストのコンテキスト変数に新しい値を設定します。
reset() コンテキスト変数を、トークンを作成したContextVar.set()が使用される前の値にリセットします。

コンテキスト変数モジュールのコンテキストクラスは、コンテキスト変数の値へのマッピングです。

Context(): 値のない空のコンテキストを作成します。

現在のコンテキストのコピーを取得するには、copy_context()関数を使用します。

run(callable、* args、** kwargs)メソッドは、runメソッドが呼び出されたコンテキストオブジェクトでcallable(* args、** kwargs)コードを実行し、実行結果を返します。 callableが行うコンテキスト変数への変更は、コンテキストオブジェクトに含まれます。このメソッドは、複数のOSスレッドから同じコンテキストオブジェクトで呼び出された場合、または再帰的に呼び出された場合に、RuntimeErrorを発生させます。

copy() はコンテキストオブジェクトの浅いコピーを返します。
context [var] は、varContextVar変数の値を返します。変数がコンテキストオブジェクトに設定されていない場合、キーエラーが発生します。
get() は、コンテキストオブジェクトに値がある場合、コンテキスト変数の値を返します。それ以外の場合は、デフォルトに戻ります。デフォルトが指定されていない場合は、Noneを返します。
iter() は、コンテキストオブジェクトに格納されている変数のイテレータを返します。
len() は、コンテキストオブジェクトに設定されている変数の数を返します。
keys() は、コンテキストオブジェクト内のすべての変数のリストを返します。
values() は、コンテキストオブジェクト内のすべての変数の値のリストを返します。
items() は、コンテキストオブジェクト内のすべての変数とその値を含む2タプルのリストを返します。

  1. Pythonで変数名を文字列として取得するにはどうすればよいですか?

    変数は実際にはオブジェクトへの名前マッピングであるため、これは実際にはPythonで行うことではありません。 Pythonで正規名を持つオブジェクトは、モジュール、関数、クラスのみです。もちろん、関数またはクラスが定義された後、またはモジュールがインポートされた後、この正規名が任意の名前空間で意味を持つという保証はありません。これらの名前は、オブジェクトの作成後に変更することもできるため、必ずしも特に信頼できるとは限りません。 変数の名前を文字列として取得する方法はまだあります。ただし、変数名を抽出するには、変数名の文字列を知っている必要があります。また、これは変数名の逆検索です。したがって

  2. PowerShellの変数

    コンピュータサイエンス(およびカジュアルコンピューティング)では、変数は、後で使用するために任意の情報を保持するメモリ内の場所です。つまり、データを出し入れするための一時的なストレージコンテナです。 Bashシェルでは、そのデータは単語(文字列)にすることができます 、コンピュータ用語で)または数値(整数 。 これまで(故意に)コンピューターで変数を使用したことはないかもしれませんが、おそらく人生の別の領域で変数を使用したことがあります。 「givemethat」や「lookatthis」などと言うときは、文法変数を使用しています(代名詞 )。 「これ」と「それ」の意味は、あなたが頭の中で描