函数

1、在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

#自创一个求绝对值的函数
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

一旦遇到return函数就执行完毕并返回值。如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。

return就是将值返回给调用函数的地方

2、请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和

def square_of_sum(L):
    return sum(x*x for x in L)            #先定义好元素平方的值
print (square_of_sum([1, 2, 3, 4, 5]))    #直接调用定义好的求平方,然后用sum求和
print (square_of_sum([-5, 0, 5, 15, 25])) 

3、函数可以返回多个值

#从一个位置通过计算速度移动到另一个位置,可得出所需时间
def move(x,y,speed):
    time = abs(x - y) / speed
    return time
#这样就可以直接调用上面的函数,自己创建值
t = move(90,100,1)
print(t)

其实返回的值是一个tuple的形式,所以返回的值还是一个可能包含多个元素的元组

4、位置参数与关键字参数

def test(x,y,z)

#位置参数,必须一一对应,不可多或少
test(1,2,3)    #x = 1,y = 2,z = 3

#关键字参数,无须一一对应,不可多或少
test(x = 1,z = 3,y = 2)

#位置参数必须在关键字参数左边,同样不可多或少
test(1,2,z = 3)

5、参数组arg、kwarg

# *列表(位置参数)
def test(x,*args):
    print(x)
    print(args)

test(1,['x','y','z'])
输出:1
     (['x', 'y', 'z'],)

test(1,*['x','y','z'])
输出:1
     ('x', 'y', 'z')
# **字典(关键字参数)
def test(x,**kwargs):
    print(x)
    print(kwargs)

test(1,y = 2,z = 3)
输出:1
     {'y': 2, 'z': 3}

test(1,{'y' : 2})
报错
test(1,**{'y' : 2})
输出:1
     {'y': 3}

6、前项引用

#错误示范1:
def foo():
    print('from foo')
    bar()
foo()
#错误示范2:
def foo():
    print('from foo')
    bar()

foo()

def bar():
    print('from bar')

#正确示范:
def bar():
    print('from bar')
def foo():
    print('from foo')
    bar()
foo()



def foo():
    print('from foo')
    bar()
def bar():
    print('from bar')
foo()

7、递归

def cale(n):
    print(n)
    if int(n / 2) == 0:
        return n
    else:
        s = cale(int(n/2))
        return s
       
cale(10)

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

原文地址:https://www.cnblogs.com/harvey0414/p/10532932.html