1. 默认参数的函数
默认参数:
函数调用时,如果没有传递参数,则使用默认参数
注意:默认参数需要放到形参的最后
def Person(age,hoby="玩游戏",name = "李超"):
print("age = %s,name = %s,hoby = %s"%(age,name,hoby))
Person(18,"看电影")
>>>age = 18,name = 李超,hoby = 看电影
Person(20,"学习","王凯")
>>>age = 20,name = 王凯,hoby = 学习
2. 不定长参数的函数
参数的形参加了星号*的变量存放所有未命名的变量参数,如果函数在调用时没有指定参数,他是一个空元组
def func(a,*args):
print("a =",a)
print("args =",args)
func("a","b","c","d")
>>>a = a
>>>args = ('b', 'c', 'd')
def func2(**kwargs):
print(kwargs)
func2(a=1,b= 2,c =3)
>>>{'a': 1, 'b': 2, 'c': 3}
3. 匿名函数
不使用def关键字定义函数,使用lambda创建匿名函数
特点:
1.lambda是一个表达式,函数体比def简单
2.lambda的主体是一个表达式,只能在lambda表达式中封装简单的逻辑
3.lambda函数有自己的命名空间,且不能访问自有参数列表之外的或全局命名空间的参数
格式:lambda 参数1,参数2,…,参数n:experssion
sum = lambda num1,num2:num1+num2
print("2+2 =",sum(2,2))
>>>2+2 = 4
4. 装饰器
是一个闭包,把一个函数当做参数返回一个替代版的函数,本质上是一个返回函数的函数
#简单装饰器
def func1():
print("sunck is a good man!")
def outer(func):
def inner():
print("*"*20)
func()
return inner
#f是func1的加强版本
f = outer(func1)
f()
>>>********************
>>>sunck is a good man!
def outer(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
#使用@符号将装饰器应用到函数
@outer #相当于f = outer(say)
def say(age):
print("sunck is %d years old!"%(age))
f = outer(say)
f(9)
>>>sunck is 9 years old!
f(-2)
>>>sunck is 0 years old!
say(22)
>>>sunck is 22 years old!
#通用装饰器
def outer(func):
def inner(*args,**kwargs):
# 添加修饰功能
pass
func(*args,**kwargs)
return inner
5. 偏函数
print(int("1000",base=2))
>>>8
def int2(str,base = 2):
return int(str,base)
print(int2("1000"))
>>>8
import functools
# 把一个参数固定住,形成一个新的函数
int3 = functools.partial(int,base =2)
print(int3("1000"))
>>>8
本文详细介绍了Python中的函数特性,包括默认参数、不定长参数的使用,以及lambda匿名函数的创建。同时,深入探讨了装饰器的概念,展示了如何创建和使用装饰器来增强函数功能。此外,还讲解了偏函数的应用,通过functools.partial固定函数参数。这些内容对于理解Python函数的高级用法至关重要。

被折叠的 条评论
为什么被折叠?



