Python基本系列 1 函数3种——一般函数

一、函数

函数作用是重复使用代码,增强代码的可读性。在python中函数也是对象。函数可当另一个函数的参数,也可以当另一个函数的返回值。

参数是函数;

返回值是函数。

python函数4种:1、一般函数;2、匿名函数;3、偏函数;4、柯里化

1、一般函数

一般函数7部分构成

def function_name(argument): #5个元件:定义函数关键字def、函数名、小括号、参数、冒号
    """函数作用描述"""
    函数执行内容

函数的参数形式有5种:(1)位置参数positional argument;(2)默认参数default argument;(3)可变参数variable argument;(4)关键字参数keyword argument;(5)命名关键字参数name keyword argument;

(1)位置参数,在调用函数时:1)参数不能缺省,2)参数位置要固定。

def function_name(arg,arg1): 
    print('名字:',arg)
    print('性别:', arg1)
function_name('XiaoLi','man') #参数的位置要固定,且参数不能缺少

名字: XiaoLi
性别: man

function_name('man','XiaoLi') #传递参数时记不住顺序,输出都乱了,无意义

名字: man
性别: XiaoLi

#因此在传递参数时最好带上关键字(形参),
function_name(arg='man',arg1='XiaoLi') 
名字: XiaoLi
性别: man

(2)默认参数,函数定义时带有默认参数。默认函数一定要放在位置参数后面,不然程序会报错。

def function_name(arg,arg1='man'): #位置参数,默认参数
    print('名字:',arg)
    print('性别:', arg1)
function_name('XiaoLi') #参数的位置要固定,但有默认参数,第二个参数可缺少

名字: XiaoLi
性别: man

(3)可变参数, 传入的参数个数是可变的,个数可以是0到任意个,然后它们被组成一个元组。可变参数用于接收列表或元组的元素

def fun1(*arg): #*arg是可变参数,可以接收0-任意个值,并将它们组装成一个元组
    print(type(arg) 
    for a in arg:
        print(a)
fun1(1,2,3) #1,2,3被组装成一个元组

<class 'tuple'>
1
2
3

也可以接收列表或元组,但是在传递列表或元组为参数时需要在前面加上*星号进行拆解

def fun1(*arg): #可变参数,接收多个值进行元组组装。可以接收 列表或元组的元素
    print(type(arg) 
    for a in arg:
        print(a)

A=['WY','WE','XT'] #A是列表
fun1(*A)    #A在传递时需要前加星号进行拆解

<class 'tuple'>
WY
WE
XT

#如果不加*星号进行拆解,就默认A是一个整体的参数,并组装成只有一个元素A的元组
fun(A)

['WY', 'WE', 'XT']

可变参数用两种方式传入:1、直接参数fun(1,2,3) ; 2、先拆装列表或元组,再传入 :fun(*(1,2,3))、 fun(*[1,2,3])

(4)关键字参数,允许传入零个到任意个参数,它们在函数内部自动组装为一个字典 (dict)

def fun2(**arg):
    print(type(arg))
    for key,value in arg.items(): #字典中的循环需要使用items()函数
        print(key,value)

fun2(name='XiaoMing', age='16',female='man')#在内部组装成一个字典

<class 'dict'>
age 16
female man
name XiaoMing

A = {'name':'XiaoMing', 'age':'16','female':'man'}
fun2(**A) #将**进行拆装,在内部组装成一个字典

<class 'dict'>
age 16
female man
name XiaoMing

(5)命名关键字参数,限制了关键字参数的名字

def fun3(*,nkw): #命名关键字参数
    print(nkw)

fun3(nkw="命名关键字参数") #已经指定了关键字

命名关键字参数


fun3(nk="命名关键字参数") #采用其他关键字就会出错

TypeError: fun3() got an unexpected keyword argument 'nk'

(6)参数组合,不同的参数形式可以组合使用,

(6.1)python 有5种参数形式,但最多4种可以组合使用:可变参数与 命名关键字参数不能一起使用。

注意参数定义的顺序必须是:

  • 位置参数默认参数可变参数关键字参数

  • 位置参数默认参数命名关键字参数关键字参数

(6.2)注意定义可变参数关键字参数的语法:

  • *args 是可变参数,args 接收的是一个 tuple

  • **kw 是关键字参数,kw 接收的是一个 dict

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值