python放棄之 模塊和包
import
print(‘frrom the my_module.py‘)
money=1000
def rend1():
print(‘my_my_module->reand1->money‘,money)
def rend2():
print(‘my_module->read2 calling read1)
read1()
def change():
global money
money=0
模塊可以包含可執行語句和函數的定義,這些語句的目的是初始化模塊
只能在模塊名第一次次遇到導入import語句才執行
(import語句是可以在程序送任意位置使用的,且針對同yige
模塊和import多次,為了防止你重復導入,是
python 優化的手段:第一次導入就加載到內存了
後面的import只是增加了一次引用)
為模塊名起別名,相當於m1=1;m2=m1
1 import my_module as sm 2 print(sm.money
#mysql.py
def sqlparse():
print(‘from mysql sqlparse‘)
#oracle.py
def sqlparse():
print(‘from oracle sqlparse‘)
#test.py
db_type=input(‘>>: ‘)
if db_type == ‘mysql‘:
import mysql as db
elif db_type == ‘oracle‘:
import oracle as db
db.sqlparse()
包
包是一種通過使用‘.模塊名’來組織python模塊名稱空間的方式。
1. 無論是import形式還是from...import形式,凡是在導入語句中(而不是在使用時)遇到帶點的,都要第一時間提高警覺:這是關於包才有的導入語法
2. 包是目錄級的(文件夾級),文件夾是用來組成py文件(包的本質就是一個包含__init__.py文件的目錄)
3. import導入文件時,產生名稱空間中的名字來源於文件,import 包,產生的名稱空間的名字同樣來源於文件,即包下的__init__.py,導入包本質就是在導入該文件
強調:
1. 在python3中,即使包下沒有__init__.py文件,import 包仍然不會報錯,而在python2中,包下一定要有該文件,否則import 包報錯
2. 創建包的目的不是為了運行,而是被導入使用,記住,包只是模塊的一種形式而已,包即模塊
1.關於包相關的導入語句也分為import和from ... import ...兩種,但是無論哪種,無論在什麽位置,在導入時都必須遵循一個原則:凡是在導入時帶點的,點的左邊都必須是一個包,否則非法。可以帶有一連串的點,如item.subitem.subsubitem,但都必須遵循這個原則。
2.對於導入後,在使用時就沒有這種限制了,點的左邊可以是包,模塊,函數,類(它們都可以用點的方式調用自己的屬性)。
3.對比import item 和from item import name的應用場景:
如果我們想直接使用name那必須使用後者
有兩中sql模塊mysql和oracle,根據用戶的輸入,選擇不同的sql功能
python放棄之 模塊和包