python 函数,1.定义,2.函数参数传递,3.函数的返回值,4.函数参数定义\默认值\可变个数参数,5.递归函数

  1. 函数就是能够完成特定功能的一段代码。通过函数可以实现代码的复用、实现细节的隐藏、提高可维护性与可读性。
# python中创建函数的格式:
def function(parameter):  # 函数名与输入参数
	parameter = 1  # 函数体
	return parameter  # 返回值
	
# python中调用函数的格式
result = function(2)
  1. 函数的参数传递。函数定义是的参数为形参,函数调用时的参数是实参。参数传递是指将实参传递给形参,有两种方式:位置传递与关键字传递(关键字指的是形参)。
    函数参数传递时,如果传入的是不可变对象,那么不论函数中如何修改该对象,函数调用结束后,该对象依然不变。如果传入的是可变对象,若函数中改变该对象,则函数调用结束后,该对象会发生相应的改变。因为传入的可变对象会发生改变,若不想让原对象发生变化,应传入原对象的copy()。
# 函数参数传递的两种方式
def func1(para1, para2): 
	answer = para1 + para2  
	return answer	
result1 = func1(2, 3)  # 位置传递,按照顺序传递
result2 = func1(para1=2, para2=3)  # 关键字传递,按照形参名传递

# 可变对象与不可变对象的差异
def func2(a, b):
	a = a + 1
	b.append(a)
	return
a, b = 1, [1, 2, 3]
func2(a, b.copy())  # 传入b的copy
print(a, b) # 输出1, [1,2,3],a与b都没有发生改变
func2(a, b)
print(a, b) # 输出1, [1,2,3,2],a没有发生改变,b发生了改变
  1. 函数的返回值有三种情况:
    (1)如果没有返回值,return可以省略;
    (2)如果只有一个返回值,则返回相应的类型;
    (3)如果有多个返回值,则返回的是一个元组,元组内是各个返回值。
def func1():  # 没有返回值
	print('hello')
def func2():  # 有一个返回值
	return 'hello'
def func3():  # 有多个返回值
	return 'hello','world'
print(func3())  # 输出为('hello', 'world')
  1. 函数参数定义。可以为函数形参提供默认值,形参有默认值时,可以不给该形参传入实参;若给其传入实参,则实参会替换掉默认值。
    不确定传入参数的个数时,可以使用可变个数参数,有两种形式:*args或 **args。*args指的是可变个数的位置参数,**args指的是可变个数的关键字形参。
    两者可以一起使用,一同使用时两者的形参名不能相同,一同使用时可变位置形参需要在可变关键字形参之前;但不能重复。也可以与普通形参一起使用。
# 参数默认值
def func1(para1, para2=2):  # para2有默认值
	return para1 + para2

# 可变个数参数
def func2(*args):  # 可变个数的位置参数
	print(args)
func2(1, 2)  # 输出(1,2),注意输出的是元组
def func3(**args): # 可变个数的关键字参数
	print(args)
func3(a=1, b=2)  #输出{'a': 1, 'b': 2},注意输出的是字典

# 普通形参、可变个数位置参数、可变个数关键字参数一同使用
# 注意不管可变还是不可变,位置参数都要在关键字参数之前!
def func4(a, *args1, b, **args2):
    print(a, args1, b, args2)
func4(1, 2, 3, b=4, c=5, d=6)  # 输出为:1 (2, 3) 4 {'c': 5, 'd': 6}
  1. 递归函数,就是函数自己调用自己,因此需要在函数体内给予函数终止条件,避免无限套娃。
# 以斐波那契数列为例(斐波那契数列前两个数都是1,之后的数是其前两个数的和)
def func1(n):
	if n==1 or n==2:
		return 1
	else:
		return func1(n-2) + func1(n-1)

print(func1(6))  # 输出8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值