Python学习日记day5 函数

一.为何要使用函数
函数

  1.避面代码重用spa

  2.提高可读性递归

  3.使程序变得易维护内存

二.函数的定义与调用get

  def helloword(): #函数定义,括号中可加参数ast

    print("get out!")匿名函数

  helloword() #调用函数变量

三.函数参数与局部变量  lambda

  形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。所以,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量map

  实参能够是常量、变量、表达式、函数等,不管实参是何种类型的量,在进行函数调用时,它们都必须有肯定的值,以便把这些值传送给形参。所以应预先用赋值,输入等办法使参数得到肯定值

  def calc(x,y):   #其中x,y就是形参

    print(x+y)

  calc(a,b) #a,b为实参

  1.默认参数:

    def cout(name,sex,country = "CN"):

      print(name,sex,country)

    cout("yungexing","f")

  2.关键参数

    cout(sex="f",name""feilie) #关键参数要在默认参数以后

  3.非固定参数  

  def user_info(name,age,*args):
  print(name,age,args)
  user_info("link",1000,"pig","GoodGame")
>>>link 1000 ('pig', 'GoodGame')

  另外一种非固定参数
  def user_info(name,age,**kwargs):
  print(name,age,kwargs)
  user_info("link",1000,pet= "pig",total = "GoodGame")
>>>link 1000 {'pet': 'pig', 'total': 'GoodGame'}
  args和kwargs在调用函数时均可以不填
  4.局部变量
  name = "link"
  def cout_name():
   print("before change",name)
   name = "zelda"
  print("after change",name)
  cout_name(name)
  print(name)
>>>
before change linkafter
change zelda
link
在函数内改变全局变量,方法以下
 
  name = "link"
  def cout_name():
  global name
  print("before change",name)
   name = "zelda"
   print("after change",name)
  cout_name()
  print(name)
>>>

before change link
after change zelda
zelda

三.嵌套函数

 

def func1():
def func2():
print("the first")
func2()
print("the second")
func1()
print("the last")
>>>

the first
the second
the last

不能够在最外层调用func2,不然会报错。由于函数只有被调用时才会执行

四.递归

  在一个函数内调用自身自己就是递归函数

  

def calc(n):
print(n)
if int(n/2) == 0:
return
else:
return calc(int(n/2))
calc(10)
>>>

10
5
2
1

五.高阶函数

  高阶函数就是将函数名做为参数传入另外一个函数之中,或者返回值之中有函数名,例子以下

  def func1(name,fun2):    fun2(name)

def func2(eg):
print(eg)
func1("Fate",func2)
>>>Fate

六.匿名函数
  
匿名函数就是不须要显示的指定函数
  
  res = map(lambda x:x*x,[1,3,5,7,9])
  for i in res:
   print(i)
>>>

19254981

相关文章
相关标签/搜索