Python学习06:函数
Posted CQ小子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习06:函数相关的知识,希望对你有一定的参考价值。
本文学习Python的笔记,仅供参考
函数
同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)
参考文档
2.http://www.cricode.com/92.html
以上是关于Python学习06:函数的主要内容,如果未能解决你的问题,请参考以下文章