对于函数添加一些知识点

嘟嘟嘟,小汽车开起来.

先回顾下昨日内容

函数:对功能或动作的封装

语法:

Def 函数名(形参列表)

函数体(代码块,return)

函数名(实参列表)

形参:在函数声明的位置的是实参(变量)

实参:在函数调用的时候给函数的形参传递信息的值

传参:把实参的值交给形参的过程

 

返回值:

Return 可以终止一个函数的执行

1. 什么都不写,不写return ,返回none

2.只写return  后面什么都系都不加的话,返回的也是none

3.return ,有一个返回值

4.return 1.2.3...多个返回值.接受的是元祖(不可变)

 

参数:

形参:

  1. 位置参数
  2. 默认值参数
  3. 动态参数

实参:

  1. 位置参数
  2. 关键字参数
  3. 混合参数, 顺序:先位置后关键字

今日主要内容

  1. 函数的动态参数
  2. *args 位置参数动态传参
  3. **kwargs 关键字参数动态传参 返回的是一个字典相对应

顺序 可以混搭 但是必须要前后一致

顺序 位置参数,*args,,默认值参数,**kwargs

 

形参的位置*,**:聚合

实参的位置*,**:打散

 

2.命名空间

1.  内置名称空间

2.  全局名称空间

3.  局部名称空间

 

作用域:

  1. 全局作用域: python内置函数+全局
  2. 局部作用域:局部(函数被调用)

Globals()查看全局中的内容

Locals()查看单签作用域中的内容

 

  1. 函数可以互相的嵌套

4.   global: 在局部访问全局中的内容

     Nonlocal: 在局部寻找外层函数忠离他最近的那个变量

 

 单行注释
'''多行注释'''
 函数注释
 def func(a, b):
 """
 这个函数是用来计算a和b的和
 :param a: 第一个数据
 :param b: 第二个数据
 :return: 返回的是两个数的和
 """
 return a + b

 print(func.__doc__) # document文档

 接收所有参数
 def func(*args, **kwargs):# 无敌 *args相当于一个聚合的作用
print(args, kwargs)

结合具体的实例


 形参: 聚合
 def func(*food): # 聚合, 位置参数
 print(food)
 lst = ["鸡蛋","煎饼果子","猪蹄","滋滋冒油"]
 # 实参: 打散
 func(*lst) # 打散. 把list, tuple, set, str 进行迭代打散

 聚合成关键字参数
 def func(**kwargs):
 print(kwargs)

 dic = {"name":'alex', 'age':'18'}
 func(**dic) # 打散成关键字参数

def fn(): # fn也在全局名称空间
b = 20 # 局部名称空间
print(a)
def gn():
print(a)
fn()
gn()

1. 内置, 2. 全局 , 3. 局部(函数调用)
a = 110 # 全局
def fn(): #
b = 20 # 局部
def gn(): # 局部
print(globals()) # 可以查看全局作用域中的内容
print(locals()) # 查看当前作用域中的内容
gn()
fn()

def outer():
print("哈哈")
def inner_1():
print("呵呵")
def inner_1_1():
print("嘻嘻")
inner_1_1()
print("吼吼")
def inner_2():
print("嘿嘿")
inner_2()
inner_1()
outer()
a = 1
def fun_1():
a = 2
def fun_2():
global 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)
运行结果是1234323


posted @ 2018-08-09 14:58  玩蛇少年7372  阅读(156)  评论(0编辑  收藏  举报