实例讲解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迭代器的使用方法实例
Nov 21 Python
Python中optionParser模块的使用方法实例教程
Aug 29 Python
Python2随机数列生成器简单实例
Sep 04 Python
python自动化报告的输出用例详解
May 30 Python
python3解析库pyquery的深入讲解
Jun 26 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
python中如何打包用户自定义模块
Sep 23 Python
pycharm无法导入lxml的解决办法
Mar 31 Python
Python快速实现一键抠图功能的全过程
Jun 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
phpmyadmin操作流程
2006/10/09 PHP
php生成缩略图的类代码
2008/10/02 PHP
PHP 变量的定义方法
2010/01/26 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
jQuery select控制插件
2009/08/17 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python制作爬虫抓取美女图
2016/01/20 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
广州盈通面试题
2015/12/05 面试题
学习新党章思想汇报
2014/01/09 职场文书
迟到检讨书大全
2014/01/25 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
我的小天地教学反思
2014/04/30 职场文书
法院信息化建设方案
2014/05/21 职场文书
2014最新实习证明模板
2014/10/02 职场文书
公司总经理岗位职责
2015/04/01 职场文书
学校德育工作总结2015
2015/05/11 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang