2017年11月21日学习总结__关于函数的定义的说明以及递归函数

本文详细解析了Python中函数的作用域规则、如何正确声明和使用变量,以及递归函数的特点与应用场景,并通过实例展示了map()与filter()函数的区别。

一  函数的作用域是有规律可循的,首先应该声明在使用,如果没有声明直接使用就会报错,需要注意的一点是,全局变量和局部变量不能相互影响:

x=6
def f():
    print(x)
    x=5
f()
这里会报错,如果全局变量可以在局部变量中使用的话,那么运行之后不会报错,但是把x = 5 进行注明后,还是报错,所以,由此可得,这里不能共通,且顺序必须是先声明在使用!
ps视频中的老师纠结了好久...所以这个基础问题必须搞清楚,防止以后搞混了!

先定义一个阶乘的方式

def num(n):
    nums = 1
    for i in range(1,n):
        nums = nums * i
    return nums
print(num(10))
'''对应的说明:
第一行:定义一个函数-num
        先定义一个数字nums = 1(说明)乘法里面要用1,加减法里面要用0,这样对数据不会破坏
        用for..in  ...的方式将n从数列range中一个个赋值到i上并且列印出来后面的备注(1,n)作用是指的将0跳过
        然后用之前定义的nums等于nums*i        这样可以进行阶乘
        将nums数字重新定义并且返回循环
        打印出num(1-9)的阶乘函数结果为:362880
'''
说明递归函数的两个特点:

1/自我调动数值,

2/必须要有一个结束的需求,或者是条件,否则将会无限循环

看例子:

#定义一个递归函数
def fact(n):
    if n == 1:
        return 1
    return n*fact(n - 1)

print(fact(10))
'''定义一个递归函数fact(n)这个n指的是不定向函数
    注明条件如果n ==1 两个等号是相等于,不是赋值的意思
    返回1
    如果不等于一,那就应该自减自乘,然后进行累积
'''
递归的函数优点就是非常清晰明了的解释,大家看到代码之后就会很清晰明了!
而且设计代码也很简单,但是对应的就是工作效率慢!意思就是用时间换效率....
所以使用的场合需要慎重,慎用慎用...
比如...汉诺塔..是很经典的函数....

def move(n, a, b, c):
    if(n == 1):
        print(a,"->",c)
        return
    move(n-1, a, c, b)
    move(1, a, b, c)
    move(n-1, b, a, c)
move(3, "a", "b", "c")
很经典..可以适当的深入研究,这里就不在赘述,有需要可以自己查查....

这里用递归非常简单明了,只需要写出步骤,那么,系统自动给你计算,如果用for....in.....明年都滤不清楚...
所以这个东西优点与缺点一样清晰...

讲一讲几个特殊的遍历函数
map()
filter()
两个共同点,就是两个作用基本相同,都是遍历的作用,但是区别是,map()之后会进行数值的更改,干事filter()仅仅起到过滤作用,并不对源代码进行修改
例子:
str = ['a','b','c']
def fun(s):
    return s + 'leon'
a = map(fun,str)
print(a)
print(list(a))
输出效果为:<map object at 0x0000000001E8C1D0>
          ['aleon', 'bleon', 'cleon']
str = ['a','b','c']
def fun(s):
    return s + 'leon'
a = filter(fun,str)
print(a)
print(list(a))
# 输出效果为:<filter object at 0x000000000222C1D0>
#           ['a', 'b', 'c']


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值