


# 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()