Never say die.


文章目录

  • 第六关
    • 1.函数的参数、参数类型
    • 2.函数中的参数
    • 3.函数的多个返回值
    • 4.函数的变量作用域
    • 5.学习巩固

第六关

学习用时:35min
随堂测验+上机作业:20min
随堂作业正确率:7/8

1.函数的参数、参数类型

  上一关的延申,函数的参数可以包含多个参数,每个参数用英文逗号隔开。

# 例1 print函数支持多个参数打印,打印结果中间为空格隔开
print('王二', '李四', '张三')
# 输出:王二 李四 张三

参数的类型
  Python 中的参数按传入方式分为两种:位置参数、关键字参数
  在调用函数时按照 参数名 = 值 的格式传入参数j叫做关键字参数。关键字参数可以无视位置对应相应的值。

# 例2 位置参数
def record(name, age):print('姓名:', name)print('年龄:', age)# 调用函数,键入信息
record('张三', 15 )
record('李四', 25)
# 打印结果:
# 姓名: 张三
# 年龄: 15
# 姓名: 李四
# 年龄: 25
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#例3 关键字参数
def record(age,name):print('姓名:', name)print('年龄:', age)# 调用函数,键入信息
record(name = '张三',age = 15,)
record(age = 25,name = '李四')
# 打印结果:
# 姓名: 张三
# 年龄: 15
# 姓名: 李四
# 年龄: 25

2.函数中的参数

位置参数可以和关键字参数一起使用,但要保证所有位置参数都在关键字参数前,否则程序会因为识别错乱而报错。

# 例 4 抄的例子
def record(name, age, height, weight):print('姓名:', name)print('年龄:', age)print('身高:', height, 'cm')print('体重:', weight, 'kg')record('佐藤正男', 5, height=109, 21)
# 报错:SyntaxError: positional argument follows keyword argument (语法错误:位置参数被放到关键字参数后面了)# 正确方法是将位置参数放到所有关键字参数前面
record('佐藤正男', age=5, height=109, weight=21)

默认参数

# 例5 抄的例子 默认参数年龄为5岁
# def record(name, age=5, height, weight):这种方法是错误的
# 默认参数一定要放在非默认参数后面
def record(name, height, weight, age=5):print('欢迎小朋友们!')print('姓名:', name)print('年龄:', age)print('身高:', height, 'cm')print('体重:', weight, 'kg')# 调用函数时,遇到 5 岁的小朋友,可以不输入年龄
record('阿呆', 115, 25)
# 输出:
# 欢迎小朋友们!
# 姓名: 阿呆
# 年龄 5
# 身高 115 cm
# 体重 25 kg# 遇到不是5岁的小朋友,在后面填上对应的年龄信息
record('阿瓜', 105, 18, 4)
# 输出:
# 欢迎小朋友们!
# 姓名:阿瓜
# 年龄: 4
# 身高: 105 cm
# 体重: 18 kg

3.函数的多个返回值

  和函数的参数一样,函数也支持 0 到多个返回值,多个返回值也和多参数一样,放在关键词 return 后面并列.

def return_menu(food1, food2, food3, food4):return food1,food2,food3,food4print(return_menu('饼干', '寿司’, '米饭', '汉堡'))

4.函数的变量作用域

  全局变量 在当前写的代码中一直起作用。全局变量 有效的的范围,叫作 全局作用域。在 Python 中变量分为两种:全局变量局部变量
全局变量 在当前写的代码中一直起作用。
全局变量 有效的的范围,叫作全局作用域
局部变量只在一定范围内有效,在范围外就无效了。定义函数的代码块中,形成了一个封闭的系统,这其中定义的变量,都是局部变量
局部变量有效的的范围,叫作局部作用域
  由于全局变量作用于整个环境,所以就算跑到自成一体的的函数内部,也是有效的。而函数内部的局部变量出了函数外,离开自己的 局部作用域,就无效了.

# 例 6
# 定义全局变量
school = '春田花花幼儿园'def record(name, weight, height, age=5):
# 局部变量 class_nameclass_name = '向日葵班'print(school + class_name + '欢迎小朋友们!')print('姓名:', name)print('年龄:', age)print('身高:', height, 'cm')print('体重:', weight, 'kg')record('野原新之助', 22, 110)
print('我是' + school + class_name + '的吉永绿老师,大家多多指教!')
# 报错:NameError: name 'class_name' is not defined,因为函数外部无法使用局部变量。

  这个时候有两种解决方法 一是将局部变量拿到外面来定义,作为全局变量,这样函数内外都可以访问到 class_name 的值。
二是函数内部局部变量前加上**global **关键字,把局部变量强制变成全局变量即可。

global class_name # 表示 class_name 强制变成全局变量

另外,局部变量和全局变量的变量名可以相同,如果局部变量被**global **关键字强制变成全局变量,则使用方法和全局变量相同,若被二次定义直接覆盖变量内原有值。
需要在函数内使用global的情况

 1.在函数外想要使用函数内的变量(全局作用域使用局部变量)。如果不加 global,则无法在函数外访问函数内的变量。
 2.在函数内修改函数外的变量(局部作用域修改全局变量)。如果不加 global,只是在函数内定义了和全局变量同名的变量,两者井水不犯河水。

5.学习巩固

# 习题1 先定义函数
def cooker(stuff1,stuff2,food,flavor = '盐'):print('我用' + stuff1 + '和' + stuff2 + '并加入' + flavor + '做出了' + food)# 制作咖喱牛肉吧
cooker('土豆','牛肉','咖喱牛肉','咖喱')# 制作蛋炒饭吧
cooker('米饭','鸡蛋','蛋炒饭')

定义一个名为 my_pow() 的函数;
该函数有两个参数,分别是底数 x 和指数 y;
函数的返回值为 x 的 y 次方(可以使用乘方运算符 **);
传入参数调用 my_pow() 函数并将其结果打印出来。
因为是我们定制的 pow() 函数,这里还有一个小要求:当不传入指数 y 时,默认计算 x 的 3 次方。

# 练习 2
def my_pow(x,y = 3):return x ** yprint (my_pow(2))
print (my_pow(2,2))

练习3 最开始思路出了问题,关于global理解的还是不够透彻

money = 1000def work(m):global moneymoney = money + mprint('赚了'+ str(m) +'元还剩'+ str(money) +'元')def shop(n):global moneymoney = money - nprint('花了'+ str(n) +'元还剩'+ str(money) +'元')work(200)
shop(500)

开始死脑细胞了

扇贝编程python学习笔记-基础篇4相关推荐

  1. 扇贝编程python无法退款_扇贝编程python学习笔记-基础篇1

    我要成为一个勤奋努力上进的人 第一关 学习用时:15min 随堂测验+上机作业:10min 随堂作业正确率:4/5 1.尝试执行代码 import random menu = ['粉丝', '炒饭', ...

  2. 扇贝编程python学习笔记-基础篇3

    Genius only means hard-working all one's life. 天才只意味着终身不懈的努力. 文章目录 第五关 1.函数的定义.组成 2.函数中的参数 3.函数的作用 4 ...

  3. 扇贝编程python学习笔记-基础篇5

    再也不咕咕了,请叫我多福 文章目录 第七关 1.print和return的区别 2.return 语句的"陷阱" 3.报错处理 4.学习巩固 第七关 知识点复习 学习用时:30mi ...

  4. 扇贝编程python学习笔记-基础篇10

    聚沙成塔 集腋成裘 文章目录 第十二关 1.列表元素的删除 2.列表分片 3.列表常用方法 4.练习 第十二关 知识点复习 学习用时:50min 随堂测验+上机作业:50min 随堂作业正确率:2/3 ...

  5. 扇贝编程python学习笔记-基础篇6

    恰合心意,平衡生活 寻求成长,奋起拼搏 文章目录 第八关 1.分支执行 2.布尔类型 3.布尔类型的转换 4.学习巩固 第八关 知识点复习 学习用时:30min 随堂测验+上机作业:50min 随堂作 ...

  6. 扇贝编程python学习笔记-基础篇8

    聚沙成塔 集腋成裘 文章目录 第十关 1.嵌套条件 2.常见错误 3.练习 第十关 知识点复习 学习用时:30min 随堂测验+上机作业:30min 随堂作业正确率:8/10 1.嵌套条件   嵌套条 ...

  7. Python学习笔记——基础篇【第七周】———FTP作业(面向对象编程进阶 Socket编程基础)...

    FTP作业 本节内容: 面向对象高级语法部分 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 参考:http://www.cnblogs.com/wupeiqi/ ...

  8. Python学习笔记——基础篇【第五周】——模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  9. Python学习笔记----基础篇10----模块2

    8)json& pickle 用于序列化的两个模块 json,用于处理字符串和python数据类型间进行转换 pickle,用于python特有的类型和python的数据类型间进行站换 Jso ...

最新文章

  1. 直接通过OptionalAttribute, DefaultParameterValueAttribute定义缺省参数
  2. SQL中where与having的区别
  3. python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据
  4. UVA10970大块巧克力
  5. (转)利用Ant与Proguard混淆引用的子工程项目jar包及打war包
  6. jQuery判断checkbox是否选中的3种方法
  7. 关于JavaScript的数组随机排序
  8. 信息系统项目管理基础(1)
  9. 生物数据库建设,等你来~
  10. C语言——判断是该年的第几天
  11. Spring Boot+Maven将配置文件打包到Jar包外方便运维修改配置
  12. TortoiseSVN 执行清理( cleanUp )失败的解决方案
  13. Hadoop配置Yarn
  14. 手把手教你App推广时如何能找到100个以上渠道!
  15. 《Android开源库》 Google 最新Hover Menu(悬浮菜单)
  16. php 查询数据传值,php-如何在Laravel中传递数据进行查看?
  17. 守护进程方式保证App不被杀死
  18. C++ Guaranteed Copy Elision
  19. 商宝项目服务器,可照搬实施的商超高可用方案:proxmox + haproxy 等
  20. Linux进程间通信方式

热门文章

  1. 日常工作中,软件测试人员如何避免“背锅”
  2. IC Compiler 实验三
  3. UnityShader学习——非真实感渲染
  4. COSOSWAP官网2.0升级——线上圆桌会议重点回顾
  5. 解决:VideoWriter保存视频无法打开以及保存的视频仅有几KB
  6. pdf2html java_pdf2HtmlEX的使用
  7. 网站如何做引流推广?SEO引流效果好吗?
  8. java hevc和heif_关于 iOS 和 macOS 的 HEVC 和 HEIF
  9. 20P27 Premiere预设70种超酷电影级白天黑夜调色预设模板
  10. Typer Girl安装补丁DLC