#定义一个函数
def sayhi(): #定义函数
print(‘hello I am nobody‘)
sayhi() #调用函数
#函数参数的定义:
def sayhi(name): #定义函数时,括号里写的叫形参
print(‘hello,‘,name, ‘.my name is black girl,‘,‘约吗?-_-‘)
sayhi(‘Alex‘) #调用函数时,括号里写的叫实参。
def cal(x,y):
res=x*y
print(res) #调用时,实参传递给形参,一一对应
cal(3,5) #3传给x,5传给y
#默认参数
def stu_info(name,age,course,country=‘china‘): #把china作为country的默认参数,默认参数必须写在最后
print(‘*******学生信息*******‘)
print(‘姓名:‘,name)
print(‘年龄:‘,age)
print(‘国籍:‘,country)
print(‘课程:‘,course)
stu_info(‘王铁锤‘,23,‘python‘) #不传国籍,则默认为china
stu_info(‘杨叫春‘,27, ‘高数‘)
stu_info(‘山本一狼‘,35, ‘量化金融‘,‘日本‘)
#关键参数
def stu_info(name,age,course,country=‘china‘):
print(‘*******学生信息*******‘)
print(‘姓名:‘,name)
print(‘年龄:‘,age)
print(‘国籍:‘,country)
print(‘课程:‘,course)
stu_info(‘王铁锤‘,course=‘python‘,age=23) #使用关键参数
#非固定参数:把报警信息传送给运维人员
#1.形参前面加*
方式一:
def send_alert(msg,*args):
print(msg,args)
send_alert(‘有黑客侵入‘,‘Alex‘,‘岳云鹏‘,‘铁锤‘)
#方式二:调用时自己打包传给形参
def send_alert(msg,*args):
print(msg,args)
send_alert(‘有黑客侵入‘,*[‘Alex‘,‘岳云鹏‘,‘铁锤‘]) #以列表或元组的形式自己打包,前面要加*
#2.形参加**,以字典形式接收
#方式一:
def send_alert(msg,**kwargs):
print(msg,kwargs)
send_alert(‘有黑客侵入‘,name=‘ji‘,age=23) #以列表或元组的形式自己打包,前面要加*
#方式二:
def send_alert(msg,**kwargs):
print(msg,kwargs)
d={‘name‘: ‘ji‘, ‘age‘: 23}
send_alert(‘有黑客侵入‘,**d)
#返回值
def f():
print(‘OK‘)
return 5 #一个返回值
a=f()
print(a)
def f():
print(‘OK‘)
return 5,‘ko‘,[1,5,‘p‘] #对个返回值会被打包成一个元组
a=f()
print(a)
#作用域
count=10 #全局变量
def outer():
count = 5 #E层局部变量
print(count)
def us():
count=7 #local层局部变量
print(count)
us()
outer()
print(count)
#高阶函数
def sq(n):
return n**2
print(sq(7))
def foo(a,b,f):
return f(a)+f(b)
print(foo(2,3,sq)) #把函数名sq作为实参传给形参f,则foo()就是一个高阶函数
#递归函数
#实现求n的阶乘
def fac(n):
ret=1
for i in range(1,n+1):
ret=ret*i
return ret
print(fac(5))
#用递归实现求n的阶乘
def fac(n):
if n==1: #递归结束的条件
return 1
return n*fac(n-1)
print(fac(5))
#用递归输出Fibonacci数列
def fibo(n):
if n<=1: #递归结束的条件
return n
return fibo(n-1)+fibo(n-2)
for i in range(8):
print(fibo(i))
print(fibo(8))
#用内置函数reduce和lambda实现求阶乘
from functools import reduce
print(reduce(lambda x,y : x*y, range(1,6)))
原文:https://www.cnblogs.com/Finance-IT-gao/p/10367245.html