您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 大数据高职系列教材之Python语言PPT课件:第6章-函数
大数据应用人才培养系列教材Python语言刘鹏张燕总主编李肖俊主编刘河钟涛副主编第六章函数6.1函数的概述6.2函数的参数和返回值6.3函数的调用6.4实验大数据应用人才培养系列教材6.5小结6.6习题•一个程序可以按不同的功能实现拆分成不同的模块,而函数就是能实现某一部分功能的代码块。•在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号(:),然后在缩进块中编写函数体,函数的返回值用return语句返回。•注意:Python是靠缩进块来标明函数的作用域范围的,缩进块内是函数体,这和其它高级编程语言是有区别的,比如:C/C++/java/R语言大括号{}内的是函数体。6.1函数的概述第六章函数•我们以自定义一个求正方形面积的函数area_of_square为例,示例代码如下:•defarea_of_square(x):•s=x*x•returns•Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。6.1函数的概述第六章函数•在函数外面定义的变量称为全局变量。全局变量的作用域在整个代码段(文件、模块),在整个程序代码中都能被访问到。在函数内部可以去访问全局变量。如下所示代码:•deffoodsprice(per_price,number):•sum_price=per_price*number•print('全局变量PER_PRICE_1的值:',PER_PRICE_1)•returnsum_price•PER_PRICE_1=float(input('请输入单价:'))•NUMBER_1=float(input('请输入斤数:'))•SUM_PRICE_1=foodsprice(PER_PRICE_1,NUMBER_1)•print('蔬菜的价格是:',SUM_PRICE_1)•6.1函数的概述第六章函数•代码运行结果如下:•请输入单价:21•请输入斤数:7.5•全局变量PER_PRICE_1:21.0•蔬菜的价格是:157.5•在上例中,我们在定义的函数foodsprice内部去访问在函数外面定义的全局变量PER_PRICE_1,能得到期望的输入结果21。6.1函数的概述第六章函数•在函数内部可以去访问全局变量,但不要去修改全局变量,否则会得不到想要的结果。这是因为在函数内部试图去修改一个全局变量时,系统会自动创建一个新的同名的局部变量去代替全局变量,采用屏蔽(Shadowing)的方式,当函数调用结束后函数的栈空间会被释放,数据也会随之释放。•如果要在函数内部去修改全局变量的值,并使之在整个程序生效,采用关键字global即可。•6.1函数的概述第六章函数•在函数内部定义的参数和变量称为局部变量,超出了这个函数的作用域局部变量是无效的,它的作用域仅在函数内部。如下所示代码:•deffoodsprice(per_price,number):•sum_price=per_price*number•returnsum_price•PER_PRICE_1=float(input('请输入单价:'))•NUMBER_1=float(input('请输入斤数:'))•SUM_PRICE_1=foodsprice(PER_PRICE_1,NUMBER_1)•print('蔬菜的价格是:',SUM_PRICE_1)•print('局部变量sum_price的值:',sum_price)6.1函数的概述第六章函数•6.1.3局部变量•代码运行结果如下:•请输入单价:12•请输入斤数:1.56•蔬菜的价格是:18.72•Traceback(mostrecentcalllast):•FileG:/6_1_3.py,line9,inmoduleprint('局部变量sum_price的值:',sum_price)NameError:name'sum_price'isnotdefined•在上例中,我们试图在函数作用域外访问函数内的局部变量sum_price,程序运行到此处时报出了NameError的异常,提示变量sum_price没有定义。6.1函数的概述第六章函数•代码运行结果如下:•请输入单价:12•请输入斤数:1.56•蔬菜的价格是:18.72•Traceback(mostrecentcalllast):•FileG:/6_1_3.py,line9,inmoduleprint('局部变量sum_price的值:',sum_price)NameError:name'sum_price'isnotdefined•在上例中,我们试图在函数作用域外访问函数内的局部变量sum_price,程序运行到此处时报出了NameError的异常,提示变量sum_price没有定义。6.1函数的概述第六章函数第六章函数6.2函数的参数和返回值6.3函数的调用6.4实验大数据应用人才培养系列教材6.5小结6.6习题6.1函数的概述•函数的参数就是使得函数个性化的一个实例。代码如下所示:•defMyFirstFunction(name_city):•print(‘我喜欢的城市:’+name_city)•运行结果如下:•MyFirstFunction('南京')•我喜欢的城市:南京•MyFirstFunction('上海')•我喜欢的城市:上海•在上例中,我们对函数MyFirstFunction的形参name_city赋予不同的实参“南京”、“上海”后,函数就输出不同的结果。6.2函数的参数和返回值第六章函数•函数有了参数之后,函数的输出结果变得可变了,如果需要多个参数,函数用逗号“,”(英文状态下输入)隔开即可。•在Python中对函数参数的数量没有限制,但是定义函数参数的个数不宜太多,一般2~3个即可。在定义函数时,一般要把函数参数的意义注释清楚,便于阅读程序。•那什么是形参和实参呢?•函数小括号“()”内的参数叫形参。•而实参则是指函数在调用过程中传递进来的参数。6.2函数的参数和返回值第六章函数•在Python中,将函数参数分为三类:位置参数、可变参数、关键字参数。•(1)位置参数•直接传入参数数据即可,如果有多个参数,位置先后顺序不能改变。•(2)可变参数。•有2种传递方式:1是直接传入参数值;2是先封装成列表(list)或元组(tuple),再在封装后的列表或元组前面添加一个星号“*”传入。•(3)关键字参数。•有2种传递方式:1是直接传入参数值;2是可以先将参数封装成字典(dict),再在封装后的字典前添加2个星号“**”传入。6.2函数的参数和返回值第六章函数•6.2.1参数传递的方式•(1)位置参数•我们调用函数时,传入参数值按照位置顺序依次赋给参数,这样的参数称为位置参数。如下所示代码:•defSub(x,y):•returnx-y•运行结果如下:•Sub(100,30)•706.2函数的参数和返回值第六章函数•6.2.2位置参数和关键字参数•上例中,Sub(x,y)函数有两个参数:x和y,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和y,得到的两数相减的结果是70。•如果交换了参数的位置,就会得到不同的结果,如上例中交换参数后的运行结果如下:•Sub(30,100)•-70•从上面的运行结果可以看出,交换了参数顺序后的运行结果是-70,而不是我们期望的结果70。6.2函数的参数和返回值第六章函数•6.2.2位置参数和关键字参数•(2)关键字参数•关键字参数就是在函数调用的时候,通过参数名指定需要赋值的参数。通常我们在调用一个函数的时候,如果参数有多个,我们常常会混淆一个参数的顺序,达不到我们希望的效果。在Python中引入关键字参数就可解决这个潜在的问题。如下所示代码:•defSubtraction(num_1,num_2):•return(num_1-num_2)6.2函数的参数和返回值第六章函数•6.2.2位置参数和关键字参数•运行结果如下:•Subtraction(34,11)•23•Subtraction(11,34)•-23•Subtraction(num_2=11,num_1=34)•236.2函数的参数和返回值第六章函数•6.2.2位置参数和关键字参数•在上例中,我们调用函数Subtraction时:第1次调用函数Subtraction时,给2个参数顺序赋值34、11时得到的结果是23;第2次调用该函数时,交换了2个赋值参数的顺序得到的结果是-23,这不是所期望的结果;第3次调用该函数时,引用了关键字参数并对其分别赋值,虽然改变了顺序,但仍然得到了所期望的结果23。6.2函数的参数和返回值第六章函数•6.2.2位置参数和关键字参数•我们在定义函数时给参数赋了一个初值,这样的参数称为默认值参数。应用默认值参数的意义在于,当在函数调用的时候忘记了给函数参数赋值的时候,函数就会自动去找它的初值,使用默认值来代替,而使函数调用不会出现错误。如下所示代码:•defSubtraction(num_1=99,num_2=45):•return(num_1-num_2)6.2函数的参数和返回值第六章函数•6.2.3默认值参数•运行结果如下:•Subtraction()•54•Subtraction(46)•1•Subtraction(46,12)•346.2函数的参数和返回值第六章函数•6.2.3默认值参数•在上例中,函数Subtraction的功能为:返回两个数相减的结果,在定义函数时分别给2个参数num_1,num_2赋了初值99和45,分别做了3次调用:第1次调用时没有赋值,程序就引用了2个参数的默认值99,45,返回的结果是54;第2次调用时,给第1个参数赋值为46,程序就引用了第2个参数的默认值45,返回的结果是1;第3次调用时,给2个参数分别赋值为46和12,程序就没有引用函数定义的默认值,返回的结果是34。6.2函数的参数和返回值第六章函数•6.2.3默认值参数•当在定义函数参数的时候,我们不知道究竟需要多少个参数的时候,只要在参数前面加上星号“*”即可,这样的参数称为可变参数。如下所示代码:•defval_par(*param):•print('第三个参数是:',param[2]);•print('可变参数的长度是:',len(param));6.2函数的参数和返回值第六章函数•6.2.4可变参数•运行结果如下:•val_par('南京云创科技股份',345,9,9.8,2.37,'Python')•第三个参数是:9•可变参数的长度是:6•在上例中,我们定义函数val_par的参数param为可变参数,我们在调用该函数的时候就可以根据实际的应用来输入不同长度、不同类型的参数值。6.2函数的参数和返回值第六章函数•6.2.4可变参数•可变参数又称收集参数,是将一个元组赋值给可变参数。如果可变参数后面还有其它参数,在参数传递时要把可变参数后的参数作为关键字参数来赋值,或者在定义函数参数时要给它赋默认值,否则会出错。•如下所示代码:•defval_par(*param,str1):•print('第三个参数是:',param[2]);•print('可变参数的长度是:',len(param));6.2函数的参数和返回值第六章函数•6.2.4可变参数•运行结果如下:•val_par('南京云创科技股份',345,9,9.8,2.37,'Python','函数')•SyntaxError:unexpectedindent•val_par('南京云创科技股份',345,9,9.8,2.37,'Python',str1='函数')•第三个参数是:9•可变参数的长度是:66.2函数的参数和返回值第六章函数•6.2.4可变参数•在上例中,在定义函数val_par()时分别定义了1个可变参数param,1个普通参数str1
本文标题:大数据高职系列教材之Python语言PPT课件:第6章-函数
链接地址:https://www.777doc.com/doc-7205230 .html