6.千锋教育函数基础----自制随堂笔记

本文介绍了Python函数的基础知识,包括函数的参数类型如关键字参数、默认参数和不定长参数,以及匿名函数lambda的使用。强调了函数作为数据类型的特性,阐述了参数传递的原理,特别是值传递和引用传递的区别。通过实例解析了如何定义和调用函数,以及如何利用函数提高代码复用性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识函数:
在一个完整的项目中,某些功能会反复使用。那么会将功能封装成函数,当我们要使用的时候直接带哦用函数即可

本质:
函数就是对功能的封装

优点:
1、简化代码结构,增加了代码的复用度(重复使用的程度)
2、如果想修改某些功能或者调试某个BUG,还需要修改对应的函数即可

定义函数:

格式:
def 函数名(参数列表):
语句
return 表达式

def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始和结束
参数列表(参数1,参数2,。。。。。。,参数n):任何传入参数的函数和变量必须放在圆括号内,用括号分隔。函数从函数的调用者那里获取信息
冒号:函数内容(封装的功能)以冒号开始,并缩进
语句:函数封装的功能
return:一般用于结束函数,并返回信息给函数的调用者。

函数的调用
格式:函数名(参数列表)

函数名:要使用的功能的函数函数名字
参数列表:函数的调用者给函数传递信息,如果没有参数,小括号也不能省略

函数调用的本质:实参给形参赋值的过程

= "帅"
print()


def myPrint():
	print("sunck is a good man!")
	print("sunck is a nice man!")
	print("sunck is a handsome man!")

# 最简单的函数无返回值无参数

# 定义了一个无返回值无参数的函数
def myPrint():
	print("sunck is a very good man!")
	print("sunck is a nice man!")
	print("sunck is a handsome man!")
	
myPrint()
myPrint()
myPrint()

函数的参数
需求:编写一个函数,给函数一个字符串和一个年龄,在函数内部打印出来
# 形参(形式参数):定义函数时,小括号中的变量,本质的变量
# 参数的传递:参数必须按顺序传递,个数目前要对应
# def myPrint(str, age, hoby):
# 	print(str, age)


def myPrint(str, age):
	print(str, age)

# 实参(实际参数):调用函数时给函数传递的数据,本质是值
myPrint("sunck is a good man!", 18)

#### 函数的返回值
#### 编写函数,实现功能,给函数两个数返回这两个数的和
def mySum(num1, num2):
	# 将结果返回给函数的调用者
	return num1 + num2
	# 执行完return语句,该函数就结束了,return后面的代码不执行
	print("###########")
res = mySum(1, 2)

print(res)

值传递:
传递的是不可变类型
Strin、tuple、number是不可变的

def funcl(num):
	num = 10

temp = 20
funcl(temp)		# num = temp
print(temp)

引用传递:
传递的可变类型
list、dict、set是可变的

def func2(lis):
	lis[0] = 100

li = [1,2,3,4,5]
func2(li)
print(li)

a = 10
b = 10
b = 20
print(id(a), id(b))

c = 20
d = 30
print(id(c), id(d))
d = c
print(id(c), id(d))
关键字参数
概念:允许函数调用时参数的顺序与定义时不一样
def myPrint(str, age):
	print(str, age)

# 使用关键字参数
myPrint(age = 18, str = "sunck is a good man!")

默认参数
概念:调用函数时,如果没有传递参数,则使用默认参数
以后要用默认参数,最好将默认参数放到最后
def myPrint(str, age = 18):
	print(str, age)

myPrint("kaige good")
不定长参函数
概念:
能处理定义时更多的参数
加了星号(*)的变量存放所有未命名的参数,如果在函数调用时没有指定参数,它就是一个空元组
def func(name, *args):
	print(name)
	print(type(args))
	for x in args:
		print(x)
func("sunck", "good")

def mySum(*l):
	sum = 0
	for i in l:
		sum += i
	return sum
print(mySum(1,2,3,4))
**代表键值对的参数字典,和*所代表的意义类似
def func2(**kwargs):
	print(kwargs)
	print(type(kwargs))

func2(x = 2, y = 1, z = 3)

def func3(*args, **kwargs):
	pass # 代表一个空语句
匿名参数
概念:不使用def这样的语句定义函数,使用lambda来创建匿名函数
特点:
1、lambda只是一个表达式,函数体比def简单
2、lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
3、lambda函数有自己的命名空间,且不能访问自由参数类标之外的或全局命名空间的参数
4、虽然lambda是一个表达式且看起来只能写一行,C或C++内联函数不同
格式:lambda 参数1,参数2,······参数n,expression
sum = lambda num1,num2:num1 + num2
print(sum(1,2))

函数也是一种数据类型

def sum(a, b):
	return a + b


f = sum

aa = f(2, 3)
print(aa)


res = sum(1, 2)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值