python入门之函数学习

函数

def 函数名():

    函数内容

def()      调用函数   如果需要变量填入变量

默认参数

def info(name,age,course,country="CN") :  #默认参数必须放最后
    print(name,age,country,course)
info("gxd",22,'python')
info("bzx",22,'java','USA')

修改函数中的变量

age = 123
def info () :
    global age       #全局修改
    age = 22
    print(age)
info()
print(age)

嵌套函数

age = 22
def info():
    global age
    def info1():
        print(age)       #输出22
    info1()
    age = 30
info()
print(age)              #输出30

函数=作用域

函数可以返回任意指定变量值,函数名,列表等

#代码定义完成后 ,作用域已经生成,作用域链向上找  一个函数就是一个作用域
age = 22
def info():
    age = 30
    def info1():
        print(age)
    return info1                  #函数名也可以当做返回值
val = info()
val()                   #输出30

 

匿名函数

func = lambda x,y:x*y        #匿名函数,将函数一行化,不能太复杂,节省代码量
print(func(3,5))
#lambda 函数一般与其他方法搭配使用,不经常单独使用

函数递归相关

import sys
print(sys.getrecursionlimit())          #查询默认最多递归次数
sys.setrecursionlimit(1500)             #修改默认最多秭归次数
print(sys.getrecursionlimit())


def calc(n):
    v = n/2
    print(int(v))
    if int(v) == 0:
        return
    calc(v)
    print(int(v))
calc(10)                             #输出关系,5 2 1 0 1 2 5    

阶乘
def cal(n):
    if n == 1:
        return 1
    return n*cal(n-1)
print(cal(10))


尾递归优化即下层递归与上层无任何关系,阶乘不是   python里并没有优化
列表生成式 简洁明了
a = list(range(10))
a = [i*i for i in a]      #输出 0 1 4 9 16 25 36 49 64 81

a = list(range(10))
a = [ i if i < 5 else i * i for i in a]   #输出 0 1 2 3 4 25 36 49 64 81

生成器相关

a = (i for i in range(50))    #相当于一个公式,每次取出一个。不能返回
next(a)                       #一个一个下一个
for n in a:
    print(n)



def fib(max) :
    n,a,b = 0,0,1
    while n<max:
        yield  b       #把函数的执行过程冻结在此处,并且把值返回给外面的NEXT
        a,b=b,a+b
        n=n+1
    return 'done'
f = fib(10)      #把函数转化为了生成器

#return  代表生成器的的结束,生成器结束会报错
#next唤醒生成器并执行
#send同上    而且可以发送一个信息到生成器内部  用此方法可以提前判断传入值然后停止生成器
#生成器属于迭代器

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值