zoukankan      html  css  js  c++  java
  • 第四章--第一节:函数

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

    零、什么是函数

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

    1. 程序的编写、测试和修正更加简单;
    2. 增加代码的复用,减少了代码的重复;
    3. And More…

    一、定义函数

    1. 无参函数
      无参函数,通俗说就是无需传递参数也可以正确执行的函数。语法如下:
    def 函数名():
      函数体
    

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

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

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

    def addition(num1,num2):
      result = num1 + num2
      print(result)
    
    # 调用函数
    addition(1,3)
    

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

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

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

    def addition(num1,num2):
      result = num1 + num2
      return result
    
    # 调用函数
    result =addition(1,2)
    print(result)
    
    

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

    # 定义计算函数
    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,这样我们就可以不必按照参数顺序传递参数了,我们通过例子来看一下:
    # 定义一个函数
    def YourNameAndAge(name,age):
      print("我的名字是:%s,今年 %s 岁" % (name,age))
    
    # 调用函数,首先传入年龄,再传入姓名
    YourNameAndAge(age=20,name="张三")
    
    
    1. 列表实参函数
      列表实参可以包含多种类型的内容(数字、字典、字符串等),我们来看一下具体的使用:
    # 定义一个打招呼的函数,并修改其中的数据
    def hello(names):
      names[0]="赵六"
      for name in names:
        print("你好 %s" % name)
    
    # 定义列表
    names=["张三","李四","王五"]
    # 调用函数
    hello(names)
    

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

    # 定义一个打招呼的函数,并修改其中的数据
    def hello(names):
      names[0]="赵六"
      for name in names:
        print("你好 %s" % name)
    
    # 定义列表
    names=["张三","李四","王五"]
    # 调用函数
    hello(names[:])
    
    

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

    1. 默认值函数
      在一些函数中,我们可以不传入指定的参数,这是因为我们在函数中使用了默认值,用法如下:
    # 定义一个姓名函数
    def name(name,age,height="170 CM"):
      print("我叫 %s,今年 %s 岁,身高 %s "%(name,age,height))
    
    # 调用函数两次,一次传入heighr,一次不传入
    name("张三",30,"1.8 M")
    name("李四",25)
    
    

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

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

    1. 不定参数函数
      有些情况我们不知道需要接收多少个参数,具体参数数量需要从传递的实参获得。这时我们就用到了不定参数,不定参数用 * 表示,我们看一下具体用法:
    # 定义一个菜单函数
    def menu(*args):
      print("我点的菜有:")
      for arg in args:
        print(arg)
    
    # 调用函数
    menu('醋溜白菜','黄焖鸡','干锅牛蛙')
    

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

    # 定义姓名函数
    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. 导入整个模块
    import name
    
    1. 导入指定函数
    from name import fun1
    
    1. 导入所有函数
    from name import *
    

    四、小结

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

    五、作业

    1. 定义一个无参函数,并返回值
    2. 定义一个参数数量不定的函数,并且函数包含两个形参
    3. 将上面两个函数保存在模块中,并导入这个模块中的函数。
  • 相关阅读:
    SQL Server中六种数据移动的方法
    SQL Server数据导入导出技术概述与比较
    深入浅出SQL之左连接、右连接和全连接
    安装SQL server提示安装不上,挂起之类
    如何在SQL Server中快速删除重复记录
    SQL Server数据导入导出工具BCP详解
    深入浅出SQL教程之嵌套SELECT语句
    使用osql执行sql脚本
    sql server 分组统计
    php常用几种设计模式的应用场景
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778221.html
Copyright © 2011-2022 走看看