python 基础系列11-函数的构成

# python 基础系列11-函数的构成

# 引入sys库
import sys
import copy
from functools import reduce


def func():
    print('aaaaaa')
    return


def func2(x, y):
    print('bbbbb')
    return x + y


def func3(x, y='xxx'):
    print(x, y)
    return x + y


def func4(**war):
    print(war)


def func5(*a):
    print(a)

def func6(*a,**b):
    print(a,b)

def func8(*a,**b):
    pass

def func7(*a,**b):
    return 1,2

if __name__ == '__main__':
    print(1)
    func()
    rs = func2(1, 2)
    print(rs)

    # 缺省参数
    rs3 = func3('as2')
    # rs3 = func3('as2','sssx')

    # 不定长参数
    func4(a=1, b=2, c=3, d=4)
    func5(1,2,3,4,5)
    func6(1,2,3,4,a=1, b=2, c=3, d=4) #常用用法

    #无返回值
    func7()

    #返回多个值,可以用变量接收
    var = func8()
    var1,var2 = func8()

    

# python 基础系列 -作用域

# 引入sys库
import sys
import copy
from functools import reduce

#全局变量
a=11
b=22

def func():
    global a
    #局部变量
    a=3
    print(a)
    return 4

mylist = [1,2,3]
def func2(var):
    var[0] = 'a'
    #局部变量
    print(var)
    pass

def func3(var):
    var1=var[:]
    var1[0] = 'a'
    #局部变量
    print(var1)
    pass
if __name__ == '__main__':
    # 作用域
    print(a)

    #在函数内修改全局变量,使用 global 关联全局变量
    func()
    print(a) #这里的a值就发生了变化

    #函数内部修改参数--传引用 ,我们发现2者值一致 都为 ['a', 2, 3]
   # func2(mylist)
   # print(mylist)

    #为了解决上面的问题我们多加了一个赋值拷贝过程(注意是拷贝过程,而不是赋值)
    func3(mylist) #['a', 2, 3]
    print(mylist) #[1, 2, 3]

# python 基础系列-函数嵌套

# 引入sys库
import sys
import copy
from functools import reduce


def fun1():
    print(1)

def fun2():
    global fun1
    def fun1():
        print('aaaaa')


def fun3():
    print(3)

def fun4():
    print(4)


if __name__ == '__main__':

    #函数嵌套
    fun2() 
    fun1() #要先申明这个函数

# python 基础系列-匿名函数

# 引入sys库
import sys
import copy
from functools import reduce

if __name__ == '__main__':
    print()
    #匿名函数一般做一些简单的函数
    f = lambda x:x*x
    rs= f(2)
    print(rs)

    #支持默认参数
    func=lambda  x,y =1 :x+y
    print(func(4))

    #用途:跳转表 举例子
    mylist = [lambda x:x*x,lambda x:x+1,lambda  x:x-1]
    for func in mylist:
        print(func(3)) #传参

# python 基础系列 -递归

# 引入sys库
import sys
import copy
from functools import reduce


def func(list):
    if list == []:
        print('列表为null')
        return 0
    return  list[0]+func(list[1:])

def cost(money,day=0):
    if money <= 0 :
        print('没钱了,花了',day)
        return 0
    else:
        money = money // 2
        day +=1
        cost(money,day)
def func2():
    print('a_1')
    func2()
if __name__ == '__main__':

    #递归就是函数中包含对自身的调用:
    print(9/4)
    print(9//4)
    mylist= [1,2,3,4,5]
    sum = 0
    while mylist:
        sum += mylist[0]
        mylist = mylist[1:]

    print(sum)

    #递归求和方法:
    mylist2 = [1, 2, 3, 4, 5]
    print(func(mylist2))

    money = 10000
    #每天花一半的钱,求花多少天
    cost(money)

    #递归 效率高,但是内存消耗大 ,普通循环 内存小,效率稍低,py内部会设置一个最大值,会报错
    func2()

猜你喜欢

转载自blog.csdn.net/qq_31866793/article/details/104368000
今日推荐