#标准的函数体 def funtionname(x): """ :param x: :return: 函数的说明,强烈建议写,养成良好的编程习惯 """ return x #什么是面向过程编程,即将单个小的功能、顺序、逻辑、写到一个小函数里,再用多个小函数实现过程的逻辑的实现 def test1(): print ("123") def test2(): return 0 def test3(): return 1,2,["q","c","c"] x = test1() #函数1返回None,函数2返回object 1 函数三将所有元素放到一个元素里面返回,如果使用1个变量接受 y = test2() z = test3() #为什么会有返回值?想要函数的执行结果,后续逻辑需要判断此函数来决定是否执行 def funtionname(arg1,arg2): #形参 return arg1,arg2 funtionname(1,2) #实参 #参数组 def funtionname(*args): #参数返回为元组类型(必须接受位置参数) print args def test_four(**kwargs): #参数组传入字典的方式(关键字参数对位置无要求) print (kwargs) test_four(a1="a",a2="b",a3="c") #局部变量与全局变量 局部变量的作用域为函数,只在局部生效 #在局部更改全局的方法:global arg # arg = value 不建议这么用,菜! #全局变量 在函数顶层定义,可以函数内访问,但不可更改其值 #也可在函数内定义global arg # arg = value 不建议这么定义,菜!! #只有字符串,数字等不能在局部改全局,列表,字典、集合等可以在局部即函数里面更改全局 #递归函数 在函数内部调用自身 要求:1、必须有个明确的结束条件/2、问题规模必须比上次少 3、效率低 def calc(n): #对象最深调用次数999 print (n) a = calc(n/2) return a def calc1(n): print (n) if int(n/2)>0: return calc1(int(n/2)) print ("->",n) #高阶函数:将一个函数当做参数传给另一个参数 def add(a,b,f): return f(a)+f(b) res = add(3,-6,abs) #将字符串变为字典类型 list1 = ["a",1,"b",2,"c",3] dict1 = eval(list1)