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

python函数进阶

时间:2022-11-20 23:13:38浏览次数:40  
标签:20 进阶 python money print 全局变量 def 函数

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

print('1.函数的作用域')
# 在函数外面定义变量  可以在函数里面被调用,
# 但是只有可变类型对象可以进行操作,不可变类型对象不可操作
a = 1  # 全局变量


def func():
    global a  # 声明变量为全局变量
    a = 100
    print(a)


func()  # 若没有调用这个函数,则下一行输出1
print(a)  # 输出100,因为这时a是全局变量

 

 

# 2.多函数执行流程
print()
print('2.多函数执行流程')
b = 1


def test_b():
    global b
    b = 20


def test_c():
    print(b)


test_b()  # 执行完后,b为全局变量,值为20
test_c()  # 输出20

 

 

# 3.函数的返回值
print()
print('3.函数的返回值')


def func1(a, b):
    return a+1, b+3  # 如果返回多个参数,会按顺序存放到元组中
# 如果返回值是一个,则接收参数为1个
# 如果返回值是多个,则接收参数为一个(元组)或者返回的个数(解包)


print(func1(1, 2))  # 输出(2, 5)
print(type(func1(1, 2)))  # tuple类型
print(func1(1, 2)[0])  # 输出元组(2, 5)的索引为0的值
data1, data2 = func1(1, 2)  # 解包(拆包)
print(data1, data2)

 

 

# 4.交换值
print()
print('4.交换值')
x = 1
y = 2
print(x, y)
x, y = y, x  # 交换值
print(x, y)


# 5.可变类型和不可变类型
# 可变类型    列表 字典 集合
# 不可变类型  数字 字符串 元组 布尔

 

 

# 6.参数

print()
print('6.参数')


def func4(name, age, gender):
    print(f'我的姓名{name},\
我的年龄{age},我的性别:{gender}')


func4('小明', 20, '女')  # 要注意顺序


# 6.1 关键字传参
# 很安全
# 不必考虑顺序
func4(age=20, name='小放', gender='man')


# 6.2 默认参数
def func5(name, age=20, gender='男'):
    print(f'我的姓名{name},\
我的年龄{age},我的性别:{gender}')


func5(age=20, name='小放', gender='女')  # 输出的gender是女,而不是男
# 当调用函数的参数有值,则默认参数的值被替换


# 6.3 不定长传参
# *args  arguments
# **kwargs
# 这个名字可以改的,但是一般不改
# 例如:*args == *abv
# **kwargs == **qqq

# *args  把没有形参的实参进行打包,放到一个元组中
def fun(data1, data2, *args):
    print(data1, data2, args)
    print(args[0])


fun(1, 2, '3', 4)  # 输出 1 2 ('3', 4)

# **kwargs
# 把没有形参的实参进行打包,但是只打包关键字参数
# 字典 key word arguments


def fun1(**kwargs):
    print(kwargs)  # 输出字典


fun1(name='小明', age=20, gender='女')

 

 

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


def cunfang_money():  # 定义存钱函数
    global money  # 声明变量为全局变量
    money -= 800  # 存放800元
    print(money)


def quchu_money():
    global money  # 若不再次声明为全局变量,则在函数内为局部变量
    money += 500
    print(money)


cunfang_money()
quchu_money()

 

标签:20,进阶,python,money,print,全局变量,def,函数
From: https://www.cnblogs.com/qc2012/p/16909991.html

相关文章

  • 为了删除数万封邮件,使用python模拟鼠标自动点击删除
    公司的企业邮箱有段时间不知道为啥没有删除服务器上的邮件,屯了几万封。登陆企业邮网站,又不好清空邮箱,只能每次一页删除100封,光靠鼠标在那里点,真的费时费力。于是写了个pyth......
  • python爬取招聘网岗位(仅供学习)
    1、某某**集招**信息2、使用到了requests,bs4,openpyxl,time模块(1)分析页面,发送请求,并把请求返回定义为一个模块。url='https://***.*****.com/company/{0}/jobs/?n={1}'.f......
  • MySQL进阶实战1,数据类型与三范式
    一、选择优化的数据类型MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。1、更小的一般情况下,应该尽量使用较小的数据类型,更小的数据类型通常更快,因为......
  • PYTHON编写程序练习-打印99乘法表
     使用for循环嵌套的知识点编写foriinrange(1,10):  #第一层循环,循环乘数forjinrange(1,i+1):  #第二层循环,循环被乘数print(f"{i}x{j}="+......
  • 力扣33(java&python)-搜索旋转排序数组(中等)
    题目:整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],......
  • python安装报错error: pybind11 2.10+ requires MSVC 2017 or newer
    pip安装paddleocr时报错,提示要2017或更高,c:\users\administrator\appdata\local\temp\pip-build-env-86xs2ijc\overlay\lib\site-packages\pybind11\include\pybind11\det......
  • python学习第七周总结
    C/S模块1C/S模块: 1.1Client:客户端:客户端也就是你这一端可以接收到的程序,手机app,web网页等,我们可以在客户端页面上向度武器发送请求以及数据,交给服务器处理。 1.2......
  • python中的一些画图操作
    turtle首先要了解python中的一个与画图有关的库(不用下载),就是turtle,也可以叫它海龟。我们使用时需要先导入。列如:importturtle就可以使用了。一些简单的操作使用软件......
  • python多进程map用户 scatter绘图 make_blobs聚类数据生成
    pythonmultiprocessingmap(func,iterable[,chunksize])map()内置函数的并行等价物(尽管它只支持一个可迭代的参数)。它会阻塞,直到结果准备就绪。此方法将iterable内的每一个......
  • Miniconda & vs code _ How to Set up Python and Visual Studio Code IDE for Dat
    原文:HowtoSetupPythonandVisualStudioCodeIDEforDataScience-OneZeroBlog SettingupPythonandrunningitsmoothlyonyourPCisessentialford......