1、 random.randint()print(“Hello”)input(“Please enter an integer:”)问题函数是什么1自定义函数目录函数2 匿名函数3存储与导入函数模块4 函数是一段代码,通过名字来进行调用。它能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。函数函数(function)是Python为了代码效率的最大化,减少冗余而提供的最基本的程序结构。标准库函数(标准函数)l Python系统提供的,不
2、需要用户定义,只需要在程序使用前倒入该函数的原型所在的模块,就可以调用的函数l 例如:random.randint()input(“HelloWorld”)用于自定义函数l 需要用户按照需求遵循Python语法规则自定义的一段程序,用来实现特定的功能函数分类用户角度 无参函数l 函数定义时没有形式参数的函数,主调函数不需要将数据传递给被调函数l 例如:random.randint()有参函数l 函数定义时带有参数的函数。主调函数需要利用参数将数据传递给被调用函数l 例如:input(“HelloWorld”)print(“Hello“)函数分类函数参数传递的角度1自定义函数目录函数2 匿名函数
3、3存储与导入函数模块4 关键字def定义函数,其后紧接函数名,括号内包含了将要在函数体中使用的形式参数(简称:形参,调用函数时的为实参),以冒号结束。然后另起一行编写函数体,函数体的缩进为4个空格或者一个制表符。定义函数的格式如下:def 函数名():代码return 返回值 demo:#定义一个函数,能够完成打印信息的功能 def printInfo():print(-)print(生命苦短,我用Python)print(-)自定义函数函数定义使用关键字def定义函数自定义函数函数调用自定义函数调用 Python中使用函数名()的格式对函数进行调用 demo:#定义完函数后,函数是不会自动执
4、行的,需要调用它才可以 printInfo()函数调用的过程l 为所有形参分配空间,再讲主调函数的实参传递给对应的形参l 转去执行被调用函数,为函数体内的变量分配内存空间,执行函数体内的语句l 遇到return语句返回主调函数病带回返回值,释放形参及被调用函数各变量所占用的内存空间,返回到主调函数继续执行(如被调用函数没有return返回值,则执行完被调用函数后回到主调函数继续执行)自定义函数参数 Python中的函数之间数据传递靠参数和返回值实现。l 数据从主调函数传递给被调用函数(参数)l 数据从被调用函数返回到主调函数(返回值)参数l 形式参数(形参)函数定义过程中,函数名后括号内变量成
5、为形式参数l 实际参数(实参)函数调用时,被调用处给出的对应参数成为实际参数函数参数自定义函数参数 有参函数def max(x,y):if xy:return x else:return y 函数参数自定义函数参数设置 按照传入参数的方式的不同,常见函数调用方式有:位置参数,关键字参数,默认参数等。位置参数。调用函数时根据函数定义的参数位置来传递参数。max(6,3)关键字参数。通过“键-值”形式加以指定。max(x=6,y=3)默认参数。用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。def show(x=5)
6、:print(x)show()show(10)函数参数设置自定义函数参数传参 实参传递数据给形参的方式:l 值传递 函数调用时,为形参分配内存空间,并将实参的值复制到形参,函数调用结束后,形参所占用内存空间被释放,对应保存值消失 特点:形参和实参占用不同的内存单元,函数对形参值得改变不会改变实参的值,单向数据传递l 地址传递 函数调用时,为形参分配内存空间,并将实参的地址保存到形参 特点:形参和实参占用相同的内存单元,函数中对形参值得改变会改变实参的值,双向数据传递函数参数之间数据传递方式 两数交换#定义函数def swap(a,b):a,b=b,aprint(“a=“,a,”b=“,b)#调
7、用函数x,y=eval(input(“input x,y:”)swap(x,y)print(“x=“,x,”y=“,x)自定义函数参数传参值传递#定义函数def swap(a,b):a,b=b,aprint(“a=“,a,”b=“,b)return a,b#调用函数x,y=eval(input(“input x,y:”)x,y=swap(x,y)print(“x=“,x,”y=“,x)两数交换#定义函数def swap(list):list0,list1=list1,list0print(“list0=“,list0,”list1=“,list1)#调用函数e_list=3,5swap(e_l
8、ist)print(“e_list 0=“,e_list0,”e_list 1=“,e_list1)自定义函数参数传参地址传递 函数可以有返回值(一个或多个),也可以没有返回值。返回语句的一般形式:return 表达式 功能:将表达式的值带回给主调函数 注意:l 函数体内可以有多条return语句,但具体执行其中一个returnl 没有return,会自动返回None;有return,但没有表达式,也会返回None自定义函数返回值返回值:函数被调用执行完成后返回给主调函数的值。demo:#定义函数def add(a,b):return a+b#调用函数r=add(3,6)print(r)自定义
9、函数返回值 1.局部变量l 在函数内部定义的变量只在该函数体内有效,称为局部变量。l 函数结束时,局部变量会被自动删除 2.全局变量l 定义在函数体外面的,作用域是整个程序的变量,称为全局变量。l 全局变量可以在函数体内被调用。l 需要注意的是,全局变量不能在函数体内直接被赋值,必须使用global关键字在函数体内声明,否则会报错。l 若同时存在同名的全局变量和局部变量,函数体会使用局部变量对全局变量进行覆盖变量作用域局部变量与全局变量区分1自定义函数目录函数2 匿名函数3存储与导入函数模块4Python允许使用lambda语句创建匿名函数,也就是说函数没有具体的名称。lambda语句中,冒号
10、前是函数参数,若有多个函数使用逗号分隔,冒号右边是返回值。如此便构建了一个函数对象,def语句也是创建一个函数对象,只是lambda创建的函数对象没有名字。lambda函数的语法只包含一个语句,如下:lambda arg1,arg2,.argn:expression如下实例:sum=lambda arg1,arg2:arg1+arg2#调用sum函数print(Value of total:,sum(10,20)print(Value of total:,sum(20,20)Lambda函数能接收任何数量的参数但只能返回一个表达式,匿名函数不能直接调用print,因为lambda需要一个表达式
11、。匿名函数匿名函数创建1自定义函数目录函数2 匿名函数3存储与导入函数模块4 模块就是将常用的功能单独放置在一个文件中,方便其他文件调用。模块分类l 标准库模块:Python自带,里面都是内置函数(系统函数)l 用户自定义模块:用户建立的扩展名为.py的程序文件 导入模块import 模块例:import random 使用模块里的函数l 格式:模块.函数(参数列表)l 例:random.randint()存储与导入函数模块模块(module)1.导入指定函数l 可以导入模块中的指定函数,也可以是多个指定函数。若使用这种方法,在调用函数时就不需要加模块的前缀。直接调用它的函数名称即可,但当模块中函数较多时这种方法比较繁琐。from 模块 import 函数例:from random import randint()2.导入所有函数l 如果模块中函数较多时可以用导入所有函数的方法,使用星号(*)运算符可让Python导入模块中的所有函数。import语句中星号的作用是将steak模块中的所有函数都导入当前程序中。from 模块 import*存储与导入函数模块导入函数