200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 无字天书之Python第九页(函数)

无字天书之Python第九页(函数)

时间:2022-10-14 11:15:09

相关推荐

无字天书之Python第九页(函数)

博客目录

传送门函数定义函数以及使用以及规则简单使用(参数的传递)变长度传递参数 变量作用域匿名函数递归函数

过年不停更之第三更

传送门

无字天书之Python第一页

无字天书之Python第二页

无字天书之Python第三页

无字天书之Python第四页

无字天书之Python第五页

无字天书之Python第六页

无字天书之Python第七页

无字天书之Python第八页

函数

定义函数以及使用以及规则

# 定义规则:# 函数代码块以 def 关键词开头。# 后接函数名称和圆括号 () 。# 圆括号中可以使用参数。# 函数内容以冒号起始,并且缩进。# return 结束函数,可以选择性地返回一个值。不带 return 相当于返回 None。# 定义函数 数据相加def add(a,b):c=a+b;return c# 调用函数c=add(1,2)print(c)

这里我们介绍两个名词:

实际参数:简称实参,我们刚才在调用函数的时候传入 1 和 2 就是实参。主要体现在实际执行函数的时候使用。

形式参数:简称形参,我们刚才在定义函数的时候 add(a, b) 中的 a 和 b 就是形参。主要体现在它只是一个形式和格式,真正要执行的时候还是要看传入的实参。

简单使用(参数的传递)

参数的传递有很多种方式,比如刚才我们调用时使用的就是按照位置顺序传递。

除了按照位置顺序传递,我们还可以按照赋值来传递:(下面示例)

def ddd(a,b):return (a-b);print(ddd(b=10,a=5))

默认赋值

业务场景:如果参数有两个,但是其中一个可能不会传递,这时我们可以给它一个默认值。

# 定义一个除法def chufa(a,b=1):return a/bprint(chufa(5))# 含有默认的数字,5/1print(chufa(10,2))

变长度传递参数

当我们自定义函数的时候,需要两个参数就写两个参数,需要三个就要写三个参数,但是需要很多的时候呢?就用到我们的变长度传递参数

# 定义规则(元组):我们可以在参数 b 前面加一个 * ,表示这个参数是可变长参数,当前面的参数都赋值结束后,剩下的参数顺次给这个参数赋值。def bianOne(a,*b):print(a,b)bianOne(1,2,3,4,5,6)# 定义规则(字典):参数前面加两个 * ,表示这个参数可以传递的数据类型是以字典的形式传递的。def bianTwo(a,**b):print(a,b)bianTwo(1 , e='2', b='3', c='4', d='5')# 变长传递参数:既不满足自定义方法的时候bianOne(1)bianTwo(1)

变量作用域

变量的作用域是指在程序中命名的变量产生想过的范围。

# 变量作用域:变量的作用域是指在程序中命名的变量产生想过的范围。a=0def print_One():a=1;print('a=',a)def print_Two():a=2print('a=',a)print_One()

打印结果:

a= 1

在上面的示例中, a 我们进行了三次赋值,但是注意,这里并不是赋值覆盖,而是每次赋值时作用域不同。

第一次赋值 a 是在最外面,这个称为全局变量,意思是它的作用域是全局的,我们在全局任何地方使用 a ,都能获得这个值。

第二次赋值, a 是在print_One()这个函数中,我们调用了 print_1() 这个函数,所以这里的赋值会生效。

第三次赋值是在print_Two()这个函数中,我们并未调用这个函数,所以这里 a 的赋值并不会生效。

小小改变下:在pring_One中调用print_Two

a=0def print_One():a=1;print('a1=',a)def print_Two():a=2print('a2=',a)print_Two()print_One()

结果如下:

a1= 1a2= 2

匿名函数

是的,你没看错,函数是可以不命名的。

当我们需要使用匿名函数的时候,可以使用 lambda 关键字来声明匿名函数。

lambda 只是一个表达式,函数体比 def 简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

语法:

函数对象名 = lambda 形参:表达式

还是写一个简单的匿名函数大家体会一下:

# 匿名函数:add=lambda a,b:a+bprint(add(1,2))

结果为3

建议:当函数比较复杂的时候,不建议使用匿名函数,因为它只能是一行,写起来不好写的同时还不好阅读,结构晦涩难懂,如果进行复杂的业务逻辑,匿名函数能让写的人怀疑人生,读的人生不如死。真爱生命,请远离匿名函数。

递归函数

一个函数是可以调用另一个函数的,如果这个函数调用自己的话,那么这个就叫递归函数。

需求:要求 n 的阶乘

def digui(n):if n==1:return 1return n*digui(n-1)print(digui(3))

结果为:6(123)

完事… 希望各位神仙能够动手操作一下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。