1.函数的命名规则
a.函数名必须以下划线,中文,引文字母开头,中文不推荐;区分大小写
b.函数名不可以使用保留字(if、for、while)和关键字(True、False、None)
2.函数参数
def func(x,y=1,*p,**k)
x为必传参数,y为默认(可选)参数,p为可变长参数(元组形式),k为字典形式
传参的顺序:x,y=1,*p,**k 默认参数的右边不可能有必传参数
实参与形参的个数: 个数不需要相等,只要满足情况即可
def func(x,y=1,*p,**k): 形参:x,y等定义时的参数
x=x+y
func(1,2) 实参:调用时的参数
func(1)
func(1,20,34,5,2,5,2,3)
注:
1.在函数内部直接修改形参的值并不影响外部实参的值,在实参为列表时是错的(特殊情况)
3.有无return的返回的值
def f(x,y): s=x+y return s print(f(1,2)) | def f(x,y): x=x+y return x print(f(1,2)) | def f1(x,y): s=x+y print(f1(1,2)) | def f(x,y): x=x+y print(f(1,2)) |
3 | 3 | None | None |
1.不需要指定return返回值类型
2.没有return语句,则默认返回空值None
3.函数中的return语句不一定可以得到执行(当存在两个的时候),return可以返回多个值
4.全局变量和函数的局部变量
def func(a,b): c=a**2+b b=a return c a=10 b=2 c=func(b,a)+a | def func(a,b,c=1): global x s=a+b+c x=a+b return s x=1 y=2 z=3 d=func(x,y,z) | def func(a,b,c=1): b=10 global x s=a+b+c x=a+b return s x=1 y=2 z=3 d=func(x,y,z) | x,y,z=1,2,3 def f(a,b,c): z,y=3,3 global x s=a+b+c x=y+z y=z n=1 return s c=f(x,z,y) | global 可以使用外部变量,也可以定义局部变量 |
a,b,c=10,2,24 | d,x,y,z=6,3,2,3 | d,x,y,z=14,11,2,3 | c,x,z,y=6,6,3,2 |
注:
1.全局变量和局部变量的命名可以相同
2.不允许使用关键字作为变量名,允许使用内置函数名(len)作为变量名,但是这个会改变函数名的含义
5.声明局部变量和声明全局变量
num = 100 def number_1(): num = 10 def number_2(): global num num+=1 print(num) #101 return num print(num) #10 return number_2() print(number_1()) #101 | num = 100 def number_1(): num_1 = 10 def number_2(): nonlocal num_1 # 局部变量 只有函数内部可以使用 num_1+=1 print(num_1) #11 return num_1 print(num_1) #10 return number_2() print(number_1()) #11 |
>>> 10 101 101 | >>> 10 11 11 |
6.lambda函数
f=lambda x,y:x+y
lambda函数将函数名作为函数结果返回,f的类型为function类型
- 任何传入函数的参数都会以副本的形式存在于函数
- 在函数定义的子函数只能在函数内调用
- 函数可以没有return,也可以return中不带任何返回值。return返回值可以是0个,1个,以及多个结果,但是不能返回表达式,如a=a+1......
简单的说,就是return后面不可以出现”=”(单个”=”不行,但是”==”是可以的)。其他的都是可以的,如函数(sum(x)...),比大小的符号(>,<,==....),变量(前提:这个变量必须存在,不管是在函数里面,还是在函数外面)