实例讲解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 相关文章推荐
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
简单谈谈python基本数据类型
Sep 26 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Django实现网页分页功能
Oct 31 Python
python numpy数组复制使用实例解析
Jan 10 Python
pytorch+lstm实现的pos示例
Jan 14 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
Python包和模块的分发详细介绍
Jun 19 Python
Python实现简单猜数字游戏
Feb 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
Terran兵种介绍
2020/03/14 星际争霸
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
脚本收藏iframe
2006/07/21 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
廉洁自律承诺书2015
2015/01/22 职场文书
亮剑精神观后感
2015/06/05 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
Python基本的内置数据类型及使用方法
2022/04/13 Python