Python的函数

33 阅读2分钟

函数定义

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 函数名():
    return1,值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='男')