书签 分享 收藏 举报 版权申诉 / 93
上传文档赚钱

类型Python3基础教程第6章课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3371815
  • 上传时间:2022-08-24
  • 格式:PPTX
  • 页数:93
  • 大小:330.58KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python3基础教程第6章课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python3 基础教程 课件
    资源描述:

    1、Python3基础教程第2版 慕课版第6章 函数与模块本章主要内容:函数变量的作用域模块包6.1 函数本节主要内容:定义函数 调用函数 函数的参数 函数嵌套定义 lambda函数 递归函数 函数列表6.1.1 定义函数 def语句用于定义函数,其基本格式如下。def函数名(参数表):函数语句return返回值 参数和返回值都可省略,示例代码如下。def hello():#定义函数.print(Python你好).hello()#调用函数Python你好 hello()函数没有参数和返回值,它调用print()函数输出一个字符串。为函数指定参数时,参数之间用逗号分隔。下面的例子为函数定义两个参数

    2、,并返回两个参数的和。def add(a,b):#定义函数.return a+b.add(1,2)#调用函数36.1.2 调用函数 调用函数的基本格式如下。函数名(参数表)在Python中,所有的语句都是解释执行的,不存在如C/C+中的编译过程。def也是一条可执行语句,它完成函数的定义。Python中函数的调用必须出现在函数的定义之后。在Python中,函数也是对象(function对象)。def语句在执行时会创建一个函数对象。函数名是一个变量,它引用def语句创建的函数对象。可将函数名赋值给变量,使变量引用同一个函数 def add(a,b):#定义函数.return a+b.add#直接

    3、用函数名,可返回函数对象的内存地址 add(10,20)#调用函数30 x=add#将函数名赋值给变量 x(1,2)#通过变量调用函数36.1.3 函数的参数在函数定义的参数表中的参数称为形式参数,简称形参。调用函数时,参数表中提供的参数称为实际参数,简称实参。实参可以是常量、表达式或变量。实参是常量或表达式时,直接将常量或表达式计算结果传递给形参。在Python中,变量保存的是对象的引用,实参为变量时,参数传递会将实参对对象的引用赋值给形参。1参数的多态性多态是面向对象的一个特点,指不同对象执行同一个行为可能会得到不同的结果。同一个函数,传递的实际参数类型不同时,可获得不同的结果,体现了多态

    4、性。def add(a,b):.return a+b#两个参数执行加法运算.add(1,2)#执行数字加法3 add(abc,def)#执行字符串连接abcdef add(1,2),(3,4)#执行元组合并(1,2,3,4)add(1,2,3,4)#执行列表合并1,2,3,42参数赋值传递 调用函数时会按参数的先后顺序,依次将实参传递给形参。例如,调用add(1,2)时,1传递给a,2传递给b。Python允许以形参赋值的方式,将实参传递给指定形参。def add(a,b):.return a+b.add(a=ab,b=cd)#通过赋值来传递参数abcd add(b=ab,a=cd)#通过赋值

    5、来传递参数cdab 采用参数赋值传递时,因为指明了形参名称,所以参数的先后顺序已无关紧要。参数赋值传递的方式称为关键字传递。3参数传递与共享引用 def f(x):.x=100.a=10 f(a)a10从结果可以看出,将实参a传递给形参x后,在函数中重新赋值x,并不会影响到实参a。这是因为Python中的赋值是建立变量到对象的引用。重新赋值时,意味着形参引用了新的对象。4传递可变对象的引用当实参引用的是可变对象时,如列表、字典等,若在函数中修改形参,通过共享引用,实参也获得修改后的对象示例代码如下。def f(a):.a0=abc#修改列表第一个值.x=1,2 f(x)#调用函数,传递列表对象

    6、的引用 x#变量x引用的列表对象在函数中被修改abc,2 如果不希望函数中的修改影响函数外的数据,应注意避免传递可变对象的引用。如果要避免列表在函数中被修改,可使用列表的拷贝作为实参 示例代码如下。def f(a):.a0=abc#修改列表第一个值.x=1,2 f(x:)#传递列表的拷贝 x#结果显示原列表不变1,2还可以在函数内对列表进行拷贝,调用函数时实参仍使用变量,示例代码如下。def f(a):.a=a:#拷贝列表.a0=abc#修改列表的拷贝.x=1,2 f(x)#调用函数 x#结果显示原列表不变1,25有默认值的可选参数 在定义函数时,可以为参数设置默认值。调用函数时如果未提供实参

    7、,则形参取默认值,示例代码如下。def add(a,b=-100):#参数b默认值为-100.return a+b.add(1,2)#传递指定参数3 add(1)#形参b取默认值-99 应注意,带默认值的参数为可选参数,在定义函数时,应放在参数表的末尾。6接受任意个数的参数 在定义函数时,如果在参数名前面使用星号“*”,表示形参是一个元组,可接受任意个数的参数。调用函数时,可以不为带星号的形参提供数据 示例代码如下。def add(a,*b):.s=a.for x in b:#用循环迭代元组b中的对象.s+=x#累加.return s#返回累加结果.add(1)#不为带星号的形参提供数据,此时

    8、形参b为空元组1 add(1,2)#求两个数的和,此时形参b为元组(2,)3 add(1,2,3)#求3个数的和,此时形参b为元组(2,3)6 add(1,2,3,4,5)#求5个数的和,此时形参b为元组(2,3,4,5)157必须通过赋值传递的参数Python允许使用必须通过赋值传递的参数。在定义函数时,带星号参数之后的参数必须通过赋值传递示例代码如下。def add(a,*b,c):.s=a+c.for x in b:.s+=x.return s.add(1,2,3)#形参c未使用赋值传递,出错Traceback(most recent call last):File,line 1,in

    9、TypeError:add()missing 1 required keyword-only argument:c add(1,2,c=3)#形参c使用赋值传递6 add(1,c=3)#带星号参数可以省略4 在定义函数时,也可单独使用星号,其后的参数必须通过赋值传递 示例代码如下。def f(a,*,b,c):#参数b和c必需通过赋值传递.return a+b+c.f(1,b=2,c=3)66.1.4 函数嵌套定义 Python允许在函数内部定义函数,示例代码如下。def add(a,b):.def getsum(x):#在函数内部定义的函数,将字符串转换为Unicode码求和.s=0.for

    10、 n in x:.s+=ord(n).return s.return getsum(a)+getsum(b)#调用内部定义的函数getsum.add(12,34)#调用函数202 注意,内部函数只能在函数内部使用。6.1.5 lambda函数lambda函数也称表达式函数,用于定义匿名函数。可将lambda函数赋值给变量,通过变量调用函数。lambda函数定义的基本格式如下。lambda参数表:表达式示例代码如下。add=lambda a,b:a+b#定义表达式函数,赋值给变量 add(1,2)#函数调用格式不变3 add(ab,ad)abadlambda函数非常适合定义简单的函数与def不同

    11、,lambda的函数体只能是一个表达式可在表达式中调用其他的函数,但不能使用其他的语句示例代码如下。add=lambda a,b:ord(a)+ord(b)#在lambda表达式中调用其他的函数 add(1,2)996.1.6 递归函数 递归函数是指在函数体内调用函数本身。例如,下面的函数fac()实现计算阶乘。def fac(n):#定义函数.if n=0:#递归调用的终止条件.return 1.else:.return n*fac(n-1)#递归调用函数本身.fac(5)120 注意,递归函数必须在函数体中设置递归调用的终止条件。如果没有设置递归调用终止条件,程序会在超过Python允许的

    12、最大递归调用深度后,产生RecursionError异常(递归调用错误)。6.1.7 函数列表因为函数是一种对象,所以可将其作为列表元素使用,然后通过列表索引来调用函数示例代码如下。d=lambda a,b:a+b,lambda a,b:a*b#使用lambda函数建立列表 d0(1,3)#调用第一个函数4 d1(1,3)#调用第二个函数3 也可使用def定义的函数来创建列表,示例代码如下。def add(a,b):#定义求和函数.return a+b.def fac(n):#定义求阶乘函数.if n=0:.return 1.else:.return n*fac(n-1)d=add,fac#建

    13、立函数列表 d0(1,2)#调用求和函数3 d1(5)#调用求阶乘函数120 d=(add,fac)#建立包含函数列表的元组对象 d0(2,3)#调用求和函数5 d1(5)#调用求阶乘函数120Python还允许使用字典来建立函数映射,示例如下。d=求和:add,求阶乘:fac#用函数add和fac建立函数映射 d求和(1,2)#调用求和函数3 d求阶乘(5)#调用求阶乘函数1206.2 变量的作用域变量的作用域是变量的可使用范围,也称为变量的命名空间。在第一次给变量赋值时,Python创建变量,变量创建的位置决定了变量的作用域。本节主要内容:作用域分类 global语句 nonlocal语句

    14、6.2.1 作用域分类 Python中变量的作用域可分为4种:内置作用域、文件作用域、函数嵌套作用域和本地作用域,如图所示 本地作用域:没有内部函数时,函数体为本地作用域。函数内通过赋值创建的变量、函数参数都属于本地作用域。函数嵌套作用域:包含内部函数时,函数体为函数嵌套作用域。文件作用域:程序文件(也称模块文件)的内部为文件作用域。内置作用域:Python运行时的环境为内置作用域,它包含了Python的各种预定义变量和函数。内置作用域和文件作用域可称为全局作用域。根据作用域的范围大小,作用域外部的变量和函数可以在作用域内使用;相反,作用域内的变量和函数不能在作用域外使用。根据作用域范围,通常

    15、将变量名分为两种:全局变量和本地变量。在内置作用域和文件作用域中定义的变量和函数都属于全局变量。在函数嵌套作用域和本地作用域内定义的变量和函数都属于本地变量,本地变量也可称为局部变量。考察下面的代码:#文件作用域a=10#a是全局变量def add(b):#参数b是函数add内的本地变量 c=a+b#c是函数add内的本地变量,a是函数外部的全局变量 return cprint(add(5)#调用函数 该程序在运行过程中,会创建4个变量:a、b、c和add,a和add是文件作用域内的全局变量,b和c是函数add内部的本地变量。另外该程序还用到了print这个内置函数,它是内置作用域中的全局变量

    16、。作用域外的变量与作用域内的变量名称相同时,以“本地”优先原则,此时外部的变量被屏蔽称为作用域隔离原则。a=10#赋值,创建全局变量a def show():.a=100#赋值,创建本地变量a.print(in show():a=,a)#输出本地变量a.show()in show():a=100 a#输出全局变量a106.2.2 global语句 在函数内部给变量赋值时,默认情况下该变量为本地变量。为了在函数内部给全局变量赋值,Python提供了global语句,用于在函数内部声明全局变量 示例代码如下。def show():.global a#声明a是全局变量.print(a=,a)#输出全

    17、局变量a.a=100#给全局变量a赋值.print(a=,a)a=10 show()a=10a=100 a1006.2.3 nonlocal语句 作用域隔离原则同样适用于嵌套函数。在嵌套函数内使用与外层函数同名的变量时,若该变量在嵌套函数内没有被赋值,则该变量就是外层函数的本地变量 示例代码如下。def test():.a=10#创建test函数的本地变量a.def show():.print(in show(),a=,a)#使用test函数的本地变量a.show().print(in test(),a=,a)#使用test函数的本地变量a.test()in show(),a=10in tes

    18、t(),a=10 修改上面的代码,在嵌套函数show()内为a赋值,代码如下。def test():.a=10#创建test函数的本地变量a.def show():.a=100#创建show函数的本地变量a.print(in show(),a=,a)#使用show函数的本地变量a.show().print(in test(),a=,a)#使用test函数的本地变量a.test()in show(),a=100in test(),a=10 如果要在嵌套函数内部为外层函数的本地变量赋值,Python提供了nonlocal语句。nonlocal语句与global语句类似,它声明变量是外层函数的本地变

    19、量,示例代码如下。def test():.a=10#创建test函数的本地变量a.def show():.nonlocal a#声明a是test函数的本地变量.a=100#为test函数的本地变量a赋值.print(in show(),a=,a)#使用test函数的本地变量a.show().print(in test(),a=,a)#使用test函数的本地变量a.test()in show(),a=100in test(),a=1006.3 模块模块是一个包含变量、函数或类的程序文件。模块中也可包含其他的各种Python语句。本节主要内容:导入模块 导入时执行模块 用import还是from

    20、重新载入模块 模块搜索路径 嵌套导入模块 查看模块对象属性 _name_属性和命令行参数 隐藏模块变量6.3.1 导入模块模块需要先导入,然后才能使用其中的变量、函数或者类等。可使用import或from语句导入模块,基本格式如下。import 模块名称import 模块名称 as新名称from 模块名称 import导入对象名称from 模块名称 import导入对象名称 as新名称from 模块名称 import*1import语句 import语句用于导入整个模块,可用as为导入的模块指定一个新名称。导入模块后,使用“模块名称.对象名称”格式来引用模块中的对象。import math#导

    21、入模块 math.fabs(-5)#调用模块中的函数5.0 math.e#使用模块中的常量2.718281828459045 fabs(-5)#试图直接使用模块中的函数,出错Traceback(most recent call last):File,line 1,in NameError:name fabs is not defined import math as m#导入模块并指定新名称 m.fabs(-5)#通过新名称调用模块函数5.0 m.e#通过新名称使用模块常量2.7182818284590452from语句 from语句用于导入模块中的指定对象,导入的对象可直接使用,不需要使用模

    22、块名称作为限定符,示例代码如下。from math import fabs#从模块导入指定函数 fabs(-5)5.0 from math import e#从模块导入指定常量 e2.718281828459045 from math import fabs as f1#导入时指定新名称 f1(-10)10.03from import*语句使用星号时,可导入模块顶层的所有全局变量和函数示例代码如下。from math import*#导入模块顶层的全局变量和函数 fabs(-5)#直接使用导入的函数5.0 e#直接使用导入的常量2.7182818284590456.3.2 导入时执行模块imp

    23、ort和from语句在执行导入操作时,会执行导入模块中的全部语句。只有执行了模块,模块中的变量和函数才会被创建,才能在当前模块中使用。只有在第一次执行导入操作时,才会执行模块。再次导入模块时,并不会重新执行模块。import和from语句是隐性的赋值语句,两者的区别如下。Python执行import语句时:会创建一个模块对象和一个与模块文件同名的变量,并建立变量和模块对象的引用。模块中的变量和函数等均作为模块对象的属性使用。再次导入时,不会改变模块对象属性的当前值。Python执行from语句:会同时在当前模块和被导入模块中创建同名变量,这两个变量引用同一个对象。再次导入时,会将被导入模块的变

    24、量的初始值赋值给前模块的变量。示例代码如下。首先,创建模块文件test.py,其代码如下。x=100#赋值,创建变量xprint(这是模块test.py中的输出!)#输出字符串def show():#定义函数,执行时创建函数对象 print(这是模块test.py中的show()函数中的输出!)可将test.py放在系统D盘根目录中,然后进入系统命令提示符窗口,在D盘根目录中执行python.exe进入Python交互环境D:python import test#导入模块,下面的输出说明模块在导入时被执行这是模块test.py中的输出!test.x#使用模块变量100 test.x=200#为

    25、模块变量赋值 import test#重新导入模块 test.x#使用模块变量,输出结果显示重新导入未影响变量的值200 test.show()#调用模块函数这是模块test.py中的show()函数中的输出!abc=test#将模块变量赋值给另一个变量 abc.x#使用模块变量200 abc.show()#调用模块函数这是模块test.py中的show()函数中的输出!下面的代码使用from语句导入test模块。from test import x,show#导入模块的变量x、show这是模块test.py中的输出!x#输出模块的变量的初始值100 show()#调用模块函数这是模块test

    26、.py中的show()函数中的输出!x=200#这里是为当前模块的变量赋值 from test import x,show#重新导入 x#x的值为模块的变量的初始值100在执行from语句时,test模块的所有语句均被执行。from语句将test模块的变量x和show赋值给当前模块的变量x和show。语句“x=200”为当前模块的变量x赋值,不会影响test模块的变量x。在重新导入时,当前模块变量x被重新赋值为test模块的变量x的值。6.3.3 用import还是from使用import导入模块时,模块的变量使用“模块名.”作为限定词,所以不存在歧义,即使与其他模块的变量同名也没有关系。在使

    27、用from时,当前模块的同名变量引用了模块内部的对象,应注意引用模块变量与当前模块或其他模块的变量同名的情况。1使用模块内的可修改对象使用from导入模块时,可以直接使用变量引用模块中的对象,从而避免输入“模块名.”作为限定词。这种便利有时也会遇到麻烦。在下面的模块test3.py中,变量x引用了整数对象100(100是不可修改对象),y引用了一个可修改的列表对象。x=100#赋值,创建整数对象100和变量x,变量x引用整数对象100y=10,20#赋值,创建列表对象10,20和变量y,变量y引用列表对象 下面的代码使用from导入模块test3。x=10#创建当前模块的变量x y=1,2#创

    28、建当前模块的变量y from test3 import*#引用模块中的x和y x,y#输出结果显示确实引用了模块中的对象(100,10,20)x=200#赋值,使当前模块的变量x引用整数对象200 y0=abc#修改第一个列表元素,此时会修改模块中的列表对象 import test3#再次导入模块 test3.x,test3.y#输出结果显示模块中的列表对象已被修改(100,abc,20)2使用from导入两个模块中的同名变量在下面的两个模块test4.py和test5.py中包含了同名的变量。#test4.pydef show():print(out in test4.py)#test5.p

    29、ydef show():print(out in test5.py)当两个模块存在同名变量时,使用from语句导入模块会导致变量名冲突,示例代码如下。from test4 import show from test5 import show show()out in test5.py from test5 import show from test4 import show show()out in test4.py当两个模块存在同名变量时,应使用import语句导入模块,示例代码如下。import test4 import test5 test4.show()out in test4.py

    30、test5.show()out in test5.py6.3.4 重新载入模块再次使用import或from导入模块时,不会重新执行模块,所以不能使模块的所有变量恢复为初始值。imp模块的reload()函数可重新载入并执行模块代码,从而使模块中的变量全部恢复为初始值。reload()函数用模块名称作为参数,所以只能重载使用import语句导入的模块。如果模块还没有导入,执行reload()函数会出错 import test#导入模块,模块代码被执行这是模块test.py中的输出!test.x100 test.x=200 import test#再次导入 test.x#再次导入没有改变当前值2

    31、00 from imp import reload#导入reload函数 reload(test)#重载模块,可以看到模块代码被再次执行这是模块test.py中的输出!test.x#因为模块代码再次执行,x恢复为初始值1006.3.5 模块搜索路径 在导入模块时,Python会执行下列3个步骤。(1)搜索模块文件:在导入模块时,Python按特定的路径搜索模块文件。(2)必要时编译模块:找到模块文件后,Python会检查文件的时间戳。如果字节码文件比源代码文件旧(即源代码文件作了修改),Python就会执行编译操作,生成最新的字节码文件。如果字节码文件是最新的,则跳过编译环节。如果在搜索路径中

    32、只发现了字节码,而没有发现源代码文件,则直接加载字节码文件。如果只有源代码文件,Python会执行编译操作,生成字节码文件。(3)执行模块:执行模块的字节码文件。在导入模块时,不能在import或from语句中指定模块文件的路径,只能依赖于Python搜索路径。可使用标准模块sys的path属性来查看当前搜索路径设置,示例代码如下。import sys sys.path,D:Python35python35.zip,D:Python35DLLs,D:Python35lib,D:Python35,D:Python35libsite-packages 第一个空字符串表示Python当前工作目录。P

    33、ython按照先后顺序依次搜索path列表中的路径。如果在path列表的所有路径中均未找到模块,则导入操作失败。通常,sys.path由4部分设置组成。(1)Python的当前工作目录(可用os模块中的getcwd()函数查看当前目录名称)。(2)操作系统的环境变量PYTHONPATH中包含的目录(如果存在)。(3)Python标准库目录。(4)任何pth文件包含的目录(如果有存在)。Python按照上面的顺序搜索各个目录。pth文件通常放在Python安装目录中,文件名可以任意,例如searchpath.pth。在pth文件中,每个目录占一行,可包含多个目录,示例代码如下。C:myapphe

    34、lloD:pytempsrc在Windows 10系统中配置环境变量PYTHONPATH。演示:sys.path列表在程序启动时,自动进行初始化。可在代码中对sys.path列表执行添加或删除操作 from sys import path#导入path变量 path#显示当前搜索路径列表 del path1#删除第二个搜索路径 path path.append(rD:temp)#添加一条搜索路径 path6.3.6 嵌套导入模块Python允许任意层次的嵌套导入。每个模块都有一个名字空间,嵌套导入意味着名字空间的嵌套。在使用模块的变量名时,应依次使用模块名称作为限定符。例如,有两个模块文件te

    35、st.py和test2.py,下面的代码说明了嵌套导入时应如何使用模块中的变量。#test.pyx=100def show():print(这是模块test.py中的show()函数中的输出!)print(载入模块test.py!)import test2#test2.pyx2=200print(载入模块test2.py!)在交互模式下导入test.py的示例如下。import test#导入模块test载入模块test.py!载入模块test2.py!test.x#使用test模块的变量100 test.show()#调用test模块的函数这是模块test.py中的show()函数中的输出!

    36、test.test2.x2#使用嵌套导入的test2模块中的变量2006.3.7 查看模块对象属性在导入模块时,Python为模块文件创建一个模块对象。模块中的各种对象是模块对象的属性。Python会为模块对象添加一些内置属性。可使用dir()函数查看对象属性。6.3.8 _name_属性和命令行参数当作为导入模块使用时,模块的_name_属性值为模块文件的主名。当作为顶层模块直接执行时,_name_属性值为“_main_”。在下面的代码中,检查_name_属性值是否为“_main_”。如果为“_main_”,则将命令行参数输出。#test7.pyif _name_=_main_:#模块独立运

    37、行时,执行下面的代码 def show():print(test7.py独立运行)show()import sys print(sys.argv)#输出命令行参数else:#作为导入模块时,执行下面的代码 def show():print(test7.py作为导入模块使用)print(test7.py执行完毕!)#该语句总会执行6.3.9 隐藏模块变量在使用“fromimport*”导入模块变量时,默认会将模块顶层的所有变量导入,但模块中以单个下划线开头的变量(如_abc)不会被导入可以在模块文件开头使用_all_变量设置使用“fromimport*”语句时导入的变量名。“fromimport

    38、*”语句根据_all_列表导入变量名。只要是_all_列表中的变量,不管是否以下划线开头,均会被导入。#test8.pyx=100_y=1,2def _add(a,b):return a+bdef show():print(out from test8.py)6.3 模块包Python将存放模块文件的目录称为包。本节主要内容:包的基本结构导入包相对导入在_init_.py中添加代码6.4.1 包的基本结构 当文件夹中存在_init_.py文件时,表示该目录是一个Python包。_init_.py文件可以是一个空文件,或者在其中定义_all_列表、其他变量或类等。按照下面的步骤创建包pytemp

    39、及其子目录和文件。(1)打开Windows的资源管理器,在D盘根目录中新建文件夹pytemp。(2)在D:pytemp中新建文件夹mypysrc。(3)在D:pytempmypysrc中新建文件夹db。(4)在IDLE中创建一个空的Python程序,将其分别保存到D:pytemp、D:pytempmypysrc和D:pytempmypysrcdb文件夹,命名为_init_.py。(5)在IDLE中创建一个Python程序,将其保存D:pytempmypysrcdb文件夹,命名为test.py程序代码如下。#D:pytempmypysrcdbtest.pydef show():print(r这是

    40、模块D:pytempmypysrcdbtest.py中的show()函数中的输出!)print(r模块D:pytempmypysrcdbtest.py执行完毕!)6.4.2 导入包 导入包中的模块时,应指明包的路径,在路径中使用点号分隔目录,示例代码如下。D:cd pytemp#进入包的根目录pytempD:pytemppython#进入Python交互环境 import mypysrc.db.test#导入包中的模块模块D:pytempmypysrcdbtest.py执行完毕!mypysrc.db.test.show()这是模块D:pytempmypysrcdbtest.py中的show()

    41、函数中的输出!from mypysrc.db.test import show#从包中的模块导入变量名 show()这是模块D:pytempmypysrcdbtest.py中的show()函数中的输出!6.4.3 相对导入Python总是在搜索路径中查找包。“.”表示当前模块文件所在的目录可称为当前路径,“.”表示当前模块文件所在路径的上一级目录。1使用当前路径导入在IDLE中创建一个Python程序,将其保存D:pytemmypysrc文件夹,命名为reltest.py。程序代码如下。#D:pytempmypysrcreltest.pyimport osprint(当前工作目录为:,os.g

    42、etcwd()from.db.test import show#导入当前目录下的db.test模块中的函数show()print(相对导入测试完毕)在交互模式下导入reltest.py,示例代码如下。import mypysrc.reltest#导入模块当前工作目录为:D:pytemp模块E:Pytempmypysrcdbtest.py执行完毕!这是模块D:pytempmypysrcdbtest.py中的show()函数中的输出!相对导入测试完毕2使用上一级目录路径在IDLE中创建一个Python程序,将其保存D:pytemmypysrc文件夹,命名为test.py。程序代码如下。#D:pyt

    43、empmypysrctest.pydef show():print(r这是模块D:pytempmypysrctest.py中的show()函数中的输出!)print(r模块D:pytempmypysrctest.py执行完毕!)在IDLE中创建一个Python程序,将其保存D:pytemmypysrcdb文件夹,命名为reltest_up.py。程序代码如下。#D:pytempmypysrcdbreltest_up.py from.test import show#导入上一级目录下的test模块中的函数 show()print(r模块D:pytempmypysrcdbreltest_up.py

    44、执行完毕!)print(相对导入测试完毕)在交互模式下导入reltest_up.py,示例代码如下。import mypysrc.db.reltest_up模块D:pytempmypysrctest.py执行完毕!这是模块D:pytempmypysrctest.py中的show()函数中的输出!模块D:pytempmypysrcdbreltest_up.py执行完毕!相对导入测试完毕6.4.4 在_init_.py中添加代码在执行“from 包名 import*”导入包时,Python会执行包中的_init_.py文件,并根据_all_列表完成导入。修改D:pytempmypysrc文件夹中的

    45、_init_.py,代码如下。#_init_.pyimport mypysrc.db.test#_all_=data1,showAdata1=包d:pytemmypysrc中的变量data1的值data2=包d:pytemmypysrc中的变量data2的值def showA():print(d:pytemmypysrc_init_.py中的函数showA()的输出)def showB():print(d:pytemmypysrc_init_.py中的函数showB()的输出)print(D:pytemmypysrc_init_.py执行完毕)在交互模式下导入包mypysrc6.5 综合实例 在IDLE创建一个Python程序,在程序中定义一个函数输出杨辉三角。程序独立运行时输出10阶杨辉三角,如图所示。杨辉三角实现分析:将杨辉三角左对齐输出,如图所示。可以看出,杨辉三角矩阵的规律为:第一列和主对角线上的数字都为1,其他位置的数字为“上一行前一列”和“上一行同一列”两个位置的数字之和。使用嵌套的列表表示杨辉三角,则非第一列和主对角线上元素的值可用下面的表达式表示。xij=xi-1j-1+xi-1j

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python3基础教程第6章课件.pptx
    链接地址:https://www.163wenku.com/p-3371815.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库