踮着脚就能够到的不叫目标。
函数的定义:
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)