內容概要
面向過程編程(理論)
模塊介紹
import句式
from...import...句式
循環導入問題
內容詳細
面向過程編程(理論)
面向過程編程就好比在設局一條產品流水線
# 用戶注冊功能
1.獲取用戶名和密碼
2.組織成固定的格式
3.文件操作寫入文件
'''面向過程編程的缺陷在於:一旦要修改功能 那么需要修改整體改造(牽一發而動全身)'''
def get_info():
username = input('username>>>:').strip()
password = input('password>>>:').strip()
if len(username) == 0 or len(password) == 0:
print('用戶名或密碼不能為空')
return
user_idf = {
'1':'admin',
'2':'user',
}
print(user_idf)
choice = input('請輸入您的身份>>>:').strip()
if choice in user_idf:
id = user_idf.get(choice)
return deal_data(username,password,id)
else:
print('您輸入的身份不存在')
return
def deal_data(username,password,id):
data = '%s|%s|%s\n'%(username,password,id)
return save_data(data)
def save_data(data):
with open (r'a.txt', 'a', encoding = 'utf8') as f:
f.write(data)
print('用戶注冊成功')
get_info()
模塊介紹
python語言
最早起源於linx運維、膠水語言、調包俠(褒義詞>>>貶義詞)
1.什么是模塊?
模塊:一系列功能的結合體
2.為什么要用模塊?
為了提升開發效率(站在巨人肩膀上)
3.模塊三種來源
1.內置的(python解釋器自帶能夠直接帶入使用)
2.第三方的(別人寫好發布在網上的 需要先下載后使用)
3.自定義的(自己寫的)
4.模塊的四種表現形式
1.使用python編寫的代碼(.py文件)
2.已被便以為共享庫或DLL的C或C++擴展
3.包好一組模塊的包(文件夾)
# 包其實就是多個py文件(模塊)的集合
包里面通常會含有一個__init__.py文件
4.使用C編寫並埒街道python解釋器的內置模塊
"""
學習完模塊之后 以后在編寫大型項目的時候
遇到一些比較復雜的功能可以先考慮是否有相應的模塊可以調用
"""
import句式
# 在學習模塊的時候 一定要區分誰是導入文件 誰是模塊文件
import md # 導入oy文件模塊 文件后綴一定不要加
"""
多次導入相同模塊 只會執行一次
首次導入md模塊發生的事情
1.運行導入文件(import句式.py)產生改文件的全局名稱空間
2.運行md.py文件
3.產生md.py全局名稱空間 運行md文件內代碼 將產生的名字全部存檔於md.py名稱空間
4.在導入文件名稱空間產生一個md的名字執行md.py全局名稱空間
import句式導入模塊之后
通過模塊名點的方式就可以使用到模塊中所有的名字 並且肯定不會產生沖突(知名道姓)
""""
from...import...句式
from md import money,read1,change
"""
from...import...多次導入也只會導入一次
1.先產生執行文件的全局名稱空間
2.執行模塊文件 產生模塊的全局名稱空間
3.將模塊中執行執行之后產生的名字全部存檔於模塊名稱空間中
4.在執行文件中有一個money執行模塊名稱空間中money指向的值
from...import...知名道姓的導入某個名字
在使用的時候直接寫名字即可 但是當當前名稱空間有相同名字的時候
就會產生沖突 視同的就變成了當前名稱空間
"""
導入模塊擴展用法
1.起別名
既可以給模塊名起別名也可以給模塊中某個名字起別名
import mdddddddddddddddddd as m
from mdddddddddd import name as n
2.連續導入
import 模塊名1,模塊名2
# 可以連續導入多個模塊 但是只有當多個模塊功能相似或屬於統一系列
# 如果功能不同並且不屬於一個系列 那么推薦分行導入
import 模塊名1
import 模塊名2
from 模塊名1 import 名字1,名字2,名字3
3.通用導入
from md import * # 將模塊中所有的名字全部導入(* 表示所有)
__all__ = ['money','read1'] # 在被導入的二模塊文件中可以使用__all__指定可以被導入使用的名字
判斷文件類型
# 判斷py文件是作為模塊文件還是執行文件
__name__當文件是執行文件是會返回__main__
如果文件是被當做模塊導入則返回文件名(模塊名)
if __name__ =='__main__'
read1()
"""在pycharm中可以直接敲 main按tab鍵即可自動補全if判斷"""
循環導入
"""以后我們在導入模塊的時候如果出現了循環導入的情況 說明我們程序設計的不太合理"""
# 記住在以后的編程生涯中不允許出現循環導入的現象!!!
一錯再錯
1.調換順序
將彼此導入的句式放在代碼的最后面
2.函數形式
將導入的句式放入函數體代碼 等待所有的名字加載完成后在調用
模塊導入的順序
"""
1.先從內存中查找
2.再去內置模塊中查找
3.最后去sys.path系統路徑中查找(自定義模塊)
如果都沒找到則報錯
"""
# 以后在給py文件命名的時候盡量不要與內置模塊名沖突
import sys
print(sys.path) # 結果中第一個元素永遠是當前執行文件所在的路徑
當某個自定義模塊查找不到的時候解決方案
1.自己手動將該模塊所在的路徑添加到sys.path中
import sys
sys.path.append(r'文件路徑')
2.from...import...句式
from 文件夾名稱.文件夾名稱 import 模塊名
from 文件夾名稱.模塊名稱 import 名字
