初始函数
为什么要用函数?
- 避免代码重用
- 提高代码的可读性
函数的定义与调用?
def 函数名(参数1,参数2):
'''函数注释'''
print("函数体")
return 返回值
定义:def 关键字开头,空格之后接函数名和圆括号,最后还要加上一个冒号。
def是固定的,不能改变。
函数名:函数名命名规则是包含字母、数字、下划线的任意组合,但是不能以数字开头,虽然函数名和随便取名,但是一般尽量定义为可以表达函数功能的名字。
函数的调用
返回值=函数名(参数1,参数2)#记得函数名后面加括号
示例
定义一个求计算字符串长度的函数,假如我们的len()函数现在不能用了,name我们就需要定义一个函数,求字符串的长度。如果让我们一次一次的去写相同的代码,会非常麻烦,所以我们需要使用函数。
def length():
s = "hello world"
length = 0
for i in s:
length+=1
print(length)
print(length())
return 必须放在函数里,当函数有返回值的时候,必须用变量接收才有效果。
def length():
s = "hello world"
length = 0
for i in s:
length += 1
return length
hprint(length())
函数的返回值
-
return的作用:结束一个函数的执行
-
首先返回值可以是任意的数据类型
-
函数可以有返回值:如果有返回值,必须要有变量接收才有效果
-
函数也可以没有返回值
-
没有返回值的时候分为三种情况
- 当不写return的时候,函数的返回值为None
- 当只写一个return的时候,函数的返回值为None
- return None的时候,函数的返回值为None
-
return返回一个值(一个变量)
-
return返回多个值(多个变量)多个值之间用逗号隔开,以元组的形式返回。接收:可以用一个变量接收,也恶意用多个变量接收,返回几个值就用几个变量接收
-
def func(): a = 111 b = [1,2,3] c = {"a":15,"b":6} #return a 返回一个值 #return a,b,c 返回多个值,变量之间按逗号隔开,以元组的形式返回 print(func())
#不写return时返回None
def func():
a = 111
b = [1,2,3]
ret = func()
print(ret)
#自卸一个return时,返回None
def func():
a = 111
b = [1,2,3]
return
ret = func()
print(ret)
#return None的时候返回None
def func():
a = 111
b = [1,2,3]
return None
ret = func()
print(ret)
return 的作用
def func():
print("开始")
return #结束一个函数的执行
print("结束")
func()
定义一个列表,返回列表最后一个值
#方法一
def func():
list = [1,3,4,5]
return list[-1]
#方法二
def func():
list = [1,3,4,5]
return list
a,b,c,d = func()
print(d)
函数的参数
def func(c):
'''
参数接受形式参数,简称形参
'''
实参和形参
- 形参:是函数定义时候的参数
- 实参:函数调用时候传进来的参数
如何传递多个参数
- 可以传递多个参数,多个参数之间用逗号隔开。
- 站在传参的角度上,调用函数时传参数有两种方式
- 按照位置传参数
- 按照关键字传参数
- 用法:
- 位置参数必须在关键字参数的前面
- 对于一个参数只能赋值一次
def func(a,b):
if a > b:
return a
else:
return b
print(func(1,3))#按照位置传参
print(func(a=1,b=3))#按照关键字传参
print(func(1,b=3))#按照位置传参和关键字传参混搭
默认参数
用法:
- 为什么要用默认参数?
- 将变化比较小的值设置为默认参数
- 定义:
- 默认参数可以不传,不传的时候用的是默认值,如果传会覆盖默认值。
- 默认的值是定义函数的时候已经确定了的。
def func(a,b=1):
print(a,b)
func(0)
dunc(0,2)
默认参数缺陷:默认参数是一个可变的数据类型
def func(a,l=[]):
l.append(a)
print(l)
func(1)
func(2)
#输出[1] [1,2]
动态参数
按位置传参多余的参数都是有*args统一接收,保存成一个元组的形式。
按关键字传参多余的参数都是由**kwargs接收,保存成一个字典的形式。
def func(a,b,*args):
sum = a+b
for i in args:
sum += i
return sum
print(func(1,2,3,4))#输出他们的和
def func(a,b,**kwargs):
print(a,b,**Kwargs)
func(a=10,b=20,c=30,d=40)#输出10,20 {"c":30,"d":40}
总结
- 定义:def 关键字揩油,空格之后是函数名称和圆括号()和:
- 参数:圆括号用来接收参数,若传入多个参数,参数之间用逗号分隔。
- 参数可以定义多个,也可以不定义。
- 参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、*kwargs.
- 注释:函数第一行语句应该添加功能注释
- 函数体:函数内容以冒号起始,并且缩进。
- 返回值:return [表达式]结束函数,不带表达式的return相当于返回None。
def 函数名(参数1,参数2,*args,**kwargs):
'''注释内容'''
函数体
return 返回值