前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第四章--第一节:函数

第四章--第一节:函数

作者头像
喵叔
发布2020-09-08 16:11:35
2720
发布2020-09-08 16:11:35
举报
文章被收录于专栏:喵叔's 专栏喵叔's 专栏

从本节课开始,我们就进入到了高级编程的阶段,这个阶段有两节课:函数。本节要将的是 函数 相关的知识。

零、什么是函数

函数,通俗的说就是 具有名字的用于完成指定工作的代码块。 使用函数的优点如下:

  1. 程序的编写、测试和修正更加简单;
  2. 增加代码的复用,减少了代码的重复;
  3. And More…
一、定义函数
  1. 无参函数 无参函数,通俗说就是无需传递参数也可以正确执行的函数。语法如下:
代码语言:javascript
复制
def 函数名():
  函数体

我们通过函数来看一下无参函数的定义:

代码语言:javascript
复制
# 定义一个1+1的函数
def addition():
  num1 = 1
  num2 = 1
  result = num1 + num2
  print(result)

# 调用函数
addition()
  1. 有参函数 我们在上一小节学会了无参函数的定义,但是我们会发现一个问题,我们编写的函数只能计算1+1,而不能计算1+2,2+2之类的,因此我们就需要有参函数了。语法如下:
代码语言:javascript
复制
def 函数名称(形参1,形参2,...,形参N):
  函数体

我们依然通过例子来看一下:

代码语言:javascript
复制
def addition(num1,num2):
  result = num1 + num2
  print(result)

# 调用函数
addition(1,3)

这里面有两个概念需要简单讲一下,一个是 形参,一个是 实参。函数中的 num1num2 变量就是形参,而传入函数的 13 就是实参。

  1. 带返回值函数 在一些情况下,我们需要得到函数的执行结果,那么我们就可以使用带返回值的函数。语法如下:
代码语言:javascript
复制
def 函数名称([形参]):
  函数体
  return 返回值

我们通过例子来看一下具体用法:

代码语言:javascript
复制
def addition(num1,num2):
  result = num1 + num2
  return result

# 调用函数
result =addition(1,2)
print(result)

在Python中,函数可以返回多个值,我们只需将返回值之间以 逗号 分割。我们看个例子:

代码语言:javascript
复制
# 定义计算函数
def Calculation(num1,num2):
  # 加法运算
  addition=num1+num2
  # 减法运算
  subtraction=num1-num2
  # 乘法运算
  multiplication=num1*num2
  # 除法运算
  division=num1/num2
  # 输出加减乘除的结果
  return addition, subtraction, multiplication, division

# 调用函数
addition, subtraction, multiplication, division =Calculation(1,2)

print("加法结果:%s 减法结果:%s 乘法结果:%s 除法结果:%s" %(addition,subtraction,multiplication,division))

注意:在接收函数返回值的时候,我们接收函数返回值的顺序一定要和函数内返回数据的顺序一样。

三、特殊函数
  1. 关键字实参 我们前面看到的函数的实参都是 位置实参 ,位置实参在传递参数时必须和函数的形参一一对应,顺序不能变。如果需要改变参数传递的顺序,则必须使用关键字实参,关键字实参的格式是:key=value,这样我们就可以不必按照参数顺序传递参数了,我们通过例子来看一下:
代码语言:javascript
复制
# 定义一个函数
def YourNameAndAge(name,age):
  print("我的名字是:%s,今年 %s 岁" % (name,age))

# 调用函数,首先传入年龄,再传入姓名
YourNameAndAge(age=20,name="张三")
  1. 列表实参函数 列表实参可以包含多种类型的内容(数字、字典、字符串等),我们来看一下具体的使用:
代码语言:javascript
复制
# 定义一个打招呼的函数,并修改其中的数据
def hello(names):
  names[0]="赵六"
  for name in names:
    print("你好 %s" % name)

# 定义列表
names=["张三","李四","王五"]
# 调用函数
hello(names)

在上面的例子中我们修改了列表的第一个值,在调用函数后,我们再次打印这个列表,会发现列表的第一个值已经改变。但是在某些情况下,我们不希望传入函数的列表内容被修改,但是函数体必须要修改列表内容,这个时候我们就用到了列表的副本,我们看一下具体怎么用:

代码语言:javascript
复制
# 定义一个打招呼的函数,并修改其中的数据
def hello(names):
  names[0]="赵六"
  for name in names:
    print("你好 %s" % name)

# 定义列表
names=["张三","李四","王五"]
# 调用函数
hello(names[:])

这时我们在调用函数后,再次打印列表内容,发现列表内容并没有变。因为我们向函数传入列表的时候,传入的是列表的副本(切片),列表的副本用 [:] 表示。

  1. 默认值函数 在一些函数中,我们可以不传入指定的参数,这是因为我们在函数中使用了默认值,用法如下:
代码语言:javascript
复制
# 定义一个姓名函数
def name(name,age,height="170 CM"):
  print("我叫 %s,今年 %s 岁,身高 %s "%(name,age,height))

# 调用函数两次,一次传入heighr,一次不传入
name("张三",30,"1.8 M")
name("李四",25)

我们第一次调用函数时传递了身高的参数,打印出了我们传入的身高,第二次调用函数时没有传递身高参数,因此系统打印出了默认的值

注意:如果形参有默认值,则形参要放在所有形参的后面

  1. 不定参数函数 有些情况我们不知道需要接收多少个参数,具体参数数量需要从传递的实参获得。这时我们就用到了不定参数,不定参数用 * 表示,我们看一下具体用法:
代码语言:javascript
复制
# 定义一个菜单函数
def menu(*args):
  print("我点的菜有:")
  for arg in args:
    print(arg)

# 调用函数
menu('醋溜白菜','黄焖鸡','干锅牛蛙')

有时候我们及不知道要接受多少个参数,也不知道传递给函数的信息是什么样的,在这种情况下我们可以将函数的形参编写为任意键值对。任意键值对用 ** 表示,我们看一下用法

代码语言:javascript
复制
# 定义姓名函数
def name_func(**args):
  name={}
  for key,value in args.items():
    name[key]=value
  return name

# 调用函数
name=name_func(first_name='托马斯',last_name='张')
print(name)
五、函数扩展

当我们编写的函数很多的时候,可以将同类型的函数存储进 .py 文件中,这个文件就被称为 模块 。当我们要使用这个文件中的函数只需要引入这个模块。我们假设模块名称为: name.py,模块里面包含函数:fun1fun2

  1. 导入整个模块
代码语言:javascript
复制
import name
  1. 导入指定函数
代码语言:javascript
复制
from name import fun1
  1. 导入所有函数
代码语言:javascript
复制
from name import *
四、小结

本节主要讲了函数的一些知识,这些知识比较多,但大家需要记牢。

五、作业
  1. 定义一个无参函数,并返回值
  2. 定义一个参数数量不定的函数,并且函数包含两个形参
  3. 将上面两个函数保存在模块中,并导入这个模块中的函数。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 零、什么是函数
  • 一、定义函数
  • 三、特殊函数
  • 五、函数扩展
  • 四、小结
  • 五、作业
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档