python之函数基础

函数

    1 什么是函数
        函数就是盛放功能(一系列代码)的容器
        定义函数就是造出了一个工具

        事先准备工具的过程->函数的定义
        遇到应用场景拿来就用->函数的调用


    2 为何要用函数
        不用函数写出的代码问题是:
            1 程序的组织结构不清晰,可读性差,可维护性差
            2 可扩展性差


    3 如何用函数
        原则:
            先定义
            后调用

    定义函数的语法:
      def 函数名(参数1,参数2,参数3,...):
        代码1
        代码2
        代码3
        return 值
    
    调用函数语法:
      res = 函数名(值1,值2,值3)



    1 定义函数与调用函数

        # x = 10

        # y = x

        # print(x)

        # def func():  # func = 函数的内存地址

        #     print("*" * 40)

        #     print("hello".center(40, ' '))

        #     print('=' * 40)

        # print(func)

        # f = func

 

    2 函数定义阶段发生的事情:

      申请内存空间,把函数体代码放进去,然后把内存地址绑定给函数名

        # def func():

        #     print(1)

        #     print(2)

        #     print(3)


    3 函数调用阶段发生的事情: 执行函数体代码

        # def func():

        #     print(1)

        #     print(2)

        #     print(3)



        # func()

        ps: 函数定义阶段只检测语法不执行代码,只有在调用函数时才会执行函数体代码

     例1:

        # def bar():

        #     print('from bar')

        #bar()



    例2:

        # def foo():

        #     print('from foo')

        # foo()
	定义函数的三种形式

		1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
		2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
		3、空函数:设计代码结构
	函数调用的三种形式

		1 语句形式:foo()
		2 表达式形式:3*len('hello')
		3 当中另外一个函数的参数:range(len('hello'))
	```
#函数返回值
    return返回值的语法:

        函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值当作本次调用的产品返回

        具体来说函数的返回值有三种形式

            1 return 值: 返回的就是改值本身/-

            2 return 值1,值2,值3:返回的是小元组

            3 没有return或者return无值或者return None:返回的都是None

函数的参数

一 形参与实参的含义

	形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定
二 参数的种类
	#1、位置参数:按照从左到右的顺序定义的参数
        位置形参:必选参数
        位置实参:按照位置给形参传值

	#2、关键字参数:按照key=value的形式定义的实参
			无需按照位置为形参传值
			注意的问题:
				1. 关键字实参必须在位置实参右面
				2. 对同一个形参不能重复传值

	#3、默认参数:形参在定义时就已经为其赋值
		可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
			注意的问题:
				1. 只在定义时赋值一次
				2. 默认参数的定义应该在位置形参右面
				3. 默认参数通常应该定义成不可变类型


	#4、可变长参数:
			可变长指的是实参值的个数不固定
			而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*args,**kwargs
	ps:
		1 可以混用位置形参与关键字形参参,但是位置形参必须跟在默认形参的前面

		2 默认形参的值推荐指向不可变类型

		3 默认形参的值只在函数定义阶段被赋值一次
		4 可变长参数:*与**
			 在形参中带*: *会将溢出的位置实参值汇总成元组,然后赋值给紧跟其后的形参名
			 在形参中带**: **会将溢出的关键字实参值汇总成字典,然后赋值给紧跟其后的形参名
			 在实参中带*在实参中带**会被打散成单个
	命名关键字参数
		跟在*args和**kwargs之间的参数
posted @ 2021-06-23 15:41  zhutianyu  阅读(71)  评论(0)    收藏  举报