day-10

1. 函数的定义

  • 语法框架

    # 函数的定义阶段:函数定义过程,只检测语法,不执行里面的代码
    def 函数名(等同于变量名)():
        """对函数(工具)的描述信息"""
      代码块(实现函数功能的代码)
    # 函数的使用阶段
    func()  # 执行函数里面的代码

    例如:函数

    def func1():
        '''打印hello,world!'''
        print('hello,world!')
    
    
    func1()
    # print(func1.__doc__) # 能够打印出函数的功能

    运行结果:工具

    hello,world!
    # 打印hello,world!
    
    Process finished with exit code 0

2. 定义函数的三种形式

参数:函数用来接收外部信息的媒介。同变量名。code

  • 空函数it

    定义一个函数,但不作任何事情,只是用来占个位置,先实现其余功能,将来进行补充,能够用来搭建项目框架。class

    def func1():
        pass
    
    def func2():
        pass
    
    def func3():
        pass
    
    ……
  • 有参函数变量

    在函数定义阶段,括号内有参数,这个函数就是有参函数。数据类型

    定义时有参,调用时就必须得传参。语法

    def guess(x, y):
        """给定两个数,打印较大的数"""
    
        if x > y:
            print(x)
        else:
            print(y)
    
    
    guess(50, 20)

    运行结果:

    50
    
    Process finished with exit code 0
  • 无参函数

    在函数定义阶段,括号内没有参数,这个函数就是无参函数。

    定义时无参,调用时就不用传参。

    def func():
        '''打印hello,world!'''
        print('hello,world!')
    
    
    func()

    运行结果:

    hello,world!
    
    Process finished with exit code 0

3. 函数的返回值

返回值:返回一个值(函数的返回值能够是任意数据类型)

def max_num():
      """给定两个数,打印较大的数"""
      x = 20
      y = 30
      if x > y:
          return x
      else:
          return y
  
  
  num = max_num()
  print('num:', num)

运行结果:

num: 30
  
  Process finished with exit code 0

return的特性:

  1. return 返回一个返回值,若是没有返回值,返回None

    def func():
        return   # 没有返回值
    
    
    print(func())

    运行结果:

    None
    
    Process finished with exit code 0
    def func():
     return 1    # 有返回值
    
    
    print(func())

    运行结果:

    1
    
    Process finished with exit code 0
  2. 没有return 默认返回None

    def func():
        pass # 没有return
    
    
    print(func())

    运行结果:

    None
    
    Process finished with exit code 0
  3. return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个

    def max_num():
        """给定两个数,打印较大的数"""
        return 1 # 下面的代码不会执行
        x = 20
        y = 30
        if x > y:
            return x
        else:
            return y
    
    
    num = max_num()
    print('num:', num)

    运行结果:

    num: 1
    
    Process finished with exit code 0
  4. return 经过逗号隔开,能够返回多个值,返回值以元组的形式接收

    def func():
        return 1,2,[3,4] # 多个return
    
    
    print(func())
    print(type(func()))

    运行结果:

    (1, 2, [3, 4])
    <class 'tuple'>
    
    Process finished with exit code 0

4. 函数的参数

4.1 形参

函数定义阶段产物,具备描述意义,用来接收实参传的值。

  • 位置形参

    调用函数时,从左到右依次接收实参的值

    def fun1(x, y, z):    # 位置形参:x,y,z
        print(x, y, z)
    
    
    fun1(1, 2, 3) # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z

    运行结果:

    1 2 3
    
    Process finished with exit code 0
  • 默认形参

    1. 调用函数时,若是不给默认形参传值,则使用默认值;若是传值,则使用传的值
    2. 默认形参必须放在位置形参的后面
    def fun1(x, y, z=0):  # 位置形参:x,y;默认形参 z = 0
        print(x, y, z)
    
    
    fun1(1, 2, 3)  # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z
    fun1(1, 2)    # 调用函数阶段,按照1,2 的顺序分别将值传给x,y;z使用默认值 0

    运行结果:

    1 2 3
    1 2 0
    
    Process finished with exit code 0

4.2 实参

函数调用阶段的产物,有具体的值,将值传给形参。

  • 位置实参

    从左到右依次传值给位置形参,和位置形参必须一一对应

    def fun1(x, y, z):    # 位置形参:x,y,z
        print(x, y, z)
    
    
    fun1(1, 2, 3) # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z
  • 关键字实参

    1. 按照形参名将值传给形参(使用状况基本为 0 )
    2. 关键字实参必须写在位置实参的后面
    def fun1(x, y, z):  # 位置形参:x,y,z
        print(x, y, z)
    
    
    fun1(3, z=2, y=1)  # 调用函数阶段,位置实参按照顺序传值给位置形参 ,关键字实参按照形参名传值

    运行结果:

    3 1 2
    
    Process finished with exit code 0
相关文章
相关标签/搜索