python学习--第四天--函数

一、定义函数语法:
def 函数名(参数):
函数体
return 返回值

二、函数特点:
1、关键字def define
2、参数可以为空,也可以是多个/一个
3、return不是必须要有的
4、return所引导的返回值也不是必须要有的

三、函数的参数
1、形参:就是定义在函数括号里的参数,无实际意义,存在的作用就是告知代码调用此函数时,需要传入进来具体的值,进行运算
2、实参:就是调用函数时传入的参数,是真正参与运算的参数
注意:可变数据类型,如果在函数中被修改了值,则主程序中的值也跟着变化了
不可变数据类型,如果在函数中被修改了值,则主程序中的值不会变化

例:

# 形参,实参
def canshu(name, age, sex):  # 括号里的就是形参
    print('他叫%s,%s,今年%d岁' % (name, sex, age))
    return


canshu('张三', 18, '男')  # 括号里的就是实参

3、必备参数,参数必须已正确的位置顺序传入,也叫位置参数,从左到右依次匹配,对位置和参数个数都有要求,像代码实参里的年龄与性别得与形参一一对应
例:

def bibei(name, age, sex):
    print('他叫%s,%s,今年%d岁' % (name, sex, age))
    return


bibei('张三', 13, '男')

4、关键字参数,传入的实参以形参名=值的样式传入,实参里传入的形参名必须与函数里的形参名一致,调用函数时若使用关键字参数,可以不按顺序传入
例:

def gjian(name, age, sex):
    print('他叫%s,%s,今年%d岁' % (name, sex, age))
    return

gjian(sex='女', name='沾上干', age=22)

5、缺省参数,必须放在必备参数后面。即在函数里给形参赋予了初始值,如果实参也传入了值优先取实参传入值,不传则取函数里的初始值
注意:重复调用函数,默认形参会继承之前一次调用结束之后该形参的值
例:

def quesheng(sex, name='李四', age=13, list1=[]):
    print('他叫%s,%s,今年%d岁' % (name, sex, age))
    list1.append(sex)
    print(l)

    return

quesheng('男', 'name')
quesheng('女', '互换')
他叫name,男,今年13['男']
他叫互换,女,今年13['男', '女']  # 这里就是说重复调用函数,默认形参会继承之前一次调用结束之后该形参的值

Process finished with exit code 0

6、不定长参数,必须放在必备参数、缺省参数后面,当需要一个函数能处理比当初声明时更多的参数。这些参数叫做收集参数。
不定长参数又分为两类:
*:表示一个元组 *arvg
**:表示一个字典 **kwarvg
例1:

# 如果函数形参位置,既有必备参数又有不定长参数
def test_bu(num1, sit = 1, *tup, **dic):
    print(num1)
    print(tup)
    print(dic)
    return
"""
不定长参数:匹配,用户在实际调用中有传入多个值的需求,但是开发人员又无法在函数定义时预留足够长的位置
"""
test_bu(1, 2, [1,2,3], 4, 5, 6, 7, 8, 9, 0, name='age', age=18, addr='上海')
# 希望传入函数的不仅仅是值,而是键值对
1
([1, 2, 3], 4, 5, 6, 7, 8, 9, 0)
{'name': 'age', 'age': 18, 'addr': '上海'}

Process finished with exit code 0

例2:

# 写一个函数,实现求最大值,需要用户将要进行求最大值的参数逐个传递进来
def test_max(*args, **kwargs):    # 元组是序列
    print(max(args))


test_max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
10

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值