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

  • 相关阅读:
    gradle3.0新命令
    Android Studio项目生成Jar包
    《图解HTTP》读书笔记
    Java实现多继承
    Unity3d和Android之间互相调用
    《Gradle权威指南》--Android Gradle NDK支持
    《Gradle权威指南》--Android Gradle测试
    《Gradle权威指南》--Android Gradle多渠道构建
    adb命令大全
    SparseArray源码解析
  • 原文地址:https://www.cnblogs.com/DLHe/p/7744300.html
Copyright © 2011-2022 走看看