python中 import,from . import模块

  python中 import,from . import模块

  第一条。背景2。引入方法2.1 import语句2.2 from…import语句2.3 from…import*语句2.4搜索路径2.5 PYTHONPATH变量2.6命名空间和作用域2.7 dir () 2.8 globals()和locals()函数2.9 reload()函数3。Python中的包

  1.背景python的类和函数的主要区别是类可以有变量和各种方法,而函数没有。函数只能运行,可以返回也可以不返回。

  如果模块没有将该类声明为私有,则其他模块可以通过导入该模块,然后用“模块名”调用它来使用该类。“类名”。

  Python模块,一个以。py,包含Python对象定义和Python语句。模块使您能够以逻辑方式组织Python代码段。将相关代码分配给一个模块可以使您的代码更易于使用和理解。模块可以定义函数、类和变量,模块也可以包含可执行代码。如果您退出Python解释器并重新进入,您定义的所有方法和变量都将消失。

  Python为一些脚本或交互式解释器实例提供了一种在文件中存储这些定义的方法。这个文件称为模块。

  模块:它是一个文件,包含了你定义的所有函数和变量,它的后缀是。py。其他程序可以引入一个模块来使用该模块中的函数。这也是python标准库的使用方法。

  下面是一个在python标准库中使用模块的例子。

  示例(Python 3.0)

  #!/usr/bin/python3

  #文件名:using_sys.py

  导入系统

  Print(命令行参数如下:)

  对于sys.argv中的I:

  打印(一)

  print(\n\nPython path is:,sys.path, \n )的执行结果如下:

  $ python using_sys.py参数1参数2

  命令行参数如下:

  using_sys.py

  参数1

  参数2

  Python路径为:[/root ,/usr/lib/python3.4 ,/usr/lib/Python 3.4/plat-x86 _ 64-Linux-GNU ,/usr/lib/python3.4/lib-dynload ,/usr/local/lib/Python 3.4/dist-packages ,/usr/lib/Python 3/dist-packages ]1。导入sys引入python标准库中的sys.py模块;这是介绍某个模块的方式。

  2.sys.argv是包含命令行参数的列表。

  3.sys.path包含Python解释器自动查找所需模块的路径列表。

  2.介绍方法

  2.1导入报表模块的介绍

  在定义了模块之后,我们可以使用import语句来引入模块。语法如下:

  导入模块1 [,模块2 [,Module]]比如你想引用module math,可以用import math在文件开头引入。在数学模块中调用函数时,必须像这样引用它:

  模块名称。函数名

  当解释器遇到导入语句时,如果模块在当前的搜索路径中,就会被导入。

  搜索路径是解释器将首先搜索的所有目录的列表。如果您想要导入模块support.py,您需要将命令放在脚本的顶部:

  Test.py文件代码:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  #导入模块

  进口支持

  #现在您可以调用模块中包含的函数

  上面示例的Support.print_func(Runoob )输出结果:

  你好:Runoob一个模块只会被导入一次,不管你导入多少次。这可以防止导入模块被反复执行。

  2.2 from…import语句Python的from语句允许将指定部分从模块导入到当前名称空间。语法如下:

  Modname导入名称1 [,名称2 [,namen]]例如,要导入fib模块的fibonacci函数,请使用以下语句:

  From fib import fibonacci这个语句不会将整个fib模块导入到当前名称空间,而只会将fib中的fibonacci引入到执行这个语句的模块的全局符号表中。

  2.3通过from … import *语句将模块的所有内容导入当前名称空间也是可行的,只需使用以下语句:

  Modname import *这提供了一个简单的方法来导入一个模块中的所有项目。但是,这种说法不宜过多使用。

  例如,我们想一次性介绍数学模块中的所有内容,语句如下:

  从数学导入*

  2.4搜索路径导入模块时,Python解析器按以下顺序搜索模块位置:

  1.当前目录

  2.如果它不在当前目录中,Python将搜索shell变量PYTHONPATH下的每个目录。

  3.如果都找不到,Python会检查默认路径。在UNIX下,默认路径一般是/usr/local/lib/python/。模块搜索路径存储在系统模块的sys.path变量中。该变量包含当前目录、PYTHONPATH和由安装过程确定的默认目录。

  2.5 PYTHONPATH变量作为环境变量,PYTHONPATH由安装在一个列表中的多个目录组成。PYTHONPATH的语法与shell变量PATH的语法相同。

  在Windows系统上,典型的PYTHONPATH如下:

  set python path=c:\ python 27 \ lib;在UNIX系统上,典型的PYTHONPATH如下:

  设置python path=/usr/local/lib/python

  2.6名称空间和范围变量是匹配对象的名称(标识符)。名称空间是一个包含变量名(键)和它们对应的对象(值)的字典。

  Python表达式可以访问本地命名空间和全局命名空间中的变量。如果局部变量和全局变量同名,局部变量将覆盖全局变量。

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

  Python会智能地猜测一个变量是局部的还是全局的。它假设函数中任何被赋值的变量都是局部变量。

  因此,如果要在函数中给全局变量赋值,必须使用global语句。

  global VarName的表达式会告诉Python VarName是一个全局变量,这样Python就不会在局部名称空间中寻找这个变量。

  例如,我们在全局名称空间中定义了一个变量Money。我们在函数中给变量Money赋值,Python会假设Money是一个局部变量。但是我们在访问之前没有声明一个局部变量Money,结果会出现UnboundLocalError错误。取消对全局语句的注释可以解决此问题。

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  钱=2000

  def AddMoney():

  #如果要更正代码,请取消以下注释:

  #全球货币

  金钱=金钱1

  印钞

  AddMoney()

  印钞

  2.7 dir () function dir () function字符串的排序列表,其内容是模块中定义的名称。

  返回的列表包含模块中定义的所有模块、变量和函数。这里有一个简单的例子:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  #导入内置数学模块

  导入数学

  内容=目录(数学)

  打印内容;上面的示例输出结果:

  [__doc__ , __file__ , __name__ , acos , asin , atan ,

  atan2 , ceil , cos , cosh , degrees , e , exp ,

   fabs , floor , fmod , frexp , hypot , ldexp , log ,

  log10 , modf , pi , pow ,弧度, sin , sinh ,

  Sqrt , tan , tanh]这里的特殊字符串变量__name__指向模块的名称,而__file__指向模块的导入文件名。

  2.8 globals()和locales()函数根据调用它们的位置,globals()和locales()函数可用于返回全局和本地命名空间中的名称。

  如果在函数内部调用locals(),则返回该函数中可以访问的所有名称。

  如果在函数内部调用globals(),将返回该函数中可以访问的所有全局名称。

  这两个函数的返回类型都是字典。所以可以用keys()函数来获取名称。

  2.9 reload()函数当一个模块被导入到脚本中时,模块顶部的代码只会被执行一次。

  因此,如果想要重新执行模块顶部的代码,可以使用reload()函数。该功能将重新导入以前导入的模块。语法如下:

  重新加载(模块名)

  这里,module_name应该直接放置模块的名称,而不是字符串形式。例如,如果要重载hello模块,如下所示:

  重新加载(你好)

  3.Python中的包是一种分层的文件目录结构,定义了一个由模块和子包组成的Python应用环境,子包下有子包。

  简单来说,包就是一个文件夹,但是这个文件夹下必须有init.py文件,这个文件的内容可以是空的。Init.py用于标识当前文件夹是一个包。

  考虑package_runoob目录中名为runoob1.py、runoob2.py和init.py的文件。test.py是测试调用包的代码。目录结构如下:

  测试. py

  package_runoob

   - __init__。巴拉圭

   - runoob1.py

  -runoob 2 . py的源代码如下:

  package_runoob/runoob1.py

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  def runoob1():

  打印“我在run OOB 1”package _ run OOB/run OOB 2 . py

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  def runoob2():

  打印我在runoob2 现在,在package_runoob目录下创建init.py:

  package_runoob/init.py

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  if __name__==__main__ :

  打印“作为主程序运行”

  否则:

  打印 package_runoob初始化然后我们在package_runoob的同一个目录下创建test.py来调用package_runoob

  测试. py

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  #导入手机包

  从package_runoob.runoob1导入runoob1

  从package_runoob.runoob2导入runoob2

  runoob1()

  上面的Runoob2()示例输出结果:

  Package_runoob初始化

  我在runoob1

  我在runoob2如上,比如我们每个文件只放一个函数,但是你实际上可以放很多函数。您还可以在这些文件中定义Python类,然后为这些类构建一个包。

  来自

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: