实例讲解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实现的飞速中文网小说下载脚本
Apr 23 Python
详解Python中的正则表达式
Jul 08 Python
python write无法写入文件的解决方法
Jan 23 Python
Python和Go语言的区别总结
Feb 20 Python
将python文件打包成EXE应用程序的方法
May 22 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
python对execl 处理操作代码
Jun 22 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
python实现定时发送邮件
Dec 23 Python
python3.9之你应该知道的新特性详解
Apr 29 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
咖啡语言
2021/03/03 咖啡文化
PHP分页显示制作详细讲解
2006/10/09 PHP
php防攻击代码升级版
2010/12/29 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
js 页面输出值
2008/11/30 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python抓取网页中链接的静态图片
2018/01/29 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
python小白学习包管理器pip安装
2020/06/09 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
少先队入队活动方案
2014/02/08 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
python可视化之颜色映射详解
2021/09/15 Python