【Python】函数

做一个简要介绍

本周重点讲解函数和代码复用

主要包含五个部分

1,函数的定义与使用

2,实例,七段数码管绘制

3,代码复用与函数递归

4,讲解一个模块:Pyinstaller库的使用(重要)

5,实例8,科赫雪花小包裹

函数的理解和定义

在天天向上的例子中,我们就说过函数

函数是一段代码的表示

函数是一段具有特定功能,可重用的语句组

函数是一种功能的抽象

两个作用

1、降低编程的难度和代码复用

2、函数的定义比较简单

我们使用保留字def

def ():

return

看例子计算n!

fact是函数名,n是fact的参数,可以往上看

return ss是返回值

函数在定义时,所指定的参数是占位符。

函数定义以后,如果不经调用,不会被执行。

从例外一个角度理解:

函数定义时,参数是输入,函数体是处理,结果是输出,函数就是IPO的实现,函数也是完整代码的封装。

函数的使用及调用过程

调用时运行函数代码的方式,程序看到这段代码并不会去执行,所谓调用,就是函数名称给定一个具体的值,比如 fact(10);

调用时要给出实际的参数,实际的参数替换定义中的占位参数,函数调用后得到返回值。

下面看代码的调用过程

a=fact(10)

print(a)

当这段代码被执行时,代码会去寻找fact函数,并且将给定的参数10 赋给你使用的函数中间的那个参数n。此时,10就代替了n,运算代码之后,产生了确定的s值 3628800,并且赋值给变量a。print (a)之后,就输出了3628800。

所以这就是函数的调用过程。

函数的参数传递

函数可以有参数,也可以没有,但必须保留括号

def ():

return

此外呢,我们也可以为某些参数制定一些默认值,构成可选参数。

def (,):

return

所谓可选参数,就是我们调用的时候不提供,或者提供其他变量。这种可以提供,也可以不提供的参数叫可选参数。所有可选参数放在非可选参数之后。

看例子

你可以看出m既可以给定,也可以不给定,结果跟m有关。此外呢,还有一种参数叫可变参数,不确定多少个

def ( , *b):

return

看例子

*b代表不确定b中有多少参数,有可能是 3 也有可能是3,5,8,前面的10 是确定参数。比如之前学过的max min 都是不确定多少个参数函数调用时,参数可以按照位置或名称的方式传递。

可以按照n 和m 的位置传递

也可以按照n 和m 的名称传递

函数的返回值

函数可以返回0 或者返回多个结果;可以有返回值,也可以没有;return可以传递0个返回值,也可以传递多个返回值。

看例子:

看return 后面(725760,10,5)这种用小括号,中间用逗号,叫元组数据类型。我们之前学过列表,很相似,不做展开。

局部变量与全局变量

在程序中使用叫全局变量,在函数体中使用的叫局部变量。

def ( ):

return

看代码:

def里面的n和s是局部变量,外面的是全局变量n和s。局部变量是函数内部的占位符,与全局变量可能重名但不同。函数运算结束后,局部变量被释放。

看上例子,fact()函数中s是局部变量与全局变量s不同,在return s 时 ,返回的是全局变量s=100的值,并不是局部变量s=3628800

在print(s),输出的是全局变量。

我们能在程序中间使用外部的全局变量吗?

当然可以,可以用 global 保留字在函数内部使用全局变量。

看结果就能对比出来,局部变量为组合数据类型且未创建,等同于全局变量。

通过[]创建一个全局变量列表ls,def 中的ls是列表类型,未真实创建则等同于全局变量。在func中,全局变量ls被修改。

再看代码:

两个例子中 ,在def中多了一个真实创建的ls[],这时ls是局部变量,局部变量ls被修改。

这段代码告诉我们,如果一个组合数据类型在函数中被真实创建了,那么他就是局部变量。在函数运行结束后,变量就会被释放,他就不存在了。如果组合数据类型没被创建,又与全局变量名称相同,所以就是全局变量。

lambda函数

lambda函数是一种匿名函数,既没有名字的函数。使用lambda保留字来定义,函数名是返回结果。lambda函数用于定义简单的,能够在一行内表示的函数。

=lambda:

等价于

def ( ):

return

看例子:

>>>f=lambda x,y :x+y

f(10,15)=25

>>>f=lambda:”lambda函数”

print(f())

lambda 函数

谨慎使用lambda函数,尽量用def return 去定义。它的存在主要用于一些特定的函数或方法的参数。lambda有固定的使用方式,慢慢学 。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180903G1WW1X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券