python函数

python函数

1:函数声明

"""声明一个最简单的函数,没有返回值,函数里面什么也不做"""
def func():
    """这是一个函数文档注释"""
    pass

print(type(func))   #type
print(func.__doc__) #查看文档注释
<class 'function'>
这是一个函数文档注释
"""有参数的函数"""
def func(a,b):
    return a+b

print(func(1,2)) #函数传递参数
print(func("a","b")) #不同类型参数
3
ab
"""python不支持函数重载,后面声明的函数会覆盖掉前面声明的函数"""
def func(num1,num2):
    print(num1+num2)

def func(n1,n2):
    print(n1+n2+10)
    
func(10,20)
40

2:函数参数

"""*args接收多余的参数存储为一个元组,**kwargs接收多余的关键字参数存储为一个字典"""
def func(a,b,*args,**kwargs):
    print(a,b)
    print("args:",args)
    print("kwargs:",kwargs)
func(10,20,30,40,50,60,name="zhangsan",age=19)
10 20
args: (30, 40, 50, 60)
kwargs: {'name': 'zhangsan', 'age': 19}
"""如果想要将一个元组,一个字典对应入*args,**kwargs,则需要拆包"""
def func(a,b,*args,**kwargs):
    print("args:",args)
    print("kwargs:",kwargs)
t=(1,2,3,4,5)
s={"name":"zhangsan","age":19,"gender":"男"}

func(1,2,t,s) 
print("*"*50)
func(1,2,*t,**s)


args: ((1, 2, 3, 4, 5), {'name': 'zhangsan', 'age': 19, 'gender': '男'})
kwargs: {}
**************************************************
args: (1, 2, 3, 4, 5)
kwargs: {'name': 'zhangsan', 'age': 19, 'gender': '男'}
"""函数位置参数:数据标签,使得函数调用参数更直观"""
def func(name,age,gender):
    print(name,age,gender)

func(name="zhangsan",gender="男",age=19)

zhangsan 19 男
"""函数缺省参数,设置默认值"""

def func(num1,num2=20):
    return num1+num2

print(func(10))     #30
print(func(10,40))   #50
30
50

3:闭包

"""函数作用域保存变量"""
"""需求:需要一个函数计算一个数的次方"""
def my_pow(num,n=0):
    def func(n=n):
        return pow(num,n)
    return func

get_pow1=my_pow(100,10) #基数为100
print(get_pow1(2))

get_pow2=my_pow(10)     #基数为10
print(get_pow2(2))
10000
100

4:递归

"""递归就是函数自己调用自己,当设置条件并满足时退出,我们可以利用递归完成一些比较负责的事情,比如二叉树的遍历"""

"""计算0~100数字的和"""

def my_sum(num):
    if num==1:return 1
    return my_sum(num-1)+num

print(my_sum(100))

5050

5:函数对象

"""python中万物皆对象,函数也可以有属性"""

def func(name,age,gender):
    """this is function docstring"""
    name="zhang"
    pass

"""内置魔法属性"""
print(func.__name__)  #函数名称属性
print(func.__doc__)   #函数说明文档属性
print(func.__str__)   #函数解释
print(func.__module__) #所属模块
print(func.__class__)  #函数类

print("*"*50)
"""动态添加属性"""

def func():
    pass
#     func.count+=1      #不能在函数内部添加属性
     
func.count=1
print(func.count)

func
this is function docstring
<method-wrapper '__str__' of function object at 0x7f94aca74d08>
__main__
<class 'function'>
**************************************************
1

6:函数注解

"""添加函数参数及返回值注释"""


def func(name:"这是name的注解:"="default")->"返回值是一个妹子":
    pass

print(func.__annotations__) #result:{'name': '这是name的注解:', 'return': '返回值是一个妹子'}



"""添加参数类型注解和函数返回值类型"""
def func(name:str="张三",age:int=19,flags:bool=True)->bool:
    print(name,age,flags)
    return name

func("里斯",199,False)
print(func.__annotations__) #输出函数注解
{'name': '这是name的注解:', 'return': '返回值是一个妹子'}
里斯 199 False
{'name': <class 'str'>, 'age': <class 'int'>, 'flags': <class 'bool'>, 'return': <class 'bool'>}

7:匿名函数

"""匿名函数:lambda表达式"""
l=lambda x:x+10
print(l(10))

"""也可以缺省参数:"""
l=lambda x=10,y=20:x**y
print(l(10,2))

"""和函数一样可以使用分支语句"""

l=lambda x: True if x>10 else False
print(l(1))   #False
print(l(11))  #True
20
100
False
True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值