首頁 後端開發 Python教學 Python中关于使用模块的基础知识

Python中关于使用模块的基础知识

Jun 10, 2016 pm 03:11 PM
python

 一个模块可以在逻辑上组织Python代码。将相关的代码到一个模块中,使代码更容易理解和使用。模块是可以绑定和借鉴任意命名属性的Python对象。

简单地说,一个模块是由Python代码的文件。一个模块可以定义函数,类和变量。模块还可以包括可运行的代码。
例子:

Python代码的模块名为aname通常位于一个名为aname.py。下面是一个简单的模块,support.py作为例子

def print_func( par ):
  print "Hello : ", par
  return

登入後複製

import语句:

可以通过在其他一些Python源文件执行import语句来使用任何Python源文件作为一个模块。import的语法如下:

import module1[, module2[,... moduleN]

登入後複製

当解释器遇到import语句,它导入(import)模块如果模块出现在搜索路径。搜索路径是一个目录列表,该解释器导入模块之前搜索。例如,导入模块hello.py,需要把下面的命令在脚本的顶部:

#!/usr/bin/python

# Import module support
import support

# Now you can call defined function that module as follows
support.print_func("Zara")

登入後複製

当执行上面的代码,产生以下结果:

Hello : Zara

登入後複製

一个模块被加载一次,不管导入的次数。这可防止模块执行发生多次导入。
from...import 语句

Python的from语句可以从一个模块中导入特定的属性到当前的命名空间。from...import 语法如下:

from modname import name1[, name2[, ... nameN]]

登入後複製

例如,从模块fib导入函数fibonacci,使用下面的语句:

from fib import fibonacci

登入後複製

此语句不导入整个模块fib到当前的命名空间;它只是介绍了fibonacci从模块fib导入模块的全局符号表列。
from...import * 语句:

它也可以通过使用下面的import语句导入从模块到当前的命名空间的所有名称:

from modname import *

登入後複製

这提供了导入从模块到当前的命名空间中的所有项目一个简单的方法;不过,这个语句应谨慎使用。
定位模块:

当导入一个模块,在下列序列模块由Python解释器搜索:

  • 当前目录
  • 如果未找到该模块,然后Python搜索在shell变量PYTHONPATH每个目录
  • 如果这些方法都失败,Python会检查默认路径。在UNIX上,默认路径是正常是/usr/local/lib/python/

模块搜索路径被存储在系统模块sys作为所述的sys.path变量。在sys.path的变量包含当前目录,PYTHONPATH和相关的默认安装。
PYTHONPATH变量:

在PYTHONPATH是一个环境变量,包括目录列表中。 PYTHONPATH的语法shell变量PATH相同。

下面是Windows系统的典型PYTHONPATH:

set PYTHONPATH=c:\python20\lib;

登入後複製

这里是UNIX系统的典型PYTHONPATH:

set PYTHONPATH=/usr/local/lib/python

登入後複製

命名空间和作用域:

变量名称(标识)映射到对象。名称空间是变量名(键)及其相应的对象(的值)的字典。

Python语句可以在本地命名空间和全局命名空间访问变量。如果局部和全局变量同名,局部变量屏蔽全局变量。

每个函数都有自己的命名空间。类方法遵循相同的作用域规则为普通函数。

Python对变量是否为局部或全局进行假定猜测。它假定任何变量赋值函数中的值是局部的。

因此为了使一个函数内的值赋给一个全局变量,必须先使用global语句。

声明 global VarName 告诉Python VarName是一个全局变量。Python 停止寻找该变量的局部命名空间。

例如,我们在全局命名空间中定义的变量Money 。在该函数的Money ,我们给定Money 的值,因此Python 假定Money 为局部变量。但是,我们设定它,所以一个UnboundLocalError是结果之前访问的局部变量Money 的值。取消global语句解决了这个问题。

#!/usr/bin/python

Money = 2000
def AddMoney():
  # Uncomment the following line to fix the code:
  # global Money
  Money = Money + 1

print Money
AddMoney()
print Money

登入後複製

dir( ) 函数:

使用dir()内置函数返回一个包含一个模块中定义名称的字符串的排序列表。

该列表包含在一个模块中定义的所有模块,变量和函数的名称。下面是一个简单的例子:

#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)

print content;

当执行上面的代码,产生以下结果:

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']

登入後複製

在这里,特殊字符串变量__name__是模块的名称,__file__是从中加载的模块的文件名。
globals()和 locals()函数:

globals() 和 locals() 函数可用于返回在根据在它们被称为位置的全局和局部名称空间的名称。

如果locals()被一个函数中调用时,它会返回所有可以在局部从函数访问的名称。

如果globals()从一个函数中调用时,它会返回所有可以从全局函数进行访问的名称。

这两个函数的返回类型是字典。因此,名称可以使用keys()函数提取出来。
reload()函数:

当该模块被导入到一个脚本,在一个模块的顶层部分的代码只执行一次。

因此,如果你想重新执行的顶级代码模块中,可以使用reload()函数。reload()函数导入先前导入的模块了。reload()函数的语法是这样的:

reload(module_name)

登入後複製

在这里,module_name是要重装,不包含模块名字符串的模块的名称。例如,要重新加载hello模块,请执行以下操作:

reload(hello)

登入後複製

Python中的包:

包是用于定义由模块和子包和子子包等的单一的Python应用环境的分层文件目录结构。

考虑一个文件Pots.py在Phone目录中可用。此文件的源代码如下一行:

#!/usr/bin/python

def Pots():
  print "I'm Pots Phone"

登入後複製

类似的方法,我们具有不同功能的另两个文件具有相同的名称如上:

  • Phone/Isdn.py文件有函数 Isdn()
  • Phone/G3.py 文件有函数 G3()

现在,创建在Phone目录中多了一个文件__init__.py:

 Phone/__init__.py
登入後複製

为了让所有的功能可用,当导入Phone,需要把__init__.py明确的import语句如下:

from Pots import Pots
from Isdn import Isdn
from G3 import G3

登入後複製

当添加完这些行到__init__.py,那么已经导入了Phone包所有这些类的使用。

#!/usr/bin/python

# Now import your Phone Package.
import Phone

Phone.Pots()
Phone.Isdn()
Phone.G3()

登入後複製

当执行上面的代码,产生以下结果:

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

登入後複製

在上面的例子我们采取示例每个文件单个函数,但可以保留文件中多个函数。还可以在这些文件定义不同的Python类,可以在包外创建那些类。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles