Fork me on GitHub

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. 定义函数的三种形式

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

  • 空函数

    定义一个函数,但不做任何事情,只是用来占个位置,先实现其他功能,未来进行补充,可以用来搭建项目框架。

    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
    
posted @ 2019-09-20 17:13  Yugaliii  阅读(102)  评论(0编辑  收藏  举报