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이 함수명을 통해 함수를 호출하는 것에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.