isinstance可用于检查作为第一个参数的对象是否是作为第二个参数的classinfo类的实例或子类。
a = 1
b = [1]
isinstance(a,list)
isinstance(b,list)
是否有类似的方法来检查操作员是否在Python中进行验证?像
isoperator('=')
isoperator(':=')
isoperator('<-')
我正在尝试为Python初学者构建在线执行器。
当他们这样输入时
他们会得到提示,不支持运算符,而不是当前的错误消息。
答案 0 :(得分:1)
这可以通过将自定义函数包装在python内置的operator
模块周围来实现。值得注意的是,可以将运算符输入为字符串或lambda,因为我可以任意选择字符串。
import operator
import re
def test_operator(obj = [6], op_in = '> 1'):
"""
returns true if operator can be performed, else false
"""
# Use regex to parse the pattern
pattern_funct = re.compile('[><=]+')
pattern_num = re.compile('[0-9]+')
# Access values
funct = ''.join(pattern_funct.findall(op_in))
num = float(''.join(pattern_num.findall(op_in)))
# Lookup the operator function
ops = {
">": operator.gt,
">=": operator.ge,
"<": operator.lt,
"<=": operator.le,
"=": operator.eq,
}
op_func = ops[funct]
# Try to perform
print(f'Trying `{obj}` with {op_in}:')
try:
op_func(obj, num)
return True
except TypeError:
return False
# Next!
x =[3]
print(test_operator(x,'>= 7 '), '\n' )
# False
print(test_operator(7,'>= 7 '))
# True
答案 1 :(得分:-1)
.isalpha() 如果字符类似于“hello”则返回 True,否则返回 False 则字符类似于“+”。所以:
"+".isalpha()
返回假
"hi".isalpha()
返回 True
def isOperand(ch):
return ch.isalpha()
def isOperator(ch):
return True if ch.isalpha==False