ExternalFunction[sys,"f"]
外部評価器 sys で定義された"f"という名前の外部関数を表す.
ExternalFunction[session,"f"]
指定されたExternalSessionObjectの外部関数"f"を表す.
ExternalFunction[sys,"code"]
コードの断片"code"で定義された外部関数を表す.
ExternalFunction[obj,"method"]
ExternalObjectにバインドされたメソッドを表す.
ExternalFunction
外部評価器のリスト »ExternalFunction[sys,"f"]
外部評価器 sys で定義された"f"という名前の外部関数を表す.
ExternalFunction[session,"f"]
指定されたExternalSessionObjectの外部関数"f"を表す.
ExternalFunction[sys,"code"]
コードの断片"code"で定義された外部関数を表す.
ExternalFunction[obj,"method"]
ExternalObjectにバインドされたメソッドを表す.
詳細
- ExternalFunction[sys,"code"]中の"code"は,一般に,外部システムの純関数またはラムダ関数である.
- ExternalFunction[sys, …]の sys には以下を使うことができる.
-
"Python" Python "NodeJS" Node.jsを介して実行されるJavaScript "Julia" Julia "Ruby" Ruby "R" R "Jupyter" Jupyterカーネル
例題
すべて開く すべて閉じる例 (3)
abs = ExternalFunction["Python", "abs"]abs[-2.7]session = StartExternalSession["Python"]addtwo = ExternalFunction[session, "def addtwo(x,y):
return x+y"
]addtwo[4, 5]DeleteObject[session]session = StartExternalSession["Python"]module = ExternalEvaluate[session, ExternalOperation["Import", "datetime"]]ExternalFunctionを使ってモジュールからメソッドを実行する:
ExternalFunction[module, "date"][2012, 10, 10]DeleteObject[session]スコープ (6)
times = ExternalFunction["Python", "lambda x,y: x * y"]times[2, 3]list = ExternalFunction["Python", "list"]list["hello"]session = StartExternalSession["Python"]ExternalEvaluate[session, "from cmath import phase
def arg(re,im):
c=complex(re,im)
return phase(c)"]Pythonのphase関数を介して複素数の引数を計算する:
z = 1.2 + 3.4I;
ExternalFunction[session, "arg"][Re[z], Im[z]]DeleteObject[session]nodejs = StartExternalSession["NodeJS"]NodeJSでは,関数を定義するだけでは十分ではない.ExternalFunctionが呼出し可能な関数として認識するように明示的に関数を返すことが必要である:
incr = ExternalFunction[nodejs, "function increment(x) {return x+1}; increment"]incr[3]DeleteObject[nodejs]julia = StartExternalSession["Julia"]addFive = ExternalFunction[julia, "f(x) = x + 5"]addFive[10]DeleteObject[julia]ExternalFunctionはExternalEvaluateと同じコマンド指定をサポートする:
func = ExternalFunction["Python", <|"Command" -> "range", "ReturnType" -> "String"|>]func[2]特性と関係 (5)
ExternalOperationを使ってExternalFunctionから操作をが抽出できる:
op = ExternalOperation[ExternalFunction["Python", "max"]]ExternalEvaluateを使って操作を実行する:
ExternalEvaluate["Python", op -> {1, 2}]ExternalOperationはExternalFunctionの引数として使うことができる:
ExternalFunction["Python", "len"][ExternalOperation["Eval", "[1, 2]"]]op = ExternalOperation["Call", ExternalFunction["Python", "len"], ExternalOperation["Eval", "[1, 2]"]]これはExternalEvaluateで実行できる:
ExternalEvaluate["Python", op]ExternalEvaluate["Python", "len((1, 2, 3))"]session = StartExternalSession["Python"]ExternalFunctionとExternalObjectを作成する:
func = ExternalFunction[session, "max"]obj = ExternalEvaluate[session, <|"Command" -> "[1, 2,3]", "ReturnType" -> "ExternalObject"|>]ExternalObjectはExternalFunctionの引数として使うことができる:
func[obj]ExternalEvaluate["Python", "len((1, 2, 3))"]DeleteObject[session]session = StartExternalSession["Python"]ExternalObjectを作成する:
module = ExternalEvaluate[session, ExternalOperation["Import", "datetime"]]ExternalFunctionを使ってこのオブジェクトにメソッドを実行する:
ExternalFunction[module, "date"][2012, 10, 10]DeleteObject[session]session = StartExternalSession["Python"]日付時刻モジュールのためのExternalObjectを作成する:
datetime = ExternalEvaluate[session, ExternalOperation["Import", "datetime"]]現行の日付でExternalObjectを作成し,timedeltaで別のオブジェクトを作成する:
{now, tenhours} = {datetime["datetime", "now" -> {}, ExternalObject], datetime["timedelta" -> {"hours" -> 10}, ExternalObject]}ExternalFunctionを使ってオブジェクトを送り返す:
ExternalFunction[session, "lambda obj, n: obj + n"][now, tenhours]ExternalEvaluate の呼出しを使っても同じことができる:
ExternalEvaluate[session, "lambda obj, n: obj + n" -> {now, tenhours}]"ReturnType"を使ってStringを実行する:
ExternalEvaluate[session, <|"Command" -> "lambda obj, n: obj + n", "Arguments" -> {now, tenhours}, "ReturnType" -> "String"|>]DeleteObject[session]アプリケーション (3)
session = StartExternalSession["Python"]ExternalEvaluate[session, "def collatz(n):
if n%2 == 0:
r = int(n/2)
else:
r = 3*n+1
return r
"]このPython関数からExternalFunctionを作る:
collatz = ExternalFunction[session, "collatz"]NestWhileList[collatz, 100, # =!= 1&]session = StartExternalSession["Python"]PythonのNumPyパッケージをインポートし,追加機能をロードする:
ExternalEvaluate[session, "import numpy as np
def fun(list):
result = np.array(list).reshape(3,4)
return result
"]ExternalFunction[session, "fun"][Range[12]]Normal[%]Partition[Range[12], 4]session = StartExternalSession["Python"]URLから画像をインポートしてそれを回転させるPythonの関数を定義する:
ExternalEvaluate[session,
"import io
import requests
from PIL import Image
def rotateimage(url,angle):
response = requests.get(url)
img = Image.open(io.BytesIO(response.content))
img = img.rotate(angle)
b = io.BytesIO()
img.save(b, 'PNG')
return b.getvalue()"]結果はByteArrayである:
ba = ExternalFunction[session, "rotateimage"]["http://www.wolfram.com/language/img/wolfram-language-logo-home.png", 45]ByteArrayをインポートして回転された画像を表示する:
ImportByteArray[ba, "PNG"]
DeleteObject[session]関連項目
ExternalEvaluate ExternalObject ExternalOperation StartExternalSession APIFunction FunctionCompile CloudFunction Function
形式: JavaScriptExpression PythonExpression
外部評価システム: Python NodeJS Julia Java Octave Shell Ruby R Jupyter SQL SQL-JDBC CUDA
Function Repository: ToPythonFunction
関連するガイド
関連するワークフロー
テキスト
Wolfram Research (2019), ExternalFunction, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExternalFunction.html (2024年に更新).
CMS
Wolfram Language. 2019. "ExternalFunction." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/ExternalFunction.html.
APA
Wolfram Language. (2019). ExternalFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ExternalFunction.html
BibTeX
@misc{reference.wolfram_2026_externalfunction, author="Wolfram Research", title="{ExternalFunction}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ExternalFunction.html}", note=[Accessed: 08-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_externalfunction, organization={Wolfram Research}, title={ExternalFunction}, year={2024}, url={https://reference.wolfram.com/language/ref/ExternalFunction.html}, note=[Accessed: 08-September-2026]}