function:
1.定义:
函数是对功能或是动作的封装. 函数侧重点对实现某个功能.
2.组成:
def 函数名(形参列表):
函数体
函数返回值(return)
调用函数:函数名(实参列表)
形参:在函数声明的位置(变量)
实参:在函数调用的时候给函数形参传递的信息(值)
传参:将实参传递给形参的过程
返回值: 终止函数的运行
1.什么都不写,不写return. 返回None
2.只写return, 返回None
3.return + 值, 有一个返回值
4.return +多个值, 返回为多个值, 接受的是元组(不可变,安全)
# 注意return的位置,已经return与print的关系(没有任何关系)
参数:
1. 实参:
a.位置参数 (记住位置)
def func(x,y):
pass
func(1,2)
b.关键字参数 (记住名字)
#按照形参的名字给形参传值
def func(food, drink,good_food,good_drink):
pass
func(good_food= '之伤残', drink= 'water' food='烧烤',good_drink='可乐')
#不用考虑位置,按照函数名传值
c.混合参数 (先位置参数,后关键字参数)
def func(food, drink, good_food, good_drink):
pass
func('烧烤', good_food='之伤残', drink='water', good_drink = '可乐')
2.形参:
a.位置参数
def register(name, age, gender):
pass
b.默认值参数 默认值参数放在后面
def register(name,age,gender='男'):
pass
c.动态传参:
位置参数的动态传参(*args) 位置参数 动态参数 默认值参数
def func(*food, drink='water'):
pass
func('kaorou','mianbao')
关键字参数的动态传参(**kwargs)
def func(**food):
pass
func(good_food='狗不理', drinking='kele')
顺序:位置参数 位置参数动态传参(元组) 默认值参数 关键字参数的动态传参(字典)
3.聚合与打散
def func(*food): #这里的*,是聚合
pass
lst = ['狗不理','煎饼','烧鸡','肘子']
#如果要把lst中的元素一个一个传个函数形参,需写成func(lst[0],lst[1],lst[2],lst[3])
#很麻烦,所以可以写成如下
func(*lst) #这里的*作用为打散,将列表,元组,字典,字符串元素进行迭代打散
def func(**food):
pass
dic ={name='狗不理',price='一百'}
#正常传参为:func(name=dic(name),price=dic(price))
func(**dic)
4.名称空间
1.内置命名空间
2.全局命名空间
3.局部命名空间 #访问;局部可以访问全局,全局可以访问内置
作用域:
1.全局作用域 #包括了内置命名空间,全局命名空间
globals() 查看全局命名空间中的内容
2.局部作用域 #包含了局部命名空间
locals() 查看当前作用域中的内容
5.函数的嵌套
函数可以无数次嵌套
6.global 与 nonlocal
global:在局部可以访问并改变全局变量
a = 1
def func():
global a
a = 20
print(a)
nonlocal:****在局部****,寻找外城函数中,离他最近一层的那个变量
a = 1
def func1():
a = 2
def func2():
nonlocal a
a = 3
print(a)