python函数进阶

打印 上一主题 下一主题

主题 532|帖子 532|积分 1596

  1. # 1.函数的作用域
  2. # 全局变量的作用域:
  3. # 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。
  4. # 全局变量所有作用域都可用,局部变量只能在本函数可用,变
  5. # 量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量
  6. #
  7. # global关键字:
  8. # 为了解决函数内使用全局变量的问题,
  9. # python增加了global关键字,利用它的特性,可以指定变量的作用域。
  10. print('1.函数的作用域')
  11. # 在函数外面定义变量  可以在函数里面被调用,
  12. # 但是只有可变类型对象可以进行操作,不可变类型对象不可操作
  13. a = 1  # 全局变量
  14. def func():
  15.     global a  # 声明变量为全局变量
  16.     a = 100
  17.     print(a)
  18. func()  # 若没有调用这个函数,则下一行输出1
  19. print(a)  # 输出100,因为这时a是全局变量
复制代码

 
 
  1. # 2.多函数执行流程
  2. print()
  3. print('2.多函数执行流程')
  4. b = 1
  5. def test_b():
  6.     global b
  7.     b = 20
  8. def test_c():
  9.     print(b)
  10. test_b()  # 执行完后,b为全局变量,值为20
  11. test_c()  # 输出20
复制代码

 
 
  1. # 3.函数的返回值
  2. print()
  3. print('3.函数的返回值')
  4. def func1(a, b):
  5.     return a+1, b+3  # 如果返回多个参数,会按顺序存放到元组中
  6. # 如果返回值是一个,则接收参数为1个
  7. # 如果返回值是多个,则接收参数为一个(元组)或者返回的个数(解包)
  8. print(func1(1, 2))  # 输出(2, 5)
  9. print(type(func1(1, 2)))  # tuple类型
  10. print(func1(1, 2)[0])  # 输出元组(2, 5)的索引为0的值
  11. data1, data2 = func1(1, 2)  # 解包(拆包)
  12. print(data1, data2)
复制代码

 
 
  1. # 4.交换值
  2. print()
  3. print('4.交换值')
  4. x = 1
  5. y = 2
  6. print(x, y)
  7. x, y = y, x  # 交换值
  8. print(x, y)
  9. # 5.可变类型和不可变类型
  10. # 可变类型    列表 字典 集合
  11. # 不可变类型  数字 字符串 元组 布尔
复制代码

 
 
  1. # 6.参数
  2. print()
  3. print('6.参数')
  4. def func4(name, age, gender):
  5.     print(f'我的姓名{name},\
  6. 我的年龄{age},我的性别:{gender}')
  7. func4('小明', 20, '女')  # 要注意顺序
  8. # 6.1 关键字传参
  9. # 很安全
  10. # 不必考虑顺序
  11. func4(age=20, name='小放', gender='man')
  12. # 6.2 默认参数
  13. def func5(name, age=20, gender='男'):
  14.     print(f'我的姓名{name},\
  15. 我的年龄{age},我的性别:{gender}')
  16. func5(age=20, name='小放', gender='女')  # 输出的gender是女,而不是男
  17. # 当调用函数的参数有值,则默认参数的值被替换
  18. # 6.3 不定长传参
  19. # *args  arguments
  20. # **kwargs
  21. # 这个名字可以改的,但是一般不改
  22. # 例如:*args == *abv
  23. # **kwargs == **qqq
  24. # *args  把没有形参的实参进行打包,放到一个元组中
  25. def fun(data1, data2, *args):
  26.     print(data1, data2, args)
  27.     print(args[0])
  28. fun(1, 2, '3', 4)  # 输出 1 2 ('3', 4)
  29. # **kwargs
  30. # 把没有形参的实参进行打包,但是只打包关键字参数
  31. # 字典 key word arguments
  32. def fun1(**kwargs):
  33.     print(kwargs)  # 输出字典
  34. fun1(name='小明', age=20, gender='女')
复制代码

 
 
  1. # 今日练习
  2. '''
  3. 定义一个模拟ATM机操作的场景
  4. (1)需要一个存钱和取钱的函数
  5. (2)设置全局默认资金1000
  6. (3)调用存钱函数,存放800元,并将操作后函数将余额打印出来
  7. (4)调用取钱函数,取钱500元,并将操作后函数将余额打印出来
  8. '''
  9. print()
  10. print('今日练习')
  11. money = 1000
  12. def cunfang_money():  # 定义存钱函数
  13.     global money  # 声明变量为全局变量
  14.     money -= 800  # 存放800元
  15.     print(money)
  16. def quchu_money():
  17.     global money  # 若不再次声明为全局变量,则在函数内为局部变量
  18.     money += 500
  19.     print(money)
  20. cunfang_money()
  21. quchu_money()
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表