iT邦幫忙

0

python function to string

  • 分享至 

  • xImage

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)}
franx0722 iT邦新手 2 級 ‧ 2022-05-27 08:36:03 檢舉
參數沒給阿
franx0722 iT邦新手 2 級 ‧ 2022-05-27 08:39:24 檢舉
既然要只要字串 為何不直接 return str(i+1) ?
貓虎皮 iT邦新手 3 級 ‧ 2022-05-27 08:42:49 檢舉
我要的是函式內容的字串
而不是輸出結果轉自串
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2022-05-27 08:24:54
最佳解答

請教這麼做的用意是什麼?

https://ithelp.ithome.com.tw/upload/images/20220527/200017877vhRbVS0QL.png

貓虎皮 iT邦新手 3 級 ‧ 2022-05-27 08:51:52 檢舉

謝謝,成功了!

貓虎皮 iT邦新手 3 級 ‧ 2022-05-27 09:00:53 檢舉

比如說我要將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)

https://ithelp.ithome.com.tw/upload/images/20220527/200017873dqieiqAOh.png

今天又長見識了

我要發表回答

立即登入回答