python|函数

一、函数的定义与调用

格式

def 函数名():
    代码
print函数名()

# 定义一个函数,能够完成打印信息的功能
def printInfo():
    print('------------------------------------')
    print('         人生苦短,我用Python')
    print('------------------------------------')
# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()

返回输出 

 

 

每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了

如果函数中执行到了return也会结束函数

二、参数的传递

(位置参数传递、关键字参数传递、默认参数传递)

函数的参数传递是指将实际参数传递给形式参数的过程。 

我们通常将定义函数时设置的参数称为形式参数(简称为形参),将调用函数时传入的参数称为实际参数(简称为实参)。

1.位置传参

函数在被调用时会将实参按照相应的位置依次传递给形参,也就是说将第一个实参传递给第一个形参,将第二个实参传递给第二个形参,以此类推。

def num(a, b):  ##定义时小括号中的参数,用来接收参数用的,称为 “形参”
    c = a+b
    print(c)
num(110, 20)    ##调用时小括号中的参数,用来传递给函数用的,称为 “实参” 
#返回 130

 2.关键字传参

关键字参数的传递是通过“形参=实参”的格式将实参与形参相关联,将实参按照相应的关键字传递给形参。

def connect(ip, port):
    print(f"设备{ip}:{port}连接!")
connect(ip="127.0.0.1", port=8080)  ##调用函数处ip="127.0.0.1",port=8080为实参
#返回 设备127.0.0.1:8080连接!

3.默认参数传递

函数在定义时可以指定形参的默认值,如此在被调用时可以选择是否给带有默认值的形参传值,若没有给带有默认值的形参传值,则直接使用该形参的默认值。

def connect(ip, port=8080):
    print(f"设备{ip}:{port}连接!")
connect(ip="127.0.0.1")
#返回 设备127.0.0.1:8080连接!
connect(ip="127.0.0.1", port=3306)
#返回 设备127.0.0.1:3306连接!

三、参数的打包与解包以及混合传递

1.打包

如果函数在定义时无法确定需要接收多少个数据,那么可以在定义函数时为形参添加“*”或“**”:

  • “*” —— 接收以元组形式打包的多个值(实参是元组→可以使用“*”拆分成多个值→按位置参数传给形参
  • “**”—— 接收以字典形式打包的多个值(实参是字典 → 可以使用“**” 拆分成多个键值对 →按关键字参数传给形参)
##打包--'*'  以元组形式打包
def test(*args):  # 定义
    print(args)
test(11, 22, 33, 44, 55)  # 调用
#返回 (11, 22, 33, 44, 55)
##打包--'**'   以字典形式打包
def test(**kwargs):  # 定义
    print(kwargs)
test(a=11, b=22, c=33, d=44, e=55)  # 调用
#返回 {'a': 11, 'b': 22, 'c': 33, 'd': 44, 'e': 55}
  • 虽然函数中添加“*”或“**”的形参可以是符合命名规范的任意名称,但这里建议使用*args和**kwargs。
  • 若函数没有接收到任何数据,参数*args和**kwargs为空,即它们为空元组或空字典。

2.解包 

元组形式解包

def test(a, b, c, d, e):
    print(a, b, c, d, e)
nums = (11, 22, 33, 44, 55)
test(*nums)
#返回 11 22 33 44 55

字典形式解包

def test(a, b, c, d, e):
    print(a, b, c, d, e)
nums = {"a":11, "b":22, "c":33, "d":44, "e":55}
test(**nums)
#返回 11 22 33 44 55

 3.混合传递

在定义函数时:

带有默认值的参数必须位于普通参数之后。

带有“*”标识的参数必须位于带有默认值的参数之后。

带有“**”标识的参数必须位于带有“*”标识的参数之后。

def test(a, b, c=33, *args, **kwargs):
    print(a, b, c, args, kwargs)
test(1, 2)
#返回 1 2 33 () {}
test(1, 2, 3)
#返回 1 2 3 () {}
test(1, 2, 3, 4)
#返回 1 2 3 (4,) {}
test(1, 2, 3, 4, e=5)
#返回 1 2 3 (4,) {'e': 5}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值