Python関数が入力のみに基づいて出力を生成するようにするにはどうすればよいですか?

ローマ人

出力を生成するために、関数は通常、引数の値のみを使用します。ただし、関数が出力を生成するために、ファイルシステム、データベース、またはWebから何かを読み取る場合もあります。そのようなことが起こらないようにするための簡単で信頼できる方法が欲しいです。

私が見る1つの方法は、ファイルシステム、データベース、またはWebからの読み取りに使用できるPythonライブラリのホワイトリストを作成することです。しかし、それが進むべき道である場合、この(潜在的に巨大な)リストはどこで入手できますか。さらに、ファイルシステムからの読み取りに使用できるという理由だけで、ライブラリ全体を無効にしたくありません。たとえば、ユーザーがpandasライブラリを使用できるようにしたい(表形式のデータを保存および操作するため)。このライブラリを使用してファイルシステムからデータを読み取れるようにしたくありません。

この問題の解決策はありますか?

PythonNut

これに対する答えはノーです。探しているのは、をテストする関数ですfunctional purityただし、このコードに示されているように、副作用が実際に呼び出されていないことを保証する方法はありません。

class Foo(object):
    def __init__(self, x):
        self.x = x
    def __add__(self, y):
        print("HAHAHA evil side effects here...")
        # proceed to read a file and do stuff
        return self

# this looks pure...
def f(x): return x + 1

# but really...
>>> f(Foo(1))
HAHAHA evil side effects here...

オブジェクトがその動作(フィールドアクセス、呼び出し、演算子のオーバーロードなど)を再定義できる包括的な方法のため、純粋関数を不純にする入力をいつでも渡すことができます。したがって、純粋関数は、引数に対して文字通り何もしない関数だけです...一般的にあまり役に立たない関数のクラス。

もちろん、他の制限を指定できれば、これは簡単になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ユーザー入力に基づいてJButtonを生成するにはどうすればよいですか?

分類Dev

Pythonの入力に基づいて関数パラメーターを更新するにはどうすればよいですか?

分類Dev

Cの関数の関数からの入力に基づいてwhileループを終了するにはどうすればよいですか?

分類Dev

javascriptを使用して入力値に基づいて関連する数値の範囲を強調表示するにはどうすればよいですか?

分類Dev

入力パラメータの配列に基づいて関数内で関数を実行するにはどうすればよいですか?

分類Dev

JavaScriptのHTML入力に基づいてJSONを作成するにはどうすればよいですか?

分類Dev

LSTMで入力ごとに複数の出力を生成するにはどうすればよいですか?

分類Dev

現在の行の出力を前の行の出力に基づいて計算する反復関数を作成するにはどうすればよいですか?

分類Dev

別の列の値に基づいて列に入力するにはどうすればよいですか?

分類Dev

関数の出力の名前が入力に関連していることを確認するにはどうすればよいですか?

分類Dev

Pythonの行の値に基づいてID列を生成するにはどうすればよいですか?

分類Dev

入力されている入力に基づいて入力のタイトルを変更するにはどうすればよいですか?

分類Dev

elixirの属性に基づいて関数を定義するにはどうすればよいですか?

分類Dev

渡された引数に基づいて関数からの出力を動的に変更するにはどうすればよいですか?

分類Dev

入力に基づいて垂直グラフを作成するにはどうすればよいですか?

分類Dev

ユーザーから入力を取得し、その入力に基づいて関数を呼び出すにはどうすればよいですか?

分類Dev

アクティビティの入力rvtFileに基づいて出力ファイル名を定義するにはどうすればよいですか?

分類Dev

`gpg2`が同じ入力に対して常に同じ出力を生成するように強制するにはどうすればよいですか?

分類Dev

ユーザー入力に基づいて関数を作成するにはどうすればよいですか?

分類Dev

ユーザー入力に基づいて日付のリストを生成するにはどうすればよいですか?

分類Dev

新しい列の条件に基づいて値を生成するにはどうすればよいですか?

分類Dev

Cythonを使用してC関数の入力/出力としてPython変数を使用するにはどうすればよいですか?

分類Dev

ユーザー入力に基づく関数を使用してデータフレームを作成するにはどうすればよいですか?

分類Dev

現在の色に基づいて反対の色を生成するにはどうすればよいですか?

分類Dev

別の数に基づいて数にゼロを追加するにはどうすればよいですか?

分類Dev

Python:特定のキー値に基づいて辞書から実際の値のみを出力するにはどうすればよいですか?

分類Dev

htmlフォームの入力に基づいて配列内のアイテムの数を設定するにはどうすればよいですか?

分類Dev

関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

分類Dev

関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

Related 関連記事

  1. 1

    ユーザー入力に基づいてJButtonを生成するにはどうすればよいですか?

  2. 2

    Pythonの入力に基づいて関数パラメーターを更新するにはどうすればよいですか?

  3. 3

    Cの関数の関数からの入力に基づいてwhileループを終了するにはどうすればよいですか?

  4. 4

    javascriptを使用して入力値に基づいて関連する数値の範囲を強調表示するにはどうすればよいですか?

  5. 5

    入力パラメータの配列に基づいて関数内で関数を実行するにはどうすればよいですか?

  6. 6

    JavaScriptのHTML入力に基づいてJSONを作成するにはどうすればよいですか?

  7. 7

    LSTMで入力ごとに複数の出力を生成するにはどうすればよいですか?

  8. 8

    現在の行の出力を前の行の出力に基づいて計算する反復関数を作成するにはどうすればよいですか?

  9. 9

    別の列の値に基づいて列に入力するにはどうすればよいですか?

  10. 10

    関数の出力の名前が入力に関連していることを確認するにはどうすればよいですか?

  11. 11

    Pythonの行の値に基づいてID列を生成するにはどうすればよいですか?

  12. 12

    入力されている入力に基づいて入力のタイトルを変更するにはどうすればよいですか?

  13. 13

    elixirの属性に基づいて関数を定義するにはどうすればよいですか?

  14. 14

    渡された引数に基づいて関数からの出力を動的に変更するにはどうすればよいですか?

  15. 15

    入力に基づいて垂直グラフを作成するにはどうすればよいですか?

  16. 16

    ユーザーから入力を取得し、その入力に基づいて関数を呼び出すにはどうすればよいですか?

  17. 17

    アクティビティの入力rvtFileに基づいて出力ファイル名を定義するにはどうすればよいですか?

  18. 18

    `gpg2`が同じ入力に対して常に同じ出力を生成するように強制するにはどうすればよいですか?

  19. 19

    ユーザー入力に基づいて関数を作成するにはどうすればよいですか?

  20. 20

    ユーザー入力に基づいて日付のリストを生成するにはどうすればよいですか?

  21. 21

    新しい列の条件に基づいて値を生成するにはどうすればよいですか?

  22. 22

    Cythonを使用してC関数の入力/出力としてPython変数を使用するにはどうすればよいですか?

  23. 23

    ユーザー入力に基づく関数を使用してデータフレームを作成するにはどうすればよいですか?

  24. 24

    現在の色に基づいて反対の色を生成するにはどうすればよいですか?

  25. 25

    別の数に基づいて数にゼロを追加するにはどうすればよいですか?

  26. 26

    Python:特定のキー値に基づいて辞書から実際の値のみを出力するにはどうすればよいですか?

  27. 27

    htmlフォームの入力に基づいて配列内のアイテムの数を設定するにはどうすればよいですか?

  28. 28

    関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

  29. 29

    関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

ホットタグ

アーカイブ