实例讲解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进行TCP网络编程的教程
Apr 29 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
Windows下python3.6.4安装教程
Jul 31 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
520使用Python实现“我爱你”表白
May 20 Python
Python实现SMTP邮件发送
Jun 16 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 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版(4)
2006/10/09 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
基于python的字节编译详解
2017/09/20 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
set在python里的含义和用法
2019/06/24 Python
python使用递归的方式建立二叉树
2019/07/03 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
木马的传播途径主要有哪些
2016/04/08 面试题
文案策划求职信
2014/04/14 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
python基础之模块的导入
2021/10/24 Python