首页 > 编程语言 >python中的函数进阶

python中的函数进阶

时间:2022-12-07 22:46:39浏览次数:41  
标签:进阶 python money name func print my 函数

1.局部变量和全局变量

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

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


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


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

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


func()

 

 

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


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


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

 

 

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


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


func()

 

 

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


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


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

 

 

# 例子
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)

 

 

2.函数传参

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


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

 

 

# 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)  # 实参

 

 

# 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, '女')  # 实参

 

 

# 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='孜然粉')

 

 

今日作业

# 定义一个模拟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,money,name,func,print,my,函数
From: https://www.cnblogs.com/qc2012/p/16964773.html

相关文章

  • python之路44 jQuery语法应用 与Bootstrap框架
    写的略粗糙咨询https://www.cnblogs.com/Dominic-Ji/p/10490669.html作业讲解页面简陋定时器:<inputtype="text"id="d1"><buttonid="startBtn">开始</button><bu......
  • 函数式编程
    函数式编程优点大数量下处理集合效率高代码可读性高消灭嵌套地狱函数式编程思想概念​ 面向对象需要关注用什么对象完成什么事情。而函数式编程思想就类似于我们......
  • 【221207-4】如图,点AB分别在反比例函数y=-4/x(x<0)和y=2/x(x>0)的图像上,且AB//x轴,C是x
    ......
  • Oracle数据库PL/SQL学习笔记——函数定义
    小技巧:如果在sqlwindow窗口下创建函数,但是创建的函数一直是无效函数(有个小红叉),那么可以再新建-》programwindow-》function 窗口中重写创建函数,这里面有相信的错误信......
  • 进入python的世界_day47_前端——JQ补充、bootstrap前端框架
    一、jQuery补充​ 说在最前面,如果想把JQ对象赋值给一个变量名,起名字依旧要讲究,建议名字前加$,这样别人一看就知道是JQ对象1.筛选器//1.属性选择器$('username')//......
  • Go语言进阶-03
    反射静态类型静态类型就是变量声明赋予的类型,比如:typeMyIntinttypeAstruct{Namestring}vari*int动态类型动态类型:运行时给这个变量赋值时,这个值的类型(......
  • 学习python-爬虫
    爬虫041.爬虫介绍python是做爬虫比较方便,很多爬虫的库。其次java、gohttp协议pc端、小程序、app模拟发送http请求,拿到返回数据然后解析出我们想要的数据,最后保存......
  • 5.python-列表字典混合练习
    疫情管理"""疫情信息管理系统显示菜单选择菜单1键录入疫情信息(地区、新增、现有)2键显示疫情信息3键删除疫情信息......
  • python中利用Flask框架实现点赞系统
    前言:Flask框架中建立两上路由(.route('/index'))和(.route('/dianzan')),分别用于首页显示和数据接收显示。完整实例:fromflaskimportFlask,render_templatefromflaskimport......
  • python-requests接入API
    API接入1APIApplicationProgrammingInterface,应用程序编程接口,是软件之间信息交互的桥梁。  2聚合数据(数据获取网站)网址:https://www.juhe.cn/docs/index/o......