백엔드 개발 파이썬 튜토리얼 跟老齐学Python之Import 模块

跟老齐学Python之Import 模块

Jun 06, 2016 am 11:19 AM
import 기준 치수

认识模块

对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块)。为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义:

代码如下:


A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended. Within a module, the module's name (as a string) is available as the value of the global variable name.
 

都是洋码子,翻译一下不?不!还是只说要点:
 •模块就是一个含有python语句的文件
 •模块名就是文件名(不要扩展名.py)
 
那么,那个import random的文件在哪里呢?

用曾经讲过的那个法宝:help()函数看看:

代码如下:


>>> help(random)

 然后就出现:

代码如下:


NAME
    random - Random variable generators.

FILE
    /usr/local/lib/python2.7/random.py

MODULE DOCS
    http://docs.python.org/library/random

DESCRIPTION
    ...

 这里非常明显的告诉我们,random模块的文件就是: /usr/local/lib/python2.7/random.py(注意:这个地址是我的计算机中的地址,可能跟看官的不一样,特别是如果看官用的是windows,肯定跟我这个不一样了。)

看官这时候可能有疑问了,import是怎么找到那个文件的?类似文件怎么写?不用着急,这些我都会一一道来。

标准库

看了前面的random这个例子,看官可能立刻想到一个问题:是不是已经有人把很多常用的功能都写成模块了?然后使用者只需要用类似方法调用即可。的确是,比如上面显示的,就不是某个程序员在使用的时候自己编写的,而是在安装python的时候,就被安装在了计算机里面。观察那个文件存储地址,就知道了。

我根据上面得到的地址,列出/usr/local/lib/python2.7/里面的文件,这些文件就是类似random的模块,由于是python安装就有的,算是标配吧,给它们一个名字“标准模块库”,简称“标准库”。

这张图列出了很少一部分存在这个目录中的模块文件。

Python的标准库(standard library)是Python的一个组成部分,也是Python为的利器,可以让编程事半功倍。

如果看官有时间,请经常访问:https://docs.python.org/2/library/,这里列出了所有标准库的使用方法。

有一点,请看官特别注意,对于标准库而言,由于内容太多,恐怕是记不住的。也不用可以的去记忆,只需要知道有这么一个东西。如果在编写程序的时候,一定要想到,对于某个东西,是不是会有标准库支持呢?然后就到google或者上面给出的地址上搜索。

举例:

代码如下:


>>> import sys  #导入了标准库sys
>>> dir(sys)    #如果不到网页上看,用这种方法可以查看这个标准库提供的各种方法(函数)
['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__package__', '__plen', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'last_traceback', 'last_type', 'last_value', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
>>> sys.platform    #比如这个
'linux2'
>>> sys.version     #还有这个
'2.7.6 (default, Nov 13 2013, 19:24:16) \n[GCC 4.6.3]'

>>> help(sys.stdin)     #这是查看某个模块方法具体内容的方式

 标准库,在编程中经常用到。这里不赘述。只要看官能够知道在哪里找、如何找所需要的标准库即可。

自己编写模块

看官可能比较喜欢“自己动手,丰衣足食”(虽然真的不一定是丰衣足食),在某些必要的时候,还真得自己动手写一些模块。那么怎么编写模块呢?

前面已经交代,模块就是.py文件,所以,只要将某些语句写到一个.py文件中,它就是一个模块了。没有什么太多的秘密。

在某个目录下面建立了一个文件,名称是:mmmm.py,如下图所示,然后编辑这个文件内容。编辑好后保存。

代码是文件内容:

代码如下:


#!/usr/bin/env python
#coding:utf-8

web = "https://qiwsir.github.io"

def my_name(name):
    print name

class pythoner:
    def __init__(self,lang):
        self.lang = lang
    def programmer(self):
        print "python programmer language is: ",self.lang

 图示是文件所在目录,并且在该目录下打开了python的交互模式(我这是在ubuntu下,看官是别的操作系统的化,注意路径,如果遇到问题,可以暂时搁置,看下文)。

从图中可以看出,当前目录中有这个文件:mmmm.py

在交互模式下,仿照对标准库模块的操作方式:

代码如下:


>>> import mmmm
>>> dir(mmmm)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'my_name', 'pythoner', 'web']
>>> mmmm.__doc__    #这个是空的,正是,因为我未曾写过任何文档说明
>>> mmmm.__name__   #名字
'mmmm'
>>> mmmm.__file__   #文件
'mmmm.py'

 再看后面的:my_name,pythoner,web,都是我在内容中自己写的。

代码如下:


>>> mmmm.web
'https://qiwsir.github.io'

 web是模块mmmm中的一个通过赋值语句建立的变量,在这里,它编程了mmmm的属性,能够通过点号运算访问,其实不仅仅是这类型的赋值,其它通过def,class等,都能做为mmmm模块的属性。

代码如下:


>>> mmmm.my_name

>>> mmmm.pythoner

 当然,跟操作标准库一样,一样能够使用help()来看看这些属性的具体内容:

代码如下:


>>> help(mmmm.my_name)

Help on function my_name in module mmmm:

my_name(name)

>>> help(mmmm.pythoner)

Help on class pythoner in module mmmm:

class pythoner
 |  Methods defined here:
 | 
 |  __init__(self, lang)
 | 
 |  programmer(self)

 怎么调用呢?这样即可:

代码如下:


>>> mmmm.my_name("qiwsir")
qiwsir

 当调用模块中的函数的时候,用模块的名称(import mmmm)+点号+函数(注意,函数后面要有括号,如果有参数,括号里面跟参数),即 module_name.funciton(*args)

代码如下:


>>> py = mmmm.pythoner("c++")  
>>> py.programmer()
python programmer language is:  c++

 上面两行,则是演示用绑定的方法调用模块中的类以及类的实例方法。跟以往的相比较,似乎都是在前面多了一个mmmm.

如果感觉这个mmmm比较麻烦,可以用from,具体是这样的:

代码如下:


>>> from mmmm import *
>>> my_name('qiwsir')
qiwsir
>>> web
'https://qiwsir.github.io'
>>> py = pythoner("c++")
>>> py.programmer()
python programmer language is:  c++

 这次不用总写那么mmmm了。两种方式,哪个更好呢?没有定论。看官在以后的实践中体会,什么时候用什么方式。

上面用from mmmm import ,其中符号,表示将所有的都import进来,用这个方法,也可以只import一部分,如同:

代码如下:


>>> from mmmm import my_name    #如果看官前面运行了上述操作,需要关闭交互模式,
                                #再重启,才能看到下面过程
>>> my_name("qiwsir")
qiwsir
>>> web                         #没有import这个,所以报错。
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'web' is not defined

 这就是基本的import模块方法。看官的疑问,还要存着。且听下回分解。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WLAN 확장 모듈이 중지되었습니다. [수정] WLAN 확장 모듈이 중지되었습니다. [수정] Feb 19, 2024 pm 02:18 PM

Windows 컴퓨터의 WLAN 확장 모듈에 문제가 있는 경우 인터넷 연결이 끊어질 수 있습니다. 이러한 상황은 종종 좌절감을 주지만 다행히도 이 문서에서는 이 문제를 해결하고 무선 연결이 다시 제대로 작동하도록 하는 데 도움이 될 수 있는 몇 가지 간단한 제안 사항을 제공합니다. WLAN 확장성 모듈 복구가 중지되었습니다. Windows 컴퓨터에서 WLAN 확장성 모듈의 작동이 중지된 경우 다음 제안에 따라 문제를 해결하십시오. 네트워크 및 인터넷 문제 해결사를 실행하여 무선 네트워크 연결을 비활성화했다가 다시 활성화하십시오. WLAN 자동 구성 서비스 다시 시작 전원 옵션 수정 수정 고급 전원 설정 네트워크 어댑터 드라이버 재설치 일부 네트워크 명령 실행 이제 자세히 살펴보겠습니다.

WLAN 확장성 모듈을 시작할 수 없습니다. WLAN 확장성 모듈을 시작할 수 없습니다. Feb 19, 2024 pm 05:09 PM

이 문서에서는 무선 LAN 확장 모듈을 시작할 수 없음을 나타내는 이벤트 ID10000을 해결하는 방법을 자세히 설명합니다. 이 오류는 Windows 11/10 PC의 이벤트 로그에 나타날 수 있습니다. WLAN 확장성 모듈은 IHV(독립 하드웨어 공급업체) 및 ISV(독립 소프트웨어 공급업체)가 사용자에게 맞춤형 무선 네트워크 기능을 제공할 수 있도록 하는 Windows의 구성 요소입니다. Windows 기본 기능을 추가하여 기본 Windows 네트워크 구성 요소의 기능을 확장합니다. WLAN 확장성 모듈은 운영 체제가 네트워크 구성 요소를 로드할 때 초기화의 일부로 시작됩니다. 무선 LAN 확장 모듈에 문제가 발생하여 시작할 수 없는 경우 이벤트 뷰어 로그에 오류 메시지가 표시될 수 있습니다.

Python에서 일반적으로 사용되는 표준 라이브러리 및 타사 라이브러리 2-sys 모듈 Python에서 일반적으로 사용되는 표준 라이브러리 및 타사 라이브러리 2-sys 모듈 Apr 10, 2023 pm 02:56 PM

1. sys 모듈 소개 앞서 소개한 os 모듈은 주로 운영 체제용이지만, 이 글의 sys 모듈은 주로 Python 인터프리터용입니다. sys 모듈은 Python과 함께 제공되는 모듈입니다. Python 인터프리터와 상호 작용하기 위한 인터페이스입니다. sys 모듈은 Python 런타임 환경의 다양한 부분을 처리하기 위한 많은 함수와 변수를 제공합니다. 2. sys 모듈에서 일반적으로 사용되는 메서드 dir() 메서드를 통해 sys 모듈에 어떤 메서드가 포함되어 있는지 확인할 수 있습니다. import sys print(dir(sys))1.sys.argv-get 명령줄 매개변수 sys. argv는 프로그램 외부에서 명령을 구현하는 데 사용됩니다. 프로그램에 매개변수가 전달되고 명령줄 매개변수 열을 얻을 수 있습니다.

Python 프로그래밍: 네임드 튜플 사용의 핵심 사항에 대한 자세한 설명 Python 프로그래밍: 네임드 튜플 사용의 핵심 사항에 대한 자세한 설명 Apr 11, 2023 pm 09:22 PM

서문 이 기사에서는 계속해서 Python 컬렉션 모듈을 소개합니다. 이번에는 그 안에 있는 명명된 튜플, 즉 명명된 튜플의 사용을 주로 소개합니다. 더 이상 고민할 필요 없이 시작하겠습니다. 좋아요, 팔로우 및 전달을 기억하세요~ ^_^네임드 튜플 생성하기 Python 컬렉션의 네임드 튜플 클래스인 Tuples는 튜플의 각 위치에 의미를 부여하고 코드의 가독성을 향상시킵니다. 일반 튜플이 사용되는 모든 곳에서 사용할 수 있으며 위치 인덱스가 아닌 이름으로 필드에 액세스하는 기능을 추가합니다. 이는 Python 내장 모듈 컬렉션에서 나옵니다. 사용되는 일반 구문은 다음과 같습니다. import collections XxNamedT

Python에서 DateTime을 사용하는 방법 Python에서 DateTime을 사용하는 방법 Apr 19, 2023 pm 11:55 PM

모든 데이터에는 처음에 "DOB"(생년월일)가 자동으로 할당됩니다. 따라서 어느 시점에서는 데이터를 처리할 때 날짜와 시간 데이터를 마주치는 것이 불가피합니다. 이 튜토리얼에서는 Python의 datetime 모듈과 pandas 및 pytz와 같은 일부 주변 라이브러리를 사용하는 방법을 안내합니다. Python에서 날짜 및 시간과 관련된 모든 것은 datetime 모듈에 의해 처리되며, 이 모듈은 모듈을 5개의 다른 클래스로 더 나눕니다. 클래스는 단순히 객체에 해당하는 데이터 유형입니다. 다음 그림은 일반적으로 사용되는 속성 및 예제와 함께 Python의 5개 날짜/시간 클래스를 요약합니다. 3가지 유용한 조각 1. datet를 사용하여 문자열을 날짜/시간 형식으로 변환합니다.

Python의 가져오기는 어떻게 작동하나요? Python의 가져오기는 어떻게 작동하나요? May 15, 2023 pm 08:13 PM

안녕하세요. 제 이름은 somenzz입니다. Zheng 형제라고 불러주세요. Python의 가져오기는 매우 직관적이지만 그럼에도 불구하고 패키지가 거기에 있음에도 불구하고 여전히 ModuleNotFoundError가 발생하는 경우가 있습니다. 상대 경로는 분명히 매우 정확하지만 ImportError:attemptedrelativeimportwithnoknownparentpackage 오류는 동일한 디렉터리에서 모듈을 가져오고 이 글은 가져오기를 사용할 때 자주 발생하는 몇 가지 문제를 분석하여 가져오기를 쉽게 처리하는 데 도움이 됩니다.

Ansible 작동 방식에 대한 자세한 설명 Ansible 작동 방식에 대한 자세한 설명 Feb 18, 2024 pm 05:40 PM

Ansible의 작동 원리는 위 그림에서 이해할 수 있습니다. 관리 측에서는 관리 측에 연결하기 위해 로컬, SSH 및 zeromq의 세 가지 방법을 지원합니다. 기본값은 SSH 기반 연결을 사용하는 것입니다. 위의 아키텍처 다이어그램에서는 HostInventory(호스트 목록) 분류가 다른 방식으로 수행될 수 있습니다. 관리 노드는 단일 모듈 및 단일 명령의 일괄 실행을 구현합니다. -hoc; 관리 노드는 플레이북을 통해 웹 서비스 설치 및 배포, 데이터베이스 서버 일괄 백업 등과 같은 여러 작업 모음을 구현할 수 있습니다. 우리는 플레이북을 시스템이 통과하는 것으로 간단히 이해할 수 있습니다.

이 문서에서는 CTR 추정에서 기능 향상 및 개인화의 고전적인 방법과 효과 비교를 요약합니다. 이 문서에서는 CTR 추정에서 기능 향상 및 개인화의 고전적인 방법과 효과 비교를 요약합니다. Dec 15, 2023 am 09:23 AM

CTR 추정에서는 특성이 매우 중요한 특성 임베딩+MLP를 사용하는 주류 방법이 있습니다. 그러나 동일한 기능의 경우 다른 샘플에서 표현이 동일합니다. 이러한 방식으로 다운스트림 모델에 입력하면 모델의 표현 능력이 제한됩니다. 이러한 문제를 해결하기 위해 CTR 추정 분야에서는 Feature Enhancement Module이라 불리는 일련의 관련 연구가 제안되었다. 특징 강화 모듈은 다양한 샘플의 특징 표현에 적응하고 모델의 표현 능력을 향상시키기 위해 다양한 샘플을 기반으로 임베딩 레이어의 출력 결과를 수정합니다. 최근 Fudan University와 Microsoft Research Asia는 다양한 기능 향상 모듈의 구현 방법과 효과를 비교하는 기능 향상 작업에 대한 리뷰를 공동으로 발표했습니다. 이제 한 가지를 소개하겠습니다.

See all articles