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

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

6.3 创建函数

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

最简单的例子:

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

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

 def fbis(num):
if num<=0:
return "input error"
if num==1:
return [0]
if num==2:
return [0,1]
f=[0,1]
for i in range(num-2):
f.append(f[-1]+f[-2])
return f

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

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

6.4 函数参数

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

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

 def change(name):
name[0]='yanliang' #这里直接将列表a传入,实参和形参变量引用同一个列表
>>> a=['fun','a']
>>> change(a)
>>> a
['yanliang', 'a'] #这里行参为实参的一个拷贝,两个是独立的
>>> a=['fun','s']
>>> change(a[:])
>>> a
['fun', 's']

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

 >>> b='yang liang'
>>> b
'yang liang'
>>> a=b.split()
>>> a
['yang', 'liang']

下面是一个初始化函数

 #初始化的函数
def init(name):
name['first']={}
name['last']={}
name['all']={}
##>>> stroge={}
##>>> init(stroge)
##>>> stroge
##{'all': {}, 'first': {}, 'last': {}}

关键字参数和默认值

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

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

 def hello1(name,greet):
print(name+"###"+greet) >>> hello1(greet='func',name='yanliang')
yanliang###func

函数可以提供默认参数

 def hello1(name='yan',greet='hello'):
print(name+"###"+greet) >>> hello1(name='yanliang')
yanliang###hello

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

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

还有一种**的方法

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

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

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

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

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

 def hello1(name,greet):
print(name+' ### '+greet) >>> zidian={'name':'yanliang','greet':'hello'}
>>> hello1(**zidian)
yanliang ### hello

6.5 作用域

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

6.6 递归

(1)阶乘:

 def jiechen(n):
if n==1:
return 1
else:
return jiechen(n-1)*n

(2)求幂:

 def powerd(x,n):
if n==1:
return x
else:
return powerd(x,n-1)*x

Python基础教程笔记——第6章:抽象(函数)的更多相关文章

  1. Python基础教程笔记——第7章:更加抽象(类)

    下面进入Python的面向对象: 对象的魔力: 多态:---可以对不同类的对象使用同样的操作 封装:---对外部隐藏对象内部的工作方式 继承:---以普通的类为基础建立专门的类对象 (1)多态: is ...

  2. Python基础教程笔记——第4章:字典

    字典 字典是Python唯一内建的数学映射类型,字典中的值没有特殊的顺序,键可以是数字,字符串,甚至是元组 字典的创建: 字典由键值对构成,字典中键是唯一的,而值不唯一.>>> a_ ...

  3. Python基础教程笔记——第2章:列表和元组

    python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] ...

  4. Python基础教程笔记——第1章

    1.8 函数 pow(x,y) x^y abs(x)          取数的绝对值 round(x)   会把浮点数四舍五入为最接近的整数 floor(x)     向下取整的函数,但是需要先imp ...

  5. Python基础教程笔记——第5章:条件,循环和其他语句

    5.1 print和import的更多信息 1. print()3.0之后print不再是语句,而是函数, >>> print('udg',12,13)   udg 12 13 &g ...

  6. Python基础教程笔记——第3章:使用字符串

    字符串是不可修改的,标准序列操作(索引,分片,判断成员资格,求长度,取最大值 最小值)对字符串都是有效的. 格式化字符串,类似于C语言的输出是的感觉. >>> format=&quo ...

  7. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  8. python基础教程笔记—画幅好画(详解)

    今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...

  9. 《Python基础教程》 读书笔记 第六章 抽象 函数 参数

    6.1创建函数 函数是可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> x=1 ...

随机推荐

  1. Mac Outlook 15 连接office365 一直跳出登录框的问题

    解决: 比如 原登录用户名密码为 abc@xxx.com 密码:***** 改一下outlook帐号中的登录用户名为:xxx.com\abc   密码为原来密码,尝试连接,连接状态会连上,但过会儿又提 ...

  2. Pow挖矿流程

    Pow挖矿流程 POW即工作量的证明,主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作. Pow挖矿即不断接入新的Block延续Block C ...

  3. Javaweb学习笔记4—Reuest&Response

    今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣 ...

  4. java读取大文件 超大文件的几种方法

    java 读取一个巨大的文本文件既能保证内存不溢出又能保证性能       import java.io.BufferedReader; import java.io.File; import jav ...

  5. react基础语法(一)元素渲染和基础语法规则

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. spring 常见的注解

    spring中的注解都必须在配置文件中进行如下的配置: <context:component-scan base-package="com.shanjin.oxm.service.im ...

  7. javaee 第14周

    1.web server Web Server中文名称叫网页服务器或web服务器.WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务.Web服务器可以解析( ...

  8. 第一周作业javaee strainmap

  9. Oracle的Central Inventory和Local inventory详解

    很多朋友对Oracle的inventory信息不太了解以至遇到相关的问题不知道如何处理,这篇文章我们将详细讲解Oracle的Central Inventory (oraInventory)和Local ...

  10. 1.3 jieba中文处理+安装

    第一次接触这个工具,是在研一上学期的一门课里.由于要做课程设计论文,我当时选择做中文分词处理,自然而然就接触到这个工具了. 但是呢,由于研究生研究方向与NLP无关,也就没有深入的研究过. 现在由于工作 ...