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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

设python中有模块m、如果希望同时导入m中的所有成员_python-模块

發(fā)布時間:2023/12/10 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设python中有模块m、如果希望同时导入m中的所有成员_python-模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

先做幾個練習題

練習計算一個四乘四矩陣的所有元素的和,以及對角線之和

#encoding=utf-8

a=[[1,2,3,4],

[2,5,2,3],

[1,5,3,2],

[5,3,2,5]

]

#encoding=utf-8

a=[[1,2,3,4],

[2,5,2,3],

[1,5,3,2],

[5,3,2,5]

]

total_sum=0

diagonal_sum=0

‘‘‘

for i in a:

print "i:",i

for j in range(len(i)):

print i[j],

total_sum+=i[j]

print total_sum

‘‘‘

#正對角線之和

for i in range(len(a)):

diagonal_sum+=a[i][i]

print diagonal_sum

c:\Python27\Scripts>python task_test.py

14

#反對角線之和

for i in range(len(a)):

diagonal_sum+=a[i][len(a)-i-1]

print diagonal_sum

.c:\Python27\Scripts>python task_test.py

16

第二題:輸入數(shù)組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數(shù)組。

#encoding=utf-8

a=[]

while True:

try:

content=raw_input("input the interger number:")

if content.strip()==‘over‘:

break

else:

a.append(int(content))

except:

print "input error, input again!"

print a

max_num=max(a)

min_num=min(a)

a[a.index(max_num)] = a[0]

a[0]=max_num

a[a.index(min_num)] = a[-1]

a[-1]=min_num

print a

第三題:有n個整數(shù),使其前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面的m個數(shù)

#encoding=utf-8

a=[1,2,3,4,5,6,7,8,9,0]

m=3

print "a:",a

print "m",m

a_first=a[-m:]

a_second=a[:-m]

print a_first

print a_second

print "a:",a_first+a_second

c:\Python27\Scripts>python task_test.py

a: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

m 3

[8, 9, 0]

[1, 2, 3, 4, 5, 6, 7]

a: [8, 9, 0, 1, 2, 3, 4, 5, 6, 7]

找到模塊或包的三種方法:

把包或模塊放到與當前文件同一個目錄下

#encoding=utf-8

import a

print a.add(1,3)

c:\Python27\Scripts>python task_test.py

4

把包或模塊的路勁放到path里

#encoding=utf-8

import sys

print "sys.path:",sys.path

sys.path.append("d:\\")

print "sys.path:",sys.path

import a

c:\Python27\Scripts>python task_test.py

sys.path: [‘c:\\Python27\\Scripts‘, ‘C:\\Windows\\SYSTEM32\\python27.zip‘, ‘C:\\Python27\\DLLs‘, ‘C:\\Python27\\lib‘, ‘C:\\Python27\\lib\\plat-win‘, ‘C:\\Python27\\lib\\lib-tk‘, ‘C:\\Python27‘, ‘C:\\Python27\\lib\\site-packages‘]

sys.path: [‘c:\\Python27\\Scripts‘, ‘C:\\Windows\\SYSTEM32\\python27.zip‘, ‘C:\\Python27\\DLLs‘, ‘C:\\Python27\\lib‘, ‘C:\\Python27\\lib\\plat-win‘, ‘C:\\Python27\\lib\\lib-tk‘, ‘C:\\Python27‘, ‘C:\\Python27\\lib\\site-packages‘, ‘d:\\‘]

4

把sys加入path部分注釋掉:

c:\Python27\Scripts>python task_test.py

Traceback (most recent call last):

File "task_test.py", line 8, in

import a

ImportError: No module named a

把模塊放到lib下的C:\Python27\Lib\site-packages

#encoding=utf-8

import a

print a.add(1,3)

c:\Python27\Scripts>python task_test.py

4

當導入一個模塊時,Python解析器會去搜索該模塊存在的位置,其搜索順序為:

?當前目錄

?如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。

?如果都找不到,python會查安裝路徑lib下的site-packages。Unix下,默認路徑一般是/usr/local/python/。 模塊搜索路徑存儲在system模塊的sys.path變量中。變量里包含當前目錄,PYTHONPATH由安裝過程決定的默認目錄。

包:文件夾下有一個__init__.py的文件,

模塊:就是一個python文件

From import把包里的命名空間引入到當前的命名空間,缺點該命名空間里的同名函數(shù)會被本地的同名函數(shù)覆蓋

Globals(), locals()

根據(jù)調用地方的不同,globals()和locals()函數(shù)可被用來返回全局和局部命名空間里的名字。

如果在函數(shù)內部調用locals(),返回的是所有能在該函數(shù)里訪問的命名。

如果在函數(shù)內部調用globals(),返回的是所有在該函數(shù)里能訪問的全局名字。

兩個函數(shù)的返回類型都是字典。所以名字們能用keys()函數(shù)摘取。

#encoding=utf-8

xiaxiaoxu="xiaxiaoxu"

def func():

print "calling func()..."

aStr="bar"

anInt=23

print "func()‘s globals:",globals().keys()

print "func()‘s locals:",locals().keys()

print "__main__‘s globals:",globals().keys()

print "__main__‘s locals:",locals().keys()

func()

c:\Python27\Scripts>python task_test.py

__main__‘s globals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

__main__‘s locals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

calling func()...

func()‘s globals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

func()‘s locals: [‘aStr‘, ‘anInt‘]

包的概念

在創(chuàng)建許許多多模塊后,我們可能希望將某些功能相近的文件組織在同一文件夾下,這里就需要運用包的概念了。包是一個分層的文件目錄結構,它定義了一個由模塊及子包和子包下的子包等組成的Python的應用環(huán)境。

包對應于文件夾,使用包的方式跟模塊也類似,唯一需要注意的是,當文件夾被當作包使用時,文件夾中需要包含__init__.py文件,主要是為了避免將文件夾名當作普通的字符串。__init__.py的內容可以為空,一般用來進行包的某些初始化工作或者設置__all__值,__all__是在from package-name import *這語句使用的,表示全部導出定義過的模塊。如果希望調用同一個package中的module,則直接import即可

創(chuàng)建包,在同一目錄下

#encoding=utf-8

import xia.cal

print xia.cal.add(2,3)

c:\Python27\Scripts>python task_test.py

5

__init__.py中的__all__限制了這句話from xx import *的使用范圍

__all__ = [‘bar‘, ‘baz‘]在一個模塊中,用這個限制調用的范圍

使用文件:

a1.py:

#encoding=utf-8

__all__ = [‘bar‘, ‘baz‘]

waz = 5

bar = 10

def baz(): return ‘baz‘

task_test.py:

#encoding=utf-8

from a1 import *

print bar

print baz

print waz

運行task_test.py:

c:\Python27\Scripts>python

task_test.py

10

baz at 0x0000000002EE5AC8>

Traceback

(most recent call last):

File "task_test.py", line 8, in

print waz

NameError:

name ‘waz‘ is not defined

a1.py中改為:

#encoding=utf-8

__all__

= [‘bar‘, ‘baz‘,‘waz‘]

#encoding=utf-8

__all__=[‘bar‘,‘baz‘,‘waz‘]

waz=5

bar=10

def baz():

return ‘baz‘

c:\Python27\Scripts>python

task_test.py

10

baz at 0x0000000002C85AC8>

5

使用包,建立一個testmodule的目錄,目錄中有3個文件:a.py、x.py、__init__.py

a.py:

waz?=?5

bar?=?10

def?baz():?return?‘baz‘

x.py:

name=‘gloryroad‘

def?sub(a,b):

return?a-b

__init__:

__all__?=?[‘x‘]

b.py:

from?testmodule?import?*

print?a.bar

print?a.baz

print?a.waz

c:\Python27\Scripts>python

b.py

Traceback

(most recent call last):

File "b.py", line 3, in

print a.bar

NameError:

name ‘a‘ is not defined

x.py改為:

__init__:

__all__ = [‘a]‘]

c:\Python27\Scripts>python

b.py

10

baz at 0x0000000002FFDAC8>

5

包方法1:有一個gloryroad目錄,有個子目錄submodule,兩個目錄中有如下幾個文件: gloryroad a.py含有函數(shù)add(a,b)(當然可以包含多個函數(shù)或屬性) gloryroad /submodule/b.py含有函數(shù)multiple (a,b)

現(xiàn)在在gloryroad目錄下創(chuàng)建文件__init__.py ,里面不寫任何內容

現(xiàn)在在gloryroad目錄的submodule下創(chuàng)建文件__init__.py ,里面不寫任何內容

經過如上處理后,在gloryroad目錄的同級目錄下,生成task_test.py。

#encoding=utf-8

import gloryroad.a

import gloryroad.submodule.b

print gloryroad.a.add(10,30)

print gloryroad.submodule.b.multiple(10,5)

c:\Python27\Scripts>python

task_test.py

40

50

總結

以上是生活随笔為你收集整理的设python中有模块m、如果希望同时导入m中的所有成员_python-模块的全部內容,希望文章能夠幫你解決所遇到的問題。

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