def tree(Height):print('Merry Christmas!')for i in range(Height):print((Height-i)*2*' '+'o'+ i*'~x~o')print(((Height-i)*2-1)*' '+(i*2+1)*'/'+'|'+(i*2+1)*'\\')
tree(4)
tree(8)


(这之前都是“位置参数”,其实就是位置一个一个对应就好。)

回到这个食堂的故事。经营了一阵子之后,为了吸引更多的人流,你决定给每个顾客免费送上一份甜品绿豆沙,这时候你就可以用到【默认参数】,注意:默认参数必须放在位置参数之后。

(这里就像是点套餐,无论哪份套餐,我打单子的时候,默认送一份绿豆沙)


后来呢,盛夏来袭,你觉得卖烧烤是个不错的主意。但问题是每个人点的烤串数量都不同,你也不能限定死数量,这时候【不定长参数】就能派上用场,即不确定传递参数的数量。
它的格式比较特殊,是一个星号*加上参数名,来看下面的例子。


(‘烤鸡翅’, ‘烤茄子’, ‘烤玉米’),这种数据类型叫做元组(tuple)
元组的写法是把数据放在小括号()中,它的用法和列表用法类似,主要区别在于列表中的元素可以随时修改,但元组中的元素不可更改。

(其实到这里的时候,我倒是觉得有点像是点单系统,你告诉收银员,你要这个那个,然后收银员输入以后,就打出来单子了。
学习编程的时候,我总觉得很空虚,觉得这时候我学会看懂有什么用,人家提出一个需求,我依旧不会。
但是现在慢慢的,不怎么空虚了,觉得,哦,我不是在编程,而是个收银员,我在输入这个那个,然后就能打出单子来。)

和列表一样,元组是可迭代对象,这意味着我们可以用for循环来遍历它,这时候的代码就可以写成:

需要注意的是,这时候默认参数也需要放在不定长参数的后面,即dessert=’绿豆沙’要放在*barbeque后面,否则传递的值会对应不上。现在请你重现上面的代码(自己手打哦~),注意参数的顺序,调用函数时可以换成你爱吃的食物。

print()函数本身比较特殊,它在屏幕上显示完相关的文本内容就没了,并不会返回一个值给我们。所以,它返回的是空值(None)。
在自定义函数的时候,我们就可以用return语句规定该函数要返回什么值给我们。带return语句的函数是这样的:

提醒一下,函数也是可以互相嵌套的,在这个例子中,niduoda()函数就被嵌套在print()函数里。
可能你会觉得在这个例子中,直接用print不就行了吗,为啥还要用return呢?还有,我们前面讲了那么多函数,好像都是省略了return的啊,比如刚讲的深夜食堂函数和神奇宝贝函数:
其实是因为在这些例题中,我们的函数功能都是第一时间把参数打印出来。而在很多时候,当多个函数之间相互配合时,我们并不需要第一时间就将结果打印出来,而是需要将某个返回值先放着,等到需要的时候再做进一步的处理。





所以更常见的做法是:再定义一个主函数main(),参数调用前两个函数的返回值。老师先给出代码,你可以琢磨一下,主要思考第5行和第6行代码。


main()函数内部分别调用了face()和body()函数,参数dream_face和dream_body传递给了face()和body()函数的参数name,得到返回值,并打印。看起来有点绕,我们将函数运行的步骤分解,就一目了然了。







最后需要再强调的是,没有return语句的函数会默认返回None值。点击运行下列代码,并观察结果。


此外,return还有一个“副作用”:一旦函数内部遇到return语句,就会停止执行并返回结果。你可以运行下列的代码:





可以看到,两个变量都叫x,一个在函数外部,一个在函数内部。请你先自己判断一下这段代码的输出结果是什么,再点击运行。












第9关:喊出我的名字(1)相关推荐

  1. IG赢了,让我们先理直气壮的喊出那句 我们是冠军!

    微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员之家"-点击右上角"-"-点击" ...

  2. SAP MM 供应商无英文名称,ME21N里却带出了英文名字?

    SAP MM 供应商无英文名称,ME21N里却带出了英文名字? 近日收到客户业务用户上报的一个问题说ME21N的时候,供应商101071的名字怎么是英文名字,实际上供应商主数据里是没有这个英文名字, ...

  3. 鸿蒙系统宣传标语,小米、OV仍在旁观,华为喊出壮烈口号,争取一年内达成目标...

    文 | 考拉科技馆 校对 | 考拉科技馆 原创文章,禁止转载,违者必究! 小米.OV仍在旁观,华为喊出壮烈口号,争取一年内达成目标! 华为的影响力还没有那么大! 在预热了将近两年时间后,鸿蒙系统总算是 ...

  4. 7-114 谁先倒 (15分) 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了

    划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒.两人同赢或两人同输 ...

  5. L1-019 谁先倒 (15分) 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了

    L1-019 谁先倒 (15分) 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了 ...

  6. 服务器延迟微博,万千阴阳师“无家可归”近一个小时?微博热评喊出玩家心声...

    原标题:万千阴阳师"无家可归"近一个小时?微博热评喊出玩家心声 每周二晚上和每周三早上是阴阳师玩家最难熬的两个阶段,前者需要等待周二晚的更新公告,按常理说一般在7-8点左右就会公布 ...

  7. HH SaaS电商系统的跨境商品展示、下单、清关、出库全流程设计

    跨境商品的展示 后补 跨境商品的下单 在订单确认页面就要按SKU拆单,所以跨境销售订单的主单和子单是一对一的关系 多种进口渠道的商品在同个销售主单中,在进口清关.收货.货款结算时会出现问题,假设销售订 ...

  8. 刘强东喊出技术转型第二年,京东AI全景图首次披露

    安妮 发自 光华路SOHO 量子位 出品 | 公众号 QbitAI 去年初,刘强东发布了京东未来12年战略.总结下来就是六个字:"技术!技术!技术!" 就在刚刚,京东技术转型走入第 ...

  9. 手把手教python打包exe,打包一个简易的小程序。tkinter,python初学者。编程初学者作业:用*填充出自己的名字

    [声明]这篇文章可能写的很差,作者技术不够.但是一定原创,一定用最简单的语言,最详细的描述让没有经验的读者能够懂得 [首言]exe是电脑上直接点击就可以使用的.当你写了一个.py文件,可以实现你的有趣 ...

最新文章

  1. Emacs 使用YASnippet
  2. php 接口curl,php中接口强大之处php_curl
  3. ffmpeg与x264有什么区别?
  4. MLPrimitive文件夹的作用
  5. 如何删除java里的类_java File类创建和删除目录详解
  6. 看看你的网站有几个这样的链接?
  7. navicat 或者workbench 无法连接127.0.0.1(61)的解决方法
  8. C#心得与经验(二)
  9. 多线程、线程池的创建方式,为什么阿里推荐自定义线程池?
  10. Web.config中创建自定义配置节
  11. vSphere 高级特性FT配置与管理
  12. 如何在html中选择wrap,jQuery - .wrap() 使用HTML包裹选取的元素
  13. 我自己对于Netty的疑问
  14. php递归遍历出文件夹下的所有文件和删除文件夹下的所有文件
  15. 手机停机照样可以免费无限量上网
  16. 【深度学习】更大规模的完整视频理解
  17. SPSS22 安装后不可用 没有出现授权 不显示工具栏
  18. MeepoPS基本使用方法
  19. 如何设置谷歌浏览器背景图片
  20. Python自动检测Chrome浏览器版本号并下载对应驱动文件[chromedriver.exe]

热门文章

  1. R星服务器显示云备份失败,gta5同步云存档出错|【gta5云存档同步失败】gta5云端存档同步发生错误...
  2. Python中田字格输出
  3. 技术周刊 Vol.40 - 来学习一门新的编程语言吧!
  4. 【Simulink教程案例11】使用基础模块完成QPSK调制解调系统的建模与仿真(不用Simulink自带QPSK模块)
  5. 关于QT编译成的程序在winxp下运行提示不是有效win32应用程序的解决
  6. java实现各种数据统计图(柱形图,饼图,折线图)
  7. 微信小程序weui在线入门教程-WeUi表单组件-list列表
  8. 老程序员有技术为啥不单干?非要在公司呆这!
  9. 关于sizeof函数获取结构体数组变量字节数的问题
  10. JVM的内存管理机制详解