函数的重点内容
一、函数的定义
1.1什么是函数
函数更多的是一种思想,他不是一种技术
1.2函数的定义方式
def 函数名(): #定义阶段(造车轮阶段)
"""函数注释写在这里""" # 相当于函数的说明书
<代码块>
函数名() #函数的调用阶段(开车阶段)
#定义一个注册函数
def register():
"""注册函数"""
username = input('请输入你的用户名:')
pwd = input('请输入你的密码:')
with open('user_info.txt', 'a', encoding='utf8') as fa:
fa.write(f'{username}:{pwd}|')
register()
定义阶段不执行代码,只检测语法错误
二、函数定义的三种方式
2.1空函数(只是定义了函数,然后啥也没有)
只知道工具名但不知道如何选出这个函数
def func():
pass
2.2无参函数(无参:未知数,变量)
工具可以单独使用
def add():
x = input('num1:')
y = input('num2:')
print(int(x)+int(y))
add()
2.3有参函数
这个工具不能单独使用,必须得加个配件才能使用
def add(x,y)
print(int(x) + int(y))
x = input('num1:')
y = input('num2:')
add(x, y)
三、函数的调用
假如我们输入的x,y分别是4和6
def add(x,y)
return x+y #函数的返回值
x = input('num1:')
y = input('num2:')
res = add(x, y) #调用add函数,并将add的返回值赋值给res
print(res*12) #可以对函数的返回值进行其他操作
--------------------------------------------------
120 输出的最后的值为120
四、函数的返回值
def add(x, y):
# return (x, y, x + y) # return可以返回任意数据类型
return x, y, x + y # return可以返回任意数据类型,不加括号返回多个值时,默认用元祖的形式返回,如果没有return返回函数值就默认返回None
x,y = add(1, 2)
add()
return其实就是函数的返回值,而且他还可以终值函数,当他输出函数的返回值的时候,他下面的代码就不会运行了。
五、函数的参数
5.1形参
定义阶段才有形参,形式参数,啥也没有,知识占个位置,具有描述意义
def func(x,y) #形参
preturn x+y
add(1,2) # 这里调用又是实参
5.2 实参
调用阶段才有实参,实际的参数,具有具体的值,也具有实实在在的意义
def func(x,y)
preturn x+y
add(1,2) #实参
5.3位置形参
一个一个的写形参
def add(num1,num2): #位置形参
'''有参函数'''
print(int(num1) + int(num2))
add()
5.4 位置实参
一个一个写过去
def add(num1,num2):
'''有参函数'''
print(int(num1) + int(num2))
add(1,2) #位置实参
5.5默认形参
不需要传参,可以使用默认值; 传参就使用你传的值, 位置形必须放到默认形参前面
如果shopping('jiayi')里面没有传参数'jiayi'那么他就会使用默认值name='nick'
--------------------------------------------------
恭喜wenbin,得到特斯拉一个
如果shopping('wenbin')
里面没有传参数'wenbin'
那么他就会使用默认值name='nick'
def shopping(name='nick'): # 形参经常会引用同一个值
goods_dict = {1: '特斯拉', 2: '奔驰', 3: 'nick'}
print(f'恭喜{name},得到{goods_dict[1]}一个')
shopping()
恭喜nick,得到特斯拉一个
5.6关键字实参
按照形参名给定具体的值,可以打破位置形参,必须得一一对应传值的规定,位置实参必须在关键字实参之前
def shopping(x, name='nick'):
goods_dict = {1: '特斯拉', 2: '奔驰', 3: 'nick'}
print(f'恭喜{name},得到{goods_dict[x]}一个')
shopping(1, name='wenbin')
--------------------------------------------------
恭喜wenbin,得到特斯拉一个
位置实参1
必须放在关键字实参name='wenbin'
,不然就会报错,而且有几个形参就得传几个值