大数据培训新三板挂牌机构 股票代码:837906 | EN CN
Python3引入什么新的东西?
Python3环境安装设置
Python3基础语法
Python3变量类型
Python算术运算符实例
Python3比较运算符实例
Python3赋值运算符实例
Python3位运算符实例
Python3逻辑运算符实例
Python3成员运算符实例
Python3标识运算符实例
Python3运算符优先级示例
Python3基本运算符
Python3 if语句
Python3 if...elseif...else语句
Python3嵌套if语句
Python3决策
Python3 while循环语句
Python3 for循环语句
Python3嵌套循环
Python3 break语句
Python3 continue语句
Python3 pass语句
Python3循环
Python3 abs()函数
Python3 ceil()函数
Python3 exp()函数
Python3 fabs()函数
Python3 floor()函数
Python3 log()函数
Python3 log10()函数
Python3 max()函数
Python3 min()函数
Python3 modf()函数
Python3 pow()函数
Python3 round()函数
Python3 sqrt()函数
Python3 choice()函数
Python3 randrange()函数
Python3 random()函数
Python3 seed()函数
Python3 shuffle()函数
Python3 uniform()函数
Python3 acos()函数
Python3 asin()函数
Python3 atan()函数
Python3 atan2()函数
Python3 cos()函数
Python3 hypot()函数
Python3 sin()函数
Python3 tan()函数
Python3 degrees()函数
Python3 radians()函数
Python3数字
Python3 string.capitalize()方法
Python3 string.center()方法
Python3 string.count()方法
Python3 string.decode()方法
Python3 string.endswith()方法
Python3 string.expandtabs()方法
Python3 string.encode()方法
Python3 string.find()方法
Python3 string.index()方法
Python3 string.isalnum()方法
Python3 string.isalpha()方法
Python3 string.isdigit()方法
Python3 string.tolower()方法
Python3 string.isnumeric()方法
Python3 string.isspace()方法
Python3 string.istitle()方法
Python3 string.isupper()方法
Python3 string.join()方法
Python3 string.len()方法
Python3 string.ljust()方法
Python3 string.lower()方法
Python3 string.lstrip()方法
Python3 string.maketrans()方法
Python3 string.max()方法
Python3 string.min()方法
Python3 string.replace()方法
Python3 string.rfind()方法
Python3 string.rindex()方法
Python3 string.rjust()方法
Python3 string.rstrip()方法
Python3 string.split()方法
Python3 string.splitlines()方法
Python3 string.startswith()方法
Python3 string.strip()方法
Python3 string.swapcase()方法
Python3 string.title()方法
Python3 string.translate()方法
Python3 string.upper()方法
Python3 string.zfill()方法
Python3 string.isdecimal()方法
Python3字符串
Python3 list.cmp()方法
Python3 list.len()方法
Python3 list.max()方法
Python3 list.min()方法
Python3 list.list()方法
Python3 list.append()方法
Python3 list.count()方法
Python3 list.extend()方法
Python3 list.index()方法
Python3 list.insert()方法
Python3 list.pop()方法
Python3 list.remove()方法
Python3 list.reverse()方法
Python3 list.sort()方法
Python3列表
Python3 tuple.cmp()方法
Python3 tuple.len()方法
Python3 tuple.max()方法
Python3 tuple.min()方法
Python3 tuple.tuple()方法
Python3元组
Python3 dictionary.cmp()方法
Python3 dictionary.len()方法
Python3 dictionary.str()方法
Python3 dictionary.type()方法
Python3 dictionary.clear()方法
Python3 dictionary.copy()方法
Python3 dictionary.fromkeys()方法
Python3 dictionary.get()方法
Python3 dictionary.has_key()方法
Python3 dictionary.items()方法
Python3 dictionary.keys()方法
Python3 dictionary.setdefault()方法
Python3 dictionary.update()方法
Python3 dictionary.values()方法
Python3字典
Python3 time.altzone()方法
Python3 time.asctime()方法
Python3 time.clock()方法
Python3 time.ctime()方法
Python3 time.gmtime()方法
Python3 time.localtime()方法
Python3 time.mktime()方法
Python3 time.sleep()方法
Python3 time.strftime()方法
Python3 time.time()方法
Python3 time.tzset()方法
Python3日期和时间
Python3函数
Python3模块
Python3 file.close()方法
Python3 file.tell()方法
Python3 file.truncate()方法
Python3 file.write()方法
Python3 file.writelines()方法
Python3 file.flush()方法
Python3 file.fileno()方法
Python3 file.isatty()方法
Python3 file.next()方法
Python3 file.read()方法
Python3 file.readline()方法
Python3 file.readlines()方法
Python3 file.seek()方法
Python3文件方法
Python3 os.access()方法
Python3 os.chdir()方法
Python3 os.chflags()方法
Python3 os.chmod()方法
Python3 os.chown()方法
Python3 os.chroot()方法
Python3 os.close()方法
Python3 os.closerange()方法
Python3 os.dup()方法
Python3 os.dup2()方法
Python3 os.fchdir()方法
Python3 os.fchmod()方法
Python3 os.fchown()方法
Python3 os.fdatasync()方法
Python3 os.fopen()方法
Python3 os.fpathconf()方法
Python3 os.fstat()方法
Python3 os.fstatvfs()方法
Python3 os.fsync()方法
Python3 os.ftruncate()方法
Python3 os.getcwd()方法
Python3 os.getcwdu()方法
Python3 os.isatty()方法
Python3 os.lchflags()方法
Python3 os.lchmod()方法
Python3 os.lchown()方法
Python3 os.link()方法
Python3 os.listdir()方法
Python3 os.lseek()方法
Python3 os.lstat()方法
Python3 os.major()方法
Python3 os.makedev()方法
Python3 os.makedirs()方法
Python3 os.minor()方法
Python3 os.mkdir()方法
Python3 os.mkfifo()方法
Python3 os.mknod()方法
Python3 os.open()方法
Python3 os.openpty()方法
Python3 os.pathconf()方法
Python3 os.pipe()方法
Python3 os.popen()方法
Python3 os.read()方法
Python3 os.readlink()方法
Python3 os.remove()方法
Python3 os.removedirs()方法
Python3 os.rename()方法
Python3 os.renames()方法
Python3 os.rmdir()方法
Python3 os.stat()方法
Python3 os.stat_float_times()方法
Python3 os.statvfs()方法
Python3 os.symlink()方法
Python3 os.tcgetpgrp()方法
Python3 os.tcsetpgrp()方法
Python3 os.tempnam()方法
Python3 os.tmpfile()方法
Python3 os.tmpnam()方法
Python3 os.ttyname()方法
Python3 os.unlink()方法
Python3 os.utime()方法
Python3 os.walk()方法
Python3 os.write()方法
Python3 os文件目录的方法
Python3文件操作
Python3标准异常
Python3断言
Python3异常处理

Python3模块

于2017-07-06由小牛君创建

分享到:


模块可以让你从逻辑上组织你的Python代码。 将相关的代码放到一个模块使代码更容易理解和使用。 模块是可以绑定和参考任意命名的Python对象属性。

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

示例

例如:一个名为 aname 模块的 Python代码通常放在一个指定为 aname.py 的文件中。这里有一个简单的模块,support.py 的例子

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

import 语句

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

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

当解释程序遇到import语句,如果模块存在于搜索路径它将导入这个模块。搜索路径是一个目录列表,解释器导入模块之前将进行搜索。例如,要导入模块 hello.py,需要在脚本的顶部放置下面的命令 -

#!/usr/bin/python3

# Import module support
import support

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

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

模块被加载一次,不管它是导入(import)的次数。如果多个导入出现,这可以防止模块执行一遍又一遍。

from...import 语句

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

from modname import name1[, name2[, ... nameN]]
例如,从 fib 模块导入 fibonacci 函数,使用下面的语句-
#!/usr/bin/python3

# Fibonacci numbers module

def fib(n): # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result
>>> from fib import fib
>>> fib(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 

此语句不导入整个 fib 模块到当前的命名空间; 它只是从 fib 模块导入全局符号表中的项目fibonacci。

from...import * 语句:

也可以使用下面的 import 语句, 将一个模块的所有名称导入到当前的命名空间 -
from modname import * 

这提供了一种简单的方法来导入模块到当前命名空间中的所有项目; 不过,这一说法应该尽量少用。

执行模块作为脚本

在一个模块,模块名(做为一个字符串)可以作为全局变量__name__的值。该模块中的代码会被执行,就好像导入它一样,但设定为“__main__”的 __name__。这意味着,通过在模块的末尾添加以下代码:

#!/usr/bin/python3

# Fibonacci numbers module

def fib(n): # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result
if __name__ == "__main__":
    f=fib(100)
    print(f)
当我们运行上面的代码,以下输出将显示
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

查找模块

当导入模块,在下面 Python解释器将搜索模块的序列 -
  • 当前目录。
  • 如果没有找到该模块,然后 Python 将搜索 shell 变量 PYTHONPATH 的每个目录.

  • 如果这些方法都失败(未找到),Python检查默认路径。 在UNIX上,默认路径通常是 /usr/local/lib/python3/.

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

PYTHONPATH 变量:

PYTHONPATH 是一个环境变量,它由一个目录列表组成。Python路径中的语法与 shell 变量PATH相同。

下面是 Windows系统中一个典型的 PYTHONPATH :
set PYTHONPATH=c:\python34\lib;
这里是 UNIX 系统的典型 PYTHONPATH :
set PYTHONPATH=/usr/local/lib/python

命名空间和范围界定

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

使用Python编写的语句可以在本地命名空间和全局命名空间访问变量。如果本地和全局变量具有相同的名称,局部变量将覆盖全局变量。

每个函数都有它自己的本地名称空间。 类方法与普通的函数遵循相同的范围规则。

Python作出明智的猜测变量是局部还是全局的。它假定任何变量赋值在函数中的值是局部的。

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

声明全局 VarName 告诉 Python 的 VarName 是一个全局变量。Python停止在局部命名空间搜索该变量。

例如,我们在全局命名空间定义一个变量Money。在函数变量 Money,我们给的 Money 的值,因此 Python 假定 Money 作为一个局部变量。 然而,我们将其设置之前计算局部变量 Money 的值, 所以一个 UnboundLocalError 错误被引发。取消全局声明解决了这个问题。

#!/usr/bin/python3

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/python3

# 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应用环境。
考虑在 Phone 目录下找到的文件Pots.py。此文件的源代码如下面的行 -
#!/usr/bin/python3

def Pots():
   print ("I'm Pots Phone")  
类似的方式,这里有不同功能的两个相同名称文件如下 -
  • Phone/Isdn.py有一个函数 Isdn()

  • Phone/G3.py 有一个函数 G3()

现在,在 Phone 目录中创建一个文件__init__.py-
  • Phone/__init__.py

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

from Pots import Pots
from Isdn import Isdn
from G3 import G3
在添加这些行到 __init__.py 后,当导入 Phone 包所有的这些类可用。
#!/usr/bin/python3

# 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类不同的文件中,然后你可以创建包在那些类之外。