Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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/17.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
当我使用def函数[Python]时,如何使用变量_Python_Python 3.x - Fatal编程技术网

当我使用def函数[Python]时,如何使用变量

当我使用def函数[Python]时,如何使用变量,python,python-3.x,Python,Python 3.x,我有个小问题。当我使用def创建一个新函数时,我希望根据某个变量在函数末尾更改I。例如: import time i = 2 def Happy_1(): print("Happy Brithday to you") time.sleep(1) print("Happy Brithday to you") time.sleep(1) print("Happy Brithday dear Paul") time.sleep(1) prin

我有个小问题。当我使用
def
创建一个新函数时,我希望根据某个变量在函数末尾更改
I
。例如:

import time

i = 2

def Happy_1():
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday dear Paul")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("END")

def Happy_2():
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday dear Peter")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("END")

Happy_("i or some variable")()
有可能做点什么吗? 谢谢

您可以使用:

locals()["Happy_" + i]()


locals()

import time

i = 2

def Happy_1():
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday dear Paul")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("END")

def Happy_2():
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("Happy Brithday dear Peter")
    time.sleep(1)
    print("Happy Brithday to you")
    time.sleep(1)
    print("END")

def error():
    print('No such function!')

print locals().get('Happy_{}'.format(i), error)()
def happy(i):
    names = ['Paul', 'Peter'] 
    ...
    print('Happy birthday to {}'.format(names(i)))

感谢@Daniel Roseman指出这一点

Python之禅-简单比复杂好。

请检查这个代码

  • 函数Happy接受一个参数。因此不需要编写两个函数

输出:

C:\Users\dinesh_pundkar\Desktop>python demo.Py
Happy Brithday to you
Happy Brithday to you
Happy Brithday dear Peter
Happy Brithday to you
END

为什么不把它作为函数的参数呢?因为我调用函数Happy_i,我不想打印。这只是个例子,但我解释错了,对不起。谢谢你的反应。是的,我想调用函数Happy_1,Happy_2。。。。快乐,取决于变量。非常感谢你
import time

i = 2

def Happy(i):

     if i == 1:
         print("Happy Brithday to you")
         time.sleep(1)
         print("Happy Brithday to you")
         time.sleep(1)
         print("Happy Brithday dear Paul")
         time.sleep(1)
         print("Happy Brithday to you")
         time.sleep(1)
         print("END")
     elif i == 2:
         print("Happy Brithday to you")
         time.sleep(1)
         print("Happy Brithday to you")
         time.sleep(1)
         print("Happy Brithday dear Peter")
         time.sleep(1)
         print("Happy Brithday to you")
         time.sleep(1)
         print("END")

Happy(i)
C:\Users\dinesh_pundkar\Desktop>python demo.Py
Happy Brithday to you
Happy Brithday to you
Happy Brithday dear Peter
Happy Brithday to you
END