无字天书之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/b
print(chufa(5))# 含有默认的数字,5/1
print(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=0
def print_One():
    a=1;
    print('a=',a)

    def print_Two():
        a=2
        print('a=',a)

print_One()

打印结果:

a= 1

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

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

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

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

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

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

    def print_Two():
        a=2
        print('a2=',a)
    print_Two()

print_One()

结果如下:

a1= 1
a2= 2

匿名函数

是的,你没看错,函数是可以不命名的。
当我们需要使用匿名函数的时候,可以使用 lambda 关键字来声明匿名函数。

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

语法:

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

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

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

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

递归函数

一个函数是可以调用另一个函数的,如果这个函数调用自己的话,那么这个就叫递归函数。
需求: 要求 n 的阶乘

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

结果为:6(123)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值