def szys(a,b,c):
if c == '求和':
d = a + b
elif c == '求乘积':
d = a * b
elif c == '求幂':
d = a ** b
else:
d = a - b
return d
a = int(input('请输入a:
'))
b = int(input('请输入b:
'))
c = input('请输入c:
')
print(szys(a,b,c))
请输入a:
5
请输入b:
4
请输入c:
求幂
625
2.函数的参数
1)必备参数 以正确的顺序传入函数,调用时的数量必须和声明时的一样。
def move(x, y, step, angle=0):
nx = x + step + angle
ny = y - step - angle
return nx, ny
move(11,22)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-0d9a8cf7bc14> in <module>()
----> 1 move(11,22)
TypeError: move() missing 1 required positional argument: 'step'
2)命名参数 用参数的命名确定传入的参数值。可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。
def tiktok(x, y, step, angle=0):
nx = x - step * angle
ny = y + step - angle
return nx, ny
tiktok(y=23,x=66,step=24)
(66, 47)
3)缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
def facebook(x, y, step, angle=0): nx = x - step * angle ny = y + step - angle return nx, ny
facebook(y=23,x=66,step=24,angle=1)
(42, 46)
4)不定参数 如需一个函数能处理比当初声明时更多的参数,这些参数叫做不定参数。
def buding(*bd): print(bd) buding(1,2,3)
(1, 2, 3)
def tin(x,*yy): print(x) print(yy) tin(1,2,3,4,5,6,7)
1 (2, 3, 4, 5, 6, 7)
def ceshi(**zd): print(zd) ceshi(**{'mignzi':'bob','tizhong':'5公斤'})
{'mignzi': 'bob', 'tizhong': '5公斤'}
def ceshi(*zd): print(zd) ceshi({'sd':'sa','sddd':'yhn'})
({'sd': 'sa', 'sddd': 'yhn'},)
3.全局变量与局部变量
1)局部变量 函数内部的变量名,如果第一次出现,且出现在“=”前面,就被视为定义一个局部变量。
shuzi = 100 def lizi(): shuzi = 233 print(shuzi) lizi()
233
shuzi2 = 111 def fff(): shuzi2 = shuzi2 + 1 print(shuzi2) fff()
--------------------------------------------------------------------------- UnboundLocalError Traceback (most recent call last) <ipython-input-21-e4a46d02496b> in <module>() 5 print(shuzi2) 6 ----> 7 fff()
<ipython-input-21-e4a46d02496b> in fff() 2 3 def fff(): ----> 4 shuzi2 = shuzi2 + 1 5 print(shuzi2) 6
UnboundLocalError: local variable 'shuzi2' referenced before assignment
2)全局变量 函数内部的变量名,如果第一次出现,且出现在“=”后面,且该变量在全局域中已定义, 则这里将引用全局变量。
shuzi3 = 45 def po(): y = shuzi3 + 25 print(y) po()
70
lie = [1,2,31,44] def lieb(): lie.append(2333) print(lie) lieb()
[1, 2, 31, 44, 2333]
4.匿名函数lambda
hanshu = lambda x,y : x if x<y else y hanshu(4,2)
2
def qjxz(s,f): if s<f: return s else: return f qjxz(4,2)
2
chengfa = lambda j,k : j*k chengfa(4,6)
24
1)filter函数 用于指定过滤列表元素的条件
yanshi =[1,2,3,4,5,6,7,8,9] fil = filter(lambda x : x%3==0,yanshi) list(fil) #filter函数返回的是一个数组,此时要用list
[3, 6, 9]
2)map函数 用于指定对列表中的每一个元素的共同操作
yanshi2 = [2,4,5,3,2,58,66,70]
ma = map(lambda t: t*2,yanshi2)
list(ma)
[4, 8, 10, 6, 4, 116, 132, 140]
5.递归函数
def digui(nn):
if nn == 1:
return 0
return nn * digui(nn-1) #--digui(4)
digui(5)
#现在要计算的是digui(5),把数值代入进去计算
#nn不等于1,5*digui(4).digui(4)等于多少呢?再次计算
#nn不等于1,5*4*digui(3).digui(3)等于多少呢?再次计算
#nn不等于1,5*4*3*digui(2).digui(2)等于多少呢?再次计算
0
5xdigui(4) 5x4xdigui(3) 5x4x3xdigui(2) 5x4x3x2x1
lmd_dg = lambda n:1 if n==0 else n * lmd_dg(n-1)
lmd_dg(5)
120