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 ...
随机推荐
- jQuery选择器之属性筛选选择器
在这么多属性选择器中[attr="value"]和[attr*="value"]是最实用的 [attr="value"]能帮我们定位不同类型 ...
- pandas DataFrame 警告(SettingWithCopyWarning)
转自:https://www.cnblogs.com/pig-fly/p/7875472.html 刚接触python不久,编程也是三脚猫,所以对常用的这几个工具还没有一个好的使用习惯,毕竟程序语言是 ...
- 数据库连接池proxool的两种使用方式
数据库连接池可以通过两种方式来应用,针对web应用和非web应用而来. 非web应用的数据库连接池配置 第一种方式:工厂类 非web应用可以使用工厂模式将数据库连接创建封装在一个工具类中,工具类中又使 ...
- 第二周作业xml学习情况
1.xml简介 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标签没有被预定义.您需要自行定义标签. 它被设计为具有自我描述性. 它是W3C的推荐标 ...
- Python list 增加/插入元素的说明
http://blog.csdn.net/cnmilan/article/details/9259343 在Python中append 用来向 list 的末尾追加单个元素,如果增加的元素是一个lis ...
- PHP09 字符串和正则表达式
学习要点 字符串处理简介 常用的字符串输出函数 常用的字符串格式化函数 字符串比较函数 正则表达式简介 正则表达式语法规则 与perl兼容的正则表达式函数 字符串处理介绍 Web开发中字符串处理 ...
- zay大爷的膜你题 D2T1 江城唱晚
依旧是外链... 这一次网易云爆炸了....所以我决定后面的都用QQ 下面是题面 这道题是一道傻逼题 数学题,我们仔细看一看,首先有m朵花的话,我们就有m!种排列方式(也就是m的全排列), 然后我们假 ...
- Maven实战读书笔记(四):Maven生命周期与插件
Maven的生命周期是对所有构建过程的抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有构建步骤. Maven的生命周期是抽象的,其实际行为是由插件来完成 ...
- Eclipse 总是在编译的时候卡住
之前在开发Unieap项目的时候都是很正常,突然有一天早上总是出现Eclipse在编译的时候卡到34%的位置. 解决办法: 点击停止校验,一直卡在那里,首先在任务管理器杀死eclipse和javaw进 ...
- ibatis经验
1.insert,update,delete 返回值(1).insert 返回的为插入的主键值,但必须在配置文件中加入<selectKey/> 如果主键值为String<sele ...