空间名称 《Python语言》电子课件 第十章 模块.pdf 39页

acos导入到名称空间后就再没必要引用模块了。而且对这些变量的改变只影响它的局部拷贝而不是所导入模块的原始名称空间。除了绝对导入,也允许通过模块或包名称前置句点实现相对导入。语法,让程序员告诉导入者在子包的哪里查找某个模块。本章小结本章介绍了模块的相关知识,和包的相关知识。最后介绍了包的概念,使读者了解了树形的文件目录结构,同时讲解了全部导入和相对导入的相关概念。

以下为知识DOC为大家进行整理的相关内容,希望对大家有所帮助!

1 0. 1 异常 1 0 . 2 抛出异常 1 0. 3 捕获异常 1 0. 4 f i n a l I y 语句 1 0 . 5 处理异常的特殊方法 1 0 . 6 让五子棋更健壮本章目录1 1 . 1 模块 1 1 . 2 名称空间 1 1 . 3 模块导入特性 1 1 . 4 模块内建函数 1 1 . 5 包体系结构导入特性模块内建函数作用域 体系结构名称空间名称查找全部导入包相对导入 11.1 模块模块实际上是从逻辑上对代码的一种组 织方式。当代码量变得很大时,利用模块能把这些代码分散 地组织起来,使得代码更有层次,易于阅读。这些代码片段 相互间有一定的联系,可以互相调用,可能是一个类,也可 能是一组相关但彼此独立的函数。由于这些代码段是共享的 ,所以允许调入一个模块,这一调入操作叫做导入 () 。那些自我包含并且有组织的代码片断就是模块 ( )在实际存储时,一个文件就是一个模块。因此,一 个文件被看作是一个独立模块, 一个模块也可以被看作是一 个文件。

模块的文件名就是模块的名字加上扩展名. py。任何 程序都可以作为模块导入。 例10-1模块函数举例,用户自定义模块问题分析:定义pr 函数,打印输出所有传入的参数。/usr/ in/ # ! b2 #: hello .py3 # : 打印参数4 def (name): : ’’,本例定义了文件,同时也定义了模块,其模块名字为hell 11.1 模块 如果要引用已建立的模块或系统的模块, 需要使用关 键字。它可以从外部模块获取函数并且为自己的程序使用。 使用 语句导入模块, 它的语法如下所示: 也可以在一行内导入多个模块:i mport modu I e1 [ modu I e2 [modu I eN]],,… 11.1 模块引用系统的模块mat h方法如下:>» math>»math .cos(O)1.0引用模块h e l l o方法如下:>» hello>»hello .(nMr.Liuff )hello : Mr.Liu8 11.1 模块如果待引用模块文件位置与引用模块的文件不一致时,需要指定路径。

比如上述模块hello在文件夹 home下时:»> sys»> sys path‘ ’). .(home\»> hello»> hello .(ffMr.LiuM )hello : Mr丄iu 11.1 模块 语句将一个模块的所有属性全部导入,在,from- 中也可以仅仅导入一部分属性 这时需要使用 语句,其语法为 :from namel [, name2 [,… nameN]]例如当只需要模块math 中的acos() 函数和sqrt() 函数时:>»from math acos, sqrt»> print acos(- l )3.»> print sqrt(2)1.40 11.1 模块 有时候导入的模块或是模块属性名称已经在自己的程序 中使用了,或者不想使用导入的名字。一个比较常用的 解决方案是把模块赋值给一个变量: »> math> » like name = math— »> print .acos( 1)- 3.I ike 在示例中,使用代替了,这样就实现了使 用自己想要的名字替换模块的原始名称。

空间名称_qq空间名称大全_空间名称怎么弄长

除了这种方法 外,还可以利用语言里的语句来实现:as语句。11 11.1 模块as语句的语法: as 或者:from old name as new name代码示例:»> math as like name»> p rint like—name,acos(-l)3.»> from math acos as like name»> p rint (-l )3. 11.2 名称空间()名称空间是名称变量标识符到对象的映射。向名称空间添加名称的操作过程 涉及到绑定标识符,到指定对象的操作,和给该对象的引用计数加一。13 1 1 . 2 名称空间( D 程序执行期的名称空间在程序执行期间有两个或三个活动的名称空间。这三个名称空间分别是局部名称空间,全局名称空间和内建名称空,()间 但局部名称空间在执行期间是不断变化的时有时无。在名称空间中访问这些名字时,依赖于系统加载这些名称空间的顺序。

在程序运行时,解释器首先加载内建名称空间,_bui 它由模块中的名字构成。之后加载执行模块的全局名&空间, 它会在模块开始执行后变为活动名称空间。这样就有了两个活动的名称空间。如果在执行期间调用了一个函数或者是类的方法,那么将创建出第三个名称空间,即局部名称空间。使用 () 和 local s () 内建函数可以输出全局名称空间中的名称,和局部名称空间的名称,两个函数的详细说明在节。 11.2 名称空间( 2 ) 变量作用域标识符的作用域是其声明在程序里的可应用范围,即是变量可见性。变量可以是局部域或者全局域。定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域。如果变量定义在函数中, 它的出现即为函数的局部变量,全局变量的一个特征是除非被删除掉,否则它们的存活到脚本运行结束,且对于所有的函数,全局变量的值都是可以被访问的,然而局部变量,就像它们存放的栈, 暂时地存在,仅仅只依赖于定义它们的函数现阶段是否处于活动。当一个函数调用出现时,其局部变量就进入声明它们的作用域。在那一刻,一个新的局部变量名为那个对象创建了,一旦函数完成, 变量将会离开作用域。

1 1 . 2 名称空间>= » var ’#定义一个全局变量’> »def f():#定义一个函数>= »local var ’ ’> » + local var> »f()#调用函数 > »print var#使用一个全局变量 > »print local var#使用一个局部变量 (most call last):in 〈 〉 1 ,,’’”Mfwk , 可 以#函 数 () 内部访问 也可以存f, 全局作用城访问而 l o c a l v a r 是居咅 变量只食b在函数f内咅 访问:B,0R, 在函数f () 外访问将导致错误。 11.2 名称空间( 3 ) 名称空间与变量作用域比较名称空间是纯粹意义上的名字和对象间的映射关系,而作用域还指出了从用户代码的哪些物理位置可以访问到这些名字。从作用域的观点来看,所有局部名称空间的名称都在局部作用范围内。

局部作用范围以外的所有名称都在全局作用范围内。还要记得在程序执行过程中,局部名称空间和作用域会随函数调用而不断变化,而全局名称空间是不变的。 1 1 . 2 名称空间( 4 ) 名称查找,确定作用域,覆盖确定作用域的规则是如何联系到名称空间的呢? 它所要做的就是名称查询。访问一个属性时,解释器必须在三个名称空间中的一个找到它。首先从局部名称空间开始,如果没有找到,解释器将继续查找全局名称空间。如果这也失败了空间名称, 它将在内建名称空间里查找。如果最后的尝试也失败了,将会得到这样的错误:>» (most call last): 1 ,,’’’’: name gogo is not ’ 1 1 . 2 名称空间先查找的名称空间将会 “”在查找名称时,遮敝其它后搜索的名称空间。例如,局部名称空间中找到的名字会隐藏全局或内建名称空间的对应对象。这就相当于覆盖了那个全局变量,例如:»> def g():»>var = 10»>print ’’in g() var = , var,»> var = 20»> g()in g() var = 10,函数g () 的局部名称空间里的变量var 覆盖了全局的var 变量 。

空间名称_qq空间名称大全_空间名称怎么弄长

即使变量var 存在于全局名称空间里,但程序首先找到的是局部名称空间里的那个var ,所以覆盖了全局的变量var o 1 1 . 3 模块导入特性一个模块只被加载一次,无论它被导入多少次。这可以阻止多 重导入时代码被多次执行。例如,模块导入了math模块,而导入的其它 3个模块也导入了math模块,那么每次都加载math模块将会造成不必要 的浪费。所以,加载只在第一次导入时发生。导入到当前名称空间的名称调用from-可以把名字导入 当前的名称空间里去,这意味着不需要使用句点属性标识来访问模块的 标识符。例如, 当需要访问模块math 中的acos名字时是这样被导入的: from math acos , 这样使用单个的acos就可以访问它自身。把 acos导入到名称空间后就再没必要引用模块了。当然,也可以把指定模 块的所有名称导入到当前名称空间里:from *20 1 1 . 2 模块导入特性但在实践中 ,from *不是良好的编程习“”惯,因为这样可能会污染当前名称空间,可能会覆盖当前名称空间中现有的名称。

但如果某个模块有很多要经常访问的变量或者模块的名字很长 这也是一个好的方法,。从模块中只导入名字的另一个副作用是,那些名字会成为局部名称空间的一部分。这可能导致覆盖一个已经存在的具有相同名字的对象。而且对这些变量的改变只影响它的局部拷贝而不是所导入模块的原始名称空间。也就是说,绑定只是局部的而不是整个名称空间。下面介绍了一个只导入名称产生的副作用。 1 1 . 3 模块导入特性 首先,提供了一个模块的代码:1 = ’’abc”2 def print— () :3 print 然后,当只导入h e l l o模块内属性的名字时:»> from hello ,»> = ’’xyz’,»> ()在示例中可以看出, 当使用f r o mi m p o r t 语句导入模块内属性的名字时,导入的是属性的拷贝,因此对导入的名字改变时, 不会改变被导入模块内的属性。22 1 1 . 3 模块导入特性若要想改变被导入模块的属性,应该使用 语句导入整个模块: »> hello »> hello . = nxyz? »> hello .print— () xyz 使用 语句导入整个模块,对模块属性的引用将不 再是原有模块属性的拷贝,而是原来模块中的属性,这 样就可以改变被导入模块中的属性值。

空间名称_qq空间名称大全_空间名称怎么弄长

23 1 1 . 4 模块内建函数为模块提供了一些功能上的支持, 即内_建函数。它们在bui Itin模块中定义。这个模块一_般不用手动导入。24 11.4 1.()__ () 函数是实际上导入模块的函数, 语句也是通过调用__ 函数完成工作的。用户可以覆盖 0 函数,来实现自定义的导入算法,也可以使用该函数实现延迟化的模块导入。___i mport () 函数的一般形式为: (modul e name [ g loba I s [, I oca I s [, from I ist]]]),— 其中mod I ue name、g I oba I s Ioca I s和,是要导入模块的名称,而后面的, froml ist都是可选参数。g loba I s 和I oca I s分别是包含当前全局符号表的名字和包含局部符号表名字的字典;from | ist是一个使用from-i mport语句所导入符号的列表。 11.4.()i () 语句的具体使用方法为 :>»—(’sys’)>» (’os’ () () [’path ’ ’pip’]),,, ,—上面两个语句分别等价于:»> sys»>from os path , pip26 11.4. 1 ()和()globa I s () 和 I oca I s () 是分别返回调用者全局和局部名称空间的字典。

在一个函数的内部,局部名称空间代表在函数执行时候定义的所有名字, I oca Is () 函数返回的就是包含这些名字的字典,而 会返回函数可访问的全局名字。另外在全局名称空间下,globa Is () 和 () 会返回相同的字典27 11■ 4. 2 ()和() 这两个函数的使用方法为 :>»print ()〈in 〉{ : ’ (built- ) ’’,’————oc None fNone,: :}’’——>»def f(a b):,>»print ()>»f( U), ,,a l b : 2{’: ,}>»()» , .〈〉尸 ’ built-in) {’’(,5 •———— f doc ::}?,’’’———>»()〈in 〉 ’built- ){’’(,_ :5 •—————〈 f at 〉,,: :}’’— 11.43 dir() dir () 函数会列出模块定义的标识符。

标识符有函 数、类和变量。它的一般形式为:dir ( [])当给dir () 提供一个模块名字时,它返回在那个 模块中定义的名字的列表。当没有为其提供参数时,它返回当前模块中定义的名字的列表。2911-2「 例di ( 函数应用举例)1?dir : [’A’ ’Al ’ ’doc ’运行總:,,,,2def a(self): , file , nam,— —3pass e ? , ’],— ——4A 1 ( ):__dir class A : ’ doc ’’ ’ ’a’][— ,— ,5def al (self dir class Al : ’ doc ’’ ’ ’a’ ’al ’][,, ,—— ——dir a(Al ): ’ doc ’’ ’ ’a’ ’al ’]6pass[——,, ,— ——_’dir . : acmp’’’’’7if name[,,,,——————, doc ’ ’’dir — — ,, ’func ’get ’ ’ ’’dir c —— ,,— ,— ,, hash V ’’dir ’ = Al () ,,self ’ , ’’dir class,’’’ ’’,,, ’’dir f —?__’im func’ im self, 11.4. 4 ()() 内建函数可以重新导入一个已导入模块, 它一般用于原模块有变化等特殊情况,其一般形式为:re Ioad ()注意:reI oad前该模块必须已经导入过,而且必须被成功导入。

这里的必须是模块自身,并不是字符串。另外,模块中的代码在导入时被执行,但只执行一次。以后执行i mport语句不会再次执行这些代码,只是绑定模块代码。31 1 1 5 包包是一个有层次的文件目录结构,它将有联系的模块组织在一起,有效地避免了模块名称的冲突问题。包不仅为平坦的名称空间加入有层次的组织结构,而且允许分发者使用目录结构,而不是一堆混乱的文件。与类和模块相同,包也使用句点属性来访问它们的元素,也使用标准的和from-语句倒入包中的模块。32 1 1 5 包 假设一个包的例子有如下目录结构:/例子中, on为最init—. util .py顶层的包, ,/和Col lege都是它init • .py的子包。注意到几乎每层View.py目录下都有一个文件,这/些是初始化模块,只有包—init— .pyUrl .py含这个文件,多层目录结Ajax .py构的包才能让 语句/init •py找到Admin.py33 1 1 5 包当需要导入子包时: View..这时使用中的getI nfo函数时: View(.. . )当然也可以使用from-来实现不同需求的导入空间名称,例如当只导入顶层子包时:from 使用文件中函数时:.View.()34 1 1 5 包另一种方法是引入更深层的子包,如:from View. 这时使用函数时为 :View.() 还可以沿着树形结构更深层次的导入:from View ..这时函数可以直接使用:()35 1 1 5 包( D 全部导入from-all包同样支持语句 :from . 这样写时会导入哪些文件取决于操作系统的文件系统。

当然,用户也可以在中自定义需要导入的模块,即将想要导入的模块名字组成一个字符串列表赋值给 all变星。36 1 1 5 包( D 相对导入因为导入子包肯能会和真正的标准模块发生冲突,这时包模块会把名字相同的标准库模块隐藏掉。所以,所有的导入现在都被认为是绝对的,即通过访问,如。除了绝对导入,也允许通过模块或包名称前置句点实现相对导入。相对导入的特性稍微地改变了 语法,让程序员告诉导入者在子包的哪里查找某个模块。因为语句总是绝对导入,所以相对导入只应用于from-语句。语法的第一部分是一个句点,指示一个相对的导入操作。之后的其它附加句点代表当前from起始查找位置后的一个级别。 1 1 5 包假设现在是在的模块下,则下面语句:from . •• .. Admin分别等价于: .. . ..Admin 1 1 . 5 本章小结本章介绍了模块的相关知识,和包的相关知识。

学习了如何创建模块,如何导入模块。模块的使用能使程序更加具有层次性,使得程序更加易于管理。掌握名称空间,有助于对程序运行时名称引用的理解。之后介绍了几种模块的内建函数空间名称, 包括() 、 s () > 、dir () 和re load () 等。最后介绍了包的概念,使读者了解了树形的文件目录结构,同时讲解了全部导入和相对导入的相关概念。39

本文地址: https://www.zhishidoc.com/23776.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 859089669@qq.com 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年10月26日 上午8:08
下一篇 2022年10月26日 上午8:09

相关推荐

  • 2021霸气的篮球队口号.docx 6页

    霸气的篮球队口号比出风采,超越自我。关于霸气的篮球队口号你们想了解吗?那么范文大全我整理了霸气的篮球队口号,供大家分享!霸气的篮球队口号精选1.逢投必进,精彩我秀,可艺篮球,魅力无限2.不做假账,不打假球霸气的篮球队口号推荐1.篮坛精英巅峰对决奋勇拼搏竞高低7.我的大学我的梦,我的篮球我称雄。霸气的篮球队口号分享1.大学生的篮球家园,年轻人的梦想国度。让篮球在文化的净土中徜徉9.

    2022年11月3日
    11100
  • 逗人开心又撩人的土味情话 高级不肉麻的表白情话

    现在弟弟们对于逗人开心又撩人的土味情话究竟发生什么事了?,弟弟们都想要分析一下逗人开心又撩人的土味情话,那么初夏也在网络上收集了一些对于高级不肉麻的表白情话的一些内容来分享给弟弟们,究竟是怎么回事?有什么可以逗人开心的话有没有那种很撩人的情话套路,,分享给我谢谢有哪些逗人开心又撩人的话?有没一些土味情话可以用来撩人逗人开心的话求最新能逗人开心的笑话!

    2022年10月13日
    15800
  • 形容女人美丽的成语 篇一

    成语是汉语词汇中定型的词。形容女性的美丽。形容女子容貌极美。常用来形容女子容貌美丽。凡女性美妙地一笑,用此语形容。凡美貌的女子看人,都可用此语形容。(专用于形容有英雄气概的女人)24、窈窕淑女:比喻女子秀外慧中,凡女子外貌美内心聪明可用此语赞美。31、千娇百媚:比喻女子或花朵姿态娇媚人见人爱,专用于形容女子或花朵的风度仪态。形容女子美丽的装束。

    2022年10月31日
    14200
  • 快乐跳舞 开心生活——致跳街舞的孩子们

    街舞是一种欢快,动感,活泼的舞蹈。我们在综艺节目中,网络上常常能看到一些优美欢快的街舞。孩子们喜欢上街舞,当然是在观看了某支或某些街舞后的自然想法。C位的小男孩跳得好,跳出了男孩街舞的酷酷神韵。小男孩两边的小女孩跳得更好,熟练,灵动,跳出了女孩街舞的漂亮与帅气。作为一个观舞人,欣赏者,您有没有被孩子们的节奏所感染,有没有想一起舞蹈的冲动?

    2022年10月15日
    13200
  • 最伤感的说说|最悲伤的句子

    最悲伤的句子大全人生短短几十年,不要给自己留下了什么遗憾,想笑就笑,想哭就哭,该爱的时候就去爱,无谓压抑自己。有一种感觉总在失眠时,才承认是“相思”;有一种缘分总在梦醒后,才相信是“永恒”;有一种目光总在分手时,才看见是“眷恋”;有一种心情总在离别后,才明白是“失落”。【最悲伤的句子】相关文章:最悲伤的优秀句子04-22最悲伤难过的句子01-12世界上最悲伤的句子70句07-14

    2022年10月1日
    15700

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注