os.system () выполняет команду, указанную в качестве аргумента в подоболочке. Это означает, что он запускает новый процесс для выполнения команды и не разделяет переменные вызывающего процесса. То, чего вы хотите достичь, лучше сделать с помощью классов и функций.
Предполагая, что у вас есть calc.py и main.py в одной и той же папке, вот простой пример того, как сделать это с помощью функций. Обратите внимание, что этот пример только для объяснения, он использует плохие методы программирования, такие как глобальные переменные, где их можно избежать.
calc.py
var1 = None
var2 = None
def set_variables(a,b):
global var1, var2
var1 = a
var2 = b
def calculate(s):
if s=='add':
print var1 + var2
elif s=='sub':
print var1 - var2
elif s=='div':
print var1/var2
elif s=='mul':
print var1*var2
else:
print "Invalid Operation"
main.py
from calc import *
set_variables(4,5)
calculate('add')
raw_input()
Вы можете видеть, как мы вызываем код в calc.py
из main.py
, не вызывая никакого нового процесса.
Вот еще один пример использования классов. Это чище, лучше структурировано и не использует плохие методы, такие как глобальные переменные.
calc_class.py
class Calculator:
def __init__(self,s):
#init code
self.s = s
def __str__(self):
return self.s
def add(self,a,b):
return (a + b)
def sub(self,a,b):
return (a-b)
def div(self,a,b):
return (a/b)
def mul(self,a,b):
return (a*b)
main_class.py
from calc_class import *
calc = Calculator('My Calc')
print calc.add(40,2)
print "My name is %s "%calc
Использование -
d: \ vikesh \ personal \ stuff> python main.py
9
d: \ vikesh \ personal \ stuff> python main_class.py
42
Меня зовут Мой Calc