Python函数参数,名称空间与作用域

函数先定义后调用,分为定义和调用两个阶段。函数的作用域会在定义时确定,也就是在哪定义,作用域在哪个范围

return函数的返回值:

1.函数都有返回值,但是没有return时,函数返回为None

2.return返回的数据类型没有限制,可以返回多个值,以形式,括号可加也可不加,

return终止函数的运行,当有多个return时只会返回第一个值

函数的参数:

  1. 位置参数

def func1(x,y):    #x,y是形参

        return x*y

func1(33,44)  #33,44是实参

形参可以理解为变量名,而实参可以理解为变量值

位置参数中的实参和形参是一一对应,按照从左到右的顺序

参数在调用时生效,停止调用就失效

  1. 关键字参数

def func2(x,y):    #按照key=value的形式传值

        print(x,y)

func2(x=1,y=2) 或者 func2(y=2,x=10),不受顺序的限制

位置实参和关键字实参可以混用,但是位置实参必须在前,关键字实参在后,一个形参只能被传值一次不能重复传值

  1. 默认参数

参数在定义阶段就已经被赋值  

def func3(x,y=3)

       print(x,y)

func3(x=4),实参y可以不输入对应的形参,如果输入了默认参数就会改变为新的参数。

注意的问题:默认参数必须放在位置参数后边

默认参数通常定义为不可变类型

默认参数只在定义时被赋值一次

形参:值经常变化的情况下定义为位置参数,值通常不变的定义为默认参数

  1. 可变长参数

可变长参数是实参的个数不固定

*定义位置参数

**定义关键字参数

def func4(x,y,*args):

       print(x,y)

       print(args)

func4(1,2,3,4,5,6) =>func4(1,2,*(3,4,5,6)

def func6(*args,**kwargs): #func6(*(1,2,3),**{‘a’:4,’b’:5,’c’:6})=>func6(1,2,3,b=5,a=4,c=6)

       print(args,kwargs)

def func5(x,y,**args):
   print(x,y)
   print(args)
func5(x=1,y=3,z=4,u=7)

1 3

{'z': 4, 'u': 7}

  1. 命名关键字参数

*后面定义的形参必须以关键字形式被传值

形参:位置形参,默认参数,*args,命名关键字参数,**ksargs

def register(*args,name='asda',age):
    print(args)
    print(name)
    print(age)

(1, 2, 2, 3)

asda

10

def func(x,*args,z=1,**kwargs):
    print(x)
    print(args)
    print(z)
    print(kwargs)
func(1,2,3,4,5,a=1,b=2,c=3)

1

(2, 3, 4, 5)

1

{'a': 1, 'b': 2, 'c': 3}

函数的嵌套:

def f1():
    def f2():
        def f3():
            print('from f3')
        print('from f2')
        f3()
    print('from f1')
    f2()
f1()

from f1

from f2

from f3

函数对象:

可以当作参数

可以当作函数的返回值

可以当作容器类型的元素     字典

名称空间:存放名称和值的绑定关系

三种:

1.内置名称空间:python解释器自带的名字,python解释器启动就会生成。

2.全局名称空间:文件级别定义的名字都会存放于全局名称空间,执行

python文件时就会生成。

3.局部名称空间:定义在函数内部的名字,在函数调用时生效。

三者的加载顺序:内置名称空间——>全局名称空间——>局部名称空间

取值顺序:局部名称空间——>全局名称空间——>内置名称空间

作用域:作用范围

全局作用域:内置名称空间与全局名称空间的名字属于全局范围,

在整个文件的任意位置都能被引用,全局有效。

局部作用域:函数调用时

闭包函数:函数内部定义的函数,成为内部函数,该内部函数包含对外部

作用域,而不是对全局作用域名字的,那么该函数成为闭包函数。

原文地址:https://www.cnblogs.com/c491873412/p/7008415.html