注册 登录
编程论坛 Python论坛

python3有没有使用变量代替函数名的方法

eakit67 发布于 2019-01-07 22:18, 2940 次点击
python中有没有方法实现下面的代码?
就是用变量代替函数名,使用变量名也能实现函数的功能。


def test1():
    print("----1----")

local_name = test1

local_name()
7 回复
#2
外部三电铃2019-01-07 22:23
没问题啊,你的代码完全可以正常运行
下面是在ipython里测试运行的:
mycomputer me$ ipython
Python 3.7.1 (default, Nov  4 2018, 00:41:56)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.1.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: def test1():
   ...:     print("----1----")
   ...:
In [2]: test1()
----1----
In [3]: local_name = test1
In [4]:  local_name()
----1----
In [5]:

#3
eakit672019-01-07 23:44
回复 2楼 外部三电铃
代码错了。
应该是下面的。
加个双引号,字符串。。
def test1():
    print("----1----")

local_name = "test1"

local_name()
#4
外部三电铃2019-01-07 23:50
def test1():
    print("----1----")

local_name = eval("test1")

local_name()
#5
eakit672019-01-07 23:55
有这样一个需求,实现不了。
程序代码:

request = "/test1.py"

urls = [
    ("/test1.py", "test1"),
    ("/test2.py", "test2"),
]

def test1():
    print("----1----")
   
def test2():
    print("----2----")

   
for url, handler in urls:
    if request == url:
        handler()
#6
外部三电铃2019-01-08 00:01
这很容易实现,看最后一行:
程序代码:
request = "/test1.py"

urls = [
    ("/test1.py", "test1"),
    ("/test2.py", "test2"),
]

def test1():
    print("----1----")
  

def test2():
    print("----2----")

  

for url, handler in urls:
    if request == url:
        eval(handler)()

#7
eakit672019-01-08 00:09
回复 6楼 外部三电铃
可以了。十分感谢
#8
春暖亦寒2019-01-13 21:44
回复 楼主 eakit67
python3本身就支持这种的啊,你的这种写法就可以运行
1