簡體   English   中英

如何查看python返回了哪個function?

[英]How to check which function has been returned in python?

我有兩種方法采用不同數量的 arguments。這是兩個函數:

def jumpMX(self,IAS,list):
    pass
def addMX(self,IAS):
    pass

我正在使用 function,它將這些函數之一返回給 main。我已將返回的 function 存儲在一個名為 operation 的變量中。 由於兩者的參數個數不同,如何識別返回的是哪個function?

if(operation == jumpMX):
    operation(IAS,list)
elif(operation == addMX):
    operation(IAS)

這個的語法是什么?提前致謝!

您可以通過其__name__屬性識別 function:

def foo():
  pass

print(foo.__name__)

>>> foo

...或者你的情況:

operation.__name__ #will return either "jumpMX" or "addMX" depending on what function is stored in operation

這是一個演示,您可以根據需要進行修改:

import random #used only for demo purposes 

def jumpMX(self,IAS,list):
    pass
def addMX(self,IAS):
    pass


def FunctionThatWillReturnOneOrTheOtherOfTheTwoFunctionsAbove(): 
    # This will randomly return either jumpMX()
    # or addMX to simulate different scenarios
    funcs = [jumpMX, addMX]
    randomFunc = random.choice(funcs)
    return randomFunc

operation = FunctionThatWillReturnOneOrTheOtherOfTheTwoFunctionsAbove()
name = operation.__name__

if(name == "jumpMX"):
    operation(IAS,list)

elif(name == "addMX"):
    operation(IAS)

您可以像 python 中的大多數對象一樣導入這些函數並測試是否相等。

類.py

class MyClass:
    
    @staticmethod
    def jump(self, ias, _list):
        pass
    
    @staticmethod
    def add(self, ias):
        pass

主程序

from classes import MyClass


myclass_instance = MyClass()
operation = get_op()  # your function that returns MyClass.jump or MyClass.add 

if operation == MyClass.jump:
    operation(myclass_instance, ias, _list)
elif operation == MyClass.add:
    operation(myclass_instance, ias)

但是,我必須強調,我不知道你想要完成什么,這似乎是一種非常人為的方式來做這樣的事情。

此外,您的 python 代碼示例格式不正確。 請參閱PEP-8 ,它提出了 python 的標准樣式指南。

暫無
暫無

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

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