python中的函数进阶

1.局部变量和全局变量

在函数外定义的不可变数据类型,在函数里面是可读不可写
在函数外定义的可变数据类型,在函数里面可读可操作不可修改
不可变类型传入函数,进行的操作不会影响到外面的变量
但是当我们声明一个变量为全局变量后,进行的操作会影响到函数外的变量

可变数据类型,传入和直接使用都会改变原本的数据
不可变数据类型 直接使用是可读不可写的
传入后的操作不会对函数外的变量造成影响
声明为全局变量后,可读可写,并且会对函数外的变量造成影响


# 1.在函数外定义的不可变数据类型
# 在函数里面是可读不可写
b = 1


def func():
    print(b)  # 可以运行成功

    # b += 1  # 报错
    # print(b)


func()

python中的函数进阶

 

 

# 2.不可变类型传入函数,进行的操作不会影响到外面的变量
# 但是参数可以传进来
b = 1


def func(b):
    b += 1
    print(b)


func(b)  # 2
print(b)  # 1

python中的函数进阶

 

 

# 3.在函数外定义的可变数据类型
# 在函数里面可读可写
l1 = [1, 2, 3]


def func():
    l1.append(6)
    print(l1)


func()

python中的函数进阶

 

 

# # 4.global
# # 只能在一个局部的情况下使用
# # 当一个函数外的不可变数据类型在函数内读和写并对原本的变量修改时,用global声明
b = 1


def func():
    # global 声明一个变量为全局变量
    global b
    b += 1
    print(b)


func()  # 2
# 但是当我们声明一个变量为全局变量后,进行的操作会影响到函数外的变量
print(b)  # 2

python中的函数进阶

 

 

# 例子
my_money = 10000


def add(money: int):  # 形参money
    """奖金加钱"""
    global my_money
    my_money += money
    print(f'当前余额{my_money}')


def reduce(money: int):  # 形参money
    """罚款减钱"""
    global my_money  # 注意这里也要声明!!!
    my_money -= money
    print(f'当前余额{my_money}')


add(1000)  # 实参1000
add(2000)
reduce(4000)
reduce(666)

python中的函数进阶

 

 

2.函数传参

# 1.形参与实参
# 形参和实参的个数需要一样
# 实参形参的位置顺序必须一样
def func(name, age):  # 形参
    print(f'我的名字是{name},我的年龄是{age}')


my_name = '小明'
my_age = 20
func(my_name, my_age)  # 实参

python中的函数进阶

 

 

# 2.关键字参数
# 关键字传参 关键字不需要加引号
# 优点:可以打乱参数的传入顺序
# 需要注意:关键字参数一定全都要写到最后面
# 不过一般是如果写关键字就都写关键字了
def func(money, name, age):  # 形参
    print(f'我的名字是{name},我的年龄是{age}n'
          f'我的钱是{money}')


my_name = '小明'
my_age = 20
func(100, age=my_age, name=my_name)  # 实参

python中的函数进阶

 

 

# 3.默认参数
# 可写可不写
# 不写则使用默认参数
# 写了则使用传入的参数
# 默认参数一定要写在最后,否则报错
def func(name, age, money=1000, gender=''):  # 默认参数gender

    print(f'我的名字是{name},我的年龄是{age}n'
          f'我的钱{money},我的性别{gender}')


my_name = '小明'
my_age = 20
func(my_name, my_age, 100, '')  # 实参

python中的函数进阶

 

 

# 4.不定长参数 不定长关键字参数
# *args 也可以是*a *xxx
# **kwargs 也可以是**a **xxx
# key word args
# 加了一个星号 * 不定长参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
# 加了两个星号 ** 的参数会以字典的形式导入,存放已命名的变量参数。
def func(name, *args):
    print(args)  # 是元组
    print(*args)  # 包本身  一般不会使用*args而使用args
    print(f'{name}菜里面的调料有{args}')


func('小明', '番茄酱', '辣椒粉', '孜然粉')


def func1(name, **kwargs):
    print(kwargs)
    # print(**kwargs)  # 报错
    print(f'{name}菜里面的调料有{kwargs}')


func1('小明', t1='番茄酱', t2='辣椒粉', t3='孜然粉')

python中的函数进阶

 

 

今日作业

# 定义一个模拟ATM机操作的场景
# 1)需要一个存钱和取钱的函数
# 2)设置全局默认资金1000
# 3)调用存钱函数,存放800元,并将操作后函数将余额打印出米(1000+800= 1800)
# 4)调用取钱函数,取钱500元,并将操作后函数将余额打印出来(1800-500=1300)
money = 1000


def add_money(money1: int):
    """存钱函数"""
    global money  # 声明money为全局变量
    money += money1
    print(f'余额是{money}')


def reduce_money(money2: int):
    global money  # 注意这里也要声明!!!
    money -= money2
    print(f'余额是{money}')


add_money(800)  # 调用存钱函数,存放800元
reduce_money(500)  # 调用取钱函数,取钱500元

python中的函数进阶

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的函数进阶 - Python技术站

(0)
上一篇 2023年4月2日 下午4:18
下一篇 2023年4月2日 下午4:18

相关文章

  • python函数进阶

    # 1.函数的作用域 # 全局变量的作用域: # 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。 # 全局变量所有作用域都可用,局部变量只能在本函数可用,变 # 量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量 # # global关键字: # 为了解决函数内使用全局变量的问题, # python增加了gl…

    2023年4月2日
    00
  • python中的公共操作与列表推导式

    1.公共操作 # + 合并 将两个相同类型序列进行连接 字符串、 列表、元组 l1 = [1, 2, 3] l2 = [4, 5, 6] print(l1+l2) # [1, 2, 3, 4, 5, 6]     # * 复制 将里面的数据进行复制 字符串、列表、元组 l1 = [1, 2, 3] print(l1 * 3) # [1, 2, 3, 1, 2…

    2023年4月2日
    00
  • python实现学员管理系统

    “”” 1.学员管理系统 系统功能界面 1-添加学员 2-删除学员 3-修改学员信息 4-查询学员信息 5-退出系统 6-显示全部学员信息 “”” # 打印要操作的信息 # 使用数字表示使用的功能 # 输入对应的数字,表示要操作的功能 # 1:增加学员信息 2:删除学员信息 # 3:修改学员信息 4:查看学员信息 5:退出系统 # 存储数据 # str nu…

    2023年4月2日
    00
  • python实现简单的商品数据管理系统

    # 一个商品 名称 价格 库存 总销量 # 存放商品的数据类型 str set list tuple dict # 综合考虑,选择字典 dict_data = {} # {名称: {price: 价格, inventory: 库存, sales: 总销量}} def exist_goods(goods_name): # 有无keys都行应该是 “””判断商品…

    2023年4月2日
    00
  • python中的字典和集合

    1.字典 # 基础数据类型 # bool int float str list tuple dict set # list dict set 可变数据类型 # bool int float str tuple 不可变数据类型 # 1.字典 dict # dict_data={key: value, key1: value1} # 1,符号以大括号表示 # 2…

    2023年4月2日
    00
  • python中的函数(1)

      # 1.函数 # 函数就是将一段具有独特功能的代码段整合到一个整体并命名 # 在需要的位置调用这个名称即可完成对应的需求 # 函数的作用:封装代码(方便管理),实现代码重用 print(‘1.函数作用’) name_list = [‘小明’, ‘小刚’] # 列表 print(len(name_list)) # 长度为2 print() name_lis…

    2023年4月2日
    00
  • python中的文件操作

    起初data.txt文件是这样的 # 一直打开文件但却不关闭文件会导致内存溢出 # 在python,使用open函数, # 可以打开一个已经存在的文件,或者创建一个新文件, # 语法如下: open(name, mode) # name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 # mode: 设置打开文件的模式(访问模式):只读、写入…

    2023年4月2日
    00
  • python中的for循环

    1.range # 1.range(起始值,结束值,步长) # 范围 区间 # 步长不写时默认是1 # 当里面只有一个数据的时候,默认是0-结束值 # 当里面有两个数据的时候,是 起始值-结束值 print(‘1.range()’) print(range(5, 9, 1)) print(type(range(9)))       2. for循环 # 2.…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部