实例讲解Python中函数的调用与定义


Posted in Python onMarch 14, 2016

调用函数:

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
 
# 函数调用 
>>> abs(100) 
100 
>>> abs(-110) 
110 
>>> abs(12.34) 
12.34 
>>> abs(1, 2) 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: abs() takes exactly one argument (2 given) 
>>> abs('a') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: bad operand type for abs(): 'str' 
>>> max(1, 2) 
2 
>>> max(2, 3, 1, -5) 
3 
>>> int('123') 
123 
>>> int(12.34) 
12 
>>> str(1.23) 
'1.23' 
>>> str(100) 
'100' 
>>> bool(1) 
True 
>>> bool('') 
False 
>>> a = abs # 变量a指向abs函数,相当于引用 
>>> a(-1) # 所以也可以通过a调用abs函数 
1 
 
>>> n1 = 255 
>>> n2 = 1000 
>>> print(hex(n1)) 
0xff 
>>> print(hex(n2)) 
0x3e8

定义函数:

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
 
#函数定义 
def myAbs(x): 
 if x >= 0: 
  return x 
 else: 
  return -x 
 
a = 10 
myAbs(a) 
 
def nop(): # 空函数 
 pass

pass语句什么都不做 。
实际上pass可以用来作为占位符,比如现在还没想好怎么写函数代码,就可以先写一个pass,让代码运行起来。  
  

if age >= 18: 
 pass 
#缺少了pass,代码就会有语法错误 
>>> if age >= 18: 
... 
 File "<stdin>", line 2 
 
 ^ 
IndentationError: expected an indented block 
 
>>> myAbs(1, 2) 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: myAbs() takes 1 positional argument but 2 were given 
>>> myAbs('A') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
 File "<stdin>", line 2, in myAbs 
TypeError: unorderable types: str() >= int() 
>>> abs('A') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: bad operand type for abs(): 'str' 
 
def myAbs(x): 
 if not isinstance(x, (int, float)): 
  raise TypeError('bad operand type') 
 if x >= 0: 
  return x 
 else: 
  return -x 
 
>>> myAbs('A') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
 File "<stdin>", line 3, in myAbs 
TypeError: bad operand type

 
返回两个值?  

import math 
def move(x, y, step, angle = 0): 
 nx = x + step * math.cos(angle) 
 ny = y - step * math.sin(angle) 
 return nx, ny 
 
>>> x, y = move(100, 100, 60, math.pi / 6) 
>>> print(x, y) 
151.96152422706632 70.0

 
其实上面只是一种假象,Python函数返回的仍然是单一值 。

>>> r = move(100, 100, 60, math.pi / 6) 
>>> print(r) 
(151.96152422706632, 70.0)

实际上返回的是一个tuple! 
但是,语法上,返回一个tuple可以省略括号,  而多个变量可以同时接受一个tuple,按位置赋给对应的值。 
所以,Python的函数返回多值实际就是返回一个tuple,但是写起来更方便。  
  函数执行完毕也没有return语句时,自动return None。 
 
练习  :

import math 
def quadratic(a, b, c): 
 x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a) 
 x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a) 
 return x1, x2 
 
x1, x2 = quadratic(2, 5, 1) 
print(x1, x2) 
 
>>> import math 
>>> def quadratic(a, b, c): 
...  x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a) 
...  x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a) 
...  return x1, x2 
... 
>>> x1, x2 = quadratic(2, 5, 1) 
>>> print(x1, x2) 
-0.21922359359558485 -2.2807764064044154
Python 相关文章推荐
Python Matplotlib库入门指南
May 18 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
深入浅析Python传值与传址
Jul 10 Python
python实现flappy bird小游戏
Dec 24 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
python3实现飞机大战
Nov 29 Python
浅谈Python中的正则表达式
Jun 28 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 #Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 #Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 #Python
Python中的列表生成式与生成器学习教程
Mar 13 #Python
jupyter安装小结
Mar 13 #Python
Ubuntu下安装PyV8
Mar 13 #Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 #Python
You might like
php db类库进行数据库操作
2009/03/19 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
python plotly画柱状图代码实例
2019/12/13 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
盛大二次面试题
2016/11/18 面试题
医学生实习自荐信
2013/10/01 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
小学三年级作文之写景
2019/11/05 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python