Python基础教程笔记——第6章:抽象(函数)
(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章:抽象(函数)的更多相关文章
- Python基础教程笔记——第7章:更加抽象(类)
下面进入Python的面向对象: 对象的魔力: 多态:---可以对不同类的对象使用同样的操作 封装:---对外部隐藏对象内部的工作方式 继承:---以普通的类为基础建立专门的类对象 (1)多态: is ...
- Python基础教程笔记——第4章:字典
字典 字典是Python唯一内建的数学映射类型,字典中的值没有特殊的顺序,键可以是数字,字符串,甚至是元组 字典的创建: 字典由键值对构成,字典中键是唯一的,而值不唯一.>>> a_ ...
- Python基础教程笔记——第2章:列表和元组
python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] ...
- Python基础教程笔记——第1章
1.8 函数 pow(x,y) x^y abs(x) 取数的绝对值 round(x) 会把浮点数四舍五入为最接近的整数 floor(x) 向下取整的函数,但是需要先imp ...
- Python基础教程笔记——第5章:条件,循环和其他语句
5.1 print和import的更多信息 1. print()3.0之后print不再是语句,而是函数, >>> print('udg',12,13) udg 12 13 &g ...
- Python基础教程笔记——第3章:使用字符串
字符串是不可修改的,标准序列操作(索引,分片,判断成员资格,求长度,取最大值 最小值)对字符串都是有效的. 格式化字符串,类似于C语言的输出是的感觉. >>> format=&quo ...
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- python基础教程笔记—画幅好画(详解)
今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...
- 《Python基础教程》 读书笔记 第六章 抽象 函数 参数
6.1创建函数 函数是可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> x=1 ...
随机推荐
- 关于<meta NAME="keywords" CONTENT="">
昨天终于以实习身份入职一家小创业公司,今天让我多看看别人的网页怎么写的,发现了一个以前都没关注过的东西. <meta name="keywords" content=&quo ...
- myeclipse 安装svn(subeclipsesite)插件
(1)到官网下载subeclipsesite,下载最新的版本:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=224 ...
- 数据库系统概论(2)——Chap. 2 关系数据库基础
数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...
- Python3基础教程(十九)—— 项目结构
本节阐述了一个完整的 Python 项目结构,你可以使用什么样的目录布局以及怎样发布软件到网络上. 创建Python项目 我们的实验项目名为 factorial,放到 /home/shiyanlou/ ...
- 20针,14针,10针JTAG引脚对应关系
J-Link是常用的调试工具,用于程序的调试和下载.常用的J-Link的的接口有很多种,常见的有20针,14针和10针. J-Link可以使用JTAG方式下载调试程序,也可以使用SWD方式.从引脚方面 ...
- table、tr、td表格的行、单元格等属性说明
table.tr.td表格的行.单元格等属性说明 <table>标签定义HTML表格.简单的HTML表格由table元素以及一个或多个tr.th或td元素组成. tr元素定义表格行,th元 ...
- celery worker集群搭建
举个小栗子,在生产环境下,我们有两个异步任务需求,需要分别部署在两台服务器上,并用不同的队列实现 用户邮件发送 pageview统计 主要的注意点,在任务执行时需指定queue,routing_key ...
- Linux vim指令学习
每天查看一遍vim文档 Linux系统下命令:$ vimtutor 1.可视模式([v] 或者 [Ctrl + v])下的[U]把选中的文本变为大写 .[u]把选中的文本变为小写. 2.[数字] + ...
- php微信公众号开发之快递查询
[文章来源:脚本之家 文章地址:https://www.jb51.net/article/149205.htm] 本文实例为大家分享了php微信公众号开发之快递查询的具体代码,供大家参考,具体内容 ...
- Python自动化测试框架——生成测试报告
如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢? 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前,我们需要下载HTMLTestRunner.py ...