Python学习札记(十一) Function2 函数定义
2017-01-29 11:21
489 查看
参考:定义函数
Note:
先看一段代码实例(Barefoot topo.py):def read_topo(): nb_hosts = 0 nb_switches = 0 links = [] with open("topo.txt", "r") as f: line = f.readline()[:-1] w, nb_switches = line.split() assert(w == "switches") line = f.readline()[:-1] w, nb_hosts = line.split() assert(w == "hosts") for line in f: if not f: break a, b = line.split() links.append( (a, b) ) return int(nb_hosts), int(nb_switches), links
函数功能是,打开topo.txt文件,根据文件内容确定host、switch、link数目,并返回。
函数调用处:
nb_hosts, nb_switches, links = read_topo()
1.Python中函数定义:
def function_name() :
2.函数内部通过条件判断和循环可以实现非常复杂的逻辑。当遇到return语句,函数结束并返回参数。
3.可以通过
from [name] import [function_name]导入函数,注意导入的文件后缀不加.py。
eg.
sh-3.2# more function1.py #!/usr/bin/env python3 def my_function(x) : if str(x) == 'Chen' : b = 'Good' elif str(x) == 'Li' : b = 'Better' else : b = 'Best' print(b) return b sh-3.2# python3 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from function1 import my_function >>> my_function('Chen') Good 'Good' >>>
4.如果在一个判断语句中什么都不想做,则可以使用pass语句。
eg.
if age >= 18 : pass
5.参数检查。
如果传入的参数类型不对,Python解释器无法帮助我们解释。这个时候可以在函数中通过定义raise语句抛出错误,如:
eg.
def my_function(age, x) : if age < 0: raise RuntimeError('age < 0') else : pass if str(x) == 'Chen' : b = 'Good' elif str(x) == 'Li' : b = 'Better' else : b = 'Best' print(b) return b
>>> from function1 import my_function >>> my_function(-1, 'Chen') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/wasdns/Desktop/PythonLearn/function1.py", line 6, in my_function raise RuntimeError('age < 0') RuntimeError: age < 0 >>>
也可以通过方法 isinstance() 进行参数类型检查:
def my_function(age, x) : if age < 0: raise RuntimeError('age < 0') else : pass if not isinstance(x, (str)) : raise TypeError('bad operand type') else : pass
>>> from function1 import my_function >>> my_function(1, 100) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/wasdns/Desktop/PythonLearn/function1.py", line 11, in my_function raise TypeError('bad operand type') TypeError: bad operand type >>>
6.函数返回多个值。Python的函数允许返回多个值,其本质是返回一个tuple。
在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
练习:
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax2 + bx + c = 0
的两个解.
不考虑复数:
#!/usr/bin/env python3 import math def quadratic(a, b, c) : q = b*b - 4*a*c if q > 0 : x1 = -b + math.sqrt(q) x2 = -b - math.sqrt(q) return x1/(2*a), x2/(2*a) else : print('No solutions')
2017/1/28
相关文章推荐
- Python学习札记(十二) Function3 函数参数一
- Python学习札记(十) Function1 函数调用
- Python学习 Part2:深入Python函数定义
- Python学习def函数的定义、使用及参数传递
- Python新手学习基础之函数-概念与定义
- Python学习札记(二十四) 函数式编程5 返回函数
- Python function 函数定义
- python--基础学习(二)判断 、循环、定义函数、继承、调用
- python学习笔记 定义函数
- 【Python学习笔记】定义函数
- 【Python】学习笔记——-3.2、定义函数
- Python学习-10.Python函数定义(二)
- Python学习(一)函数定义、使用与嵌套
- Python 学习笔记 - 9.函数(Function)
- python学习6--函数定义及参数
- 函数名function是一个数据类型,可以赋值 分类: python基础学习 2013-09-12 11:01 366人阅读 评论(0) 收藏
- Python学习笔记——函数定义、调用
- Python学习笔记 - function调用和定义
- python学习-函数定义理解
- WinProc窗口过程定义函数解析-【学习札记】