Python Note -- Day 4. 模块化编程-函数,递归函数和高阶函数-回调函数,闭包函数,匿名函数,迭代器,生成器

模块化编程

指把程序进行封装(函数封装,面向对象,文件...)

10. 函数

  • 定义
    def 函数名([参数列表]):
    当前函数的具体功能代码...
  • 调用
    函数名([参数列表]):

系统将函数调用的参数和局部变量存放在内存的哪一部分:stack

def func(x):
    if not instance(x,(int,float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

10.1 函数的参数类型

普通参数,默认参数,收集参数,命名关键字参数

  • 普通参数

就是位置参数,也叫顺序参数,也是必须传递的参数 ——可把普通函数的普通参数按照关键字参数进行传递

def a(age, name):  
    print(age)  
    print(name)  
a(name='dsgs',age=3)
  • 默认参数

比如要求有三个参数,x,y,i,至少要传递两个
这是最后一个参数就是默认参数,但是默认参数,需要在定义形参时,指定默认值
def func(x,y,i=100):
print(x,y,i)
调用传递了默认的参数,那么里面使用的就是传递的实参
func(1,2,3)
调用没有传递默认的参数,使用默认值
func(1,2)

默认参数必须指向不变对象!

def add_end(L=[]):
    L.append('END')
    return L

# 修改后
def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L

>>> add_end()
>>> add_end()
  • 收集参数

——定义一个形参,专门收集多余的实参,又叫 可变参数
——或者理解为,不确定要传递多少个实参,直接用一个形参来接收
——定义函数时,在形参前面加一个 * 号,如:*args,*m
——接收的多余参数,会存储在args/m中,形成一个元组

def func(a,x="+",*args):  
    if x == "+":  
        print('add',args)  
    else:  
        print('minus',args)  
func(1.2,"-",2,3); minus (2, 3)
  • 命名关键字参数

——关键字参数定义在 收集参数 后面
——关键字参数必须通过形参的名字来进行传递

def lo(a,b,c=3,*args,name):  
    print(a,b,c)  
    print(args)  
    print(name)
lo(1,2,4,5,6,7,name="admin")  
  • 关键字参数收集

——普通收集参数,会把多余的参数收集为 元组
——#关键字参数收集,会把多余的关键字参数收集为 字典

def lo(a,b,c=3,*args,name,age,**kw):  
    print(a,b,c)  
    print(args)  
    print(kw)  
lo(1,2,6,112,1133,name='lim',age=44,sex='fel', wo='ha')  
  • 注意形参声明的位置:
  • 普通参数,默认参数,收集参数,关键字参数,关键字收集参数!!
  • print(a=11,b=22,c=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值