函数的定义:
1.def:表示函数的关键关键字
def my_len(): #函数名的定义 li = [1,2,3,4,5,6,7] count = 0 for i in li: count +=1 return count #函数的返回值 ret = my_len() #函数的调用 以及 返回值的接受 print(ret)
2.函数名:函数的名称,以后根据函数名调用函数
3.函数体:函数中进行一系列的逻辑运算
4.参数:为函数提供数据 1.位置参数 2.默认参数 3.动态参数
动态参数:*args 接受所有按照位置的参数,接受到的是参数组成的元祖
**kwargs 接受所有按照关键字传的参数,接受到的是参数组成的字典
5:返回值:当执行完毕后,可以给调用者返回数据(可以返回任意的数据类型,返回什么就接受什么)
def func2(): #1 print('in func2 now') #5 print('多写了一行') #6 if True: #7 print('又多写了一行'),,,, #8 return'func2的返回值' #9 def func(): #2 ret=func2() #4 print(ret) #10 n = 20 #11 print(n) #12 func() #3
6.函数的嵌套调用循环:
def func2(): #1 print('in func2 now') #5 print('多写了一行') #6 if True: #7 print('又多写了一行'),,,, #8 return'func2的返回值' #9 def func(): #2 ret=func2() #4 print(ret) #10 n = 20 #11 print(n) #12 func() #3
7.作用域:一个名字可以使用的区域
作用域:一个名字可以使用的区域
全局作用域:内置名字空间和全局名字空间中的名字都属于全局作用域
局部作用域:局部名字空间中的名字属于局部作用域
局部作用域可以使用全局作用域中的变量
而全局作用域不能使用局部作用域中的变量
局部作用域中还可以嵌套更小的局部作用域
作用域链:小范围作用域可以使用大范围的变量,但作用域链是单向的,不能反向应用
命名空间 :内置命名空间(py解释器自带的 比如:len()拿过来就能用)
全局命名空间:写在函数外面的变量名
局部命名空间:每个函数都有自己的命名空间
加载顺序(先所有内置命名空间中的名字----->然后按照顺序加载全局命名空间的名字)
第一对象:
1,函数名可以赋值
2.可以作为一个数据结构的元素
3.可以作为一个函数的参数
4.可以作为一个函数的返回值