新手Python第三天(函数)

Python 函数的创建

def func2():
print('haha')
# 函数的返回值
# 函数的返回值,没有定义返回None,
# 有一个返回值返回这个object(可以返回一个函数对象),
# 有多个则是返回一个元组
return 0

Python 函数的调用

func2()

Python 函数的参数

def func3(x,y,z=5,*args,**kwargs):
print(x)
print(y)
print(z)
func3(1,2,3)
#实际参数(实参):1,2,,3
#形式参数(形参):x,y,z
#默认参数:z=5,(非必须传递)
def func3(x,y,z=5,*args,**kwargs):
print(x)
print(y)
print(z)
#位置参数的传递,位置的特性:需要一一对应
func3(1,2,3)
#关键字参数的传递,关键字的特性:不需要一一对应
func3(x=1,y=2,z=3)
#非固定参数:*args,**kwargs
#*args接收多余的位置参数的值,以元组形式
#**kwargs接收多余的关键字参数的值,以字典的方式
#混合参数的传递,特性:位置参数要在关键字参数前面,继承了位置和关键字的特性
func3(1,y=2,z=3)

Python 全局和局部变量

def test():
name='xiaoming'#这是一个局部变量
global name #定义一个全局变量

Python 函数的递归

  递归的三大特性:1.必须要有明确的结束条件,2.每次问题的规模要有所减少,3.递归的效率不高

def calc(n):
print(n)
if n>0:
return calc(int(n/2))
calc(10)

Python 高阶函数

  高阶函数分为二种(函数即变量):1.一个函数当参数传递个另一个函数,return返回一个函数的内存地址

#函数当参数传递
def add(a,b,i):
res=i(a)+i(b)
print(res)
add(1.222,2.111,int)
#函数当返回值返回
def func4():
print('this is func4')
return func5
def func5():
print('this is func5')
func5=func4()
func5()

Python 函数的嵌套

#函数的嵌套
def func6():
print('this is func6')
def func7():
print('this is func7')
func7()
func6()

Python 装饰器

  装饰器的条件:高阶函数+函数的嵌套

def logger(funcTest):   #把源代码的内存地址传递给装饰器
def waps(*args,**kwargs): #封装内部装饰器
print('befor') #装饰的内容
res=funcTest(*args,**kwargs)#调用源代码
print('after')
return res #返回funcTest的结果
return waps #返回封装的装饰器
@logger #funcTest=logger(funcTest)
#被装饰函数的源代码
def funcTest(x):
print('this is test file',x)
return x
#funcTest=logger(funcTest) #logger返回的是waps的内存地址,
x=funcTest(x=1) #实际调用的是上方的waps,通过内部的waps调用的funcTest
print(x)

Python 三层装饰器

def auth(auth_type): #第三层加入装饰器参数
def out(func):
def wrapper(*args,**kwargs):
if auth_type=='localhost':
if local_login():
print('登入成功')
return func(*args,**kwargs)
else:
print('登入失败')
elif auth_type=='file':
if file_login():
pass #文件接口登入
else:
print('没有这个登入接口')
return wrapper
return out
@auth(auth_type='localhost')
def index():
print('welcome to index page')
index()

python学习途径

友情推荐:  猿人学Python【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。
上一篇:人生苦短我用Python 第三周 函数周


下一篇:Golang中如何正确的使用sarama包操作Kafka?