19.python之函数使用

函数

定义:

  • 将一件事的步骤封装在一起
  • 函数名表示这个函数要做的事
  • 函数体是实现函数功能的流程

分类:

  • 内置函数
  • 自定义函数

通过关键字def定义函数:

def name(agrs...):      # 定义一个函数,agrs是函数要传入的参数,可以有0个或多个
    do something       # 将功能步骤封装到一起
    返回值              # 返回值,使用return

return(返回值)

  • 将函数结果返回的关键字
  • 只能在函数体中使用
  • 支持返回任何类型的数据
  • 有返回值的函数可以将其赋值给一个变量
  • return意味着函数的结束,return之后的代码不再执行
  • 若在函数中没有return,那么默认返回的是None

return与print的区别:

  • print只是打印,不能赋值
  • return是对函数结果的返回,支持赋值

例:

def test():
    return '这是一个测试'

# 有返回值的函数可以将其赋值给一个变量
a = test()
print(a)

结果:
在这里插入图片描述

函数的传参

  • 实参和形参
  • 必传参数
  • 默认参数
  • 不规则参数

实参和形参:

  • 在函数名中定义的是形参
  • 在函数调用时,给函数名中传递的参事是实参
    在这里插入图片描述

必传参数:

  • 在定义函数时,参数后面没有赋值
  • 函数中定义的参数没有默认值,在调用函数时若不传会报错

默认参数:

  • 在定义函数时,参数后面有赋值,这个值就是默认值
  • 函数调用时,默认参数给与了新的值,函数将优先使用后传入的值

例:

# a和b是默认参数
def add1(a=1, b=2):
    return a + b

number_add1 = add1()  # 这里的结果是1+2
print(number_add1)


# a和b是必传参数
def add2(a, b):
    return a + b

number_add2 = add2(2, 3)  # 这里的结果是2+3
print(number_add2)


# a是默认参数,b是必传参数
def add3(a, b=1):
    return a + b

number_add3_1 = add3(2)  # 这里的2是给参数a赋值,b用默认的1,结果就是1+2
number_add3_2 = add3(2, 3)  # 这里的2是给参数a赋值,3是给参数b赋值,结果就是2+3
print(number_add3_1)
print(number_add3_2)

结果:
在这里插入图片描述

不规则参数:

  • 没有固定的参数名和数量
  • *args:表示将无参数的值合并成元组
  • **kwargs:表示将有参数与默认值的赋值语句合并成字典

用法:
在这里插入图片描述

例1:

# 定义函数
def test(*args, **kwargs):
    print(args, type(args))
    print(kwargs, type(kwargs))

# 方式一:直接传参
test(1, 2, 'a', name='张三', age=12)

# 方式二:定义一个元组和字典然后将传入函数
test_tuple = (1, 2, 'a')
test_dict = {'name':'张三', 'age':12}

# 这里要注意,传入元组变量添加一个*,字典变量添加2个*
test(*test_tuple, **test_dict)  

结果:
在这里插入图片描述

命名关键字:

  • 在可变参数*args(可变元组参数)后面
  • 调用时是:变量名=数值

例:

def t(a,b=1,*args,c=2,**kwargs):
    print(a,b)
    print(args)
    print(kwargs)
    print(c)

t(1,2,3,4,c='c',d='d',e='e')

在这里插入图片描述

参数的规则

从左到右依次是:必传参数、默认参数、可变元组参数、命名关键字、可变字典参数

例:

def test(a, b=1, *args, c, **kwargs):
   print('a是{},b是{},*args是{},c是{},**kwargs是{}'.format(a, b, args, c, kwargs))

test('aa', 'bb', 1, 2, 3, c='cc', name='张三', age=10)
test('bb', c='cc',name='张三', age=10)
test(b=666, c='cc',a=123, name='张三', age=10)

结果:
在这里插入图片描述

函数的参数类型定义

在这里插入图片描述

注:

  • 函数定义在python3.7之后可用
  • 这里的参数类型只是说明,函数不会对参数类型进行验证,只有在使用时若是参数不符合使用才会报错,也就是说即使定义的是int类型,但是传入的是字符串类型,只要函数体中的代码块使用字符串不会有问题,那么就是正常的

例:

def add(a:int, b:int):
    print(a + b)

add(1, 2)
add('hello', 'world')  # 这里传入字符串,也是正常的,函数参数定义的int只是说明,没有其他影响

结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值