我有一個名為my_mathsetup 里面有基本功能的模塊,例如:
def triangle(base, height):
return base*height/2
當我import my_math在終端(python3)中呼叫帶有這樣引數的函式時,它給了我答案:
>>> import my_math
>>> my_math.triangle(2, 8)
8.0
但是,如果我將base和height內部或外部的值放在my_math模塊中的函式中并嘗試使用這些值呼叫該函式,則會收到錯誤訊息:
# my_math.py
base = 3
height = 4
def triangle(base, height):
# base = 3
# height = 4
return base*height/2
# trying it at the interpreter prompt
>>> my_math.triangle(base, height)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'base' is not defined. Did you mean: 'False'?
如何讓代碼改用模塊中定義的值?
uj5u.com熱心網友回復:
一種選擇是從模塊匯入所有變數和方法,如下所示:
from my_math import *
triangle(base,height)
# returns 6
或者,您可以直接從模塊靜態參考變數:
import my_math
my_math.triangle(my_math.base, my_math.height)
# returns 6
uj5u.com熱心網友回復:
我不確定您為什么要這樣做,通常最好每次都輸入引數。
您可以為您的函式設定默認引數,如下所示:
def myFunction(value1 = 10, value2 = 10):
pass
如果沒有為它們傳遞任何值,這會將值設定為 10:更多關于這個
但據我所知,這確實行不通,每次都傳遞引數是更好的做法。
uj5u.com熱心網友回復:
在 Python 中,除非另有說明,否則變數僅在本地定義。這意味著在您的函式范圍內,未定義這些變數。將它們宣告為全域變數應該可以解決您的問題:
global base
base = 3
global height
height = 4
def triangle():
global base
global height
# base = 3
# height = 4
return base*height/2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/330883.html
上一篇:我如何創建一個函式來更改位于陣列內的物件內的屬性,在JSON中
下一篇:使用字典中的所有引陣列合評估函式
