簡體   English   中英

在python中調用函數時替換函數的變量?

[英]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

Python 中的函數

*在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM