[英]Replace variable of a function while calling it in python?
對不起,我的英語不好。
有沒有辦法從外部替換方法的變量?
假設我有兩個文件 app.py 和 try.py。
在應用程序中 -
def call():
c=5
return c
在嘗試 -
from app import *
c=1000
d=call()
print(d)
當我運行 try 時,我希望輸出為 1000 而不是 6。有什么辦法可以做到這一點?
我不知道動態更改c
任何方法。 Python 將c = 5
編譯為 LOAD_CONST 操作代碼,如反匯編中所示。 更改該操作代碼需要,嗯,.... 我不知道。
>>> from dis import dis
>>> def call():
... c=5
... return c
...
>>> dis(call)
2 0 LOAD_CONST 1 (5)
2 STORE_FAST 0 (c)
3 4 LOAD_FAST 0 (c)
6 RETURN_VALUE
不過,你可以猴子補丁。 編寫您自己的call
實現並在程序開始時動態分配它。
import app
# from app, a reimplementation of call
def my_app_call_impl(c=1000):
return c
app.call = my_app_call_impl
向函數添加 c 參數並像這樣使用它
應用程序文件
def call(c):
return c
第二個文件
from app import *
c = 1000
d = call(c)
print(d)
如果你想讓 c 有一個默認值,那么 app 文件應該是這樣的
def call(c = 5):
您可以為調用函數定義參數:
應用程序.py:
def call(c): # one parameter, c
return c
嘗試.py
from app import *
c = 1000
d = call(c) # function called with c as an argument
print(d) # 1000
您還可以使用 5 作為默認值:
應用程序
def call(c = 5):
return c
嘗試.py
from app import *
d = call()
print(d) # 5
*在 app.py 中:*
def call(c=5):
return c
*在try.py中:*
from app import *
d=call(1000)
print(d)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.