>  기사  >  백엔드 개발  >  자신만의 Python 모듈 작성

자신만의 Python 모듈 작성

little bottle
little bottle앞으로
2019-04-09 13:21:422285검색

사실 온라인에는 꽤 많은 Python 튜토리얼이 있습니다. 자신만의 모듈을 작성하는 것은 매우 간단합니다. 모든 Python 프로그램도 모듈이기 때문입니다. .py 확장자가 있는지 확인하기만 하면 됩니다. 다음 사례는 명확한 설명을 제공합니다.

Case(mymodule.py로 저장): mymodule.py):

import mymodule

mymodule.say_hi()
print('Version', mymodule.__version__)

上方所呈现的就是一个简单的模块。正如你所看见的,与我们一般所使用的 Python 的程序相比其实并没有什么特殊的区别。我们接下来将看到如何在其它 Python 程序中使用这一模块。

要记住该模块应该放置于与其它我们即将导入这一模块的程序相同的目录下,或者是放置在 sys.path 所列出的其中一个目录下。

另一个模块(保存为 mymodule_demo.py):

import mymodule

mymodule.say_hi()print('Version', mymodule.__version__)

输出:

$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1

它是如何工作的

你会注意到我们使用相同的点符来访问模块中的成员。Python 很好地重用了其中的符号,这充满了“Pythonic”式的气息,这使得我们可以不必学习新的方式来完成同样的事情。

下面是一个使用 from...import 语法的范本(保存为 mymodule_demo2.py):

from mymodule import say_hi, __version__
say_hi()
print('Version', __version__)

mymodule_demo2.py 所输出的内容与 mymodule_demo.py 所输出的内容是一样的。

在这里需要注意的是,如果导入到 mymodule 中的模块里已经存在了 __version__ 这一名称,那将产生冲突。这可能是因为每个模块通常都会使用这一名称来声明它们各自的版本号。因此,我们大都推荐最好去使用 import 语句,尽管这会使你的程序变得稍微长一些。

你还可以使用:

from mymodule import *

 这将导入诸如 say_hi 等所有公共名称,但不会导入 __version__ 名称,因为后者以双下划线开头。

警告:要记住你应该避免使用 import 这种形式,即 `from mymodule import `。

Python 之禅

Python 的一大指导原则是“明了胜过晦涩”2。你可以通过在 Python 中运行 import this 来了解更多内容。

dir 函数

内置的 dir() 函数能够返回由对象所定义的名称列表。 如果这一对象是一个模块,则该列表会包括函数内所定义的函数、类与变量。

该函数接受参数。 如果参数是模块名称,函数将返回这一指定模块的名称列表。 如果没有提供参数,函数将返回当前模块的名称列表。

案例:

$ python
>>> import sys

# 给出 sys 模块中的属性名称
>>> dir(sys)
['__displayhook__', '__doc__',
'argv', 'builtin_module_names',
'version', 'version_info']
# 此处只展示部分条目

# 给出当前模块的属性名称
>>> dir()
['__builtins__', '__doc__',
'__name__', '__package__','sys']

# 创建一个新的变量 'a'
>>> a = 5

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a']

# 删除或移除一个名称
>>> del a

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']

 它是如何工作的

首先我们看到的是 dir 在被导入的 sys 模块上的用法。我们能够看见它所包含的一个巨大的属性列表。

随后,我们以不传递参数的形式使用 dir 函数。在默认情况下,它将返回当前模块的属性列表。要注意到被导入模块的列表也会是这一列表的一部分。

给了观察 dir 函数的操作,我们定义了一个新的变量 a 并为其赋予了一个值,然后在检查 dir 返回的结果,我们就能发现,同名列表中出现了一个新的值。我们通过 del 语句移除了一个变量或是属性,这一变化再次反映在 dir 函数所处的内容中。

关于 del 的一个小小提示——这一语句用于删除一个变量或名称,当这一语句运行后,在本例中即 del a,你便不再能访问变量 a——它将如同从未存在过一般。

要注意到 dir() 函数能对任何对象工作。例如运行 dir(str) 可以访问 str(String,字符串)类的属性。

同时,还有一个 vars()rrreee

위에 제시된 것은 간단한 모듈입니다. 보시다시피 우리가 일반적으로 사용하는 Python 프로그램과 특별한 차이는 없습니다. 다음에는 다른 Python 프로그램에서 이 모듈을 사용하는 방법을 살펴보겠습니다. #🎜🎜##🎜🎜# 이 모듈은 이 모듈을 가져오려는 다른 프로그램과 동일한 디렉터리에 배치되거나 sys.path에 나열된 프로그램 중 하나에 배치되어야 한다는 점을 기억하세요. > 디렉토리 아래에 있습니다. #🎜🎜##🎜🎜#다른 모듈(mymodule_demo.py로 저장됨): #🎜🎜#rrreee

출력: #🎜🎜#rrreee#🎜🎜#작동 방식 #🎜🎜 ##🎜🎜#모듈의 멤버에 액세스할 때 동일한 점 표기법을 사용한다는 것을 알 수 있습니다. Python은 기호를 잘 재사용하여 "Pythonic" 느낌을 주기 때문에 동일한 작업을 수행하기 위해 새로운 방법을 배울 필요가 없습니다. #🎜🎜##🎜🎜#다음은 from...import 구문을 사용하는 템플릿입니다(mymodule_demo2.py로 저장). #🎜🎜#rrreee

mymodule_demo2.py에 의해 출력되는 콘텐츠는 mymodule_demo.py에 의해 출력되는 콘텐츠와 동일합니다. #🎜🎜##🎜🎜#mymodule로 가져온 모듈에 __version__ 이름이 이미 존재하는 경우 충돌이 발생한다는 점에 유의해야 합니다. 이는 아마도 각 모듈이 일반적으로 이 이름을 사용하여 해당 버전 번호를 선언하기 때문일 것입니다. 따라서 프로그램이 약간 길어지더라도 일반적으로 import 문을 사용하는 것이 좋습니다. #🎜🎜##🎜🎜#다음을 사용할 수도 있습니다: #🎜🎜#rrreee

이렇게 하면 say_hi와 같은 모든 공개 이름을 가져오지만 __version__ 이름은 가져오지 않습니다. 이중 밑줄로 시작합니다. #🎜🎜#

#🎜🎜#경고: import 양식(예: `from mymodule import `)을 사용하지 마세요. #🎜🎜#
#🎜🎜#Zen of Python#🎜🎜##🎜🎜#Python의 기본 원칙 중 하나는 "명확함이 모호함보다 낫다"는 것입니다2. Python에서 import this를 실행하여 자세히 알아볼 수 있습니다. #🎜🎜#

dir 함수

#🎜🎜#내장 dir() 함수 개체에 의해 정의된 이름 목록을 반환할 수 있습니다. 이 개체가 모듈인 경우 목록에는 함수, 클래스 및 함수 내에 정의된 변수가 포함됩니다. #🎜🎜##🎜🎜#이 함수는 매개변수를 받습니다. 인수가 모듈 이름인 경우 함수는 지정된 모듈에 대한 이름 목록을 반환합니다. 인수가 제공되지 않으면 함수는 현재 모듈의 이름 목록을 반환합니다. #🎜🎜#

사례: #🎜🎜#rrreee

작동 방식 #🎜🎜##🎜🎜#가장 먼저 보이는 것은 dirsys 모듈. 여기에 포함된 방대한 속성 목록을 볼 수 있습니다. #🎜🎜##🎜🎜#이후 매개변수를 전달하지 않고 dir 함수를 사용합니다. 기본적으로 현재 모듈의 속성 목록을 반환합니다. 가져온 모듈 목록도 이 목록의 일부입니다. #🎜🎜##🎜🎜#dir 함수의 작동을 관찰하기 위해 새 변수 a를 정의하고 값을 할당한 다음 dir에 의해 반환되면 동일한 이름의 새 값이 목록에 나타나는 것을 확인할 수 있습니다. del 문을 통해 변수나 속성을 제거했고, 이 변경 사항이 다시 dir 함수의 내용에 반영되었습니다. #🎜🎜##🎜🎜#del에 대한 작은 팁 - 이 명령문은 이 명령문이 실행된 후 변수나 이름을 삭제하는 데 사용됩니다. >del a를 사용하면 더 이상 a 변수에 액세스할 수 없습니다. 마치 존재하지 않았던 것처럼 됩니다. #🎜🎜##🎜🎜#dir() 함수는 모든 개체에서 작동할 수 있다는 점에 유의해야 합니다. 예를 들어 dir(str)을 실행하면 str(문자열, 문자열) 클래스의 속성에 액세스할 수 있습니다. #🎜🎜##🎜🎜#동시에 이러한 값의 속성을 반환할 수 있는 vars() 함수도 있지만 제대로 작동하지 않을 수도 있습니다. 모든 수업에 대해. #🎜🎜#

추천 강좌: Python 비디오 튜토리얼

위 내용은 자신만의 Python 모듈 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제