函数定义
def 函数名():
"""
计算x和y的和
:param x: 加数
:param y: 加数
:return: 和
"""
函数体
return xx
函数没有return的话,返回的事None,类型是<class NoneType>
函数内部正常声明的变量是局部变量
如果函数内部需要使用一个全局变量,需要使用global来在函数内定义一下这个全局变量
控制台版的ATM机,money这个全局变量在draw_money和save_money内使用的时候,使用了global引入全局变量
money = 0
name = input('请输入你的名字')
def menu():
print('取款请按1')
print('存款请按2')
print('查询请按3')
num = input()
if num == '1':
money = draw_money()
elif num == '2':
money = save_money()
elif num == '3':
query_money()
def draw_money():
global money
num = int(input('请输入你要取多少钱?'))
money -= num
print(f'{name}取出了{num}元钱,目前余额{money}元')
return money
def save_money():
global money
num = int(input('请输入你要存多少钱?'))
money += num
print(f'{name}你存了{num}元钱,目前余额{money}元')
return money
def query_money():
print(f'{name}目前余额{money}元')
menu()
函数进阶
- 函数可以返回多个值,并且类型不限制
def 函数名():
return 值1,值2...
- 函数传值可以是位置参数, 关键字参数, 默认值参数, 以及不定长参数
def test_param(name, age, gender='女'):
print(f"name={name}, age={age}, gender={gender}")
# 位置参数传递
test_param('小名', 12, '男')
# 关键字参数传递
test_param(name='小名', age=12, gender='男')
# 默认值参数传递
test_param(name='小名', age=12)
不定长参数1,元组类型
定义如下:
def test_param(*args):
# args是所有的参数,是个元组
def test_param(*args):
print(f"args:{args}, 类型是:{type(args)}") # 元组类型,(1,2,3,4)
test_param(1, 2, 3, 4)
不定长参数2,字典类型 定义如下:
def test_param(**kwargs):
# kwargs是所有的参数,是个字典
def test_param(**kwargs):
print(f"kwargs:{kwargs}, 类型是:{type(kwargs)}") # 字典类型,{name: '小名',age:12,gender:'男' }
test_param(name='小名', age=12, gender='男')