实例讲解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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
十条建议帮你提高Python编程效率
Feb 16 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
python版百度语音识别功能
Jul 09 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
Python post请求实现代码实例
Feb 28 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
Python实现仿射密码的思路详解
Apr 23 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 Python
分享3个非常实用的 Python 模块
Mar 03 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
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
python中Flask框架简单入门实例
2015/03/21 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python3处理含有中文的url方法
2018/05/10 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
尊老爱幼演讲稿
2014/09/04 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
爱的教育读书笔记
2015/06/26 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers