...
For å referere til navn (variabler og funksjoner) i en annen og importert modul, så brukes altså modul-navnet og punktum som prefiks, f.eks. rpncalc4core.isOperand i if-betingelsen. Dette er i grunnen samme notasjon som brukes når en kaller operands-lista sin pop-metode. En kan tenke på lista som et eget ark med funksjoner inni, men da er en inne på objektorientering...
Importerbar kode
Code Block |
---|
# rpncalc4core.py
operands = []
def isOperand(token):
try:
float(token)
return True
except ValueError:
return False
def printOperands():
print(operands)
def popOperands(n):
size = len(operands)
if size >= n:
result = operands[size - n : size]
global operands
operands = operands[0 : size - n]
return result
else:
return None
def pushOperand(operand):
operands.append(operand)
def plus():
ops = popOperands(2)
if not (ops is None):
pushOperand(ops[0] + ops[1])
def minus():
ops = popOperands(2)
if not (ops is None):
pushOperand(ops[0] - ops[1]) |
Code Block |
---|
# rpncalc4ui.py
import rpncalc4core
def main():
while (True):
rpncalc4core.printOperands()
token = raw_input(" > ")
if rpncalc4core.isOperand(token):
operand = float(token)
rpncalc4core.pushOperand(operand)
elif token == "exit":
break
elif token == "+":
rpncalc4core.plus()
elif token == "-":
rpncalc4core.minus()
else:
print("Unsupported operator: " + token)
print("program exited")
main() |