实例讲解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解析xml文件实例分享
Dec 04 Python
Python进阶-函数默认参数(详解)
May 18 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
Python字符串的常见操作实例小结
Apr 08 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
python实现横向拼接图片
Mar 23 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 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
php数据库密码的找回的步骤
2011/01/12 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php中explode函数用法分析
2014/11/15 PHP
php如何连接sql server
2015/10/16 PHP
php xhprof使用实例详解
2019/04/15 PHP
javascript 常用方法总结
2009/06/03 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Python实现元素等待代码实例
2019/11/11 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
WiFi云数码相框:Nixplay
2018/07/05 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
经典演讲稿范文
2013/12/30 职场文书
奥利奥广告词
2014/03/20 职场文书
2015年资料员工作总结
2015/04/25 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python