Python 函数

函数定义

def 函数名(参数):# 通过缩进来区分函数体
	函数体
	return 返回值
变量=函数名(参数)

函数的传入参数

在函数定义中,设置的参数称为形参。不同的参数之间用逗号隔开。
在函数调用中,传入的数据称为实参

def add(x,y):# 传入的参数
	print(f"{x}+{y}={x+y}")

传入参数的方法

位置参数:传统的方法,传入的位置与函数参数的位置要一致。

关键字参数:在函数调用时,通过“键=值”,也就是将值赋予指定参数。可以不按照参数的顺序传入。
注意:若与位置参数结合,则函数调用时,位置参数必须在关键字参数前面。

def F(x,y,z):
	print(x,y,z)
F(z=1,y=1,x=1)# 指定为某个参数,顺序可以打乱
F(1,z=1,y=1)# 与位置传参结合,位置传参要在前面

缺省参数:也称为默认参数。在函数中,为缺省参数提供默认值,调用函数时可以不传入默认参数,默认参数使用默认值。
注意:位置参数要排在缺省参数之前,包括函数定义与调用。

def F(x,y,z=1):# z为默认参数,在最后
	print(x,y,z)
F('x','y','m')# 传入默认参数,默认值被覆盖
F('x','y')# 不传入默认参数,z默认为'z'

不定长参数:也叫可变参数。在不确定有多个参数时使用。
类型分为:位置传递与关键字传递
(1) 位置传递:所有传入的参数都会被args变量接收,它会根据传入的位置合并为一个元组arg为元组类型。(args可以改为其他,关键是有一个星号)

def F(*args):
	print(args)# arg为元组
F(1,2)# (1,2)
F(1,2,3)# (1,2,3)

(2) 关键字传递:参数为 “键=值” ,所有的“键=值”会被kwargs接收,同时会形成字典,kwargs的类型为字典。(kwargs可以改为其他,关键是有2个星号)
注意:参数必须都为键值对,不然会报错

def F(**kwargs):# kwargs为字典
	print(kwargs)
F(x=1,y='y',z=False)# {x=1,y='y',z=False}

函数作为参数传入

这是一种计算逻辑的传递,而不是数值的传递。就如代码所示,如何逻辑都可以自定义并作为函数传入。
也就是数据是确定的,但数据的执行逻辑不确定
参数的类型为function
注意:若传入函数的别名与另一个函数重名,依然会使用传入的函数。

def F1(x,y):
    return x-y
def F2(x,y):
    return x+y

def F(F1):
    # 这里的F1可以看做F2的别名,调用F1=调用F2
    # 调用函数,由于传入的函数为F2,因此要符合F2的要求
    print(F1(1,2))
	#依然会使用F2函数,而不是F1函数
F(F2)# 传入F2函数

函数的返回值

使用return语句返回函数执行完成后的结果。
执行return语句后,之后的语句都不会执行。

def add(x,y):# 传入的参数
	return x+y
ans=add(1,2)
	

None返回值

若没有return语句返回数据,则会默认返回None这个字面量。None代表空、无实际意义的意思。

def f()
	return None# 可以主动返回

None的应用:

  • 可以用在if判断上,None等价于False
  • 用于声明无初始值的变量

多返回值

多个返回值时,返回值之间使用逗号隔开。支持不同类型的数据返回。
接收时,按照返回值的顺序,写出对应顺序的变量接收。

def F():
	return 1,False,'1'# 不同返回值用逗号隔开

x,y,z=F()# x=1,y=False,z='1'

函数说明文档

在vscode中:

  • ctrl+win+i:生成文档注释(即文件最开头的注释,用于对整个文件进行说明)
  • ctrl+win+t:生成函数注释(即函数开头的注释,用于对这个函数进行说明)

函数中变量的作用域

局部变量:函数体内部定义

全局变量:函数体外部定义。

在函数内部调用全局变量:
在函数内部可以调用全局变量。
但如果函数内部定义了与全局变量同名的局部变量,则会调用局部变量,而不是全局变量。

num=100
def F1()
	print(num)# 使用全局变量
def F2()
	num=10# 定义一个局部变量,不会修改全局变量
	print(num)# 会调用局部变量,而不是全局变量
F1()
F2()
print(num)

global 关键字
global关键字可以实现在函数里使用全局变量,或将函数中的变量声明为全局变量。

num=100# 全局变量
def F():
    global num #global关键字,当前变量为全局变量
    # 由于num已经存在,则会使用num全局变量
    global test# test全局变量,新定义
    test=10
    print(num)# 输出100
    num=10# 会修改全局变量
    print(num)# 输出10

F()
print(num)# 输出10
print(test)# 输出10

lambda匿名函数

匿名函数没有名称,而且只能临时使用一次。
语法: lambda 传入参数 : 函数体(只能有一行代码)

def F(F1):
	print(F1(1,2))

F(lambda x,y : x+y)# 传入了匿名函数,函数体只有一行
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值