_Python定义方法
def 定义一个方法
在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python中内置排序的方法),在编程中,我们肯定是会多次用到这个功能的,如果我们每次都在要用这个功能时,都去写一遍,那实在是太影响编程效率了,这时我们就可以通过def去定义一个排序的方法,那么我们就可以在要使用的时候直接调用即可,而不需要去重写代码
事实上,我们之前也接触过很多内置方法,比如len()获取一个列表的元素个数,或者是split()对字符串或列表进行切片,当然还有针对列表的排序方法sort()
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
In [9]: My_list = [45, 345, 56, 233 ,456 ,23423, 56 ,234, 3452,212]In [10]: My_list.sort()In [11]: My_listOut[11]: [45, 56, 56, 212, 233, 234, 345, 456, 3452, 23423]In [12]: len(My_list )Out[12]: 10 | 
定义一个方法的语法结构
def后面接你定义的方法的名称,名称后面要加一对括号,括号里你可以写你需要操作的元素,也就是形参,如果你的方法只是输出或是不需要操作数值元素的,你也可以不加参数,然后这一行接一个冒号,下面你就可以来定义你的方法
在调用的时候直接方法名称后面加上括号就行,括号里放实参,注意不管有没有参数,调用时都要加括号,和定义方法一样
例如不加参数:
| 
 1 
2 
3 
4 
5 
6 
 | 
In [13]: def hello():    ...:     print("hello susmote")    ...:In [14]: hello()hello susmote | 
传递参数
| 
 1 
2 
3 
4 
5 
6 
7 
 | 
In [15]: def add(a, b):    ...:     res = a + b    ...:     print(res)    ...:In [16]: add(25, 53)78 | 
下面的方法你可以写一个return 语句,return 后面接一个你需要返回的值,和前面说的一样,如果不需要返回值,你也可以不写return语句
注意,在定义一个方法时,return 语句代表着结束,后面的语句不会再执行,所以一般在方法定义的最后一行写return语句
如果你这个函数有返回值,那么你就可以直接把函数的执行结果直接赋值给一个变量(或者是直接打印)
| 
 1 
2 
3 
4 
5 
6 
7 
8 
 | 
In [19]: def add(a, b):    ...:     return a+b    ...:In [20]: res = add(10, 19)In [21]: print(res)29 | 
| 
 1 
2 
3 
4 
5 
6 
 | 
In [22]: def add(a, b):    ...:     return a+b    ...:In [23]: print(add(10, 19))29 | 
下面我们通过写一个求斐波那契数列的方法来增强对定义方法的理解
斐波那契数列:这个数列从第3项开始,每一项都等于前两项之和。想详细了解的话,可自行上网搜索
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 | 
In [24]: def fib(n):    ...:     a, b = 0, 1    ...:     while a < n:    ...:         print(a, end=" ")    ...:         a,b = b,a+b    ...:     print()    ...:In [25]: fib(10)0 1 1 2 3 5 8 | 
我简单的讲解以上代码:
首先定义了一个fib()方法,传了一个形式参数n,这个n是作为一个限制,实际意义是求所有的不大于n的斐波那契数列中的值
然后在下面是一个赋值语句,这种语法在Python中应该是独有的,前面的变量分别对应后面的值,一一对应,把0赋给了a, 1赋给了b
然后就是一个while语句,也就是我前面说的传进来的参数 n 的作用,只要是值不大于n就继续循环,知道最后大于n跳出循环
第四行语句,输出这个数列中的值,在这里我们要注意,print方法后面是可以加很多参数的,这个我们后续会仔细讲,end=“ ”,意思就是,每次都以一个空格结尾,等价于,print(a , " ")
然后下面又是一个赋值语句
注意它们是按照顺序来执行赋值语句的,先把b的值赋给了a,再把a+b的值赋给了b
最后是一个print(),是用来换行的,这个不多说了
然后在这里我们要明白定义的方法是一个对象,并不能直接通过print输出
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 | 
In [26]: def fib(n):    ...:     a, b = 0, 1    ...:     while a < n:    ...:         print(a, end=" ")    ...:         a,b = b,a+b    ...:     print()    ...:In [27]: fibOut[27]: <function __main__.fib> | 
我们还可以吧这个方法赋给一个变量
| 
 1 
2 
3 
4 
 | 
In [30]: f = fibIn [31]: f(10)0 1 1 2 3 5 8 | 
前面我们讲了return语句应该在什么情况下写上,当时我只是很浅显的介绍了,其实不管你加不加都是会返回值的
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
In [33]: def add(a, b):    ...:     print(a + b)    ...:In [34]: ret = add(10, 19)29In [35]: print(ret)None | 
如果你没有加return的话,那么会默认返回一个None
return不仅能够返回简单的数值字符类型,还能返回列表、字典等高级数据类型
例如把斐波那契数列中的值都存到一个列表中,然后通过return返回
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
 | 
In [40]: def fib_list(n):    ...:     result = []    ...:     a,b = 0,1    ...:     while a < n:    ...:         result.append(a)    ...:         a, b = b, a+b    ...:     return result    ...:In [41]: my_fib_list = fib_list(100)In [42]: my_fib_listOut[42]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] | 
上面的代码相信应该不需要多讲了吧,append在前面讲列表的时候讲到过,对一个列表增加数据
_Python定义方法的更多相关文章
- 09_Python定义方法_Python编程之路
		
有关Python判断与循环的内容我们上几节已经跟大家一起学习了,这一节我们主要针对def 做一个讲解 def 定义一个方法 在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python ...
 - JavaScript简单对象的定义方法
		
工厂模式: 初级开发者可能会这样定义对象: var obj = new Object(); obj.name = "hero"; obj.showName=function (){ ...
 - Pyqt 控件的信号槽事件定义方法
		
转载来自:http://my.oschina.net/midnite/blog/39399 Qt采用信号槽来设定UI界面上元素动作的事件绑定.自Qt4.5开始,引入了一个新的信号槽与事件绑定的方法.界 ...
 - Matlab中函数定义方法
		
Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...
 - 【翻译十六】java-固定对象的定义方法
		
A Strategy for Defining Immutable Objects The following rules define a simple strategy for creating ...
 - 几种常用的JS类定义方法
		
几种常用的JS类定义方法 // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { return ...
 - JS function的定义方法,及function对象的理解。
		
废话篇: 今天看到了Function的内容,各种晕,各种混淆有木有.简直是挑战个人脑经急转弯的极限啊.不过,最终这一难题还是被我攻克了,哇咔咔.现在就把这东西记下来,免得到时候又忘了就悲催了.... ...
 - js中使用使用原型(prototype)定义方法的好处
		
经常在前端面试或是和其他同行沟通是,在谈到构造在JS定义构造函数的方法是最好使用原型的方式:将方法定义到构造方法的prototype上,这样的好处是,通过该构造函数生成的实例所拥有的方法都是指向一个函 ...
 - JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)
		
第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.col ...
 
随机推荐
- linux虚拟机中安装vm_tool的方法及用处
			
解决问题:实现虚拟机VMware上linux与windows互相自由复制与粘贴.如在同一个系统下ctrl+c 与ctrl+v一样方便.解决了只能通过U盘摆渡复制的繁琐问题. 系统环境: 虚拟机VMwa ...
 - JAVA学习调查问卷——20145101
			
1.你对自己的未来有什么规划?做了哪些准备? 我希望在未来不管自己是否从事机要工作,都要做一个有能力,对社会能有所贡献的人.所以在现阶段我应该努力学习基础知识,夯实基本功,具备成为合格机要人的素质. ...
 - 20145312《网络对抗》MSF基础
			
20145312<网络对抗>MSF基础 实验要求 1.掌握metasploit的基本应用方式 2.掌握常用的三种攻击方式的思路 实验问答 用自己的话解释什么是exploit.payload ...
 - poj 1274 The Perfect Stal - 网络流
			
二分匹配传送门[here] 原题传送门[here] 题意大概说一下,就是有N头牛和M个牛棚,每头牛愿意住在一些牛棚,求最大能够满足多少头牛的要求. 很明显就是一道裸裸的二分图最大匹配,但是为了练练网络 ...
 - C++ 细小知识点
			
1. C++ 拷贝构造函数参数为const类型 原因:因为复制构造函数是用引用方式传递复制对象,引用方式传递的是地址,因此在构造函数内对该引用的修改会影响源对象,防止源对象被修改,就要把参数类型设为c ...
 - 骁龙820和KryoCPU:异构计算与定制计算的作用 【转】
			
本文转载自:https://www.douban.com/group/topic/89037625/ Qualcomm骁龙820处理器专为提供创新用户体验的顶级移动终端而设计.为实现消费者所期望的创新 ...
 - ubuntu16.04下内核模块解析
			
一.环境如下: 1.1内核版本: jello@jello:~$ uname -a Linux jello 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19: ...
 - POJ 1236 Network of Schools(tarjan)题解
			
题意:一个有向图.第一问:最少给几个点信息能让所有点都收到信息.第二问:最少加几个边能实现在任意点放信息就能传遍所有点 思路:把所有强连通分量缩成一点,然后判断各个点的入度和出度 tarjan算法:问 ...
 - Dubbo学习参考
			
参考博客: 小宝鸽:https://blog.csdn.net/u013142781/article/details/50387583 https://blog.csdn.net/u013142781 ...
 - NOIP2018 退役记
			
NOIP挂完,OI再见 AFO Day 0 早上的高铁,1点多到广州,2点多到酒店,下午就是颓颓颓,然后晚上随便刷了一下板子,反正PJ也没啥板子可以刷 就这样浪费了一天,我到底在干嘛 Day 1 早上 ...