邵邵。

导航

函数部分

函数

1.函数参数两大分类

1.形式参数(形参)
	在函数定义阶段括号内所填写的参数#形参
2.实际参数(实参)
	在函数调用阶段括号内所填写的参数#实参
3.形参和实参的关系
	我们可以将形参看成变量名,实参看成变量值
	两者的关系在函数调用阶段临时绑定,函数体代码运行结束断开
#形参的表现形式只有一种,就是变量名(可以是任何变量名)
#实参的表现形式有很多种(要把握核心《数据值》)

image

2.形参:定义函数设置的参数

1.位置形参  # 输入几个形参,调用就要输入几个实参
	在函数定义阶段从左往右依次填入的变量名
2.默认形参
	在定义阶段就将形参赋值,调用时不输入参数则使用默认值,输入则使用输入值
		# def add(a,b,c='3')
3.可变长位置形参  *
	将多余的位置形参以统一添加到一个元组中赋值给*后面的变量名
4.可变长关键字形参  **
	将多余的关键字形参统一添加到一个字典中赋值给**后面的变量名
'''
墨守成规
	可边长形参  *  与  **  后面的变量名可以随便定义
	但是Python中推荐使用
		*args
		**kwargs
'''

image

3.实参:调用函数输入的参数

1.位置实参  # 输入几个形参,调用就要输入几个实参
	调用阶段从左到右输入的数据值
2.关键字实参  # 可以打破位置参数的顺序
	调用阶段将设置的形参名=输入的数据值指名道姓的输入,输入方式要根据格式越简单的越要靠前,越复杂的越要靠后的原则
3.可变长位置实参  *
	调用阶段可以输入多个位置实参,会以元组的形式赋值给*后面的变量名  # 如果输入的为列表的变量名可以直接*list,会按照位置一一传入,组成一个元组
4.可变长关键字实参  **
	调用阶段可以输入多个关键字实参组织成一个字典等号两边分别是K:V键值对  # 如果输的为字典的变量名可以直接**dict,会以单个键值对的方式一一传入组成一个字典

image

函数参数补充了解

位置形参,可变长位置形参,位置形参的函数参数
	def register(name,age,*,sex,height):
		pass
在调用函数阶段一定要以位置实参,输入多个位置实参后输入关键字实参才可以

image

名称空间

什么是名称空间(namespaces)
	用于存放变量名与变量值绑定关系的地方(绑定之后需要有个地方记录这个关系的绑定)

名称空间分类

1.内置名称空间
	Python解释器提前定义好的函数所取出的名字
2.全局
	py文件定格编写的代码运行之后所定义的变量值与变量名之间的绑定,函数名,for循环的i,while循环内部的变量名,if判断的变量名
3.局部
	函数体代码内部的变量名
名字查找的顺序
	根据所在的位置进行查找
	如果在函数体代码中
	局部>>>全局>>>内置
	如果在全局中
	全局>>>内置
函数体代码内部名字定义:只要是定义好的就不能更改,调用从内部调用,依次向外扩散,如果存在变量名存在,但在代码执行之后,则会报错
# 局部名称空间的嵌套 
'''函数在定义阶段名字的查找顺序就已经固定死了(特例)'''
x = 111
def f1():
    x = 222
    def f2():
        x = 333
        def f3():
            x = 444
            def f4():
                x = 555
                print(x)
                # x = 555  特例,如果上面的x=555换到下面,就会报错
            f4()
        f3()
    f2()
# 通过调用f1 执行所有的函数
f1()
# 存活周期
	1.内置名称空间
		python解释器启动与关闭而创建和销毁
	2.全局名称空间
		随着py文件的运行与结束而创建和销毁
	3.局部名称空间
		随着函数体代码的执行与结束而创建和销毁

image

posted on 2021-11-15 14:36  邵邵。  阅读(51)  评论(0)    收藏  举报