派森小镇的故事
雾霭沉沉,水波澄碧。在一处悠远僻静的地方上有一个神奇的小镇,小镇的名字叫派森镇。小镇的前面有一条河,碧蓝的水映出小镇周围水墨画般朦胧的世界。
小镇上的人一出生就拥有特殊的技能,他们中的每一个人都是python的成员,他们用自己的特殊技能构成了千变万化的python世界,他们可以用自己的特殊身份设计与研发。
这天清晨,派森小镇上一如往常一样宁静和谐。但是在一座小房子里,有一个熊孩子在哭闹。这个熊孩子叫做第三方库函数,由于性格原因显得十分的叛逆。
在派森小镇里,函数是一个大家族。函数是可重用的程序的代码块,函数可以实现代码的复用,更能实现代码一致性。函数代表一个任务或者一个功能,是代码复用的机制。而函数分为内置函数、标准库函数 、第三方库函数。
因为第三方库函数程序的代码块与其他的函数相比不太稳定,所以小函数也成为了一个名副其实的熊孩子。
这天,第三方库函数的父母待着他去海洋馆玩,小函数突然就跑开了,说着“爸爸,妈妈,你们快来看,这里好多鱼啊。”“你慢点跑!”父母嘱托着。
突然,小函数站在装满海洋生物的鱼缸面前,他想要跳下去和小鱼小虾一起游泳。
小函数的这个行为可是吓坏了他的父母,连忙劝他:“小函数,快下来,哪里很危险啊。”
“嘻嘻!这里好好玩啊,我要跳下去,和这些小鱼小虾玩!”
他的父母被吓得魂都飞了,正当小函数要跳下时,海洋馆的工作人员及时赶到,将小函数救了下来。
小函数的父母十分感谢着说:“谢谢你!”
这件事情之后,小函数父母再也不敢带小函数去外面了,这天把小函数关在家里。
但是小函数在家里还是不消停,在家里每天都调皮捣蛋,一会儿把家里的电视机砸坏了,一会儿就在墙上画满了涂鸦,一会又把自己的玩具全部拆坏。小函数的父母看到自己的家变成了这样表示十分无奈。
“哎,这可怎么办啊,小函数怎么才能够不再调皮啊。”
“小函数这么调皮主要是第三方库函数程序设置有问题,咱们还是去变量先生的商店去看看吧。”
“好吧,只能这样了。”
第二天,他们一家去了变量先生的商店。
“变量先生,你看一看小函数吧,他特别的叛逆和调皮。”小函数的父母说道。
“他是第三方库函数吗?”变量先生问道。
“是的。”
“不用担心,一般的第三方数库函数小的时候都很调皮,主要是程序设置的原因。”
随后,变量先生请出了自己的工具,打开电脑设置和程序,使用def定义函数,然后就是一个空格和函数名称,Pytohn执行def时,会创建一个函数对象,并绑定到函数变量名上。
然后使用return 返回值,内置函数对象自动创建,标准库和第三库函数,通过import导入模块时,会执行模块中的def语句。
最后,小函数改变了调皮的性格。
派森先生
大鹏
相关知识---函数
1.函数参数的传递本质是从实参到新参的赋值操作。python中一切皆对象。所有赋值操作都是“引用的赋值”所以参数传递本质上是引用传递。
2.具体操作
(1)对“可变对象”的“写操作”直接作用于原对象本身
(2)对“不可变对象”的“写操作”会产生一个新的“对象空间”,并用新的值填充这些空间
(3)可变对象 :字典 列表 集合 自定义对象等
不可变对象:数字 字符串 元组 function
3.传递可变对象的引用:对同一对象的操作,没有改变原对象
4.传递不可变对象 产生新的对象 对新的对象的操作
5.浅拷贝与深拷贝
(1)浅拷贝 ::不拷贝子对象的内容,只是拷贝子对象的引用
(2)深拷贝 :连子对象的内存一起拷贝,对子对象的修改不影响源对象
6传递不可变对象包含的子对象是可变的,则方法内修改了这个可变对象,原对象也发生了变化。
(二)参数类型
1. 位置参数:函数调用时,实参按默认值位置顺序传递,需要个数和形参匹配,按位置进行的参数称为“位置参数”
2. 默认值参数:我们可以为某些参数设置默认值,这样这些参数在传递时是可选的,称为默认值参数,默认值参数放到位置参数后面
3. 命名参数(关键字参数)按形参名称传递的参数
4. 可变参数:可变数量的参数
(1)带一个星号,将多个参数收集到一个元组里边
(2)带两个星号,将多个参数收集到一个字典里边
(3)将带星号的参数尽量写在后面
(4)在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”
四、lambda表达式和匿名函数
1.lambda表达式声明匿名函数,lambda函数是一种简单,在同一行中定义函数的方法。Lambda函数实际生成一个函数对象
2.lambda只允许包含一个表达式,不能包含复合语句。该表达式计算结果就是函数返回值。
3.语法规则 lambda 参数 :表达式
五、eval函数
1.功能:将字符串当成有效的表达式来求值并返回计算结果
2.语法:eval(source[,globals,[,locals]])->value
(1)source:一个pytohn表达式或函数compile()返回代码对象
(2)globals:可选必须是dicitionary
(3)locals:可选任意映射对象
六、递归函数
1.递归基本思想:自己调用自己
2.递归函数:自己调用自己的函数,在函数体内内部直接调用自己,每个递归必须包含两部分
(1)终止条件:递归什么时候结束,一般用于返回值不在调用自己
(2)递归步骤 把第n步值和第n-1步相关联
3.递归函数会创建大量的函数对象,谨慎使用
二、关键字
1. nonlocal用来在内部函数,声明外层的局部变量
2. Global函数内声明全局变量,然后才使用全局变量
三、LEGB规则
Python查找名称是按照LEGB原则查找的
Local Enclosed Global Built in
Local指的是函数或者类的方法内部
Enclosed:嵌套函数(一个函数包裹另一个函数)
Global :模块中的全局变量
Built in :指的是python为自己保留的特殊名称
派森
先生
派森
先生
大鹏diary