实例讲解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并发2之使用asyncio处理并发
Dec 21 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
解决DataFrame排序sort的问题
Jun 07 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
使用django自带的user做外键的方法
Nov 30 Python
pandas将list数据拆分成行或列的实现
Dec 13 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
下载文件的点击数回填
2006/10/09 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
三查三看党性分析材料
2014/02/18 职场文书
售房协议书范本2014
2014/10/23 职场文书
围城读书笔记
2015/06/26 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python