目录
可变长参数函数对象函数对象的应用函数嵌套名称空间和作用域打印99乘法表上节课回顾形参名(*)表示调用函数时,有多少个位置实参,我就接收多少个参数
形参名(**)用字典接收多余的关键字实参
(*实参)(#lt)把列表中的元素打散成位置实参依次传给位置形参
def f1(a, b, c, e, d, f, g): print(a, b, c, e, d, f, g) lt = [1, 2, 3, 4, 5, 6, 7] f1(*lt)(**实参) 参数把字典打散成关键字实参然后传给函数f1
def f1(z, b): print(z, b) dic = {'z': 1, 'b': 2} # a=1,b=2 f1(**dic) # **dic把字典打散成关键字实参然后传给函数f1python中一切皆对象函数
引用容器元素作为函数的实参作为函数的返回值字典/列表/元组/集合/布尔值函数对象 == 函数名
比如定义一个注册函数
def register() pass就是函数里面有函数
def f1() print('from f1') def f2() print('from f2') res = f1()函数内部定义的函数,外部不能使用
名称空间:专门存储名称的
内置名称空间:存储了内置方法的名称
数据类型自带的内置方法:python解释器自带的内置方法(print/len/str)
全局名称空间:除了内置和局部都叫全局
局部名称空间:函数内定义的都叫局部
名称空间的执行(生成)顺序:内置--》全局--》局部
搜索顺序:先从当前的位置,找不到按照这种顺序,不会逆着方向找 局部 --》全局--》内置——》报错
全局作用域:内置名称空间+全局名称空间——》全局作用域
局部作用域:全局作用域和局部作用域没有关系
局部作用域:局部作用域和局部作用域没有关系
global:打破了全局作用域,让代码下面的局部x变成全局的xnonlocal:打破了局部作用域,让x成为顶层的局部,不让他成为全局
运行结果:
1*1 = 1 1*2 = 2 2*2 = 4 1*3 = 3 2*3 = 6 3*3 = 9 1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16 1*5 = 5 2*5 = 10 3*5 = 15 4*5 = 20 5*5 = 25 1*6 = 6 2*6 = 12 3*6 = 18 4*6 = 24 5*6 = 30 6*6 = 36 1*7 = 7 2*7 = 14 3*7 = 21 4*7 = 28 5*7 = 35 6*7 = 42 7*7 = 49 1*8 = 8 2*8 = 16 3*8 = 24 4*8 = 32 5*8 = 40 6*8 = 48 7*8 = 56 8*8 = 64 1*9 = 9 2*9 = 18 3*9 = 27 4*9 = 36 5*9 = 45 6*9 = 54 7*9 = 63 8*9 = 72 9*9 = 81函数定义阶段只检测语法,不执行代码
函数的三种定义方式 空函数无参函数有参函数 函数的返回值 return可以返回值,默认返回None,return后面不加东西也返回Nonereturn可以终止函数,有多个return,执行到第一个就结束了return可以返回多个值,以元组形式返回 函数的调用函数调用就会执行代码
函数名()
函数的参数 形参接收实参,具有描述意义,相当于变量
实参传值给形参
位置形参依次接收位置实参的值
位置实参依次传值给位置形参
默认形参具有默认值,如果传参,使用传参的值;否则使用默认值(形参会多次使用同一个值)
默认形参必须得放在位置形参后面
关键字实参按照形参名传参(参数较多的情况下使用这个方法)
关键字实参必须得在位置实参的
转载于:https://www.cnblogs.com/gfhh/p/11556679.html