python이 함수 이름을 통해 함수를 호출하는 몇 가지 장면

설명
앞서 시스템 명령을 어떻게 실행하는지 Python 실행 시스템 명령 자습서 라고 썼다.
시스템 명령을 실행하는 것 외에 우리는 때때로 동적으로python 코드를 실행해야 한다. 경험이 있는 친구들은 내장 함수 eval을 사용하여 이 수요를 실현할 수 있다는 것을 알게 될 것이다. 예를 들어 eval("print(_file__)"),이것은 그래도 비교적 간단한 것이다.
그러나 함수를 동태적으로 집행하려면 자료가 적어지기 때문에 이번에는 이 수요가 어떻게 실현되는지 봐야 한다.
2. eval을 통해 실현
2.1 eval을 통해 같은 클래스의 함수를 호출

class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "self.be_called_function()",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  be_called_function_name = self.config_dict["be_called_function_name"]
  #  。 , 
  #  "be_called_function_name" "be_called_function", eval(be_called_function_name)()
  eval(be_called_function_name)
  pass

 def be_called_function(self):
  print("here is be_called_function.")

if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
2.2 eval을 통해 같은 파일의 일급 함수를 호출합니다

class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "be_called_function()",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  be_called_function_name = self.config_dict["be_called_function_name"]
  #  。 , 
  #  "be_called_function_name" "be_called_function", eval(be_called_function_name)()
  eval(be_called_function_name)
  pass

def be_called_function():
 print("here is be_called_function.")

if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
3. getattr를 통해 실현
3.1 함수 이름을 통해 같은 클래스의 함수를 호출

class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "be_called_function",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  # getaattr(module_name, function_name),module_name self 
  be_called_function = getattr(self, self.config_dict["be_called_function_name"])
  #  。 , 
  be_called_function()
  pass

 def be_called_function(self):
  print("here is be_called_function.")


if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
3.2 함수 이름을 통해 다른 종류의 함수를 호출한다

class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "be_called_function",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  # getaattr(module_name, function_name),module_name 
  testb_obj = TestB()
  be_called_function = getattr(testb_obj, self.config_dict["be_called_function_name"])
  #  。 , 
  be_called_function()
  pass


class TestB:
 def be_called_function(self):
  print("here is be_called_function.")


if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
3.3 함수 이름을 통해 같은 파일의 일급 함수를 호출한다

import sys


class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "be_called_function",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  # getaattr(module_name, function_name),module_name 
  module_name = sys.modules['__main__']
  be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])
  #  。 , 
  be_called_function()
  pass


def be_called_function():
 print("here is be_called_function.")


if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
3.4 함수 이름을 통해 다른 파일에 호출되는 일급 함수

class TestA:
 def __init__(self):
  self.config_dict = {
   "be_called_function_name": "be_called_function",
  }
  pass

 def active_call_function(self):
  print("here is active_call_function.")
  # getaattr(module_name, function_name),module_name 
  # __import__() 
  module_name = __import__("test_call_function_by_string1")
  be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])
  #  。 , 
  be_called_function()
  pass


if __name__ == "__main__":
 obj = TestA()
 obj.active_call_function()
이상은python이 함수명을 통해 함수를 호출하는 몇 가지 장면에 대한 상세한 내용입니다. 더 많은python이 함수명을 통해 함수를 호출하는 것에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기