파이썬 소스 코드를 여러 파일로 분할 하시겠습니까?
여러 파일로 분리하려는 코드가 있습니다. MATLAB에서는 단순히 .m
파일을 호출 할 수 있으며 , 특별히 정의되지 않은 한 호출 된 코드의 일부인 것처럼 실행됩니다. 예제 (편집 됨) :
test.m (matlab)
function [] = test()
... some code using variables ...
test2
test2.m (matlab)
... some more code using same variables ...
호출 test
은 test2의 코드와 함께 테스트 코드를 실행합니다.
파이썬 ... some more code ...
이 외부 파일 에을 넣는 비슷한 방법 이 있습니까?
저는 지금 파이썬에서 모듈 사용법을 연구하고 있으며 두 가지 관점에서 Markus가 위의 주석 ( "모듈에 포함 된 변수를 가져 오는 방법")에서 묻는 질문에 대답 할 것이라고 생각했습니다.
- 변수 / 함수 및
- 클래스 속성 / 메서드.
다음은 Markus에 대한 변수 재사용을 보여주기 위해 기본 프로그램 f1.py를 다시 작성하는 방법입니다.
import f2
myStorage = f2.useMyVars(0) # initialze class and properties
for i in range(0,10):
print "Hello, "
f2.print_world()
myStorage.setMyVar(i)
f2.inc_gMyVar()
print "Display class property myVar:", myStorage.getMyVar()
print "Display global variable gMyVar:", f2.get_gMyVar()
재사용 가능한 모듈 f2.py를 다시 작성하는 방법은 다음과 같습니다.
# Module: f2.py
# Example 1: functions to store and retrieve global variables
gMyVar = 0
def print_world():
print "World!"
def get_gMyVar():
return gMyVar # no need for global statement
def inc_gMyVar():
global gMyVar
gMyVar += 1
# Example 2: class methods to store and retrieve properties
class useMyVars(object):
def __init__(self, myVar):
self.myVar = myVar
def getMyVar(self):
return self.myVar
def setMyVar(self, myVar):
self.myVar = myVar
def print_helloWorld(self):
print "Hello, World!"
f1.py가 실행될 때 출력은 다음과 같습니다.
%run "f1.py"
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Display class property myVar: 9
Display global variable gMyVar: 10
Markus의 요점은 다음과 같습니다.
- 모듈의 코드를 두 번 이상 재사용하려면 모듈의 코드를 함수 나 클래스에 넣습니다.
- 모듈에 속성으로 저장된 변수를 재사용하려면 클래스 내에서 속성을 초기화하고 "getter"및 "setter"메서드를 추가하여 변수를 주 프로그램에 복사 할 필요가 없도록합니다.
- 모듈에 저장된 변수를 재사용하려면 변수를 초기화하고 getter 및 setter 함수를 사용하십시오. setter 함수는 변수를 전역으로 선언합니다.
확실한!
#file -- test.py --
myvar = 42
def test_func():
print("Hello!")
Now, this file ("test.py") is in python terminology a "module". We can import it (as long as it can be found in our PYTHONPATH
) Note that the current directory is always in PYTHONPATH
, so if use_test
is being run from the same directory where test.py
lives, you're all set:
#file -- use_test.py --
import test
test.test_func() #prints "Hello!"
print (test.myvar) #prints 42
from test import test_func #Only import the function directly into current namespace
test_func() #prints "Hello"
print (myvar) #Exception (NameError)
from test import *
test_func() #prints "Hello"
print(myvar) #prints 42
There's a lot more you can do than just that through the use of special __init__.py
files which allow you to treat multiple files as a single module), but this answers your question and I suppose we'll leave the rest for another time.
Python has importing and namespacing, which are good. In Python you can import into the current namespace, like:
>>> from test import disp
>>> disp('World!')
Or with a namespace:
>>> import test
>>> test.disp('World!')
You can do the same in python by simply importing the second file, code at the top level will run when imported. I'd suggest this is messy at best, and not a good programming practice. You would be better off organizing your code into modules
Example:
F1.py:
print "Hello, "
import f2
F2.py:
print "World!"
When run:
python ./f1.py
Hello,
World!
Edit to clarify: The part I was suggesting was "messy" is using the import
statement only for the side effect of generating output, not the creation of separate source files.
ReferenceURL : https://stackoverflow.com/questions/12412595/split-python-source-code-into-multiple-files
'programing' 카테고리의 다른 글
Class.forName을 사용하여 중첩 된 정적 클래스 인스턴스화 (0) | 2021.01.18 |
---|---|
일반적으로 .gitignore를 통해 제외되는 Node.JS 관련 파일 및 폴더는 무엇입니까? (0) | 2021.01.18 |
Screenshot UX Trial과 같이 루트 권한없이 프로그래밍 방식으로 다른 앱의 스크린 샷을 찍는 방법은 무엇입니까? (0) | 2021.01.18 |
최신 버전의 Android를 타겟팅하지 않음 (0) | 2021.01.18 |
moq의 속성에 값을 할당하는 방법은 무엇입니까? (0) | 2021.01.18 |