python中如果使用:
def x(i):
return(i+1)
print(str(x)) # <function x at 0x...>
便會印出<function x at 0x00000203A320DD38>
,
而不是def x(i): return(i+1)
。
那該如何在python中取得函式「內容」的字串?
又或是python沒有辦法?
舉例js:
function x(i){return(i+1)}
console.log(x.toString()); // function x(i){return(i+1)}
請教這麼做的用意是什麼?
謝謝,成功了!
比如說我要將function內容存入json中,
那就必須先轉成string才有辦法。
雖然這樣無法在各語言間溝通,
但至少在py間的溝通與資料保存上是有幫助的。
舉一個function存入json的例子:
# a.py
import inspect
import json
def x(i):
return(i+1)
x_str = inspect.getsource(x)
file = open('function.json', 'w')
file.write(json.dumps({'x': x_str}))
file.close()
# b.py
import json
file = open('function.json', 'r')
file_inner = file.read()
file.close()
functionData = json.loads(file_inner)
i = 0
exec(functionData['x']+'\ni = x(i)')
print(i)
今天又長見識了