实例讲解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 中的列表解析和生成表达式
Mar 10 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Django与JS交互的示例代码
Aug 23 Python
python基于http下载视频或音频
Jun 20 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
NumPy排序的实现
Jan 21 Python
Python文件时间操作步骤代码详解
Apr 13 Python
Python常用类型转换实现代码实例
Jul 28 Python
Python离线安装各种库及pip的方法
Nov 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
img的onload的另类用法
2008/01/10 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
素食餐饮项目创业计划书
2014/02/02 职场文书
粗加工管理制度
2014/02/04 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript