Py 语言基础与应用 7_第1页
Py 语言基础与应用 7_第2页
Py 语言基础与应用 7_第3页
Py 语言基础与应用 7_第4页
Py 语言基础与应用 7_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【Python语言程序设计】第2章函数1.函数要先定义再使用2.Python的缩进格式3.形参、实参、返回值4.局部变量与全局变量5.常用运算6.利用import导入机制7.Python的格式化输出知识要点知识点重点:1.函数的定义2.函数的调用3.函数参数4.变量作用域难点:1.函数的定义2.函数参数3.变量作用域Python语言程序设计《案例:用函数的方法输出你的第一程序》案例【用函数的方法输出你的第一程序】第2行:用def关键字定义了一个名为Hello的函数,该函数没有任何参数。第3行:使用缩进的方法来规定函数体的范围123456#函数定义

defHello():

print("Helloworld!")

#函数调用

Hello()第6行:直接调用Hello()函数,就可以打印出“Helloworld!”未用函数使用函数问题1:函数的定义用哪个关键字?def问题2:如何规定函数体的范围?提问缩进Python语言程序设计《案例:用函数的方法定义正方形的面积》案例【用函数的方法定义正方形的面积】第1行:定义计算正方形面积的函数calcSquare,形参x为正方形边长。第2行:表达式x**2表示x的2次方。1234567defcalcSquare(x):

returnx**2

#调用calcSquare函数

a=float(input("输入正方形的边长:"))

Area=calcSquare(a)

print("您输入的正方形边长为"+str(a)+",正方形面积为:“+str(Area))第6行:直接调用calcSquare函数。先定义,后使用!!!问题1:Python中缩进()个空格?A.1B.4 C.6D.2问题2:函数必须先定义再使用?提问Python语言程序设计《案例:用函数的方法定义猜字游戏》案例【用函数的方法定义猜字游戏】1234567891011121314151617181920defGuessNumGame(m,n,times):

importrandom

secret=random.randint(m,n)

guess=0

tries=0

print("请你猜一猜从"+str(m)+"到"+str(n)+",会是什么数字?")

print("你只有"+str(times)+"次机会哦!")

whileguess!=secretandtries<times:

guess=eval(input("请输入你猜的数字:"))

ifguess==secret:

print("猜对了,恭喜你!!!!")

break

elifguess<secret:

print("太小了!!!!!")

else:

print("太大了!!!!!")

tries+=1

iftries>=timesandguess!=secret:

print("次数用完,很遗憾你没猜中!!!!!")

print(secret)第1行:定义三个参数m,n,times,分别表示随机数的最小值,随机数的最大值,猜测次数。第6、7行:提示用户猜测的数据范围和可以猜测的次数。str()函数将数字转换成字符串型。Game.py案例【用函数的方法定义猜字游戏】123456fromGameimport*#引入Game.py中的所有函数

#调用GuessNumGame猜字函数

x=eval(input("随机数的最小值:"))

y=eval(input("随机数的最大值:"))

z=eval(input("猜测次数:"))

GuessNumGame(x,y,z)testGame.py第1行:fromGameimport*表示从Game.py中引入所有函数,其中星*号代表所有函数。这里也可以写成:fromGameimportGuessNumGame第6行:直接调用GuessNumGame函数,并传递三个实参给它。完成一次游戏的全过程。函数的作用?案例【用函数的方法定义猜字游戏】问题.关于函数的目的,以下说明不正确的是()A.提高程序的执行效率B.减少程序文件所占用的内存C.提高程序的可读性D.提高程序的开发效率提问Python语言程序设计【函数的定义和调用】def

function_name(arg1,arg2[,...]): statement [returnvalue]知识点【函数的定义和调用】函数定义示例函数的调用def函数名(参数列表):

函数体defsumOf(a,b):

returna+ba=1

b

=2

c=sumOf(a,b)

print(str(c))1、函数通过def定义注意:该行结尾一定要加上冒号!!def

function_name(arg1,arg2[,...]): statement [returnvalue]知识点【函数的定义和调用】2、函数名的要求(1)函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号,空格也不可以;(2)函数名是区分大小写的;(3)函数名不能用保留字。3、函数形参和实参函数中的参数名称为‘形参’,调用函数时传递的值为‘实参’。知识点【函数的定义和调用】3、函数形参和实参函数定义时的参数名称为‘形参’,调用函数时传递的值为‘实参’。观察2:调用函数fun()前后k的值的变化观察1:形参和实参形参:a实参:k没有任何变化!!!提问【函数的定义和调用】问题1:

关于函数名,下列说法正确的是()A.函数名必须以下划线和数字开头B.函数名可以包含任意字母、数字或下划线的组合C.函数名能使用任何的标点符号D.函数名不区分大小写问题2:

说出函数形参和实参的区别。Python语言程序设计【函数参数】知识点【函数参数】函数的参数:1.必需参数2.默认参数3.关键字参数4.不定长参数5.匿名函数中的参数知识点【函数参数】1.必需参数指的是函数要求传入的参数,调用时必须以正确的顺序传入,并且调用时的数量必须和声明时一致,否则会出现语法错误。【例】带必需参数的函数sayHello1234567defsayHello(name):

print("Hello!"+name)

return

#调用sayHello函数

sayHello("DerisWeng")

sayHello()调用sayHello(“DerisWeng”)Hello!DerisWeng调用sayHello()报错!!!知识点【函数参数】2.默认参数指的是当函数中的参数设置了默认值,在调用函数时,如果没有给该参数传递任何值,则函数将会使用默认值。【例】带默认参数的函数sayHello1234567defsayHello(name,times=1):

print(("Hello!"+name)*times)

return

#调用sayHello函数

sayHello("DerisWeng")

sayHello("DerisWeng",3)调用sayHello(“DerisWeng”)Hello!DerisWeng调用sayHello(“DerisWeng”,3)Hello!DerisWengHello!DerisWengHello!DerisWeng知识点【函数参数】2.默认参数在声明函数形参时,先声明没有默认值的形参,然后再声明有默认值的形参。即默认值必须在非默认参数之后。上面这么定义是不允许的。123defsayHello(times=1,name):

print(("Hello!"+name)*times)

return是否正确?知识点【函数参数】3.关键字参数指的是如果某个函数有很多参数,在调用的时候通过参数名来对参数进行赋值。【例】使用关键字参数调用函数1234567defsayHello(name,times=1):

print(("Hello!"+name)*times)

return

#调用sayHello函数

sayHello(name="DerisWeng")

sayHello(times=3,name="DerisWeng")调用sayHello(name=“DerisWeng”)Hello!DerisWeng调用sayHello(times=3,name=“DerisWeng”)Hello!DerisWengHello!DerisWengHello!DerisWeng知识点【函数参数】4.不定长参数指的是函数的参数可以根据需要变化个数。【例】带有不定长参数的函数sayHello123456789defsayHello(name,*vars):

print("你好:")

print(name)

forvarinvars:

print(var)

return

#调用sayHello函数

sayHello("DerisWeng")

sayHello("DerisWeng","好好学习","天天向上")调用sayHello(“DerisWeng”)你好:DerisWeng调用sayHello(“DerisWeng”,“好好学习”,“天天向上”)你好:DerisWeng好好学习天天向上知识点【函数参数】5.匿名函数中的参数匿名函数指的是不用def关键字对函数进行定义,直接使用lambda来创建函数。。【例】利用lambda创建sum函数1234sum=lambdaa,b:a+b

#调用sum函数

print(sum(5,10))调用print(sum(5,10))15知识点【函数参数】5.匿名函数中的参数匿名函数指的是不用def关键字对函数进行定义,直接使用lambda来创建函数。【例】利用lambda创建sayHello函数1234sayHello=lambdaname,times:print((“Hello!"+name)*times)

#调用sum函数sayHello("Derisweng",2)Hello!DeriswengHello!Derisweng提问【函数参数】问题:

.以下程序输出结果为?

deffun(x,y):

x=x+y

y=x-y

x=x-y

print(x,y)

x=2

y=3

fun(x,y)

print(x,y)Python语言程序设计【return语句】知识点【return语句】return语句用来返回函数的结果或者退出函数。【例】return不为None的情况123456defsum(a,b):

returna+b

#调用sum函数

total=sum(5,10)

print(total)不带参数值的return语句返回None,带参数值的return语句返回的就是参数的值。15输出结果:知识点【return语句】return语句用来返回函数的结果或者退出函数。【例】return为None的情况123defsayHello(name):

print("Hello!"+name)

return#此处return可以不用写函数并非一定要包含return语句。如果函数没有包含return语句,Python将认为该函数返回的是None,即returnNone。None表示没有任何东西的特殊类型。Python语言程序设计【全局变量与局部变量】知识点【全局变量与局部变量】局部变量指在函数定义内声明的变量。【例】函数内为局部变量1234567defsum(a,b):

total=a+b#total在这里是局部变量.

print("函数内是局部变量:",total)

returntotal

#调用sum函数

sum(5,10)它们与函数外(即便是具有相同的名称)的其他变量没有任何关系。即变量的作用域只在函数的内部。函数内是局部变量:15输出结果:知识点【全局变量与局部变量】全局变量在函数外部声明的变量称为全局变量,程序中的任何地方都可以读取它。【例】利用global实现函数内访问全局变量12345678defshowName():

globalname

print("你的姓名:"+name)

name="Weng"

#调用showName函数

name="Deris"

showName()

print(("你现在的姓名:"+name))如果需要在函数内部访问全局变量,一般要用到global关键字。你的姓名:Deris你现在的姓名:Weng输出结果:知识点【全局变量与局部变量】全局变量【例】没有用global的情况下,无法在函数内部修改全局变量。123456789name="Deris"

defsayHello():

print("hello"+name+"!")

defchangeName(newName):

name=newName

#调用函数

sayHello()

changeName("Weng")

sayHello()helloDeris!helloDeris!输出结果:知识点【全局变量与局部变量】全局变量【例】用global在函数内部修改全局变量。12345678910name="Deris"

defsayHello():

print("hello"+name+"!")

defchangeName(newName):

globalname

name=newName

#调用函数

sayHello()

changeName("Weng")

sayHello()helloDeris!helloWeng!输出结果:提问【全局变量与局部变量】问题:全局变量与局部变量有什么区别?Python语言程序设计【函数作用域】知识点【函数作用域】变量的作用域指的是变量在程序中的哪些地方可以访问或者可见。1、每个模块都有自已的全局作用域。2、函数定义的对象属局部作用域,只在函数内有效,不会影响全局作用域中的对象。3、赋值对象属局部作用域,除非使用global关键字进行声明。12345678910name="Deris"

defsayHello():

print("hello"+name+"!")

defchangeName(newName):

globalname

name=newName

#调用函数

sayHello()

changeName("Weng")

sayHello()知识点【global与nonlocal的区别】1、L(local)--局部作用域。2、E(Enclosing)--闭包函数外的函数中。3、G(Global)--全局作用域。4、B(Built-in)--内建作用域1234567x=int(1.6)#内建作用域

g_count=0#全局作用域

defenclosing():

e_count=1#闭包在函数外的函数中

definner():

i_count=2#局部作用域globalnonlocal比较Python语言程序设计【模块】知识点【模块】模块一个包含所有定义的函数和变量的文件,模块必须以.py为后缀名。pythonhello.py这是“hello.py”模块hello12345678#hello.py

defsayHello():

str="hello"

print(str)

if__name__=="__main__":

print("这是hello.py模块")

sayHello()模块可以从其他程序中引入(import),引入后就可以用模块中的函数和功能,从而达到代码复用的作用。>>>importhello>>>hello.__name__'hello'课后练习【模块】问题:模块的__name__的作用和用法?Python语言程序设计【编程缩进格式】知识点【编程缩进格式】缩进指在代码行开始部分的空格。123456defsum(a,b):

returna+b

#调用sum函数

total=sum(5,10)

print(total)代码行开头的前导空白用于确定语句的分组,同样的缩进级别的语句属于同一语句块。(四个空格)或Tab(不建议使用)知识点【编程缩进格式】缩进的错误用法!运行这段程序的结果如下:File"例1-3.py",line2print('IamPython');^

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论