本文最后更新于 2022-05-26 11:25:30
function 函数
函数的创建
1 2 3
| def 函数名([输入参数]): 函数体 [return xxx]
|
1 2 3
| def calc(a,b): c=a+b return c
|
函数参数传递
1 2 3 4 5 6 7 8 9
| def func1(a, b): return a - b
var1 = func1(1, 2) print(var1)
print(func1(b=1, a=2))
|
参数传递类型
1 2 3 4 5 6 7 8 9 10 11 12 13
| def func2(arg1,arg2): print(arg1) print(arg2) arg2.append(1) arg1=1
var2= 11 var3=[11,22,33] func2(var2,var3) print(var2) print(var3)
|
函数返回多个值
1 2 3 4 5 6 7 8 9 10 11 12
| def func3(num): odd=[] even=[] for i in num: if i%2: odd.append(i) else : even.append(i) return odd,even print(func3([1,2,3,4,5,6,8,9]))
|
函数参数默认值
1 2 3 4 5 6 7 8 9
| def func4(a,b=10): return a+b
print(func4(10)) print(func4(10, 20))
|
可变位置形参
1 2 3 4 5 6 7 8 9 10
| def func5(*args): print(args)
func5(1) func5(1,2) func5(1,2,3)
|
可变位置关键字形参
1 2 3 4 5 6 7 8
| def func6(**args): print(args)
func6(a=1,b=2) func6(kk=1,vv=1)
|
多种可变类型形参组合
1 2 3 4 5 6 7 8 9
|
def func7(*args1,**args2): print(args1) print(args2)
func7(1,2,3,a=11,b=22)
|
将list转换为位置实参传入
1 2 3 4 5 6 7 8 9 10 11
| func7(1,2,3,a=11,b=22)
def func7(a,b,c): print(a,b,c) lst=[1,2,3] func7(*lst)
|
将dict转为关键字实参传入
1 2 3 4 5
|
dic2={'a':1,'c':2,'b':3}
func7(**dic2)
|
指定特定的参数使用关键字实参传递
1 2 3 4 5 6 7 8
| def func8(a,b,*,c,d): print(a) print(b) print(c) print(d)
func8(1,2,c=4,d=3)
|
变量作用域
1 2 3 4 5 6 7 8 9 10 11 12 13
| var4 = 1 age = 1 def fun9(a, b): global age c = a + b
age = c print(c) print(var4)
print(age)
|
1 2 3 4 5 6 7 8 9 10 11
|
def func(): name = 'pythontab' def foo(): nonlocal name name = 'pythontab.com' foo() print(name) func()
|
global和nonlocal区别
- 两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)
- 两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量
递归函数
1 2 3 4 5 6 7
| def func10(n): if(n==1): return 2 else: return n*func10(n-1) print(func10(10))
|
09function
https://jiajun.xyz/2020/10/26/python/01base/09function/