zoukankan      html  css  js  c++  java
  • Python基础教程笔记——第6章:抽象(函数)

    (1)计算裴波那契数列:

    1 fbis=[0,1]
    2 num=int(input("please input the number"))
    3 for i in range(num-2):
    4     fbis.append(fbis[-2]+fbis[-1])
    5 print(fbis)      

    6.3 创建函数

    callable():函数可以确定函数是否可以被调用

    最简单的例子:

    1 def hello(name):
    2     return "hello"+name+"are you OK?"

    输入个数,输出裴波那契数列的函数

     1 def fbis(num):
     2     if num<=0:
     3         return "input error"
     4     if num==1:
     5         return [0]
     6     if num==2:
     7         return [0,1]
     8     f=[0,1]
     9     for i in range(num-2):
    10         f.append(f[-1]+f[-2])
    11     return f

    记录函数:给函数写说明文档和查看函数的说明文档

    1 def hello(name):
    2     'this is a print function'#函数说明文档作为字符串
    3     print("hello "+name)
    4 
    5 #查看函数文档
    7 >>> hello.__doc__
    8 'this is a print function'

    6.4 函数参数

    函数的参数和C,C++一样也是值传递

    下面两种情况下参数的改变对实参的影响不同

     1 def change(name):
     2     name[0]='yanliang'
     3 
     4 #这里直接将列表a传入,实参和形参变量引用同一个列表
     5 >>> a=['fun','a']
     6 >>> change(a)
     7 >>> a
     8 ['yanliang', 'a']
     9 
    10 #这里行参为实参的一个拷贝,两个是独立的
    11 >>> a=['fun','s']
    12 >>> change(a[:])
    13 >>> a
    14 ['fun', 's']

     split 拆分函数,针对的是字符串

    1 >>> b='yang liang'
    2 >>> b
    3 'yang liang'
    4 >>> a=b.split()
    5 >>> a
    6 ['yang', 'liang']

     下面是一个初始化函数

    1 #初始化的函数
    2 def init(name):
    3     name['first']={}
    4     name['last']={}
    5     name['all']={}
    6 ##>>> stroge={}
    7 ##>>> init(stroge)
    8 ##>>> stroge
    9 ##{'all': {}, 'first': {}, 'last': {}}

    关键字参数和默认值

    本来一般函数在调用时,各个参数的名字要和函数体是一一对应的。

    在这里只要在函数调用时,把形参名也给出来,那么就算顺序不对也没有关系。

    1 def hello1(name,greet):
    2     print(name+"###"+greet)
    3 
    4 >>> hello1(greet='func',name='yanliang')
    5 yanliang###func

    函数可以提供默认参数

    1 def hello1(name='yan',greet='hello'):
    2     print(name+"###"+greet)
    3 
    4 >>> hello1(name='yanliang')
    5 yanliang###hello

    用户提供任意多个参数,采用*来收集参数

    1 def hell0(*name):
    2     print(name)
    3 
    4 >>> hell0('yan','liang')
    5 ('yan', 'liang')#这里的输出作为一个元组

    还有一种**的方法

    1 def hello1(x,y,z=3,*name1,**name2):
    2     print(x,y,z)
    3     print(name1)
    4     print(name2)
    5     
    6 >>> hello1(1,2,4,5,6,7,89,ho=2,ju=3)
    7 1 2 4
    8 (5, 6, 7, 89)
    9 {'ho': 2, 'ju': 3}#将加了关键字的变成了一个字典

     反转过程:这里不是将参数收集起来,而是将参数分配出去

    第一种:* 将元组分配出去

    1 def add1(x,y):
    2     return x+y
    3 
    4 >>> parms=(1,2)
    5 >>> add1(*parms)
    6 3

    第二种:**将字典解析出来

    1 def hello1(name,greet):
    2     print(name+' ### '+greet)
    3 
    4 >>> zidian={'name':'yanliang','greet':'hello'}
    5 >>> hello1(**zidian)
    6 yanliang ### hello

    6.5 作用域

     除了全局作用域外每一个函数的调用都会创建一个新的作用域。

    6.6 递归

    (1)阶乘:

    1 def jiechen(n):
    2     if n==1:
    3         return 1
    4     else:
    5         return jiechen(n-1)*n

    (2)求幂:

    1 def powerd(x,n):
    2     if n==1:
    3         return x
    4     else:
    5         return powerd(x,n-1)*x
  • 相关阅读:
    Lucene搜索引擎例子demo
    java Log4j日志配置详解大全
    java获取当前上一周、上一月、上一年的时间
    Django组件-cookie与session
    前端基础之jQuery
    Django组件-forms
    Django组件-分页器
    Django-Ajax
    Django模型层-多表操作
    Django模型层-单表操作
  • 原文地址:https://www.cnblogs.com/yanliang12138/p/4712601.html
Copyright © 2011-2022 走看看