Python学习06:函数
2016-11-12 18:26
176 查看
本文学习Python的笔记,仅供参考
def是函数的关键字,my_square是函数名,a是传入的参数,return函数执行完毕返回值
比如我在本应该传入int参数的时候,传入List类型,此时虽然报错,主要是在print的时候报错。没有进行类型检查
2.http://www.cricode.com/92.html
函数
同C语言中的函数作用是一样的,可以将完成特定功能的代码写成一个函数,在使用的时候调用,避免频繁重新的写同样的代码。调用函数
在Python库中提供了非常多的接口函数,可以按照使用手册进行调用,比如说之前常用的print()函数来打印值,input函数来输入参数,hex()函数可以将一个数字转换成16进制并输出>>> hex(20) '0x14'
定义函数
这边需要些一个输入一个数,输出平方的函数,Python中使用def定义函数,和C语言不太一样,可以看到下面的实现:def my_square(a): return a*a执行这条语句print(my_square(5)),就会输出25
def是函数的关键字,my_square是函数名,a是传入的参数,return函数执行完毕返回值
参数的传递
和C语言一样,包括值传递和指针传递,先来看下下面的例子,这个是一个值传递,在函数中其实数据都是分配到栈上了,a是函数中的变量,但是值不会被修改a =5 def my_square(a): a = a*a return a print(my_square(a)) print(a)如果换一种方法,我将List中的一个元素传入,
l =[1,2,3,4,5] def my_square(a): a[0] = a[0] + 1 return a print(my_square(l)) print(l[0])可以看到输出:
======================= RESTART: E:/python/function.py ======================= [2, 2, 3, 4, 5] 2输出的值确实变了,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)
参数检查
在调用函数的时候,如果参数个数不对,Python编译器会自动检测,但是如果类型不对,编译器无法检查。比如我在本应该传入int参数的时候,传入List类型,此时虽然报错,主要是在print的时候报错。没有进行类型检查
======================= RESTART: E:/python/function.py ======================= Traceback (most recent call last): File "E:/python/function.py", line 6, in <module> print(my_square(l)) File "E:/python/function.py", line 3, in my_square a = a*a TypeError: can't multiply sequence by non-int of type 'list'所以如果对数据类型需要严格的控制,需要自己检查,比如下面的例子,我传入了一个s,但是函数中不支持字符串
def my_square(a): if not isinstance(a,int): raise TypeError('bad operand type') return a*a print(my_square("s"))输出结果如下:可以看到,能够成功的将Error打出来,方便debug
Traceback (most recent call last): File "E:/python/function.py", line 7, in <module> print(my_square("s")) File "E:/python/function.py", line 4, in my_square raise TypeError('bad operand type') TypeError: bad operand type
函数的返回值
函数返回值一般跟在return之后,返回值可以是一个,有可以是多个,比如说我输入一个数,我返回他的2倍和3倍的值,参考例子:def my_square(a): if not isinstance(a,int): raise TypeError('bad operand type') return 2*a,3*a print(my_square(5))输出结果,看来确实是能够返回多个值,但是从打印结果来看,Python将这多个值组织在一个tuple数据类型中,算起来也可以称为返回一个值, 写起来方便的许多。
======================= RESTART: E:/python/function.py ======================= (10, 15)
参考文档
1.http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431679203477b5b364aeba8c4e05a9bd4ec1b32911e20002.http://www.cricode.com/92.html
相关文章推荐
- Python菜鸟学习手册06----函数
- Python3学习笔记06-循环设计、循环对象、函数对象、错误处理、动态类型
- Python函数学习笔记
- Python 学习笔记:需要仔细阅读一个函数
- python学习--使用 lambda 函数
- Learn Python The Hard Way学习(19) - 函数和变量
- Learn Python The Hard Way学习(18) - 命名,变量,代码,函数
- Python 学习笔记 - 9.函数(Function)
- PYTHON基础学习之操作类的一些函数
- Python学习笔记总结(二):函数和模块
- Python学习笔记整理(十二)Python的函数
- Learn Python The Hard Way学习(21) - 函数可以返回信息
- Python学习手记 pt4 函数
- 函数06 - 零基础入门学习C语言37
- 函数06 - 零基础入门学习C语言37
- Python2.7 学习笔记 (二)—— 函数,模块,正则
- Python函数学习笔记
- 《Javascript高级程序设计》(第2版)学习笔记06--函数
- 我的python学习之路----函数
- Python学习:def函数的定义、使用及参数传递