Хелпикс

Главная

Контакты

Случайная статья





Приложение: FLOSS. Замечание для программистов



pass

 

if (b! =1):

 

print (" a prost", a)

 

p = p + [a]

 

count = count + 1

 

a = a + 2

 

print p

 

 

11. 3 И м я м о д у л я – __name__

 

к а ж д о г о м о д у л я е с т ь и м я, и к о м а н д ы в м о д у л е м о г у т у з н а т ь и м я и х м о д у л я. Э т о п о л е з -н о, к о г д а н у ж н о з н а т ь, з а п у щ е н л и м о д у л ь к а к с а м о с т о я т е л ь н а я п р о г р а м м а и л и и м п о р т и -р о в а н. К а к у ж е у п о м и н а л о с ь в ы ш е, к о г д а м о д у л ь и м п о р т и р у е т с я в п е р в ы е, с о д е р ж а щ и й с я в н ё м к о д и с п о л н я е т с я. М ы м о ж е м в о с п о л ь з о в а т ь с я э т и м д л я т о г о, ч т о б ы з а с т а в и т ь м о -д у л ь в е с т и с е б я п о -р а з н о м у в з а в и с и м о с т и о т т о г о, и с п о л ь з у е т с я л и о н с а м п о с е б е и л и и м п о р т и р у е т с я в д р у г у ю п р о г р а м м а. Э т о г о м о ж н о д о с т и ч ь с п р и м е н е н и е м а т р и б у т а м о -д у л я п о д н а з в а н и е м __name__.

 

П р и м е р: (с о х р а н и т е к а к using_name. py)

 

if __name__=='__main__':

 

print ('Э т а п р о г р а м м а з а п у щ е н а с а м а п о с е б е. ')

 

else:

 

print ('М е н я и м п о р т и р о в а л и в д р у г о й м о д у л ь. ')

 

В ы в о д:

 

$ python3 using_name. py

 

Э т а п р о г р а м м а з а п у щ е н а с а м а п о с е б е.

 

$ python3

 

> > > import using_name

 

М е н я и м п о р т и р о в а л и в д р у г о й м о д у л ь.

 

> > >

 

К а к э т о р а б о т а е т:

 

к а ж д о м м о д у л е Python о п р е д е л е н о е г о и м я – __name__5. Е с л и о н о р а в н о '__main__', э т о о з н а ч а е т, ч т о м о д у л ь з а п у щ е н с а м о с т о я т е л ь н о п о л ь з о в а т е л е м, и м ы м о ж е м в ы п о л н и т ь с о о т в е т с т в у ю щ и е д е й с т в и я.

 

name - а н г л. «и м я » (п р и м. п е р е в. )


 

74                                                                                                                                                   Г л а в а 11. М о д у л и


A Byte of Python (Russian), В е р с и я 2. 01

 

 

11. 4 С о з д а н и е с о б с т в е н н ы х м о д у л е й

 

С о з д а т ь с о б с т в е н н ы й м о д у л ь о ч е н ь л е г к о. Д а в ы в с ё в р е м я д е л а л и э т о! В е д ь к а ж д а я п р о -г р а м м а н а Python т а к ж е я в л я е т с я и м о д у л е м. Н е о б х о д и м о л и ш ь у б е д и т ь с я, ч т о у н е ё у с т а -н о в л е н о р а с ш и р е н и е . py. С л е д у ю щ и й п р и м е р о б ъ я с н и т э т о.

 

П р и м е р: (с о х р а н и т е к а к mymodule. py)

 

def sayhi():

 

print ('П р и в е т! Э т о г о в о р и т м о й м о д у л ь. ')

 

__version__ = '0. 1'

 

К о н е ц м о д у л я mymodule. py

 

В ы ш е п р и в е д ё н п р о с т о й м о д у л ь . К а к в и д н о, в н ё м н е т н и ч е г о о с о б е н н о г о п о с р а в н е н и ю с о б ы ч н о й п р о г р а м м о й н а Python. Д а л е е п о с м о т р и м, к а к и с п о л ь з о в а т ь э т о т м о д у л ь в д р у -г и х н а ш и х п р о г р а м м а х.

 

П о м н и т е, ч т о м о д у л ь д о л ж е н н а х о д и т ь с я л и б о в т о м ж е к а т а л о г е, ч т о и п р о г р а м м а, в к о -т о р у ю м ы и м п о р т и р у е м е г о, л и б о в о д н о м и з к а т а л о г о в, у к а з а н н ы х в sys. path.

 

Е щ ё о д и н м о д у л ь (с о х р а н и т е к а к mymodule_demo. py):

 

import mymodule

 

mymodule. sayhi()

 

print ('В е р с и я ', mymodule. __version__)

 

В ы в о д:

 

$ python mymodule_demo. py

 

П р и в е т! Э т о г о в о р и т м о й м о д у л ь.

 

В е р с и я 0. 1

 

К а к э т о р а б о т а е т:

 

О б р а т и т е в н и м а н и е, ч т о м ы и с п о л ь з у е м в с ё т о ж е о б о з н а ч е н и е т о ч к о й д л я д о -с т у п а к э л е м е н т а м м о д у л я. Python п о в с е м е с т н о и с п о л ь з у е т о д н о и т о ж е о б о -з н а ч е н и е т о ч к о й, п р и д а в а я е м у т а к и м о б р а з о м х а р а к т е р н ы й «Python-о в ы й » в и д и н е в ы н у ж д а я н а с и з у ч а т ь в с ё н о в ы е и н о в ы е с п о с о б ы д е л а т ь ч т о -л и б о.

 

В о т в е р с и я, и с п о л ь з у ю щ а я с и н т а к с и с from.. import (с о х р а н и т е к а к mymodule_demo2. py):

 

from mymodule import sayhi, __version__

 

sayhi()

 

print ('В е р с и я ', __version__)

 

В ы в о д mymodule_demo2. py т а к о й ж е, к а к и mymodule_demo. py.


 

 

11. 4. С о з д а н и е с о б с т в е н н ы х м о д у л е й                                                                                                       75


A Byte of Python (Russian), В е р с и я 2. 01

 

 

О б р а т и т е в н и м а н и е, ч т о е с л и в м о д у л е, и м п о р т и р у ю щ е м д а н н ы й м о д у л ь, у ж е б ы л о о б ъ -я в л е н о и м я __version__, в о з н и к н е т к о н ф л и к т. Э т о в е с ь м а в е р о я т н о, т а к к а к о б ъ я в л я т ь в е р с и ю л ю б о г о м о д у л я п р и п о м о щ и э т о г о и м е н и – о б щ е п р и н я т а я п р а к т и к а. П о э т о м у в с е г д а р е к о м е н д у е т с я о т д а в а т ь п р е д п о ч т е н и е о п е р а т о р у import, х о т я э т о и с д е л а е т в а ш у п р о г р а м м у н е м н о г о д л и н н е е.

 

В ы м о г л и б ы т а к ж е и с п о л ь з о в а т ь:

 

from mymodule import *

 

Э т о и м п о р т и р у е т в с е п у б л и ч н ы е и м е н а, т а к и е к а к sayhi, н о н е и м п о р т и р у е т __version__, п о т о м у ч т о о н о н а ч и н а е т с я с д в о й н о г о п о д ч ё р к и в а н и я

 

Д з э н Python

 

О д н и м и з р у к о в о д я щ и х п р и н ц и п о в в Python я в л я е т с я «Я в н о е л у ч ш е Н е я в н о г о ». В ы п о л -н и т е к о м а н д у “import this”, ч т о б ы у з н а т ь б о л ь ш е, а т а к ж е п р о с м о т р и т е э т о о б с у ж д е н и е, в к о т о р о м п р и в о д я т с я п р и м е р ы п о к а ж д о м у и з п р и н ц и п о в.

 

11. 5 Ф у н к ц и я dir

 

В ы м о ж е т е и с п о л ь з о в а т ь в с т р о е н н у ю ф у н к ц и ю dir, ч т о б ы п о л у ч и т ь с п и с о к и д е н т и ф и к а -т о р о в, к о т о р ы е о б ъ е к т о п р е д е л я е т. Т а к в ч и с л о и д е н т и ф и к а т о р о в м о д у л я в х о д я т ф у н к ц и и, к л а с с ы и п е р е м е н н ы е, о п р е д е л ё н н ы е в э т о м м о д у л е.

 

К о г д а в ы п е р е д а ё т е ф у н к ц и и dir() и м я м о д у л я, о н а в о з в р а щ а е т с п и с о к и м ё н, о п р е д е -л ё н н ы х в э т о м м о д у л е. Е с л и н и к а к о г о а р г у м е н т а н е п е р е д а в а т ь, о н а в е р н ё т с п и с о к и м ё н, о п р е д е л ё н н ы х в т е к у щ е м м о д у л е.

 

П р и м е р:

 

$ python3

 

import sys # п о л у ч и м с п и с о к а т р и б у т о в м о д у л я 'sys'

 

dir(sys)

 

['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__s tderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_compact_freelists', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', ' byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle'

'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getfil esystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'getwindowsversion', 'hexversion', 'intern', 'maxsize', 'maxunicode ', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platfor m', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'setrecursionlimit ', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_in


 

 

76                                                                                                                                                   Г л а в а 11. М о д у л и


A Byte of Python (Russian), В е р с и я 2. 01

 

fo', 'warnoptions', 'winver']

 

dir() # п о л у ч и м с п и с о к а т р и б у т о в т е к у щ е г о м о д у л я

 

['__builtins__', '__doc__', '__name__', '__package__', 'sys']

 

a = 5 # с о з д а д и м н о в у ю п е р е м е н н у ю 'a'

 

dir()

 

['__builtins__', '__doc__', '__name__', '__package__', 'a', 'sys']

 

del a # у д а л и м и м я 'a'

 

dir()

 

['__builtins__', '__doc__', '__name__', '__package__', 'sys']

 

> > >

 

К а к э т о р а б о т а е т:

 

С п е р в а м ы в и д и м р е з у л ь т а т п р и м е н е н и я dir к и м п о р т и р о в а н н о м у м о д у л ю sys. В и д и м о г р о м н ы й с п и с о к а т р и б у т о в, с о д е р ж а щ и х с я в н ё м.

 

З а т е м м ы в ы з ы в а е м ф у н к ц и ю dir, н е п е р е д а в а я е й п а р а м е т р о в. П о у м о л ч а -н и ю, о н а в о з в р а щ а е т с п и с о к а т р и б у т о в т е к у щ е г о м о д у л я. О б р а т и т е в н и м а н и е, ч т о с п и с о к и м п о р т и р о в а н н ы х м о д у л е й т а к ж е в х о д и т т у д а.

 

Ч т о б ы п р о н а б л ю д а т ь з а д е й с т в и е м dir, м ы о п р е д е л я е м н о в у ю п е р е м е н н у ю a и п р и с в а и в а е м е й з н а ч е н и е, а з а т е м с н о в а в ы з ы в а е м dir. В и д и м, ч т о в п о л у ч е н н о м с п и с к е п о я в и л о с ь д о п о л н и т е л ь н о е з н а ч е н и е. У д а л и м п е р е м е н -н у ю /а т р и б у т и з т е к у щ е г о м о д у л я п р и п о м о щ и о п е р а т о р а del, и и з м е н е н и я в н о в ь о т о б р а з я т с я н а в ы в о д е ф у н к ц и и dir.

 

З а м е ч а н и е п о п о в о д у del: э т о т о п е р а т о р и с п о л ь з у е т с я д л я у д а л е н и я п е р е м е н -н о й /и м е н и, и п о с л е е г о в ы п о л н е н и я, в д а н н о м с л у ч а е – del a, к п е р е м е н н о й a б о л ь ш е н е в о з м о ж н о о б р а т и т ь с я – е ё к а к б у д т о н и к о г д а и н е б ы л о.

 

О б р а т и т е в н и м а н и е, ч т о ф у н к ц и я dir() р а б о т а е т д л я л ю б о г о о б ъ е к т а. Н а п р и -м е р, в ы п о л н и т е “dir('print')”, ч т о б ы у в и д е т ь а т р и б у т ы ф у н к ц и и print, и л и “dir(str)”, ч т о б ы у в и д е т ь а т р и б у т ы к л а с с а str.

 

 

11. 6 П а к е т ы

 

н а с т о я щ е м у в р е м е н и в ы, в е р о я т н о, н а ч а л и н а б л ю д а т ь н е к о т о р у ю и е р а р х и ю в о р г а н и -з а ц и и в а ш и х п р о г р а м м. П е р е м е н н ы е о б ы ч н о н а х о д я т с я в ф у н к ц и я х. Ф у н к ц и и и г л о б а л ь -н ы е п е р е м е н н ы е о б ы ч н о н а х о д я т с я в м о д у л я х. А ч т о, е с л и в о з н и к н е т н е о б х о д и м о с т ь к а к -т о о р г а н и з о в а т ь м о д у л и? В о т з д е с ь -т о и в ы х о д я т н а с ц е н у п а к е т ы.

 

П а к е т ы – э т о п р о с т о к а т а л о г и с м о д у л я м и и с п е ц и а л ь н ы м ф а й л о м __init__. py, к о т о р ы й п о к а з ы в а е т Python, ч т о э т о т к а т а л о г о с о б ы й, т а к к а к с о д е р ж и т м о д у л и Python.

 

11. 6. П а к е т ы

A Byte of Python (Russian), В е р с и я 2. 01

 

 

П р е д с т а в и м, ч т о м ы х о т и м с о з д а т ь п а к е т п о д н а з в а н и е м «world» с с у б п а к е т а м и «asia», «africa» и т. д., к о т о р ы е, в с в о ю о ч е р е д ь, б у д у т с о д е р ж а т ь м о д у л и «india», «madagascar» и т. д.

 

Д л я э т о г о с л е д о в а л о б ы с о з д а т ь с л е д у ю щ у ю с т р у к т у р у к а т а л о г о в:

 

- < н е к о т о р ы й к а т а л о г и з sys. path> /

 

|---- world/

 

|---- __init__. py

 

|---- asia/

 

||---- __init__. py

 

||---- india/

 

|           |                   |---- __init__. py

 

|           |                   |---- foo. py

 

|---- africa/

 

|---- __init__. py

 

|---- madagascar/

 

|                                     |---- __init__. py

 

|                                     |---- bar. py

 

П а к е т ы – э т о у д о б н ы й с п о с о б и е р а р х и ч е с к и о р г а н и з о в а т ь м о д у л и. Т а к о е ч а с т о в с т р е ч а -е т с я в с т а н д а р т н о й б и б л и о т е к е .

 

 

11. 7 Р е з ю м е

 

Т о ч н о т а к ж е, к а к ф у н к ц и и я в л я ю т с я м н о г о к р а т н о и с п о л ь з у е м ы м и ф р а г м е н т а м и п р о -г р а м м, м о д у л и я в л я ю т с я м н о г о к р а т н о и с п о л ь з у е м ы м и п р о г р а м м а м и. П а к е т ы – э т о с п о -с о б и е р а р х и ч е с к о й о р г а н и з а ц и и м о д у л е й. С т а н д а р т н а я б и б л и о т е к а Python я в л я е т с я п р и -м е р о м т а к о г о н а б о р а п а к е т о в и м о д у л е й.

 

М ы у в и д е л и, к а к п о л ь з о в а т ь с я э т и м и м о д у л я м и и с о з д а в а т ь с в о и.

 

Д а л е е м ы п о з н а к о м и м с я с н е к о т о р ы м и и н т е р е с н ы м и к о н ц е п ц и я м и, н а з ы в а е м ы м и «с т р у к т у р ы д а н н ы х ».


 

 

78                                                                                                                                                   Г л а в а 11. М о д у л и


 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.