python 프로그래밍 기초(3): 패키지, 모듈 가져오기 및 Django 관련 소스 코드
3704 단어 python 기초 지식웹 개발
디렉토리:
1. 모듈 속성:name__
2. 동적 모듈 가져오기:import__() 및 importlib.import_module()
3. 가방의 디렉터리 구조 &init__.py 파일
참조:
----------------------------------------------------------------------------------------------------------------------------------------------------------
1. __name__
모듈 b에서 직접 실행된 출력 결과는 모듈의 를 통해 알 수 있습니다name__속성은 어느 것이 가져온 모듈이고, 어느 것이 직접 실행 모듈인지 알 수 있다.
# ./a.py
print("hello world")
# ./b.py
import a
print(a.__name__)
print(b.__name__)
# b :
hello world
a #a
__main__ #b
2. __import__() 및 importlib.import_module()
둘 다 동적 가져오기 모듈(런타임 가져오기)을 실현할 수 있지만import__() 첫 번째 디렉토리만 가져올 수 있습니다.
__import__(): 모듈 자체의 속성 방법이 아닌 시스템에서 제공하는 함수
# : b.py
__import__('sys') # import sys
print(dir(b)) # dir() b __import__()
동적 가져오기 모듈: importlib, Django의 소스 코드에서 다음을 볼 수 있습니다.
예1: 데이터베이스 이전을 하고 있을 때:python 관리자.py migrate;또는 서버를 시작할 때:python 관리자.py runserver; 중간에 많은 걸음을 지나 로드에 도달한다command_class () 함수입니다.django/core/management/commonds 폴더 밑에 많습니다.py 파일, 그중에migrete.py와runserver.py; 데이터베이스 마이그레이션과 데이터베이스의 시작은 두 파일의 Command()를 실행하는 것입니다.
# ./django/core/management/__init__.py
def load_command_class(app_name, name): #app_name='django.core' name=migrate/runserver
module = import_module('%s.management.commands.%s' % (app_name, name))
return module.Command() #module='migrate.py' ‘runserver’.. ..
예2: 코드를 보지 않았으니 먼저 건너뛰자
# ./django/core/management/manage.py
import_module('.management', app_config.name)
#import_module
#def import_module(name, package=None)
3. 가방의 디렉터리 구조 &init__.py 파일
'''
a.py
__init__.py # __init__.py,
b.py
__init__.py # __init__.py,
c.py
'''
# ./a.py
import pack_b.b # : ‘pcak_b/b.py’ 'pack_b.__init__.py'
# ./pack_b/b/py
print('pack_b/b.py')
# ./pack_b/__init__.py
print('pack_b.__init__.py')
# ./django/core/management/__init__.py
from django.apps import apps # apps , apps , from django.apps.registry import apps
def get_commands():
#..... ........
for app_config in reversed(list(apps.get_app_configs())): # apps get_app_configs()
path = os.path.join(app_config.path, 'management')
commands.update({name: app_config.name for name in find_commands(path)})
return commands
다음 단계는 기본적으로django를 실행합니다.apps 패키지 아래init__.py, 파일 코드는 다음과 같습니다.
# 파일./django/apps/__init__.py
from .config import AppConfig
from .registry import apps # , from django.apps import apps
__all__ = ['AppConfig', 'apps'] # from django.apps import *
, registry.py
# ./django/apps/registry.py
class Apps:
#.... .........
def get_app_configs(self):
self.check_apps_ready()
return self.app_configs.values()
apps = Apps(installed_apps=None) # ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 디자인 모델 의 공장 모델우 리 는 공장 을 이용 하여 대상 을 창설 할 필요 가 없다. 공장 에 요구 만 하면 공장 이 당신 의 요구 에 따라당신 이 원 하 는 제품 을 생산 하고 그 에 상응하는 대상 을 주 는 모델 을 공장 모델 이 라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.