Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义函数和它';python中基于配置的s参数_Python_Python 3.x - Fatal编程技术网

定义函数和它';python中基于配置的s参数

定义函数和它';python中基于配置的s参数,python,python-3.x,Python,Python 3.x,我必须用类及其函数编写一个python脚本。功能参数应根据配置而变化。在“C”语言中,它可以使用#ifdef或#if宏实现 同样,我如何在python中实现。因为我在python中找不到任何替代#ifdef的东西。我想要像这样的东西 #ifdef MULTIPLE_APPLICATION def check_actions(self, machine, application_instance, error_limit) #else def check_actions(self, machine

我必须用类及其函数编写一个python脚本。功能参数应根据配置而变化。在“C”语言中,它可以使用#ifdef或#if宏实现

同样,我如何在python中实现。因为我在python中找不到任何替代#ifdef的东西。我想要像这样的东西

#ifdef MULTIPLE_APPLICATION
def check_actions(self, machine, application_instance, error_limit)
#else
def check_actions(self, machine, error_limit)
    .......
    .......

python是一种纯OOP语言!没有#if宏。这里的想法完全不同。你可以用很多方法来解决它。其中一种简单的方法是定义外部函数和两个嵌套的内部函数,并调用其中一个与传递给外部函数的var相关的内部函数。见下文:

def check_action(application_stat, *args, **kwargs):
    def check_single_app_action(*args, **kwargs):
        #do some thing
        return
    def check_multi_app_action(*args, **kwargs):
        #do some work
        return
    if application_stat=='single':
        check_single_app_action(args, kwargs) 
    else:
        check_multi_app_action(args, kwargs)
    return

python是一种纯OOP语言!没有#if宏。这里的想法完全不同。你可以用很多方法来解决它。其中一种简单的方法是定义外部函数和两个嵌套的内部函数,并调用其中一个与传递给外部函数的var相关的内部函数。见下文:

def check_action(application_stat, *args, **kwargs):
    def check_single_app_action(*args, **kwargs):
        #do some thing
        return
    def check_multi_app_action(*args, **kwargs):
        #do some work
        return
    if application_stat=='single':
        check_single_app_action(args, kwargs) 
    else:
        check_multi_app_action(args, kwargs)
    return

Python“def”只是一个语句(“命令”),用于为函数对象指定名称。因此“def”可以像其他语句一样有条件地执行。您可以使用
if-else
station来执行此操作,但是在Python中不会这样做,您应该使用某种类型的默认参数。@faressalem我已经看到了对我的用例不有用的处理方法。调试是在编译过程中使用-o选项进行的,这在我的例子中是不存在的。@MichaelButscher您能详细说明一下吗。因为我是pythonA的初学者,Python“def”只是一个语句(“命令”),用于为函数对象指定名称。因此“def”可以像其他语句一样有条件地执行。您可以使用
if-else
station来执行此操作,但是在Python中不会这样做,您应该使用某种类型的默认参数。@faressalem我已经看到了对我的用例不有用的处理方法。调试是在编译过程中使用-o选项进行的,这在我的例子中是不存在的。@MichaelButscher您能详细说明一下吗。因为我是初学者python@Cool_Binami,这是最接近c类代码的解决方案。为什么?因为对于这两个内部函数(check_multi_app_action和check_single_app_action),解释器在运行这段代码时根本不会构造它们,只有在if else中调用时,运行时构造函数才会构建它们并将函数绑定到它们的名称。所以,从面向对象的角度讲,我们构建对象并不是说我们需要它们(函数就是对象)是好的luck@Cool_Binami,这是最接近c类代码的解决方案。为什么?因为对于这两个内部函数(check_multi_app_action和check_single_app_action),解释器在运行这段代码时根本不会构造它们,只有在if else中调用时,运行时构造函数才会构建它们并将函数绑定到它们的名称。所以,从面向对象的角度讲,我们不需要构建对象来告诉我们需要它们(函数就是对象)。祝你好运