首页 > 其他 > 详细

函数相关内容

时间:2019-02-12 22:29:01      阅读:205      评论:0      收藏:0      [点我收藏+]
#定义一个函数
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!