朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
创建一个Python模块非常非常简单,只需要使用文本编辑器,把一些Python代码输入至文本文件中,然后以“.py”为后缀名进行保存,就会被自动认为是Python模块。
我们在名为module1.py的文件中输入下面的def语句。
def printer(x): # Module attribute
print(x)
模块的创建已经讲完了,是滴,就是这么简单。下面我们再来说说模块的使用。
我们可以通过执行import或from语句,来使用上面编写的简单模块文件。
两个语句主要的差别在于,import会读取整个模块;from将获取(或者说是复制)模块中特定的变量名。让我们从代码的角度来看这意味着什么吧。
先看看import。
>>>import module1 # Get module as a whole
>>>module1.printer('Hello world!') # Qualify to get names
Hello world!
如果使用import,我们必须通过模块名称来得到该模块的属性(例如,module1.printer)。
再看看from。
因为from会把变量名复制到另一个作用域,所以它就可以让我们直接在脚本中使用复制后的变量名,而不需要通过模块名称。
>>>from module1 import printer # Copy out one variable
>>>printer('Hello world!') # No need to qualify name
Hello world!
上面两个例子有着相同的效果,但是from语句出现时,导入的变量名会复制到作用域内,在脚本中使用该变量名就可少输入一些:我们可直接使用变量名,而无须在嵌套模块名称之后。
我们还可以使用from *语句。
当我们使用*时,会取得模块顶层所有赋了值的变量名的拷贝。在这里,我们还是在脚本中使用复制后得到的变量名printer,而不需要通过模块名。
>>>from module1 import * # Copy out all variables
>>>printer('Hello world!')
Hello world!
从技术角度来说,import和from语句都会使用相同的导入操作。from *形式只是多加个步骤,把模块中所有变量名复制到了进行导入的作用域之内。从根本上来说,这就是把一个模块的命名空间融入另一个模块之中;实际效果就是可以让我们少输入一些。
点赞,收藏,谢谢!