很高兴又和大家见面了。

上一节课,我们学会了如何打通任督二脉,突破编程中的瓶颈,小K希望大家遇到问题时,能够冷静下来,认真分析,不要怂。

这两节课的主要内容是带大家探究“熟悉的陌生人”——函数。之所以这么说,是因为我们之前已经接触过Python函数,但是对它没有系统的了解过。

鉴于函数的重要性,我们会分两课来完成。

这节课,我们一起经营KFC,在我们KFC门店里通过运用函数解决我们的问题。

初识函数

首先在学习具体知识前,我向大家简要的介绍下函数的作用,知道函数是做什么用的?

1.1 函数的作用

“人生苦短,我用Python”,正因为Python语法简单,才会越来越被编程界欢迎。换言之,我们编程,更应该避免重复性代码。

前面学习的循环是减少代码重复的一种手段,那么接下来要学习的函数也是减少重复性代码的另一种手段。它的定义是:

什么意思呢?我们之前写的代码只能执行一次,但是函数中的代码可以使用多次。

通俗来讲,函数就如同一个包裹,每个包裹都有一个功能,无论你在哪儿,只要你需要包裹,就把它拿过去用;你需要什么样功能的包裹,就用什么样的包裹;你需要使用多少次包裹,就使用多少次。

这就是函数,在之后的旅程中,你会越来越体会到函数的妙用。讲了这么多了,先看一下函数长什么样子?

d1.2函数的组成

先不着急看Python的函数,先来个数学函数,那些年,我们错过的函数。

数学函数y = 6*x +9 , x是自变量,6*x+9是执行过程,y是因变量,自变量x决定了因变量y的值。

那么,你可以将y = 6*x +9看作成3部分。

在Python中,我们遇到很多函数, 有负责输入数据的函数,有负责数据处理的函数,有负责数据输出的函数。

以上就是我们见过的Python的函数,这些函数是Python自带的函数,我们不需要管这些函数怎么来的,就负责用就好了,这些函数也叫内置函数。

你会发现,上面这些函数,都有括号(), 里面存放我们需要传给函数的数据,在Python江湖中,这种数据称为【函数的参数】。【参数】指的是函数要接受、处理的数据,其实就是一个变量。

运行一下下面代码, 观察终端里的效果。

你会发现,括号内放的参数不一样,结果也会不一样。

括号里面的字符串、列表都是len()函数的参数。

好了,我们看过了函数的样子。但是问题来了,这些函数很好,如果用不到他们怎么办。就像我们KFC餐厅里,顾客不想吃汉堡怎么办?我们可以给他们做卤肉饭啊。

同样,我们也可以根据自己的需要,定义自己想要的函数。

下面小K带大家进入本节课重点:定义和调用函数。

编写函数第一步,我们先来看一下如何定义一个函数,它的基本语法是什么。

我们以上面y = 6*x+9为例,定义一个函数。

函数三部分,第一部分输入,在y = 6*x+9函数中,因为x变,y才改变,x就是输入到函数的数据,就是这个函数的参数;第二部分,执行过程,执行过程就是计算y的结果,即6*x+9的结果;还有第三部分,输出结果,计算完这个结果后要把这个结果告诉别人。

因此,这个函数可以写成下面这个样子。

拆分解读:第一行:def的全称是define, 译为定义;fun是函数名字,自己起的;(x)这里是函数的参数,参数名字也是自己起;不要忘了最后的冒号:

江湖秘籍:涉及到的符号都是英文的哦。

第二行:def下一行缩进的内容叫做函数体,这是函数要实现的功能。即根据x的值,计算6*x+9,将结果赋值给y。

第三行:return 语句是返回的意思,可以指定函数执行完毕后最终会得到什么样的结果,否则计算机是无法判断出函数最终要输出什么结果的。定义函数是不是很简单?但是里面还有很多注意事项,不要踩坑。

现在,你根据上面的例子,完成函数y=30+11*x,请在下面代码框中编写,点击运行。

你会发现,终端内没有任何内容。

没有内容就对了,现在只是定义了函数,还没有使用函数。

定义函数,就是将函数内部功能封装好,然后等待调用。就如同包裹一样,你现在只是装好了包裹,但是还没有使用。

怎么使用函数呢?在Python江湖中,我们使用函数叫做“调用函数”,很简单就是输入函数名与参数所对应的数据。

运行一下下面代码,观察终端里的效果。

是不是已经有了结果?这就调用函数开始使用了。

解读分析:math(10)就是调用函数,math为定义函数的名字(定义与调用时名字一致);传递参数,10对应函数参数x, 在调用函数时,将10传递给x; 在函数体中,y = 30 +11*10, 得出y的结果为140; 那么,res就用来接收y的值,即res=140。所以,打印出来的结果就是140。

OK,现在掌握调用函数了吧。

现在你看到就是函数最基本的形式,目的就是让大家先有个认知。

接下来,我们做个练习巩固一下。

请听题:定义一个函数,用户传入“XXX”,就打印出“您好,欢迎来到KFC餐厅,您的点餐为XXX”。这个XXX, 可以传入汉堡、薯条,任何内容。

提示:使用input,接收用户输入内容,然后调用函数,完成功能。来,试一下:

函数的进阶使用

上面我们调用函数,设置、传递参数是编写函数的重点。在Python江湖中,函数中无论设置、传递多少个参数都可以,哪怕不设置、传递参数也行。

先来了解一下函数类型。

2.1函数类型

我们KFC餐厅,需要做一个欢迎广告语,每位顾客来的时候都要进行播放。那看一下,如何在Python中使用函数实现这个广告语。

观察上面的代码,这里定义了一个helloKFC()函数,但是括号里没有参数。

这是因为,我们的广告也不需要接收用户内容,只需要原样打印广告即可,所以不需要传递参数。

在这个例子中,也不需要return语句,因为里面的内容直接打印在屏幕上即可, 不要返回值的。

简言之,函数的执行过程,可以有返回值,也可以没有返回值。

江湖秘籍:即使没有参数,在定义函数、调用函数的时候也不能省略括号。

好了,接下来,我们看看函数可以设置多少个参数。

我们KFC餐厅在刚开业的时候,因为其他原因,只能为每位顾客提供汉堡、饮料、小食三种食品。如果写成函数,这个函数就有3个参数。

我使用hamburger、drink、snacks作为汉堡、饮料、小食的参数

注意:无论有多少个参数,调用函数时传递参数的顺序要与定义函数时设置参数的顺序一致。

这就是位置参数。回到我们的餐厅,我们现在搞开业大酬宾活动,我们为每一位顾客免费送上小食—蛋挞。这时候就用到了【默认参数】,在定义函数的时候进行赋值。

江湖秘籍:默认参数在位置参数之后。

在这里,我们设置了默认参数snacks='蛋挞',在调用函数的时候,蛋挞也会默认添加到菜单中。

当然了,如果有的顾客不想吃蛋挞,他就想吃薯条怎么办。那就按顾客的来,顾客是上帝嘛。运行一下下面代码,观察终端里的效果。

在调用函数时,参数一一传递;在第三次调用函数menu('培根烤鸡腿堡','橙汁','薯条')时,‘薯条‘会替换默认的参数’蛋挞‘,将snacks设置为’薯条

了解完默认参数, 我们接着往下看。

后来,我们的餐厅经营越来越大,食品种类越来越多,但是每个人点餐的种类又不确定,我们又不能限制顾客点餐。这时候就需要使用【不定长参数】。

它的格式比较特殊,先运行一下下面代码,观察终端里的效果。

代码解读:这里使用一个星号*加上参数名就接收到了所有参数,无论参数写几个,都能接收到。而返回值就是参数名。

我们将返回的内容打印出来,又打印了一下返回值的类型:< class 'tuple' >

Tuple叫做元组,元组的写法是将所有内容放在小括号中,使用逗号隔开,和列表用法类似。但是又与列表不同,列表中的元素可以更改,而元组中的元素不可以更改。

和列表相同的是:元组也是可以遍历的对象。使用for循环遍历一下。

在调用函数时,参数一一传递;在第三次调用函数menu('培根烤鸡腿堡','橙汁','薯条')时,‘薯条‘会替换默认的参数’蛋挞‘,将snacks设置为’薯条‘。

使用for循环,将元组中的内容遍历出来。一一显示。

我们研究一下常用的print()函数,翻看了一下Python宝典,其中是这样介绍print()函数的。

print(*objects, sep = ' ', end = '\n', file = sys.stdout, flush = False)

我们可以看到,print()函数中第一个参数objects带了*号,是不定长参数——这也就是print()函数可以传递任意数量的参数。

现在,你掌握了函数参数的不同形态,以后视具体需要,来设置函数参数。

2.2返回多个值

函数,不仅可以支持多个参数,还可以支持多个返回值。接下来我们就讲讲如何使用return语句返回多个返回值。

回到我们的KFC餐厅,我们要优惠活动,到店顾客,只要买单我们就有美食相送。 具体规则:用户消费满69元,我们随机赠送10元食品一份;用户消费满99元,我们随机赠送10元食品一份外加一个冰激淋。

代码已经写好了,先运行一下下面代码,观察终端里的效果。

在这里,有3条return语句,每条语句返回的内容都不一样,返回的数量也不一样。这就是返回多个值的用法。

return a,'冰激淋'

return b

return '不好意思,您的消费达不到优惠活动'

多函数协作

在开始时候,我们说过,函数封装了独立功能,一个程序往往由多个函数来配合实现

当多函数协作运行时,就涉及到函数中一个非常重要的内容—变量作用域。

给我们弹出一个bug, 在print('麦当劳餐厅:%s'%harland)这句代码中,抛出【NameError: name 'harland' is not defined】的错误。

这就是变量的作用问题:作用域分为全局作用域和局部作用域。

全局作用域:在所有函数之外赋值的变量,可以在程序任意位置使用(全局作用域),这就是全局变量;比如第一行的trump = '所有餐厅都要卖【兰州拉面】';它在KFC()与McDonald()两个函数中都起作用。

局部作用域:在某个函数内部赋值的变量,只能在当前函数内使用(局部作用域),出了这个函数,它就不起作用了,这就是局部变量;比如harland = '所有KFC餐厅卖烤串';它只在KFC()函数中起作用,在McDonald()就不起作用了。

可是,如果,我非让KFC的哈兰·山德士老爷爷说话在麦当劳管用怎么办?也就是非要让harland = '所有KFC餐厅卖烤串',在麦当劳中起作用怎么办?

有办法,在harland = '所有KFC餐厅卖烤串'使用global对变量进行修饰,global表示全局意思,它就告诉计算机,这个变量变成了全局变量,它在任何地方都起作用。

不信,你运行一下下面代码,看看结果。

好了global修饰词就学到这里。下面,我们看一下最常用的函数嵌套。

3.2函数嵌套

其实,我们都见过函数嵌套,比如:print(len('我爱你'))、print(type(10))

这就是print()函数嵌套了len()函数,print()函数嵌套了type()函数;这样,代码会先运行print()括号内的函数,再将这个函数结果放到print()函数中执行,打印出来

这样操作,叫做在函数内部调用其他函数,我们自己定义的函数也可以这么做。

在这里,我定义了两个函数,函数hello()与函数order(),在函数order()中调用了函数hello(),这样函数hello()中的代码会在函数order()中运行。

这就是函数的嵌套,在一个函数中调用其他函数。

讲到这儿,是不是都饿了。那就快去KFC吧,但是不要去KFC点拉面哦。

下节课小K会带大家利用函数来解决项目问题。

下节课见。

python中常用于输出信息的语句函数是print括号_第十四课我们研究一下常用的print()函数,翻看了一下Python宝典...相关推荐

  1. python中常用于输出信息的语句函数是print括号_Python语句 print(type(1/2)的输出结果是...

    [填空题]遍历输出文件所有行. f=open("d:\\r2.txt","r") while True: str= print(str,end='') if n ...

  2. python logger filter_使用Filter过滤python中的日志输出的实现方法

    事情是这样的,我写了一个tornado的服务,过程当中我用logging记录一些内容,由于一开始并没有仔细观察tornado自已的日志管理,所以我就一般用debug来记录普通日志,error记录有问题 ...

  3. Python中的条件选择和循环语句

    Python中的条件选择和循环语句 同C语言.Java一样,Python中也存在条件选择和循环语句,其风格和C语言.java的很类似,但是在写法和用法上还是有一些区别.今天就让我们一起来了解一下. 一 ...

  4. Python教学 | Python 中的分支结构(判断语句)【附本文代码和数据】

    查看原文:[数据seminar]Python教学 | Python 中的分支结构(判断语句)[附本文代码和数据] Part1引言 上期文章我们学习了组合数据类型字典以及元组,这标志着 Python 基 ...

  5. 福州传一卓越编程培训第二天2023 05 23 数据库sqlite增删改查,excel中的数据输出为sql语句

    数据库基本概念 ​ 数据库即 存储数据的系统(DBS database sysytem) ​ 数据库系统 ​   数据库的管理系统软件 DBMS manager ​   数据文件 db文件 ​ 存储数 ...

  6. Python中如何优雅地使用switch语句

    文章目录 Python中如何优雅地使用switch语句 案例一(简单情况) 案例二(带条件判断) 版权声明:本文为博主原创文章,转载请注明原文出处! 写作时间:2019-03-07 13:49:45 ...

  7. python中如何不换行_如何在Python中不换行输出

    如何在Python中不换行输出 发布时间:2020-09-22 15:04:14 来源:亿速云 阅读:161 作者:小新 小编给大家分享一下如何在Python中不换行输出,希望大家阅读完这篇文章后大所 ...

  8. python中的format什么意思中文-Python中format()格式输出全解

    格式化输出:format() format():把传统的%替换为{}来实现格式化输出 1.使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串, ...

  9. python查看系统进程_在Python中获取操作系统的进程信息

    本文主要介绍在 Python 中使用 psutil 获取系统的进程信息. 1 概述 psutil 是 Python 的一个进程和系统工具集模块,通过使用 psutil,我们可以在 Python 中获取 ...

最新文章

  1. 使用互斥元保护共享数据-lock_guard
  2. MED-V服务器的部署与配置
  3. nssl1438-战略威慑【枚举,树的直径】
  4. 初一模拟赛总结(5.11)
  5. SQL server挂了之后
  6. oracle varchar2转date_5分钟学会精算师常用Oracle语句
  7. element ui表单校验prop的链式写法----源码分析
  8. Docker使用Dockerfile构建镜像
  9. es为mysql创建索引_ES(ElasticSearch) 索引创建
  10. [译]简单声明Lua类
  11. Python字符串学习
  12. 随机抽样、分层抽样、整群抽样、系统抽样的区别
  13. 企业网站排名,关键词选择原则,6个基本策略
  14. [转载]ssget 用法详解 by yxp
  15. Mac修改默认的电子邮箱客户端
  16. 广东九联UNT402H-3798-mv300-uwe5621wifi-爱家TV新魔百和刷机固件
  17. SQL 数据库 学习 011 关系、一对一、一对多、多对多
  18. Beyond compare 全红问题解决
  19. sourceforge空间搭建wordpress个人博客
  20. beecloud支付后端java

热门文章

  1. ThinkPHP php 仿千图网源码_仿百度网盘文件分享dzzoffice网盘系统源码_PHP
  2. 消息中间件 - ActiveMQ高级特性和用法-Mirrored Queue 镜像队列(了解即可)(十)
  3. 10款辅食做法,解决宝宝不爱吃蔬菜的难题
  4. PTA 3+2转段 数据库 mysql (3篇)
  5. 【解决】Failure to find com.xxx:xxx-target:pom:1.0-SNAPSHOT in https://xxxx/snapshot was cached in the
  6. 51单片机利用STC-ISP下载软件时串口打开失败怎么办?
  7. 计算机无法对NAS硬盘操作,群晖NAS联机失败不要慌,我用经验告诉你,这样做就能完美解决...
  8. 大数据发展前景及就业方向【大数据专业讲座】
  9. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
  10. 我的jQuery学习之路_笔记(三)