日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python程序开发模块化_python-17-Python文件两种用途、模块化程序开发

發布時間:2024/9/19 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python程序开发模块化_python-17-Python文件两种用途、模块化程序开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--------------------------------python文件的兩種用途----------------------------------

py文件的兩種用途:

1、直接運行

print(__name__)

當文件被當作腳本直接執行時,__name__值為"__main__"

2、被當作模塊導入

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列表中存放的多個文件夾里依次檢索

append方式是臨時加一個python的環境變量

示例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()

主文件 是程序執行的入口

最先從 當前執行程序所在的文件夾下面找,也即從 內存開始找, 優先級最高

劃分文件是為了方便管理

運行時 這些劃分出去的文件,都是在主文件中運行的

后續文件 所參考的環境變量 都參考主文件所在的文件路徑

所及需要手動添加整個項目的根目錄路徑,以便能找到 項目中下屬的所有文件

----------------------------------避免循環導入(涉及遞歸調用)----------------------------------

破壞 循環導入(循環導入:互相等待對方手中的資源):一方先主動給出自己手中的值

如此便需要調整 本模塊中的值 和調用語句之間的順序

最佳解決方案: 涉及循環導入的 ,把導入語句放到函數中取

因為在外部調用函數時,調用模塊中的所有名字都已經完成了賦值,可以直接取用

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'

run.py文件代碼------------

x=1

# import m1

# print(m1.x)

# print(m1.y)

# m1.f1()

import m2

m2.f2()

----------------------------------------模塊化程序開發--------------------------------------

package(包) 其實就是文件夾

壓縮包和文件的作用一樣,都能用來存放文件

查看解釋器的環境變量

import sys

print(sys.path)

# ['E:\\workplace_python', 'E:\\workplace_python', 'E:\\ruanjian\\Python\\Python36\\python36.zip', 'E:\\ruanjian\\Python\\Python36\\DLLs', 'E:\\ruanjian\\Python\\Python36\\lib', 'E:\\ruanjian\\Python\\Python36', 'E:\\ruanjian\\Python\\Python36\\lib\\site-packages']

# 工作臺的路徑 也被自動加入到python路徑中

用戶名寫到 環境變量,在程序的任何位置都能使用

python中的兩大環境變量

sys.path:到模塊

os.environ 【這其實是一個字典】 存儲想要給全局看的數據,在程序的任何位置都能看到 比如 用戶名這種信息

拓展:

windows系統中的環境變量:在window系統中,全局有效,快速找值

python中的環境變量:在python程序中,全局生效,快速找值

獲取當前 文件/文件夾 所在的文件夾的路徑

import os

__file__ 當前文件的路徑(帶文件名)

print(__file__) # D:\python全棧15期\day17\ATM\conf\settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # D:\python全棧15期\day17\ATM\

# 獲取當前 文件/文件夾 所在的文件夾的路徑

導入模塊的兩種方式及其區別:

1、import xxx

在當前路徑下 (查找)導入 xxx

2、from xxx import xxx

在當前路徑下 從 xxx文件夾 (查找)導入xxxx

強調:被調用文件 在未明確指明路徑的情況下,使用的路徑 參照的都是 主文件的路徑

日志使用:

每執行一個操作,都調用了記錄日志的方法,將進行的操作行為,寫入日志

-----------------------------------補充----------------------------------

名稱空間相關強調:

定義的時候 名稱空間中 就已經有這個名字(變量名、函數名等各種名字)了,順序執行程序的時候才為這些 名字依次賦值

(只有被賦值的名字才能被使用。沒有被賦值的名字不能被使用,否則程序報錯)

掃描語法 中的主要做法:只掃描目標空間中有沒有這個名字

執行過程 中的主要做法:若這些用到的名字 沒有被賦值,則使用時報錯

C語言中的變量機制 與 python中的變量機制有很大不同,要區別看待,不可進行相同處理

python中重視 綁定 , 即 名 和 值 放在不同的內存空間中,通過綁定起來進行取值

全局名稱空間 其實也就是 文件級的名稱空間(一個.py文件執行時,創建一個自己的全局名稱空間)

程序中只有一個內置的名字空間

在它之下可有多個全局名字空間

平衡 ,以XXX換XXX,時間換空間、復雜性與效率性

文件路徑(文件所在的路徑,帶自己的名字)

文件夾路徑(文件/文件夾 本身所在的文件夾的路徑,不帶自己的名字)

import os : os是 程序 與 操作系統 交互的模塊

調用操作系統os提供的功能

import sys: sys是 程序 與 解釋器 交互的模塊

調用python解釋器提供的功能

總結

以上是生活随笔為你收集整理的python程序开发模块化_python-17-Python文件两种用途、模块化程序开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。