Python-函数中各种参数的使用

真的是不想写啊,虽然脑袋里都知道  但是就是不想动手啊,痛苦啊~~~~

正题:

位置参数:比如你去电影院看电影,根据票号,找到自己的位置,都是一一对应的关系

形参:变量只有在被调用时才分配内存单元,一旦调用结束,该分配的内存单元将被释放回收,并且形参只有在该定义的函数内部有效,只要不在该函数中,则无效,不可使用

实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

def parm(x,y):
    '''输出x,y值'''
    print("x的值为%s,y的值为%s" %(x,y))

parm(3,4)

#这里x,y就是形参,3,4就是实参

 

默认参数:可以理解成初始值

def parm(x,y,z=1):
    '''输出x,y,z值'''
    print("x的值为%s,y的值为%s,z的值为%s" %(x,y,z))

parm(3,4)
#输出结果为:x的值为3,y的值为4,z的值为1

parm(3,4,5)
#输出结果为:x的值为3,y的值为4,z的值为5

备注:默认参数的位置一定要在最后,比如def parm(x,z=1,y)这样不对:报错:SyntaxError: non-default argument follows default argument,后面会说到位置参数,就会明白了

关键参数:上面说的都要应该的按照位置传对应的实参,讲究顺序,此方式为 key-value方式,不讲究位置对应顺序

def parm(x,y,z):
    '''输出x,y,z值'''
    print("x的值为%s,y的值为%s,z的值为%s" %(x,y,z))

parm(z=1,y=3,x=4)
#输出结果为:x的值为4,y的值为3,z的值为1

关键参数+位置参数:关键参数必须放在位置参数之后

def parm(x,y,z):
    '''输出x,y,z值'''
    print("x的值为%s,y的值为%s,z的值为%s" %(x,y,z))

parm(z=1,y=3,5)
#输出结果为:x的值为4,y的值为3,z的值为1

备注:报错:SyntaxError: positional argument follows keyword argument,上面这种方式,执行时会认为,z=1,y=3,z=5,因为5在z对应的形参位置上,所以也会把5传给z,这样就不行了, 所以位置参数一定要放在最前面

非固定参数:用在不确定要输入多少参数时,主要有*args 和**kwargs

*args :会将接受到的多个参数变成一个元组的形式,传入时,只需要输入value的格式就可以

*kwargs :会把接受到的多个参数变成一个dict形式,传入时,需要用key-value的方式传入

def parm(x,y,*args,**kwargs):
    '''输出x,y,*args,**kwargs值'''
    print('x的值为:',x)
    print('y的值为:',y)
    print('*args的值为:',args)
    print('**kwargs的值为:',kwargs)

parm(1,2,'args1','args2','args3',parm1=11,parm12=22,parm3=33)
#输出结果为:
'''
x的值为: 1
y的值为: 2
*args的值为: ('args1', 'args2', 'args3')
**kwargs的值为: {'parm1': 11, 'parm12': 22, 'parm3': 33}
'''

备注:突然想到把*args放在**kwargs后面行不行,来试试~。。。。报错了~~

函数作为参数:函数本质就是变量,既然是变量就可以作为参数,即函数作为另外一个函数的参数

(1)

def par_b():
    '''输出返回值'''
    print("par_b函数返回值")

def functest(x,func,*args):
    '''输出func,*args值'''
    func()
    print(args)
    print(func)

functest(1,par_b,'args1','args2')
'''
par_b函数返回值
('args1', 'args2')
<function par_b at 0x00000269CF64C268>
'''
#备注:par_b作为参数传入,此时par_b为无参数的函数,如果有参数该怎么操作?

(2)

先看源代码:

def par_b(a):
    '''打印传入的参数值a '''
    print("par_b函数返回值",a)

def functest(x,y,func,*args):
    '''传入的x参数值作为变量函数func的参数'''
    print("x的值为:",x)
    func(x)

functest(1,2,par_b,'args1','args2')

'''
x的值为: 1
par_b函数返回值 1
'''

备注:是不是感觉很棒,其实还是那句话,函数即变量~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值