zoukankan      html  css  js  c++  java
  • import语句

    #在讲解import语句之前先来看一个示例:
      1 mport math
      2 
      3 r=5
      4 print('半径为5的园面积为:%.2f'%(math.pi*r**2))
      5 #保存文件名为import_test.py。在CMD窗口执行如下命令:
      6 D:Pythonworkspace>python import_test.py
      7 半径为5的园面积为:78.54
      8 #上面的程序使用了import语句。
      9 #import math的意思为从Python标准库中引入math.py模块,这是Python中定义的引入模块的方法。#import的标准语法如下:
     10 >>>import module1[,module2[,...moduleN]]
     11 #表示允许一个import导入多个模块,但各个模块间需要用逗号隔开。
     12 #当解释器遇到import语句时,如果模块在当前搜索路径就会被导入。搜索路径是一个解释器,会先搜索所有目录的列表。
     13 #当我们使用import语句时,Python解释器怎样找到对应的文件呢?这就涉及Python的搜索路径,搜索路径由一系列目录名组成,Python解释器会依次从这些目录中寻找引入的模块。
     14 看起来很像环境变量,事实上可以通过定义环境变量的方式确定搜索路径。搜索路径是在Python编译或安装时确定的,被存储在sys模块的path变量中。查看搜索路径的方式如下:
     15 import sys
     16 
     17 print('Python的搜索路径为:%s'%sys.path)
     18 #保存文件为import_sys.py,在cmd窗口执行结果如下:
     19 D:Pythonworkspace>python import_sys.py
     20 Python的搜索路径为:['D:\Pythonworkspace', 'D:\Python\python36.zip', 'D:\Python\DLLs', 'D:\Python\lib', 'D:\Python', 'D:\Python\lib\site-packages']
     21 #由以上输出结果看到,sys.path输出了一个列表,第一项输出的是执行文件的目录,即我们执行Python解释器的目录(如果是脚本,就是运行脚本所在的目录)。
     22 #了解搜索路径的概念后,可以在脚本中修改sys.path引入一下不在搜索路径中的模块。
     23 #上面我们初步引入了import语句,除了用import引入模块,还有另一种方式引入模块,示例如下:
     24 >>> from math import pi
     25 >>> print(pi)
     26 3.141592653589793
     27 #上面的操作使用了from math import pi 的方式,这是什么意思?
     28 #在Python中,from语句可以从模块中导入指定部分到当前命名空间中,语法如下:
     29 >>>from modnane import name1[,name2[,...nameN]]
     30 #例如,from math import pi 语句就是从math模块导入pi到当前命名空间,该语句不会将math整个模块导入。比如在math模块中还有sin、exp函数,在这个语句里这两个函数都使用不了,而导入整个math模块的语句中可以使用,示例如下:
     31 >>> import math
     32 >>> print(math.pi)   #math.pi可以被输出
     33 3.141592653589793
     34 >>> print(math.sin(1)) #math.sin(1)可以被输出
     35 0.8414709848078965
     36 >>> print(math.exp(1)) #math.exp(1)可以被输出
     37 2.718281828459045
     38 >>> from import math.pi
     39 SyntaxError: invalid syntax
     40 >>> from math import.pi
     41 SyntaxError: invalid syntax
     42 >>> from math import pi
     43 >>> print(pi)      #pi可以被输出
     44 3.141592653589793
     45 >>> print(math.pi)
     46 3.141592653589793
     47 >>> print(sin(1))  #sin(1)不可以被输出
     48 Traceback (most recent call last):
     49   File "<pyshell#11>", line 1, in <module>
     50     print(sin(1))  #sin(1)不可以被输出
     51 NameError: name 'sin' is not defined
     52 >>> print(exp(1)) #exp(1)不可以被输出
     53 Traceback (most recent call last):
     54   File "<pyshell#13>", line 1, in <module>
     55     print(exp(1))
     56 NameError: name 'exp' is not defined
     57 #再例如:
     58 >>> from math import pi
     59 >>> print(math.exp(1))
     60 Traceback (most recent call last):
     61   File "<pyshell#15>", line 1, in <module>
     62     print(math.exp(1))
     63 NameError: name 'math' is not defined
     64 >>> import math
     65 >>> print(math.exp(1))
     66 2.718281828459045
     67 #由以上结果可知,如果导入模块,就会得到模块中所有对象;如果指定导入某个对象,就只能得到该对象。
     68 #这样做的好处是什么呢?示例:
     69 >>> import math
     70 >>> print(math.pi)
     71 3.141592653589793
     72 >>> print(pi)
     73 Traceback (most recent call last):
     74   File "<pyshell#20>", line 1, in <module>
     75     print(pi)
     76 NameError: name 'pi' is not defined
     77 >>> from math import pi
     78 >>> print(pi)
     79 3.141592653589793
     80 #由上面的输出结果可知,如果在导入math模块时访问pi对象,需要使用math.pi,直接使用pi访问不了,会报错。使用import语句后,可以直接访问pi对象,不需要加上模块名进行访问。
     81 #如果要访问模块中多个对象,是否需要一个一个导入呢?如果要访问math中的pi和sin,是否要写两个from  math import语句呢?例如
     82 from math import pi
     83 from math import sin
     84 #当然不用,可以直接使用如下语句:
     85 from math import pi,sin
     86 #可以从一个导入语句导入多个函数,多个函数之前用逗号分割。
     87 #如果要访问模块中多个对象,是否需要一个一个导入呢?当然不用,可以直接使用如下语句:
     88 from math import*
     89 #使用该语句可以将math中所有对象都引入,比如上面几个报错的情况就可以成功输出结果:例如:
     90 >>> from math import*
     91 >>> print(pi)  #pi可以被输出
     92 3.141592653589793
     93 >>> print(math.pi)
     94 Traceback (most recent call last):
     95   File "<pyshell#28>", line 1, in <module>
     96     print(math.pi)
     97 NameError: name 'math' is not defined
     98 >>> print(sin(1))  #sin(1)可以被输出
     99 0.8414709848078965
    100 >>> print(math.sin(1))
    101 Traceback (most recent call last):
    102   File "<pyshell#30>", line 1, in <module>
    103     print(math.sin(1))
    104 NameError: name 'math' is not defined
    105 >>> print(exp(1))   #exp(1)可以被输出
    106 2.718281828459045
    107 #由输出结果看到,pi、sin、exp等函数都可以被正确输出了,这是一个简单的将项目中所有模块都导入的方法。在实际操作过程中,这种声明不建议过多使用,这样不利于编写清晰、简单的代码。只有想从给定模块导入所有功能时才使用这种方式。
    108 #除了上述几种方式外,还可以为模块取别名,例如:
    109 >>> import math as m
    110 >>> m.pi
    111 3.141592653589793
    112 #由输出结果看到,给模块取别名的方式为:在导出模块的语句末尾增加一个as子句,as后面跟上别名名称。
    113 #既然可以为模块取别名,当然也可以为函数取别名,例如:
    114 >>> from math import pi as p
    115 >>> p
    116 3.141592653589793
    117 #由输出结果可知,我们为pi取了别名为p,为函数取别名的方式和为模块取别名的方式类似,也是在语句后面加上as,as后面跟上别名名称。

    end

  • 相关阅读:
    高级特性(4)- 数据库编程
    UVA Jin Ge Jin Qu hao 12563
    UVA 116 Unidirectional TSP
    HDU 2224 The shortest path
    poj 2677 Tour
    【算法学习】双调欧几里得旅行商问题(动态规划)
    南洋理工大学 ACM 在线评测系统 矩形嵌套
    UVA The Tower of Babylon
    uva A Spy in the Metro(洛谷 P2583 地铁间谍)
    洛谷 P1095 守望者的逃离
  • 原文地址:https://www.cnblogs.com/DLHe/p/7744300.html
Copyright © 2011-2022 走看看