函数基础相关知识

#标准的函数体

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)
原文地址:https://www.cnblogs.com/qiangayz/p/8598552.html