簡體   English   中英

Python:如何在數組中創建函數

[英]Python: how to make functions in arrays

我試圖使我的代碼更動態,更小,所以我嘗試使用一些數組,但是我需要在數組中放置一個函數。 我聽說過lambda,但問題是它不需要返回任何值,但確實需要設置一個值。 這是我嘗試過但沒有起作用的方法:

variableArray = [lambda: value = '2' if variable == 1 else None,lambda: value = '3' if variable == 1 else None]
    for k in range(len(variableArray)):
        print(variableArray[k](2))

但是我無法使用此方法設置值,也無法找到其他任何方法。 所以還有其他方法可以與我嘗試的方法一起工作嗎?

Python區分表達式語句 (這里是復合語句 )。 表達式不能包含任何語句。 作業陳述 lambda表達式 ,因此無法使用具有該語法的lambda

但是,使用normal def不會有太大變化:

def function():
    value = '2' if variable == 1 else None

在這里, function正在創建一個新的局部變量value ,為其分配值,然后將其刪除。 如果要修改非局部變量,則必須將其聲明為global

def function():
    global value
    value = '2' if variable == 1 else None

請注意,您可以將用def定義的函數放入列表中:

some_list = [function, #other functions]

但是,您應盡量避免使用全局變量。 您應該更喜歡函數參數和返回值,以在函數和程序的其余部分之間進行通信。

特別是您可能想編寫如下函數:

variableArray = [lambda arg: '2' if arg == 1 else None, lambda arg: '3' if arg == 1 else None]

然后,您可以執行以下操作:

for func in variableArray:
    value = func(2)

這將與您的代碼具有相同的效果。


請注意, lambda應該具有一個參數,否則用(2)調用它們將引發錯誤。

數組中的功能是可能的。 但是您不能將任務放在lambda中。 盡管傳遞了2參數,但lambda並沒有接受任何參數。

for k in range(len(variableArray)):是浪費的錯誤形式。 嘗試一下:

for k in variableArray:
    print(k(2))

至於功能,也許您想要這個?

variableArray = [lambda x: '2' if x == 1 else None, lambda x: '3' if x == 1 else None]

尚不清楚您需要什么,但也許這更接近您的需求。


如果要從函數列表中獲取值列表,並將單個參數傳遞給函數列表,請嘗試以下操作:

functions = [lambda x: '2' if x == 1 else None, lambda x: '3' if x == 1 else None]
values = [function(2) for function in functions]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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