一、模塊回圈匯入問題
# run , m1, m2的回圈匯入
#run.py
x=1
# import m1
# print(m1.x)
# print(m1.y)
# m1.f1()
import m2
m2.f2()
#m1.py
print('正在匯入m1')
def f1():
from m2 import y
print(x,y)
x='m1'
#m2.py
print('正在匯入m2')
def f2():
from m1 import x
print(x,y)
y='m2'

二、區分py檔案的兩種用途
1、直接運行
2、被當作模塊匯入
#run1.py
import spam
#spam.py
def f1():
print('spam.f1')
def f2():
print('spam.f2')
# print(__name__) # 當檔案被當作腳本直接執行時,__name__值為"__main__"
# print(__name__) # 當檔案被當作模塊匯入時,__name__值為"模塊名"
if __name__ == '__main__':
print("檔案被當作腳本執行時要做的事情")
f1()
f2()def f1():
print('spam.f1')
def f2():
print('spam.f2')
# print(__name__) # 當檔案被當作腳本直接執行時,__name__值為"__main__"
# print(__name__) # 當檔案被當作模塊匯入時,__name__值為"模塊名"
if __name__ == '__main__':
print("檔案被當作腳本執行時要做的事情")
f1()
f2()
三、模塊的搜索路徑與查找優先級
1、先從記憶體中已經匯入的模塊里找
import mmm
mmm.f1()
import time
time.sleep(15)
print('='*50)
import mmm
mmm.f1()
2、然后再查找內置的模塊
import sys
print(sys.modules)
import sys
print(sys.path)
# 當前執行檔案所在的檔案夾
import logging
print(logging)
3、最后去sys.path串列中存放的多個檔案夾里依次檢索
# 示例1:
import sys
print(sys.path)
sys.path.append(r'D:\python全堆疊15期\aaa\bbb')
import ccc
ccc.f1()
# 示例2:
import sys
print(sys.path)
import aaa.bbb.ccc as c
c.f1()
from aaa.bbb import ccc
ccc.f1()
四、軟體開發的目錄規范

ps:在公司里面一般會直接創建一個專案,start.py會直接放在根目錄下,這樣用起來更加方便
#執行檔案bin---->start.py------ps:只要短短幾行,不要長篇寫代碼
from core import src
src.run()
#配置conf---->settings
import os
print(__file__) # D:\python全堆疊15期\day17\ATM\conf\settings.py
BASE_DIR=os.path.dirname(os.path.dirname(__file__)) # D:\python全堆疊15期\day17\ATM\
log_path = os.path.join(BASE_DIR,'log','access.log')
ps:__file__指的是當前檔案的絕對路徑
os.path
sys.path
os.environ把想要在全域看的加載到環境變數
#核心代碼core---->src.py
from lib import common
def shop():
print("購物功能")
common.logger("xxx購買了一堆垃圾")
def repay():
print("支付功能")
common.logger("fzh支付了100億")
def withdraw():
print('提現')
common.logger("fzh提現了200億")
func_dic = {
'1': [shop, "購物功能"],
'2': [repay, "支付功能"],
'3': [withdraw, "提現功能"],
}
def run():
while True:
for k in func_dic:
print('%s---%s' % (k, func_dic[k][1]))
choice = input("請輸入您的操作編號/輸入0退出: ").strip()
if choice == '0':
break
if choice in func_dic:
func_dic[choice][0]()
else:
print('指令錯誤,請重新輸入')
#共享檔案夾lib---->common.py
import time
from conf import settings
def logger(msg):
with open(settings.log_path, mode='at', encoding='utf-8') as f:
log_format = "%s %s\n" % (time.strftime('%Y-%m-%d %H:%M:%S'), msg)
f.write(log_format)
#資料---->db
#日志檔案log---->自動生成access.log
五、ATM購物車檔案
程式的說明檔案 --->readme
程式的入口檔案/啟動檔案--->start.py
組態檔夾conf --->settings.py
公共方法檔案lib --->common.py
介面檔案夾interface--->user.py用戶介面檔案
--->shop.py購物介面檔案
--->bank.py銀行介面檔案
用戶功能檔案夾core --->scr.py視圖檔案
資料處理檔案夾db --->da_handler.py資料處理功能檔案
日志存放目錄log --->access.log自動生成日志
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79373.html
標籤:Python
上一篇:函式的作用域和名稱空間
下一篇:Django模板之過濾器
