初始函数

def func(x,y):
    pass
func(3,y=4)
View Code

1,函数的定义和调用

def   函数名():

  函数体

调用函数:函数名()

2,函数的返回值

a,没有返回值

def func():
    print(666)
func()
View Code

不写return,会默认返回None

只写return,也会返回None

函数在调用的过程中一旦遇到return,就会结束整个函数。

b,返回一个值

def func(n):
    return n
f=func(3)
print(f)
View Code

c,返回多个值

1,返回的多个值会被组织成元组被接收

def func(m,n)
    return m,n
f=func(2,3)
print(f)
View Code

2,多个值接收

def func(m,n):
    return m,n
a,b=func(2,3)
print(a,b)
View Code

函数的参数
形参与实参

在定义函数是,写在括号里的变量名,就是形参

在调用函数的时候,写在括号里的参数,就是实参

  位置参数

站在实参的角度上

1,按照位置传参

def func(x,y):
    pass
func(1,2)
View Code

2,按照关键字传参

def func(x,y):
    pass
func(y=1,x=2)
View Code

3,位置参数和关键字参数混合用
a,位置参数必须在关键字参数的前面

b,对于一个形参只能赋值一次

站在形参的角度上

位置参数必须传值

默认参数

一般将变化比较小的参数设成默认参数

动态参数

给函数传的参数很多,不定个数

def func(*args,**kwargs):
    print(args,kwargs)
f=func(1,2,3,4,a=1,b=2,c=3)
View Code

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

函数的命名空间:

全局命名空间

局部命名空间

内置命名空间

三种命名空间的加载和取值顺序:

加载顺序:内置命名空间(程序运行前加载)》》》全局命名空间(程序运行时:从上到下加载)》》》局部命名空间(程序运行时:调用时加载)

取值顺序:

  在局部调用时:局部命名空间  》》》  全局命名空间  》》》  内置命名空间

  在全局调用时:全局命名空间  》》》  内置命名空间

从小范围,一层一层到大范围去寻找

作用域

全局作用域:内置名称空间,全局名称空间

局部作用域:局部名称空间

globals(),locals()

global关键字

1,声明全局变量

2,在局部变量想要修改全局作用域的全局变量时用global

仅限于int,str

对可变数据类型(list,dict,set)可以直接引用,不用修改

nonlocal关键字

1,不能修改全局变量

2,在局部作用域中,对父级作用域的变量进行引用和修改,并且引用到哪层,从那层及以下的变量全部发生修改。

原文地址:https://www.cnblogs.com/ruoxiruoxi/p/9518062.html