python函数

踮着脚就能够到的不叫目标。

函数的定义:

def func(x , n = 2): //n = 2 是说默认的情况下求的是一个数的平方,注意冒号不能省略

    s =  1 //s 就是最终返回的结果

    while n > 0: // 循环的条件,注意冒号不能省略

          s = s * x//这是函数的主体部分

          n = n - 1//来控制循环次数

    return s//将计算的结果返回出来

注意在设置默认参数的时候,1、必选参数在前,默认参数在后。当默认参数设置在前边的话,python会报语法错误SyntaxError: non-default argument follows default argument..我觉得原因是说,你既然设置了默认的参数在前边,然后当你在调用这个函数的时候,想想逻辑上也过不去啊。2、如何设置函数的参数:当函数有多个参数的时候,将变化大的参数放在前面,变化小的参数放在后面,变化小的参数就可以作为默认参数。

疑问:对于有默认参数的函数来说,调用函数的时候,函数的参数是根据顺序一一对应的,而不是参数的类型?

是可以不按照参数的顺序来进行调用的,但是你需要把参数名写上。

函数的调用:

func(5)  结果是25 ,,默认n = 2 ,求的是平方

func(5,3) 就是5 * 5 * 5 = 125


                                                分割线------可变参数


可变参数:函数传进去的参数的个数是可变的

例:给定一组数字a,b,c,,,,,,,计算a*a + b*b + c*c +.....。定义这个函数,我们必须确定输入的参数。由于参数的个数不确定,我们首先想到的是将a,b,c...作为一个list或tuple传进来,这样函数可以如下定义:

def calc(numbers):

    sum = 0

    for n in numbers:

        sum = sum + n * n

    reutrn sum

但是在调用的时候,需要先组装出一个list或tuple

clac([1,2,3])---14

clac((1,3,5,7))---84

将函数的参数改为可变参数:

def calc(*numbers):

    sum = 0

    for n in numbers:

        sum = sum + n * n

    return sum

定义可变参数和定义一个list或者tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此函数代码完全不变,但是,调用函数的时候,可以传入任意个参数,包括0个参数:

calc(1,2)---5

calc()-----0

对于已经存在的list活着tuple,要调用一个可变参数,Python允许你在list或者tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

nums = [1,2,3,5]

calc(*nums)

#       *nums 表示把nums这个list的所有元素作为可变参数传进去。这种写法很重要。



                                               关键字参数


def person(name,age,**kw)

    print('name:',name,'age:',age,'other:',kw)

extra = {'city':'beijing','job':'Engineer'}

person('mudy',30,**extra)



                                              命名关键字参数


你可能感兴趣的:(python函数)