标签:技术 python解释器 基本 报错 显示 作用 oca 参数 文件
函数的基本格式:
关键字(def) 函数名(形参)冒号 形参:用来接收实参传的数据
输出的内容print() 注意: 形参的顺序: 位置参数 , 动态参数 , 默认参数
return 返回值 return:可以写也可以不写,写return, 不写返回值返回的是None
函数的调用(实参) #也接收返回值 实参:用来给形参传送数据的
实参:位置参数 > args(动态位置参数) > 默认值参数 > *kwargs(动态默认参数)
传参:实参给形参传递的过程就叫做传参
例子:
def func(a,b): 形参
c = a if a > b else b #三元一次方程式
a = func(10,20)实参 #形参和实参传入的内容必须一一对应
print(a) #a是接收返回值的接收者, 打印最终结果
函数的动态参数:
分为两种(*args,**kwargs)
#*args是接收动态位置参数已元组的方式接收。
#**kwargs是接收动态关键字参数已字典的方式接收。
例子(*args):
def func(*args):
print("我想吃",args) #打印时不能加*, 加*等于打散,以位置参数形式显示
func("麻婆豆腐","水煮肉","蒜蓉西兰花") 位置参数
结果:
我想吃 ('麻婆豆腐', '水煮肉', '蒜蓉西兰花') 以元组的方式显示
例子(**kwargs)
def func(**kwargs):
print(kwargs) #打印时不能加*, 加*等于打散,以字典键的形式显示
func(a ="扎金花",b = "斗地主",c ="跑得快",d ="德州扑克") 关键字参数
结果:
{'a': '扎金花', 'b': '斗地主', 'c': '跑得快', 'd': '德州扑克'} 以字典的方式显示
例子(*args,**kwargs):
def func(*args,**kwargs)
print(args)
print(kwargs)
func(1,2,3,4,5,a="你瞅啥",b="瞅你咋的",c="在瞅一个试试",d="试试就试试")
结果:
(1, 2, 3, 4, 5) *args接收
{'a': '你瞅啥', 'b': '瞅你咋的', 'c': '在瞅一个试试', 'd': '试试就试试'} **kwargs接收
函数的命名空间
函数在被执行后没有返回值的时候,里面的内容也会一起删除,节省内存空间。
例子:
def func():
a = 10
print(a)
func() 没有return返回值 里面的内容自动销毁。
print(a) 此时是打印不了a的,因为已经销毁了,执行后会报错,找不到a。
? 命名空间分类:
? 1. 全局命名空间--> 我们直接在py文件中, 函数外声明的变量都属于全局命名空间
? 2. 局部命名空间--> 在函数中声明的变量会放在局部命名空间
? 3. 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内置命名空间
加载顺序:内置空间??全局空间??局部空间
取值顺序: 局部空间??全局空间??内置空间
作用域: 作用域就是作用范围, 按照生效范围来看分为 全局作用域 和 局部作用域
全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循 从上到下逐?执行).
局部作用域: 在函数内部可以使用.
作?域命名空间:
全局作用域: 全局命名空间 + 内置命名空间
局部作用域: 局部命名空间
函数的嵌套:
nonlocal: 只修改上一层变量,如果上一层中没有变量就往上找一层,只会找到函数的最外层,不会找到全局进行修改
global: 在函数内部修改全局的变量,如果全局中不存在就创建一个变量
嵌套示例:
a = 1
def fun_1():
a = 2
def fun_2():
nonlocal a
a = 3
def fun_3():
a = 4
print(a)
print(a)
fun_3()
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a)
结果:
1
2
3
4
3
3
1
标签:技术 python解释器 基本 报错 显示 作用 oca 参数 文件
原文地址:https://www.cnblogs.com/biyunfeng/p/11934605.html