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

    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.函数的作用 # sum() max() min() len() type() # 使用函数都需要加一个括号 # 有自己的功能 # ‘a’.replace() # 称为方法 点出来的有括号的称为方法 # a.name # 称为属性 # sum() # 是函数 # 不加括号时,sum代表的是整个函数 # 加了括号时,sum()代表的是使用函数 # 1.函数的…

    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
  • python中的高阶函数

    1.匿名函数 # lambda表达式 # 匿名函数 # 没有名字的函数 相当于 # 优点:节省内存空间 优化代码 # def add(a, b): # return a+b def add(a, b): return a + b # 当函数里面的代码只有一行的时候可以这样写! print(add(1, 2)) # 但函数里面的代码只有一行,可以转换为匿名函数…

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

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

    2023年4月2日
    00
  • python中的字符串操作

    # 1.索引(下标) print(‘1.索引’) str_data = ‘Python’ # [索引(下标)]取索引的格式 # 正负索引 # 获取单个数据 sub_str = str_data[4] print(sub_str) sub_str = str_data[-2] print(sub_str)     # 2.字符串切片 # 取单个数据用索引 # …

    2023年4月2日
    00
  • python中的高阶函数

    1.匿名函数 # 1.匿名函数lambda # 简化代码 减少占用的内存 print(‘1.匿名函数lambda’) def func(): print(10) func() func = lambda: print(10) # 出现警告的原因是: # 因为你把lambda表达式赋给了另一个变量。 # 但lambda表达式本就是一个匿名的函数, # PEP8…

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