1. 程式人生 > >python放棄之 模塊和包

python放棄之 模塊和包

jpg calling 目的 方式 ima 必須 功能 str ron

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放棄之 模塊和包