[英]When is a function called/referred to and when is it being executed?
我對Python比較陌生,我對Python中的函數有一個(我猜)非常基本的問題。
我正在重寫基礎教程,以便真正了解更多結構,而不僅僅是使用它們。 我使用了教程中的一些基本代碼並嘗試了不同的簡單變體,並且我不完全理解結果以及何時引用函數,即何時調用其返回值,以及何時執行它。
x=6
def example():
globx = x
print(globx)
globx+=5
print(globx)
example()
這定義了函數,然后調用它來執行它,當它被執行時,它打印6然后按預期打印11。
現在:
x=6
def example():
globx = x
print(globx)
globx+=5
print(globx)
print(example())
我本來希望這打印“無”,因為print正在尋找函數的返回值來打印它,但是example()不返回值。 而是打印6,11和無。 所以我假設print(example())調用example()的返回值來打印它,但在執行函數之前。 (如果我弄錯了,請糾正我。)
即使我只是在定義函數后將返回值賦值給變量x = example(),它也會執行函數並打印6然后再打印11。
x=6
def example():
globx = x
print(globx)
globx+=5
print(globx)
x = example()
函數在寫出時是否總是被執行? (在def中的Ecxcept)有沒有辦法在沒有完全執行的情況下使用函數返回值? 例如,如果我有一個更復雜的代碼,並且在某些時候我想使用函數返回值但不希望它運行。
提前致謝!
您對函數返回的內容以及函數的作用感到困惑。
在您的情況下,您有一個具有兩個print()
語句的函數。 這些語句與函數返回的值無關,並將在函數example()
每次調用時打印相應的值。
函數的返回值是使用return
關鍵字定義的,如果未定義,則為None
。 顯然,需要執行該函數以使其返回值。
你說的話似乎總體上是正確的,即使它看起來像你期望的那樣。
通常,您可以將其視為,當函數末尾有括號時,即example()
,執行該函數。
您的上一個問題有點模糊,但您可以通過在函數內部使用return
關鍵字在某個時刻停止執行該函數。 這在例如執行一些資源密集型計算的函數中是有意義的,但偶爾也有機會采用快捷方式。
舉個例子
def calculate_thing(shortcut = False):
if shortcut:
return 3
# Resource-intensive, time-consuming calculations go here
return result_of_calculations
使用calculate_thing(shortcut=True)
調用此函數將快速返回3
,因為當我們點擊return 3
時函數停止執行。 另一方面,通過calculate_thing(shortcut=False)
或calculate_thing()
( False
是shortcut
的默認值calculate_thing()
調用它將使函數運行一段時間,進行一些計算,然后返回分配給它的任何值。變量result_of_calculations
。
函數做某事,它實際上執行一個函數。 如果您希望該功能在其完成工作時向您顯示結果,則可以打印()事物。 如果您只是希望它完成其工作並保存結果以供日后使用,則將它們返回到調用該函數的變量。 你可以做到這兩點!
def just_print(input):
print('Here is a function printing!', input)
just_print('cool!')
>> 'Here is a function printing!', 'cool!'
def return_value(input):
return 'Hello ' + input
# We can store the return for future use
save_return_val = return_value('Ari')
print(save_return_val)
>> 'Hello Ari'
# Just print it
print(return_value('Ari'))
>> 'Hello Ari'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.