目录
一、函数的定义
1.1 函数的定义和调用
def 函数名(): # 定义函数阶段,不执行函数体中的代码,只检测语法错误
"""函数功能的描述"""
<代码块>
函数名() # 调用函数阶段,这时会执行函数中的代码
1.2 注册功能函数
#定义注册函数
def register():
"""注册功能""" # 函数的注释加在这个第二行
username=input('请输入用户名:')
pwd=input('请输入密码:')
with open('user_info.py','a',encoding='utf8') as fa: # a模式自动创建用户信息文件
fa.write(f'{username}:{pwd}|')
register() # 调用注册功能函数
1.3 登录功能函数
# 定义登录函数
def login():
"""登录功能"""
inp_username=input('请输入用户名:')
inp_pwd=input('请输入密码:')
with open('user_info.py','r',encoding='utf8') as fr:
# 循环把fr里元素取出放到列表里 ,循环的注释加在循环体上面
for user_info in fr:
user_info_list = user_info.split('|') # 把fr里的用户信息切割成列表
inp_user_info=f'{inp_username}:{inp_pwd}'
if inp_user_info in user_info_list:
print('登录成功')
break
else:
print('登录失败')
login() # 调用登录函数
二、定义函数的三种形式
参数:未知数、变量,定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量
2.1 无参函数
在定义函数阶段括号内没有参数,称为无参函数。
注意:定义时无参,调用时括号内也不需要传入参数
如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数
def func():
x=input('num1:')
y=input('num2:')
print(int(x)+int(y))
func()
2.2 有参函数
在函数定义阶段括号内有参数,称为有参函数。
注意:定义时有参,调用时也必须传入参数
如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数
def sum_self(x, y):
"""求和"""
res = x+y
print(res)
sum_self(1,2) # 调用函数,最后打印出res的值为3
2.3 空函数
当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。
def func():
pass
三、函数的参数
3.1 形参和实参
1、形参: 定义阶段才有形参,形式参数,啥也没用,只是占个位置,具有描述意义
2、实参: 调用阶段才有实参,实际的参数,具有具体的值
def add(num1, num2): # 形参
"""有参函数"""
print(int(num1) + int(num2))
add(1, 2) # 实参
3.2 位置形参和位置实参
1、位置形参: 一个一个的写形参,就叫位置形参
2、位置实参:一个一个值写过去,就叫位置实参
3、两个位置形参,就必须得有两个位置实参对应,从左到右一一对应
def add(num1, num2): # 形参 # 3、位置形参: 一个一个的写形参,就叫位置形参
"""有参函数"""
print(num1)
print(num2)
print(int(num1) + int(num2))
add(1, 2) # 实参 # 4、位置实参: 一个一个写过去,就叫位置实参
3.3 默认形参
在定义阶段,就已经被赋值,不需要传参,可以使用默认值; 传参就使用你传的值, 默认形参必须放到位置形参后面
def func(x, y=10): # x为位置形参,y=10就是默认形参
print(x)
print(y)
func(2)
3.4 关键字实参
按照形参名给定具体的值,可以打破位置形参必须一一对应传值的规定,但仍能为指定的形参赋值,关键字实参必须在位置实参之后。
def shopping(x, name='nick'): # name='nick'为默认形参
goods_dict = {1: '特斯拉', 2: '奔驰', 3: 'nick'}
print(f'恭喜你这个小钢炮{name},得到{goods_dict[x]}一个')
shopping(1, name='yongjiu') # name='yongjiu'为关键字实参
函数的参数尽量不要超过3个,需要用的时候,一般用位置形参和位置实参
四、函数的返回值
4.1 什么是函数的返回值
def func():
name='zyl'
return name # return 变量名就是返回变量的值
# 只要执行到return,函数就会执行,就会终止函数,直接返回name的值'zyl'
name=func() # 调用函数,并用函数返回值'zyl'赋值给name
print(name)
4.2 返回值的个数
def add(x,y):
print(x+y)
res=add(1,2) # 返回值个数为0个时,也就是函数里没有return时,默认返回None,
print(res) # res接受到的返回值默认为None
return的返回值可以返回任意数据类型
return的返回值无个数限制,即可以使用逗号隔开返回多个值
def add(x, y):
# return (x, y, x + y) # return可以返回任意数据类型
return x, y, x + y # return可以返回任意数据类型,不加括号返回多个值时,默认用元祖的形式返回
a=add(1,2)
print(a) # (1, 2, 3)
x,y,z = add(1, 2) # 可以用来解压缩
print(x,y,z) # 1 2 3
return是一个函数结束的标志,函数内可以有多个return
def max_self(salary_x, salary_y):
if salary_x > salary_y:
return salary_x
else:
return salary_y
max_salary = max_self(20000, 30000)
print(max_salary*12) # 360000
五、函数的调用
5.1 什么是函数调用
def func():
print('zyl handsome')
func() # 这一步就是调用函数 ,不调用函数,就不会执行函数内的代码
5.2 函数调用的三种方式
def max_self(x, y):
if x > y:
return x
else:
return y
# 1.
max_self(1, 2)
# 2.
res = max_self(1, 2) * 12
# 3.
max_self(max_self(20000, 30000), 40000)